From e111c2ab3ec734e8f1c31844b77220a2f4b8804a Mon Sep 17 00:00:00 2001 From: ncheckin <68351161+ncheckin@users.noreply.github.com> Date: Mon, 28 Sep 2020 10:57:13 -0400 Subject: [PATCH 001/119] Update tutorial-define-index.asciidoc (#76973) * Update tutorial-define-index.asciidoc * Update docs/getting-started/tutorial-define-index.asciidoc Co-authored-by: Kaarina Tungseth Co-authored-by: Raya Fratkina Co-authored-by: Kaarina Tungseth --- docs/getting-started/tutorial-define-index.asciidoc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/getting-started/tutorial-define-index.asciidoc b/docs/getting-started/tutorial-define-index.asciidoc index cb3f6c9ff0c9b..5a05d565ab3f8 100644 --- a/docs/getting-started/tutorial-define-index.asciidoc +++ b/docs/getting-started/tutorial-define-index.asciidoc @@ -24,7 +24,7 @@ index named `shakespeare,` and the accounts data set, which has an index named . In the *Index pattern name* field, enter `shakes*`. + [role="screenshot"] -image::images/tutorial-pattern-1.png[shakes* index patterns] +image::images/tutorial-pattern-1.png[Image showing how to enter shakes* in Index Pattern Name field] . Click *Next step*. @@ -54,4 +54,3 @@ available, open the menu, go to *Dev Tools > Console*, then enter `GET _cat/indi For Windows, run `Invoke-RestMethod -Uri "http://localhost:9200/_cat/indices"` in Powershell. - From db78d70df359f19a20d41d06975e780ea1cff998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Mon, 28 Sep 2020 16:13:21 +0100 Subject: [PATCH 002/119] [Usage Collection] [schema] Explicit "array" definition (#78141) Co-authored-by: Elastic Machine --- .../src/tools/__fixture__/mock_schema.json | 17 +- .../__fixture__/parsed_working_collector.ts | 33 +-- .../extract_collectors.test.ts.snap | 40 ++-- .../src/tools/manage_schema.ts | 18 +- .../src/tools/serializer.test.ts | 4 +- .../src/tools/serializer.ts | 2 +- .../telemetry_collectors/working_collector.ts | 11 +- .../services/sample_data/usage/collector.ts | 4 +- src/plugins/telemetry/schema/oss_plugins.json | 10 +- src/plugins/usage_collection/README.md | 22 ++ .../server/collector/collector.test.ts | 20 +- .../server/collector/collector.ts | 2 +- .../server/collectors/register.ts | 9 +- .../collectors/get_usage_collector.test.ts | 55 ++--- .../collectors/get_usage_collector.ts | 109 ++++----- .../security_usage_collector.ts | 10 +- .../server/usage/collector.ts | 11 +- .../schema/xpack_plugins.json | 217 ++++++++++-------- .../telemetry/kibana_telemetry_adapter.ts | 8 +- 19 files changed, 362 insertions(+), 240 deletions(-) diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json index 2e69d3625d7ff..51e5df9bf7dc0 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json @@ -35,16 +35,19 @@ } }, "my_array": { - "properties": { - "total": { - "type": "number" - }, - "type": { - "type": "boolean" + "type": "array", + "items": { + "properties": { + "total": { + "type": "number" + }, + "type": { + "type": "boolean" + } } } }, - "my_str_array": { "type": "keyword" } + "my_str_array": { "type": "array", "items": { "type": "keyword" } } } } } diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts index 54983278726eb..acf984b7d10ee 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts @@ -55,12 +55,15 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ }, }, my_array: { - total: { - type: 'number', + type: 'array', + items: { + total: { + type: 'number', + }, + type: { type: 'boolean' }, }, - type: { type: 'boolean' }, }, - my_str_array: { type: 'keyword' }, + my_str_array: { type: 'array', items: { type: 'keyword' } }, }, }, fetch: { @@ -91,18 +94,22 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ }, }, my_array: { - total: { - kind: SyntaxKind.NumberKeyword, - type: 'NumberKeyword', - }, - type: { - kind: SyntaxKind.BooleanKeyword, - type: 'BooleanKeyword', + items: { + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + type: { + kind: SyntaxKind.BooleanKeyword, + type: 'BooleanKeyword', + }, }, }, my_str_array: { - kind: SyntaxKind.StringKeyword, - type: 'StringKeyword', + items: { + kind: SyntaxKind.StringKeyword, + type: 'StringKeyword', + }, }, }, }, diff --git a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap index 9868a7d31d498..206f573b0af78 100644 --- a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap +++ b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap @@ -153,13 +153,15 @@ Array [ "type": "StringKeyword", }, "my_array": Object { - "total": Object { - "kind": 143, - "type": "NumberKeyword", - }, - "type": Object { - "kind": 131, - "type": "BooleanKeyword", + "items": Object { + "total": Object { + "kind": 143, + "type": "NumberKeyword", + }, + "type": Object { + "kind": 131, + "type": "BooleanKeyword", + }, }, }, "my_index_signature_prop": Object { @@ -183,8 +185,10 @@ Array [ "type": "StringKeyword", }, "my_str_array": Object { - "kind": 146, - "type": "StringKeyword", + "items": Object { + "kind": 146, + "type": "StringKeyword", + }, }, }, "typeName": "Usage", @@ -195,12 +199,15 @@ Array [ "type": "keyword", }, "my_array": Object { - "total": Object { - "type": "number", - }, - "type": Object { - "type": "boolean", + "items": Object { + "total": Object { + "type": "number", + }, + "type": Object { + "type": "boolean", + }, }, + "type": "array", }, "my_index_signature_prop": Object { "avg": Object { @@ -228,7 +235,10 @@ Array [ "type": "text", }, "my_str_array": Object { - "type": "keyword", + "items": Object { + "type": "keyword", + }, + "type": "array", }, }, }, diff --git a/packages/kbn-telemetry-tools/src/tools/manage_schema.ts b/packages/kbn-telemetry-tools/src/tools/manage_schema.ts index d422837140d80..7721492fdb691 100644 --- a/packages/kbn-telemetry-tools/src/tools/manage_schema.ts +++ b/packages/kbn-telemetry-tools/src/tools/manage_schema.ts @@ -28,7 +28,7 @@ export type AllowedSchemaTypes = | 'date' | 'float'; -export function compatibleSchemaTypes(type: AllowedSchemaTypes) { +export function compatibleSchemaTypes(type: AllowedSchemaTypes | 'array') { switch (type) { case 'keyword': case 'text': @@ -40,6 +40,8 @@ export function compatibleSchemaTypes(type: AllowedSchemaTypes) { case 'float': case 'long': return 'number'; + case 'array': + return 'array'; default: throw new Error(`Unknown schema type ${type}`); } @@ -66,10 +68,22 @@ export function isObjectMapping(entity: any) { return false; } +function isArrayMapping(entity: any): entity is { type: 'array'; items: object } { + return typeof entity === 'object' && entity.type === 'array' && typeof entity.items === 'object'; +} + +function getValueMapping(value: any) { + return isObjectMapping(value) ? transformToEsMapping(value) : value; +} + function transformToEsMapping(usageMappingValue: any) { const fieldMapping: any = { properties: {} }; for (const [key, value] of Object.entries(usageMappingValue)) { - fieldMapping.properties[key] = isObjectMapping(value) ? transformToEsMapping(value) : value; + if (isArrayMapping(value)) { + fieldMapping.properties[key] = { ...value, items: getValueMapping(value.items) }; + } else { + fieldMapping.properties[key] = getValueMapping(value); + } } return fieldMapping; } diff --git a/packages/kbn-telemetry-tools/src/tools/serializer.test.ts b/packages/kbn-telemetry-tools/src/tools/serializer.test.ts index 6742117226368..02d663f4d29eb 100644 --- a/packages/kbn-telemetry-tools/src/tools/serializer.test.ts +++ b/packages/kbn-telemetry-tools/src/tools/serializer.test.ts @@ -84,8 +84,8 @@ describe('getDescriptor', () => { expect(descriptor).toEqual({ prop1: { kind: TelemetryKinds.MomentDate, type: 'MomentDate' }, prop2: { kind: TelemetryKinds.MomentDate, type: 'MomentDate' }, - prop3: { kind: TelemetryKinds.MomentDate, type: 'MomentDate' }, - prop4: { kind: TelemetryKinds.Date, type: 'Date' }, + prop3: { items: { kind: TelemetryKinds.MomentDate, type: 'MomentDate' } }, + prop4: { items: { kind: TelemetryKinds.Date, type: 'Date' } }, }); }); diff --git a/packages/kbn-telemetry-tools/src/tools/serializer.ts b/packages/kbn-telemetry-tools/src/tools/serializer.ts index 6fe02e3824ba7..422b298c58374 100644 --- a/packages/kbn-telemetry-tools/src/tools/serializer.ts +++ b/packages/kbn-telemetry-tools/src/tools/serializer.ts @@ -139,7 +139,7 @@ export function getDescriptor(node: ts.Node, program: ts.Program): Descriptor | } if (ts.isArrayTypeNode(node)) { - return getDescriptor(node.elementType, program); + return { items: getDescriptor(node.elementType, program) }; } if (ts.isLiteralTypeNode(node)) { diff --git a/src/fixtures/telemetry_collectors/working_collector.ts b/src/fixtures/telemetry_collectors/working_collector.ts index bdf10b5e54919..0a3bf49638a7b 100644 --- a/src/fixtures/telemetry_collectors/working_collector.ts +++ b/src/fixtures/telemetry_collectors/working_collector.ts @@ -90,12 +90,15 @@ export const myCollector = makeUsageCollector({ type: { type: 'boolean' }, }, my_array: { - total: { - type: 'number', + type: 'array', + items: { + total: { + type: 'number', + }, + type: { type: 'boolean' }, }, - type: { type: 'boolean' }, }, - my_str_array: { type: 'keyword' }, + my_str_array: { type: 'array', items: { type: 'keyword' } }, my_index_signature_prop: { count: { type: 'number' }, avg: { type: 'number' }, diff --git a/src/plugins/home/server/services/sample_data/usage/collector.ts b/src/plugins/home/server/services/sample_data/usage/collector.ts index d819d67a8d432..1cece375ce59b 100644 --- a/src/plugins/home/server/services/sample_data/usage/collector.ts +++ b/src/plugins/home/server/services/sample_data/usage/collector.ts @@ -38,12 +38,12 @@ export async function makeSampleDataUsageCollector( fetch: fetchProvider(index), isReady: () => true, schema: { - installed: { type: 'keyword' }, + installed: { type: 'array', items: { type: 'keyword' } }, last_install_date: { type: 'date' }, last_install_set: { type: 'keyword' }, last_uninstall_date: { type: 'date' }, last_uninstall_set: { type: 'keyword' }, - uninstalled: { type: 'keyword' }, + uninstalled: { type: 'array', items: { type: 'keyword' } }, }, }); diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index 3ee0c181203aa..6531262b6f1da 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -29,7 +29,10 @@ "sample-data": { "properties": { "installed": { - "type": "keyword" + "type": "array", + "items": { + "type": "keyword" + } }, "last_install_date": { "type": "date" @@ -44,7 +47,10 @@ "type": "keyword" }, "uninstalled": { - "type": "keyword" + "type": "array", + "items": { + "type": "keyword" + } } } }, diff --git a/src/plugins/usage_collection/README.md b/src/plugins/usage_collection/README.md index d8edc5bb8d18a..9955f9fac81ca 100644 --- a/src/plugins/usage_collection/README.md +++ b/src/plugins/usage_collection/README.md @@ -140,6 +140,14 @@ The `AllowedSchemaTypes` is the list of allowed schema types for the usage field 'keyword', 'text', 'number', 'boolean', 'long', 'date', 'float' ``` +### Arrays + +If any of your properties is an array, the schema definition must follow the convention below: + +``` +{ type: 'array', items: {...mySchemaDefinitionOfTheEntriesInTheArray} } +``` + ### Example ```ts @@ -152,6 +160,8 @@ export const myCollector = makeUsageCollector({ some_obj: { total: 123, }, + some_array: ['value1', 'value2'], + some_array_of_obj: [{total: 123}], }; }, schema: { @@ -163,6 +173,18 @@ export const myCollector = makeUsageCollector({ type: 'number', }, }, + some_array: { + type: 'array', + items: { type: 'keyword' } + }, + some_array_of_obj: { + type: 'array', + items: { + total: { + type: 'number', + }, + }, + }, }, }); ``` diff --git a/src/plugins/usage_collection/server/collector/collector.test.ts b/src/plugins/usage_collection/server/collector/collector.test.ts index a3e2425c1f122..375fe4f7686c0 100644 --- a/src/plugins/usage_collection/server/collector/collector.test.ts +++ b/src/plugins/usage_collection/server/collector/collector.test.ts @@ -153,7 +153,10 @@ describe('collector', () => { isReady: () => false, fetch: () => ({ testPass: [{ name: 'a', value: 100 }] }), schema: { - testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + testPass: { + type: 'array', + items: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, }, }); expect(collector).toBeDefined(); @@ -166,7 +169,10 @@ describe('collector', () => { fetch: () => ({ testPass: [{ name: 'a', value: 100 }], otherProp: 1 }), // @ts-expect-error schema: { - testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + testPass: { + type: 'array', + items: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, }, }); expect(collector).toBeDefined(); @@ -185,7 +191,10 @@ describe('collector', () => { }, // @ts-expect-error schema: { - testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + testPass: { + type: 'array', + items: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, }, }); expect(collector).toBeDefined(); @@ -203,7 +212,10 @@ describe('collector', () => { return { otherProp: 1 }; }, schema: { - testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + testPass: { + type: 'array', + items: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, otherProp: { type: 'long' }, }, }); diff --git a/src/plugins/usage_collection/server/collector/collector.ts b/src/plugins/usage_collection/server/collector/collector.ts index 365e1ce201337..b0bc18a0cf0eb 100644 --- a/src/plugins/usage_collection/server/collector/collector.ts +++ b/src/plugins/usage_collection/server/collector/collector.ts @@ -40,7 +40,7 @@ export type RecursiveMakeSchemaFrom = U extends object export type MakeSchemaFrom = { [Key in keyof Base]: Base[Key] extends Array - ? RecursiveMakeSchemaFrom + ? { type: 'array'; items: RecursiveMakeSchemaFrom } : RecursiveMakeSchemaFrom; }; diff --git a/x-pack/plugins/ingest_manager/server/collectors/register.ts b/x-pack/plugins/ingest_manager/server/collectors/register.ts index 2be8eb22bc98c..cb39e6a5be579 100644 --- a/x-pack/plugins/ingest_manager/server/collectors/register.ts +++ b/x-pack/plugins/ingest_manager/server/collectors/register.ts @@ -50,9 +50,12 @@ export function registerIngestManagerUsageCollector( offline: { type: 'long' }, }, packages: { - name: { type: 'keyword' }, - version: { type: 'keyword' }, - enabled: { type: 'boolean' }, + type: 'array', + items: { + name: { type: 'keyword' }, + version: { type: 'keyword' }, + enabled: { type: 'boolean' }, + }, }, }, }); diff --git a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.test.ts b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.test.ts index 17caf80eef22b..2f63a878b0cde 100644 --- a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.test.ts +++ b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.test.ts @@ -80,33 +80,36 @@ describe('getMonitoringUsageCollector', () => { expect(args[0].schema).toStrictEqual({ hasMonitoringData: { type: 'boolean' }, clusters: { - license: { type: 'keyword' }, - clusterUuid: { type: 'keyword' }, - metricbeatUsed: { type: 'boolean' }, - elasticsearch: { - enabled: { type: 'boolean' }, - count: { type: 'long' }, - metricbeatUsed: { type: 'boolean' }, - }, - kibana: { - enabled: { type: 'boolean' }, - count: { type: 'long' }, - metricbeatUsed: { type: 'boolean' }, - }, - logstash: { - enabled: { type: 'boolean' }, - count: { type: 'long' }, - metricbeatUsed: { type: 'boolean' }, - }, - beats: { - enabled: { type: 'boolean' }, - count: { type: 'long' }, - metricbeatUsed: { type: 'boolean' }, - }, - apm: { - enabled: { type: 'boolean' }, - count: { type: 'long' }, + type: 'array', + items: { + license: { type: 'keyword' }, + clusterUuid: { type: 'keyword' }, metricbeatUsed: { type: 'boolean' }, + elasticsearch: { + enabled: { type: 'boolean' }, + count: { type: 'long' }, + metricbeatUsed: { type: 'boolean' }, + }, + kibana: { + enabled: { type: 'boolean' }, + count: { type: 'long' }, + metricbeatUsed: { type: 'boolean' }, + }, + logstash: { + enabled: { type: 'boolean' }, + count: { type: 'long' }, + metricbeatUsed: { type: 'boolean' }, + }, + beats: { + enabled: { type: 'boolean' }, + count: { type: 'long' }, + metricbeatUsed: { type: 'boolean' }, + }, + apm: { + enabled: { type: 'boolean' }, + count: { type: 'long' }, + metricbeatUsed: { type: 'boolean' }, + }, }, }, }); diff --git a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts index b743a5f8e0b4f..278a6c163c0ad 100644 --- a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts +++ b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts @@ -28,68 +28,71 @@ export function getMonitoringUsageCollector( type: 'boolean', }, clusters: { - license: { - type: 'keyword', - }, - clusterUuid: { - type: 'keyword', - }, - metricbeatUsed: { - type: 'boolean', - }, - elasticsearch: { - enabled: { - type: 'boolean', + type: 'array', + items: { + license: { + type: 'keyword', }, - count: { - type: 'long', + clusterUuid: { + type: 'keyword', }, metricbeatUsed: { type: 'boolean', }, - }, - kibana: { - enabled: { - type: 'boolean', - }, - count: { - type: 'long', + elasticsearch: { + enabled: { + type: 'boolean', + }, + count: { + type: 'long', + }, + metricbeatUsed: { + type: 'boolean', + }, }, - metricbeatUsed: { - type: 'boolean', + kibana: { + enabled: { + type: 'boolean', + }, + count: { + type: 'long', + }, + metricbeatUsed: { + type: 'boolean', + }, }, - }, - logstash: { - enabled: { - type: 'boolean', + logstash: { + enabled: { + type: 'boolean', + }, + count: { + type: 'long', + }, + metricbeatUsed: { + type: 'boolean', + }, }, - count: { - type: 'long', - }, - metricbeatUsed: { - type: 'boolean', + beats: { + enabled: { + type: 'boolean', + }, + count: { + type: 'long', + }, + metricbeatUsed: { + type: 'boolean', + }, }, - }, - beats: { - enabled: { - type: 'boolean', - }, - count: { - type: 'long', - }, - metricbeatUsed: { - type: 'boolean', - }, - }, - apm: { - enabled: { - type: 'boolean', - }, - count: { - type: 'long', - }, - metricbeatUsed: { - type: 'boolean', + apm: { + enabled: { + type: 'boolean', + }, + count: { + type: 'long', + }, + metricbeatUsed: { + type: 'boolean', + }, }, }, }, diff --git a/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts b/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts index 11e58f7f95fc2..90483d7c0a4d5 100644 --- a/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts +++ b/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts @@ -62,10 +62,16 @@ export function registerSecurityUsageCollector({ usageCollection, config, licens type: 'number', }, enabledAuthProviders: { - type: 'keyword', + type: 'array', + items: { + type: 'keyword', + }, }, httpAuthSchemes: { - type: 'keyword', + type: 'array', + items: { + type: 'keyword', + }, }, }, fetch: () => { diff --git a/x-pack/plugins/security_solution/server/usage/collector.ts b/x-pack/plugins/security_solution/server/usage/collector.ts index 6fadf956ccaf1..9514233bdfa86 100644 --- a/x-pack/plugins/security_solution/server/usage/collector.ts +++ b/x-pack/plugins/security_solution/server/usage/collector.ts @@ -59,10 +59,13 @@ export const registerCollector: RegisterCollector = ({ total_installed: { type: 'long' }, active_within_last_24_hours: { type: 'long' }, os: { - full_name: { type: 'keyword' }, - platform: { type: 'keyword' }, - version: { type: 'keyword' }, - count: { type: 'long' }, + type: 'array', + items: { + full_name: { type: 'keyword' }, + platform: { type: 'keyword' }, + version: { type: 'keyword' }, + count: { type: 'long' }, + }, }, policies: { malware: { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 1236f2ad9b559..bc89d9e0c812d 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -141,15 +141,18 @@ } }, "packages": { - "properties": { - "name": { - "type": "keyword" - }, - "version": { - "type": "keyword" - }, - "enabled": { - "type": "boolean" + "type": "array", + "items": { + "properties": { + "name": { + "type": "keyword" + }, + "version": { + "type": "keyword" + }, + "enabled": { + "type": "boolean" + } } } } @@ -546,78 +549,81 @@ "type": "boolean" }, "clusters": { - "properties": { - "license": { - "type": "keyword" - }, - "clusterUuid": { - "type": "keyword" - }, - "metricbeatUsed": { - "type": "boolean" - }, - "elasticsearch": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" + "type": "array", + "items": { + "properties": { + "license": { + "type": "keyword" + }, + "clusterUuid": { + "type": "keyword" + }, + "metricbeatUsed": { + "type": "boolean" + }, + "elasticsearch": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } } - } - }, - "kibana": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" + }, + "kibana": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } } - } - }, - "logstash": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" + }, + "logstash": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } } - } - }, - "beats": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" + }, + "beats": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } } - } - }, - "apm": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" + }, + "apm": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } } } } @@ -720,18 +726,21 @@ "type": "long" }, "os": { - "properties": { - "full_name": { - "type": "keyword" - }, - "platform": { - "type": "keyword" - }, - "version": { - "type": "keyword" - }, - "count": { - "type": "long" + "type": "array", + "items": { + "properties": { + "full_name": { + "type": "keyword" + }, + "platform": { + "type": "keyword" + }, + "version": { + "type": "keyword" + }, + "count": { + "type": "long" + } } } }, @@ -771,10 +780,16 @@ "type": "number" }, "enabledAuthProviders": { - "type": "keyword" + "type": "array", + "items": { + "type": "keyword" + } }, "httpAuthSchemes": { - "type": "keyword" + "type": "array", + "items": { + "type": "keyword" + } } } }, @@ -906,16 +921,28 @@ "type": "boolean" }, "autorefreshInterval": { - "type": "long" + "type": "array", + "items": { + "type": "long" + } }, "dateRangeEnd": { - "type": "date" + "type": "array", + "items": { + "type": "date" + } }, "dateRangeStart": { - "type": "date" + "type": "array", + "items": { + "type": "date" + } }, "monitor_frequency": { - "type": "long" + "type": "array", + "items": { + "type": "long" + } }, "monitor_name_stats": { "properties": { diff --git a/x-pack/plugins/uptime/server/lib/adapters/telemetry/kibana_telemetry_adapter.ts b/x-pack/plugins/uptime/server/lib/adapters/telemetry/kibana_telemetry_adapter.ts index 149dbb4244c86..106aab3515470 100644 --- a/x-pack/plugins/uptime/server/lib/adapters/telemetry/kibana_telemetry_adapter.ts +++ b/x-pack/plugins/uptime/server/lib/adapters/telemetry/kibana_telemetry_adapter.ts @@ -47,10 +47,10 @@ export class KibanaTelemetryAdapter { autoRefreshEnabled: { type: 'boolean', }, - autorefreshInterval: { type: 'long' }, - dateRangeEnd: { type: 'date' }, - dateRangeStart: { type: 'date' }, - monitor_frequency: { type: 'long' }, + autorefreshInterval: { type: 'array', items: { type: 'long' } }, + dateRangeEnd: { type: 'array', items: { type: 'date' } }, + dateRangeStart: { type: 'array', items: { type: 'date' } }, + monitor_frequency: { type: 'array', items: { type: 'long' } }, monitor_name_stats: { avg_length: { type: 'float' }, max_length: { type: 'long' }, From 0ebaf92a6a8a3a4626eb362a9005c4674b965923 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Mon, 28 Sep 2020 11:22:03 -0400 Subject: [PATCH 003/119] [Lens] Fieldless operations (#78080) * [Lens] Fieldless operations * Overhaul types * Fix invalid state and add tests * Fix types * Small cleanup * Add additional error message * Reset field selector to empty state when invalid Co-authored-by: Elastic Machine --- .../dimension_panel/dimension_editor.tsx | 233 +++++---- .../dimension_panel/dimension_panel.test.tsx | 446 ++++++++---------- .../dimension_panel/dimension_panel.tsx | 46 +- .../dimension_panel/field_select.tsx | 24 +- .../indexpattern_suggestions.ts | 12 +- .../operations/definitions/cardinality.tsx | 9 +- .../operations/definitions/column_types.ts | 20 +- .../operations/definitions/count.tsx | 12 +- .../operations/definitions/date_histogram.tsx | 8 +- .../definitions/filters/filters.test.tsx | 25 +- .../definitions/filters/filters.tsx | 30 +- .../operations/definitions/index.ts | 98 ++-- .../operations/definitions/metrics.tsx | 12 +- .../operations/definitions/ranges/ranges.tsx | 3 +- .../operations/definitions/terms.tsx | 39 +- .../operations/index.ts | 2 +- .../operations/operations.test.ts | 27 +- .../operations/operations.ts | 75 +-- .../indexpattern_datasource/state_helpers.ts | 3 +- .../test/functional/apps/lens/smokescreen.ts | 3 + 20 files changed, 569 insertions(+), 558 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index 2f64a36e0462e..2572f732aa1b3 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -17,7 +17,7 @@ import { } from '@elastic/eui'; import { EuiFormLabel } from '@elastic/eui'; import { IndexPatternColumn, OperationType } from '../indexpattern'; -import { IndexPatternDimensionEditorProps, OperationFieldSupportMatrix } from './dimension_panel'; +import { IndexPatternDimensionEditorProps, OperationSupportMatrix } from './dimension_panel'; import { operationDefinitionMap, getOperationDisplay, @@ -36,7 +36,7 @@ const operationPanels = getOperationDisplay(); export interface DimensionEditorProps extends IndexPatternDimensionEditorProps { selectedColumn?: IndexPatternColumn; - operationFieldSupportMatrix: OperationFieldSupportMatrix; + operationSupportMatrix: OperationSupportMatrix; currentIndexPattern: IndexPattern; } @@ -90,7 +90,7 @@ const LabelInput = ({ value, onChange }: { value: string; onChange: (value: stri export function DimensionEditor(props: DimensionEditorProps) { const { selectedColumn, - operationFieldSupportMatrix, + operationSupportMatrix, state, columnId, setState, @@ -98,14 +98,16 @@ export function DimensionEditor(props: DimensionEditorProps) { currentIndexPattern, hideGrouping, } = props; - const { operationByField, fieldByOperation } = operationFieldSupportMatrix; + const { operationByField, fieldByOperation } = operationSupportMatrix; const [ incompatibleSelectedOperationType, setInvalidOperationType, ] = useState(null); - const ParamEditor = - selectedColumn && operationDefinitionMap[selectedColumn.operationType].paramEditor; + const selectedOperationDefinition = + selectedColumn && operationDefinitionMap[selectedColumn.operationType]; + + const ParamEditor = selectedOperationDefinition?.paramEditor; const fieldMap: Record = useMemo(() => { const fields: Record = {}; @@ -129,6 +131,10 @@ export function DimensionEditor(props: DimensionEditorProps) { [ ...asOperationOptions(validOperationTypes, true), ...asOperationOptions(possibleOperationTypes, false), + ...asOperationOptions( + operationSupportMatrix.operationWithoutField, + !selectedColumn || !hasField(selectedColumn) + ), ], 'operationType' ); @@ -166,12 +172,30 @@ export function DimensionEditor(props: DimensionEditorProps) { compatibleWithCurrentField ? '' : ' incompatible' }`, onClick() { - // todo: when moving from terms agg to filters, we want to create a filter `$field.name : *` - // it probably has to be re-thought when removing the field name. - const isTermsToFilters = - selectedColumn?.operationType === 'terms' && operationType === 'filters'; - - if (!selectedColumn || !compatibleWithCurrentField) { + if (operationDefinitionMap[operationType].input === 'none') { + // Clear invalid state because we are creating a valid column + setInvalidOperationType(null); + if (selectedColumn?.operationType === operationType) { + return; + } + setState( + changeColumn({ + state, + layerId, + columnId, + newColumn: buildColumn({ + columns: props.state.layers[props.layerId].columns, + suggestedPriority: props.suggestedPriority, + layerId: props.layerId, + op: operationType, + indexPattern: currentIndexPattern, + previousColumn: selectedColumn, + }), + }) + ); + trackUiEvent(`indexpattern_dimension_operation_${operationType}`); + return; + } else if (!selectedColumn || !compatibleWithCurrentField) { const possibleFields = fieldByOperation[operationType] || []; if (possibleFields.length === 1) { @@ -197,19 +221,20 @@ export function DimensionEditor(props: DimensionEditorProps) { trackUiEvent(`indexpattern_dimension_operation_${operationType}`); return; } - if (incompatibleSelectedOperationType && !isTermsToFilters) { - setInvalidOperationType(null); - } - if (selectedColumn.operationType === operationType) { + + setInvalidOperationType(null); + + if (selectedColumn?.operationType === operationType) { return; } + const newColumn: IndexPatternColumn = buildColumn({ columns: props.state.layers[props.layerId].columns, suggestedPriority: props.suggestedPriority, layerId: props.layerId, op: operationType, indexPattern: currentIndexPattern, - field: fieldMap[selectedColumn.sourceField], + field: hasField(selectedColumn) ? fieldMap[selectedColumn.sourceField] : undefined, previousColumn: selectedColumn, }); @@ -244,93 +269,101 @@ export function DimensionEditor(props: DimensionEditorProps) {
- - { - setState( - deleteColumn({ - state, - layerId, - columnId, - }) - ); - }} - onChoose={(choice) => { - let column: IndexPatternColumn; - if ( - !incompatibleSelectedOperationType && - selectedColumn && - 'field' in choice && - choice.operationType === selectedColumn.operationType - ) { - // If we just changed the field are not in an error state and the operation didn't change, - // we use the operations onFieldChange method to calculate the new column. - column = changeField(selectedColumn, currentIndexPattern, fieldMap[choice.field]); - } else { - // Otherwise we'll use the buildColumn method to calculate a new column - const compatibleOperations = - ('field' in choice && - operationFieldSupportMatrix.operationByField[choice.field]) || - []; - let operation; - if (compatibleOperations.length > 0) { - operation = - incompatibleSelectedOperationType && - compatibleOperations.includes(incompatibleSelectedOperationType) - ? incompatibleSelectedOperationType - : compatibleOperations[0]; - } else if ('field' in choice) { - operation = choice.operationType; - } - column = buildColumn({ - columns: props.state.layers[props.layerId].columns, - field: fieldMap[choice.field], - indexPattern: currentIndexPattern, - layerId: props.layerId, - suggestedPriority: props.suggestedPriority, - op: operation as OperationType, - previousColumn: selectedColumn, - }); + > + { + setState( + deleteColumn({ + state, + layerId, + columnId, + }) + ); + }} + onChoose={(choice) => { + let column: IndexPatternColumn; + if ( + !incompatibleSelectedOperationType && + selectedColumn && + 'field' in choice && + choice.operationType === selectedColumn.operationType + ) { + // If we just changed the field are not in an error state and the operation didn't change, + // we use the operations onFieldChange method to calculate the new column. + column = changeField(selectedColumn, currentIndexPattern, fieldMap[choice.field]); + } else { + // Otherwise we'll use the buildColumn method to calculate a new column + const compatibleOperations = + ('field' in choice && operationSupportMatrix.operationByField[choice.field]) || + []; + let operation; + if (compatibleOperations.length > 0) { + operation = + incompatibleSelectedOperationType && + compatibleOperations.includes(incompatibleSelectedOperationType) + ? incompatibleSelectedOperationType + : compatibleOperations[0]; + } else if ('field' in choice) { + operation = choice.operationType; + } + column = buildColumn({ + columns: props.state.layers[props.layerId].columns, + field: fieldMap[choice.field], + indexPattern: currentIndexPattern, + layerId: props.layerId, + suggestedPriority: props.suggestedPriority, + op: operation as OperationType, + previousColumn: selectedColumn, + }); + } - setState( - changeColumn({ - state, - layerId, - columnId, - newColumn: column, - keepParams: false, - }) - ); - setInvalidOperationType(null); - }} - /> - + setState( + changeColumn({ + state, + layerId, + columnId, + newColumn: column, + keepParams: false, + }) + ); + setInvalidOperationType(null); + }} + /> + + ) : null} - {!incompatibleSelectedOperationType && ParamEditor && ( + {!incompatibleSelectedOperationType && selectedColumn && ParamEditor && ( <> { let state: IndexPatternPrivateState; let setState: jest.Mock; let defaultProps: IndexPatternDimensionEditorProps; let dragDropContext: DragContextState; + function getStateWithColumns(columns: Record) { + return { ...state, layers: { first: { ...state.layers.first, columns } } }; + } + beforeEach(() => { state = { indexPatternRefs: [], @@ -179,7 +207,7 @@ describe('IndexPatternDimensionEditorPanel', () => { expect(filterOperations).toBeCalled(); }); - it('should show field select combo box on click', () => { + it('should show field select', () => { wrapper = mount(); expect( @@ -187,6 +215,29 @@ describe('IndexPatternDimensionEditorPanel', () => { ).toHaveLength(1); }); + it('should not show field select on fieldless operation', () => { + wrapper = mount( + + ); + + expect( + wrapper.find(EuiComboBox).filter('[data-test-subj="indexPattern-dimension-field"]') + ).toHaveLength(0); + }); + it('should not show any choices if the filter returns false', () => { wrapper = mount( { wrapper = mount( ); @@ -292,26 +324,7 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper = mount( ); @@ -324,30 +337,15 @@ describe('IndexPatternDimensionEditorPanel', () => { expect(items.find(({ label }) => label === 'Date histogram')!['data-test-subj']).toContain( 'incompatible' ); + + // Fieldless operation is compatible with field + expect(items.find(({ label }) => label === 'Filters')!['data-test-subj']).toContain( + 'compatible' + ); }); it('should keep the operation when switching to another field compatible with this operation', () => { - const initialState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: { - label: 'Max of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'max', - sourceField: 'bytes', - params: { format: { id: 'bytes' } }, - }, - }, - }, - }, - }; + const initialState: IndexPatternPrivateState = getStateWithColumns({ col1: bytesColumn }); wrapper = mount( @@ -415,27 +413,7 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper = mount( ); @@ -505,27 +483,7 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper = mount( ); @@ -553,28 +511,13 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper = mount( ); @@ -640,6 +583,62 @@ describe('IndexPatternDimensionEditorPanel', () => { expect(wrapper.find('[data-test-subj="indexPattern-invalid-operation"]')).toHaveLength(0); }); + it('should leave error state if the original operation is re-selected', () => { + wrapper = mount(); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-terms incompatible"]') + .simulate('click'); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-date_histogram"]') + .simulate('click'); + + expect(wrapper.find('[data-test-subj="indexPattern-invalid-operation"]')).toHaveLength(0); + }); + + it('should leave error state when switching from incomplete state to fieldless operation', () => { + wrapper = mount(); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-terms incompatible"]') + .simulate('click'); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-filters incompatible"]') + .simulate('click'); + + expect(wrapper.find('[data-test-subj="indexPattern-invalid-operation"]')).toHaveLength(0); + }); + + it('should leave error state when re-selecting the original fieldless function', () => { + wrapper = mount( + + ); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-terms incompatible"]') + .simulate('click'); + + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-filters"]') + .simulate('click'); + + expect(wrapper.find('[data-test-subj="indexPattern-invalid-operation"]')).toHaveLength(0); + }); + it('should indicate fields compatible with selected operation', () => { wrapper = mount(); @@ -701,28 +700,18 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('should select the Records field when count is selected', () => { - const initialState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: { - dataType: 'number', - isBucketed: false, - label: '', - operationType: 'avg', - sourceField: 'bytes', - }, - }, - }, - }, - }; wrapper = mount( ); @@ -737,28 +726,18 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('should indicate document and field compatibility with selected document operation', () => { - const initialState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: { - dataType: 'number', - isBucketed: false, - label: '', - operationType: 'count', - sourceField: 'Records', - }, - }, - }, - }, - }; wrapper = mount( ); @@ -942,28 +921,18 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('should indicate document compatibility when document operation is selected', () => { - const initialState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: { - dataType: 'number', - isBucketed: false, - label: '', - operationType: 'count', - sourceField: 'Records', - }, - }, - }, - }, - }; wrapper = mount( ); @@ -1031,26 +1000,9 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('should use helper function when changing the function', () => { - const initialState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: { - label: 'Max of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'max', - sourceField: 'bytes', - }, - }, - }, - }, - }; + const initialState: IndexPatternPrivateState = getStateWithColumns({ + col1: bytesColumn, + }); wrapper = mount( ); @@ -1095,25 +1047,16 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('allows custom format', () => { - const stateWithNumberCol: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col1'], - columns: { - col1: { - label: 'Average of memory', - dataType: 'number', - isBucketed: false, - // Private - operationType: 'avg', - sourceField: 'memory', - }, - }, - }, + const stateWithNumberCol: IndexPatternPrivateState = getStateWithColumns({ + col1: { + label: 'Average of memory', + dataType: 'number', + isBucketed: false, + // Private + operationType: 'avg', + sourceField: 'memory', }, - }; + }); wrapper = mount( @@ -1145,29 +1088,19 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('keeps decimal places while switching', () => { - const stateWithNumberCol: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col1'], - columns: { - col1: { - label: 'Average of memory', - dataType: 'number', - isBucketed: false, - // Private - operationType: 'avg', - sourceField: 'memory', - params: { - format: { id: 'bytes', params: { decimals: 0 } }, - }, - }, - }, + const stateWithNumberCol: IndexPatternPrivateState = getStateWithColumns({ + col1: { + label: 'Average of memory', + dataType: 'number', + isBucketed: false, + // Private + operationType: 'avg', + sourceField: 'memory', + params: { + format: { id: 'bytes', params: { decimals: 0 } }, }, }, - }; - + }); wrapper = mount( ); @@ -1195,28 +1128,19 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('allows custom format with number of decimal places', () => { - const stateWithNumberCol: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col1'], - columns: { - col1: { - label: 'Average of memory', - dataType: 'number', - isBucketed: false, - // Private - operationType: 'avg', - sourceField: 'memory', - params: { - format: { id: 'bytes', params: { decimals: 2 } }, - }, - }, - }, + const stateWithNumberCol: IndexPatternPrivateState = getStateWithColumns({ + col1: { + label: 'Average of memory', + dataType: 'number', + isBucketed: false, + // Private + operationType: 'avg', + sourceField: 'memory', + params: { + format: { id: 'bytes', params: { decimals: 2 } }, }, }, - }; + }); wrapper = mount( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx index 923f7145d1c64..c4d8300722f83 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx @@ -46,8 +46,9 @@ export type IndexPatternDimensionEditorProps = DatasourceDimensionEditorProps< dateRange: DateRange; }; -export interface OperationFieldSupportMatrix { +export interface OperationSupportMatrix { operationByField: Partial>; + operationWithoutField: OperationType[]; fieldByOperation: Partial>; } @@ -58,7 +59,7 @@ type Props = Pick< // TODO: This code has historically been memoized, as a potentially performance // sensitive task. If we can add memoization without breaking the behavior, we should. -const getOperationFieldSupportMatrix = (props: Props): OperationFieldSupportMatrix => { +const getOperationSupportMatrix = (props: Props): OperationSupportMatrix => { const layerId = props.layerId; const currentIndexPattern = props.state.indexPatterns[props.state.layers[layerId].indexPatternId]; @@ -67,37 +68,43 @@ const getOperationFieldSupportMatrix = (props: Props): OperationFieldSupportMatr ).filter((operation) => props.filterOperations(operation.operationMetaData)); const supportedOperationsByField: Partial> = {}; + const supportedOperationsWithoutField: OperationType[] = []; const supportedFieldsByOperation: Partial> = {}; filteredOperationsByMetadata.forEach(({ operations }) => { operations.forEach((operation) => { - if (supportedOperationsByField[operation.field]) { - supportedOperationsByField[operation.field]!.push(operation.operationType); - } else { - supportedOperationsByField[operation.field] = [operation.operationType]; - } - - if (supportedFieldsByOperation[operation.operationType]) { - supportedFieldsByOperation[operation.operationType]!.push(operation.field); - } else { - supportedFieldsByOperation[operation.operationType] = [operation.field]; + if (operation.type === 'field') { + if (supportedOperationsByField[operation.field]) { + supportedOperationsByField[operation.field]!.push(operation.operationType); + } else { + supportedOperationsByField[operation.field] = [operation.operationType]; + } + + if (supportedFieldsByOperation[operation.operationType]) { + supportedFieldsByOperation[operation.operationType]!.push(operation.field); + } else { + supportedFieldsByOperation[operation.operationType] = [operation.field]; + } + } else if (operation.type === 'none') { + supportedOperationsWithoutField.push(operation.operationType); } }); }); return { operationByField: _.mapValues(supportedOperationsByField, _.uniq), + operationWithoutField: _.uniq(supportedOperationsWithoutField), fieldByOperation: _.mapValues(supportedFieldsByOperation, _.uniq), }; }; export function canHandleDrop(props: DatasourceDimensionDropProps) { - const operationFieldSupportMatrix = getOperationFieldSupportMatrix(props); + const operationSupportMatrix = getOperationSupportMatrix(props); const { dragging } = props.dragDropContext; const layerIndexPatternId = props.state.layers[props.layerId].indexPatternId; function hasOperationForField(field: IndexPatternField) { - return Boolean(operationFieldSupportMatrix.operationByField[field.name]); + return Boolean(operationSupportMatrix.operationByField[field.name]); } if (isDraggedField(dragging)) { @@ -119,11 +126,11 @@ export function canHandleDrop(props: DatasourceDimensionDropProps) { - const operationFieldSupportMatrix = getOperationFieldSupportMatrix(props); + const operationSupportMatrix = getOperationSupportMatrix(props); const droppedItem = props.droppedItem; function hasOperationForField(field: IndexPatternField) { - return Boolean(operationFieldSupportMatrix.operationByField[field.name]); + return Boolean(operationSupportMatrix.operationByField[field.name]); } if (isDraggedOperation(droppedItem) && droppedItem.layerId === props.layerId) { @@ -167,8 +174,7 @@ export function onDrop(props: DatasourceDimensionDropHandlerProps ); }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx index e71a85868b855..de472cb09cdfe 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx @@ -20,7 +20,7 @@ import { EuiHighlight } from '@elastic/eui'; import { OperationType } from '../indexpattern'; import { LensFieldIcon } from '../lens_field_icon'; import { DataType } from '../../types'; -import { OperationFieldSupportMatrix } from './dimension_panel'; +import { OperationSupportMatrix } from './dimension_panel'; import { IndexPattern, IndexPatternField, IndexPatternPrivateState } from '../types'; import { trackUiEvent } from '../../lens_ui_telemetry'; import { fieldExists } from '../pure_helpers'; @@ -37,7 +37,7 @@ export interface FieldSelectProps extends EuiComboBoxProps<{}> { incompatibleSelectedOperationType: OperationType | null; selectedColumnOperationType?: OperationType; selectedColumnSourceField?: string; - operationFieldSupportMatrix: OperationFieldSupportMatrix; + operationSupportMatrix: OperationSupportMatrix; onChoose: (choice: FieldChoice) => void; onDeleteColumn: () => void; existingFields: IndexPatternPrivateState['existingFields']; @@ -49,13 +49,13 @@ export function FieldSelect({ incompatibleSelectedOperationType, selectedColumnOperationType, selectedColumnSourceField, - operationFieldSupportMatrix, + operationSupportMatrix, onChoose, onDeleteColumn, existingFields, ...rest }: FieldSelectProps) { - const { operationByField } = operationFieldSupportMatrix; + const { operationByField } = operationSupportMatrix; const memoizedFieldOptions = useMemo(() => { const fields = Object.keys(operationByField).sort(); @@ -173,15 +173,13 @@ export function FieldSelect({ options={(memoizedFieldOptions as unknown) as EuiComboBoxOptionOption[]} isInvalid={Boolean(incompatibleSelectedOperationType)} selectedOptions={ - ((selectedColumnOperationType - ? selectedColumnSourceField - ? [ - { - label: fieldMap[selectedColumnSourceField].displayName, - value: { type: 'field', field: selectedColumnSourceField }, - }, - ] - : [memoizedFieldOptions[0]] + ((selectedColumnOperationType && selectedColumnSourceField + ? [ + { + label: fieldMap[selectedColumnSourceField].displayName, + value: { type: 'field', field: selectedColumnSourceField }, + }, + ] : []) as unknown) as EuiComboBoxOptionOption[] } singleSelection={{ asPlainText: true }} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts index f3aa9c4f51c82..f5e64149c2c76 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts @@ -483,11 +483,15 @@ function createChangedNestingSuggestion(state: IndexPatternPrivateState, layerId const updatedLayer = { ...layer, columnOrder: [secondBucket, firstBucket, ...rest] }; const currentFields = state.indexPatterns[state.currentIndexPatternId].fields; const firstBucketLabel = - currentFields.find((field) => field.name === layer.columns[firstBucket].sourceField) - ?.displayName || ''; + currentFields.find((field) => { + const column = layer.columns[firstBucket]; + return hasField(column) && column.sourceField === field.name; + })?.displayName || ''; const secondBucketLabel = - currentFields.find((field) => field.name === layer.columns[secondBucket].sourceField) - ?.displayName || ''; + currentFields.find((field) => { + const column = layer.columns[secondBucket]; + return hasField(column) && column.sourceField === field.name; + })?.displayName || ''; return buildSuggestion({ state, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx index b0777c7febd7d..65119d3978ee6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { OperationDefinition } from './index'; -import { FormattedIndexPatternColumn } from './column_types'; +import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; const supportedTypes = new Set(['string', 'boolean', 'number', 'ip', 'date']); @@ -21,15 +21,18 @@ function ofName(name: string) { }); } -export interface CardinalityIndexPatternColumn extends FormattedIndexPatternColumn { +export interface CardinalityIndexPatternColumn + extends FormattedIndexPatternColumn, + FieldBasedIndexPatternColumn { operationType: 'cardinality'; } -export const cardinalityOperation: OperationDefinition = { +export const cardinalityOperation: OperationDefinition = { type: OPERATION_TYPE, displayName: i18n.translate('xpack.lens.indexPattern.cardinality', { defaultMessage: 'Unique count', }), + input: 'field', getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( supportedTypes.has(type) && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts index 3244eeb94d1e2..2e95e3fd4250f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts @@ -14,7 +14,6 @@ import { Operation, DimensionPriority } from '../../../types'; export interface BaseIndexPatternColumn extends Operation { // Private operationType: string; - sourceField: string; suggestedPriority?: DimensionPriority; customLabel?: boolean; } @@ -31,23 +30,6 @@ export interface FormattedIndexPatternColumn extends BaseIndexPatternColumn { }; } -/** - * Base type for a column that doesn't have additional parameter. - * - * * `TOperationType` should be a string type containing just the type - * of the operation (e.g. `"sum"`). - * * `TBase` is the base column interface the operation type is set for - - * by default this is `FieldBasedIndexPatternColumn`, so - * `ParameterlessIndexPatternColumn<'foo'>` will give you a column type - * for an operation named foo that operates on a field. - * By passing in another `TBase` (e.g. just `BaseIndexPatternColumn`), - * you can also create other column types. - */ -export type ParameterlessIndexPatternColumn< - TOperationType extends string, - TBase extends BaseIndexPatternColumn = FieldBasedIndexPatternColumn -> = TBase & { operationType: TOperationType }; - export interface FieldBasedIndexPatternColumn extends BaseIndexPatternColumn { - suggestedPriority?: DimensionPriority; + sourceField: string; } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx index bb1aef856de78..cdf1a6b760493 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx @@ -6,23 +6,25 @@ import { i18n } from '@kbn/i18n'; import { OperationDefinition } from './index'; -import { FormattedIndexPatternColumn } from './column_types'; +import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; import { IndexPatternField } from '../../types'; const countLabel = i18n.translate('xpack.lens.indexPattern.countOf', { defaultMessage: 'Count of records', }); -export type CountIndexPatternColumn = FormattedIndexPatternColumn & { - operationType: 'count'; -}; +export type CountIndexPatternColumn = FormattedIndexPatternColumn & + FieldBasedIndexPatternColumn & { + operationType: 'count'; + }; -export const countOperation: OperationDefinition = { +export const countOperation: OperationDefinition = { type: 'count', priority: 2, displayName: i18n.translate('xpack.lens.indexPattern.count', { defaultMessage: 'Count', }), + input: 'field', onFieldChange: (oldColumn, indexPattern, field) => { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index 7784024b03132..185f44405bb4b 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -36,11 +36,15 @@ export interface DateHistogramIndexPatternColumn extends FieldBasedIndexPatternC }; } -export const dateHistogramOperation: OperationDefinition = { +export const dateHistogramOperation: OperationDefinition< + DateHistogramIndexPatternColumn, + 'field' +> = { type: 'date_histogram', displayName: i18n.translate('xpack.lens.indexPattern.dateHistogram', { defaultMessage: 'Date histogram', }), + input: 'field', priority: 5, // Highest priority level used getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( @@ -136,7 +140,7 @@ export const dateHistogramOperation: OperationDefinition { + paramEditor: ({ state, setState, currentColumn, layerId, dateRange, data }) => { const field = currentColumn && state.indexPatterns[state.layers[layerId].indexPatternId].fields.find( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx index 2d79c5faf74fe..3ac01886537dc 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx @@ -59,7 +59,6 @@ describe('filters', () => { operationType: 'filters', scale: 'ordinal', isBucketed: true, - sourceField: 'Records', params: { filters: [ { @@ -112,34 +111,14 @@ describe('filters', () => { }); }); - describe('getPossibleOperationForField', () => { + describe('getPossibleOperation', () => { it('should return operation with the right type for document', () => { - expect( - filtersOperation.getPossibleOperationForField({ - aggregatable: true, - searchable: true, - name: 'test', - displayName: 'test', - type: 'document', - }) - ).toEqual({ + expect(filtersOperation.getPossibleOperation()).toEqual({ dataType: 'string', isBucketed: true, scale: 'ordinal', }); }); - - it('should not return operation if field type is not document', () => { - expect( - filtersOperation.getPossibleOperationForField({ - aggregatable: false, - searchable: true, - name: 'test', - displayName: 'test', - type: 'string', - }) - ).toEqual(undefined); - }); }); describe('popover param editor', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx index 9985ad7229ecc..ad0b9f2dbb0ab 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { EuiFormRow, EuiLink, htmlIdGenerator } from '@elastic/eui'; import { updateColumnParam } from '../../../state_helpers'; import { OperationDefinition } from '../index'; -import { FieldBasedIndexPatternColumn } from '../column_types'; +import { BaseIndexPatternColumn } from '../column_types'; import { FilterPopover } from './filter_popover'; import { IndexPattern } from '../../../types'; import { Query, esKuery, esQuery } from '../../../../../../../../src/plugins/data/public'; @@ -61,31 +61,22 @@ export const isQueryValid = (input: Query, indexPattern: IndexPattern) => { } }; -export interface FiltersIndexPatternColumn extends FieldBasedIndexPatternColumn { +export interface FiltersIndexPatternColumn extends BaseIndexPatternColumn { operationType: 'filters'; params: { filters: Filter[]; }; } -export const filtersOperation: OperationDefinition = { +export const filtersOperation: OperationDefinition = { type: 'filters', displayName: filtersLabel, priority: 3, // Higher than any metric - getPossibleOperationForField: ({ type }) => { - if (type === 'document') { - return { - dataType: 'string', - isBucketed: true, - scale: 'ordinal', - }; - } - }, - isTransferable: () => false, - onFieldChange: (oldColumn, indexPattern, field) => oldColumn, + input: 'none', + isTransferable: () => true, - buildColumn({ suggestedPriority, field, previousColumn }) { + buildColumn({ suggestedPriority, previousColumn }) { let params = { filters: [defaultFilter] }; if (previousColumn?.operationType === 'terms') { params = { @@ -108,11 +99,18 @@ export const filtersOperation: OperationDefinition = scale: 'ordinal', suggestedPriority, isBucketed: true, - sourceField: field.name, params, }; }, + getPossibleOperation() { + return { + dataType: 'string', + isBucketed: true, + scale: 'ordinal', + }; + }, + toEsAggsConfig: (column, columnId, indexPattern) => { const validFilters = column.params.filters?.filter((f: Filter) => isQueryValid(f.input, indexPattern) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 19523b550af5a..38aec866ca5cb 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -28,22 +28,6 @@ import { DateRange } from '../../../../common'; import { DataPublicPluginStart } from '../../../../../../../src/plugins/data/public'; import { RangeIndexPatternColumn, rangeOperation } from './ranges'; -// List of all operation definitions registered to this data source. -// If you want to implement a new operation, add the definition to this array and -// the column type to the `IndexPatternColumn` union type below. -const internalOperationDefinitions = [ - filtersOperation, - termsOperation, - dateHistogramOperation, - minOperation, - maxOperation, - averageOperation, - cardinalityOperation, - sumOperation, - countOperation, - rangeOperation, -]; - /** * A union type of all available column types. If a column is of an unknown type somewhere * withing the indexpattern data source it should be typed as `IndexPatternColumn` to make @@ -61,6 +45,24 @@ export type IndexPatternColumn = | SumIndexPatternColumn | CountIndexPatternColumn; +export type FieldBasedIndexPatternColumn = Extract; + +// List of all operation definitions registered to this data source. +// If you want to implement a new operation, add the definition to this array and +// the column type to the `IndexPatternColumn` union type below. +const internalOperationDefinitions = [ + filtersOperation, + termsOperation, + dateHistogramOperation, + minOperation, + maxOperation, + averageOperation, + cardinalityOperation, + sumOperation, + countOperation, + rangeOperation, +]; + export { termsOperation } from './terms'; export { rangeOperation } from './ranges'; export { filtersOperation } from './filters'; @@ -71,7 +73,7 @@ export { countOperation } from './count'; /** * Properties passed to the operation-specific part of the popover editor */ -export interface ParamEditorProps { +export interface ParamEditorProps { currentColumn: C; state: IndexPatternPrivateState; setState: StateSetter; @@ -138,13 +140,25 @@ interface BaseBuildColumnArgs { indexPattern: IndexPattern; } -/** - * Shape of an operation definition. If the type parameter of the definition - * indicates a field based column, `getPossibleOperationForField` has to be - * specified, otherwise `getPossibleOperationForDocument` has to be defined. - */ -export interface OperationDefinition - extends BaseOperationDefinitionProps { +interface FieldlessOperationDefinition { + input: 'none'; + /** + * Builds the column object for the given parameters. Should include default p + */ + buildColumn: ( + arg: BaseBuildColumnArgs & { + previousColumn?: IndexPatternColumn; + } + ) => C; + /** + * Returns the meta data of the operation if applied. Undefined + * if the field is not applicable. + */ + getPossibleOperation: () => OperationMetadata | undefined; +} + +interface FieldBasedOperationDefinition { + input: 'field'; /** * Returns the meta data of the operation if applied to the given field. Undefined * if the field is not applicable to the operation. @@ -156,7 +170,8 @@ export interface OperationDefinition buildColumn: ( arg: BaseBuildColumnArgs & { field: IndexPatternField; - previousColumn?: IndexPatternColumn; + // previousColumn?: IndexPatternColumn; + previousColumn?: C; } ) => C; /** @@ -175,9 +190,29 @@ export interface OperationDefinition * @param indexPattern The index pattern that field is on. * @param field The field that the user changed to. */ - onFieldChange: (oldColumn: C, indexPattern: IndexPattern, field: IndexPatternField) => C; + onFieldChange: ( + // oldColumn: FieldBasedIndexPatternColumn, + oldColumn: C, + indexPattern: IndexPattern, + field: IndexPatternField + ) => C; } +interface OperationDefinitionMap { + field: FieldBasedOperationDefinition; + none: FieldlessOperationDefinition; +} + +/** + * Shape of an operation definition. If the type parameter of the definition + * indicates a field based column, `getPossibleOperationForField` has to be + * specified, otherwise `getPossibleOperation` has to be defined. + */ +export type OperationDefinition< + C extends BaseIndexPatternColumn, + Input extends keyof OperationDefinitionMap +> = BaseOperationDefinitionProps & OperationDefinitionMap[Input]; + /** * A union type of all available operation types. The operation type is a unique id of an operation. * Each column is assigned to exactly one operation type. @@ -188,7 +223,9 @@ export type OperationType = typeof internalOperationDefinitions[number]['type']; * This is an operation definition of an unspecified column out of all possible * column types. */ -export type GenericOperationDefinition = OperationDefinition; +export type GenericOperationDefinition = + | OperationDefinition + | OperationDefinition; /** * List of all available operation definitions @@ -206,7 +243,10 @@ export const operationDefinitions = internalOperationDefinitions as GenericOpera * (e.g. `import { termsOperation } from './operations/definitions'`). This map is * intended to be used in situations where the operation type is not known during compile time. */ -export const operationDefinitionMap = internalOperationDefinitions.reduce( +export const operationDefinitionMap: Record< + string, + GenericOperationDefinition +> = internalOperationDefinitions.reduce( (definitionMap, definition) => ({ ...definitionMap, [definition.type]: definition }), {} -) as Record; +); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx index 4c37d95f6b050..c02f7bcb7d2cd 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx @@ -6,11 +6,12 @@ import { i18n } from '@kbn/i18n'; import { OperationDefinition } from './index'; -import { FormattedIndexPatternColumn } from './column_types'; +import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; -type MetricColumn = FormattedIndexPatternColumn & { - operationType: T; -}; +type MetricColumn = FormattedIndexPatternColumn & + FieldBasedIndexPatternColumn & { + operationType: T; + }; function buildMetricOperation>({ type, @@ -27,6 +28,7 @@ function buildMetricOperation>({ type, priority, displayName, + input: 'field', getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type: fieldType }) => { if ( fieldType === 'number' && @@ -78,7 +80,7 @@ function buildMetricOperation>({ missing: 0, }, }), - } as OperationDefinition; + } as OperationDefinition; } export type SumIndexPatternColumn = MetricColumn<'sum'>; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx index 530c2e962759b..1971fb2875bed 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx @@ -76,12 +76,13 @@ function getEsAggsParams({ sourceField, params }: RangeIndexPatternColumn) { }; } -export const rangeOperation: OperationDefinition = { +export const rangeOperation: OperationDefinition = { type: 'range', displayName: i18n.translate('xpack.lens.indexPattern.ranges', { defaultMessage: 'Ranges', }), priority: 4, // Higher than terms, so numbers get histogram + input: 'field', getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.tsx index c1a87a2013747..c147029bbd3c7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.tsx @@ -48,12 +48,13 @@ export interface TermsIndexPatternColumn extends FieldBasedIndexPatternColumn { }; } -export const termsOperation: OperationDefinition = { +export const termsOperation: OperationDefinition = { type: 'terms', displayName: i18n.translate('xpack.lens.indexPattern.terms', { defaultMessage: 'Top values', }), priority: 3, // Higher than any metric + input: 'field', getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( supportedTypes.has(type) && @@ -95,23 +96,25 @@ export const termsOperation: OperationDefinition = { }, }; }, - toEsAggsConfig: (column, columnId, _indexPattern) => ({ - id: columnId, - enabled: true, - type: 'terms', - schema: 'segment', - params: { - field: column.sourceField, - orderBy: - column.params.orderBy.type === 'alphabetical' ? '_key' : column.params.orderBy.columnId, - order: column.params.orderDirection, - size: column.params.size, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - }), + toEsAggsConfig: (column, columnId, _indexPattern) => { + return { + id: columnId, + enabled: true, + type: 'terms', + schema: 'segment', + params: { + field: column.sourceField, + orderBy: + column.params.orderBy.type === 'alphabetical' ? '_key' : column.params.orderBy.columnId, + order: column.params.orderDirection, + size: column.params.size, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + }; + }, onFieldChange: (oldColumn, indexPattern, field) => { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/index.ts index 1e2bc5dcb6b62..31a36c59274da 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/index.ts @@ -5,4 +5,4 @@ */ export * from './operations'; -export { OperationType, IndexPatternColumn } from './definitions'; +export { OperationType, IndexPatternColumn, FieldBasedIndexPatternColumn } from './definitions'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts index 703431f724c5d..c1bd4b84099b7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts @@ -182,7 +182,7 @@ describe('getOperationTypesForField', () => { }, }; - it('should build a column for the given operation type if it is passed in', () => { + it('should build a column for the given field-based operation type if it is passed in', () => { const column = buildColumn({ layerId: 'first', indexPattern: expectedIndexPatterns[1], @@ -194,6 +194,17 @@ describe('getOperationTypesForField', () => { expect(column.operationType).toEqual('count'); }); + it('should build a column for the given no-input operation type if it is passed in', () => { + const column = buildColumn({ + layerId: 'first', + indexPattern: expectedIndexPatterns[1], + columns: state.layers.first.columns, + suggestedPriority: 0, + op: 'filters', + }); + expect(column.operationType).toEqual('filters'); + }); + it('should build a column for the given operation type and field if it is passed in', () => { const field = expectedIndexPatterns[1].fields[1]; const column = buildColumn({ @@ -222,7 +233,7 @@ describe('getOperationTypesForField', () => { ); }); - it('should list out all field-operation tuples for different operation meta data', () => { + it('should list out all operation tuples', () => { expect(getAvailableOperationsByMetadata(expectedIndexPatterns[1])).toMatchInlineSnapshot(` Array [ Object { @@ -255,13 +266,17 @@ describe('getOperationTypesForField', () => { }, Object { "operationMetaData": Object { - "dataType": "number", + "dataType": "string", "isBucketed": true, "scale": "ordinal", }, "operations": Array [ Object { - "field": "bytes", + "operationType": "filters", + "type": "none", + }, + Object { + "field": "source", "operationType": "terms", "type": "field", }, @@ -269,13 +284,13 @@ describe('getOperationTypesForField', () => { }, Object { "operationMetaData": Object { - "dataType": "string", + "dataType": "number", "isBucketed": true, "scale": "ordinal", }, "operations": Array [ Object { - "field": "source", + "field": "bytes", "operationType": "terms", "type": "field", }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts index 9e5a0f496357d..46dd73ba849a2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts @@ -63,7 +63,7 @@ export function getOperationTypesForField(field: IndexPatternField): OperationTy return operationDefinitions .filter( (operationDefinition) => - 'getPossibleOperationForField' in operationDefinition && + operationDefinition.input === 'field' && operationDefinition.getPossibleOperationForField(field) ) .sort(getSortScoreByPriority) @@ -80,11 +80,16 @@ export function isDocumentOperation(type: string) { return documentOperations.has(type); } -interface OperationFieldTuple { - type: 'field'; - operationType: OperationType; - field: string; -} +type OperationFieldTuple = + | { + type: 'field'; + operationType: OperationType; + field: string; + } + | { + type: 'none'; + operationType: OperationType; + }; /** * Returns all possible operations (matches between operations and fields of the index @@ -100,11 +105,18 @@ interface OperationFieldTuple { * [ * { * operationMetaData: { dataType: 'string', isBucketed: true }, - * operations: ['terms'] + * operations: [{ + * type: 'field', + * operationType: ['terms'], + * field: 'keyword' + * }] * }, * { - * operationMetaData: { dataType: 'number', isBucketed: false }, - * operations: ['avg', 'min', 'max'] + * operationMetaData: { dataType: 'string', isBucketed: true }, + * operations: [{ + * type: 'none', + * operationType: ['filters'], + * }] * }, * ] * ``` @@ -133,30 +145,31 @@ export function getAvailableOperationsByMetadata(indexPattern: IndexPattern) { }; operationDefinitions.sort(getSortScoreByPriority).forEach((operationDefinition) => { - indexPattern.fields.forEach((field) => { + if (operationDefinition.input === 'field') { + indexPattern.fields.forEach((field) => { + addToMap( + { + type: 'field', + operationType: operationDefinition.type, + field: field.name, + }, + operationDefinition.getPossibleOperationForField(field) + ); + }); + } else if (operationDefinition.input === 'none') { addToMap( { - type: 'field', + type: 'none', operationType: operationDefinition.type, - field: field.name, }, - getPossibleOperationForField(operationDefinition, field) + operationDefinition.getPossibleOperation() ); - }); + } }); return Object.values(operationByMetadata); } -function getPossibleOperationForField( - operationDefinition: GenericOperationDefinition, - field: IndexPatternField -): OperationMetadata | undefined { - return 'getPossibleOperationForField' in operationDefinition - ? operationDefinition.getPossibleOperationForField(field) - : undefined; -} - /** * Changes the field of the passed in colum. To do so, this method uses the `onFieldChange` function of * the operation definition of the column. Returns a new column object with the field changed. @@ -171,13 +184,13 @@ export function changeField( ) { const operationDefinition = operationDefinitionMap[column.operationType]; - if (!('onFieldChange' in operationDefinition)) { + if (operationDefinition.input === 'field' && 'sourceField' in column) { + return operationDefinition.onFieldChange(column, indexPattern, newField); + } else { throw new Error( "Invariant error: Cannot change field if operation isn't a field based operaiton" ); } - - return operationDefinition.onFieldChange(column, indexPattern, newField); } /** @@ -203,7 +216,7 @@ export function buildColumn({ suggestedPriority: DimensionPriority | undefined; layerId: string; indexPattern: IndexPattern; - field: IndexPatternField; + field?: IndexPatternField; previousColumn?: IndexPatternColumn; }): IndexPatternColumn { const operationDefinition = operationDefinitionMap[op]; @@ -220,16 +233,18 @@ export function buildColumn({ previousColumn, }; + if (operationDefinition.input === 'none') { + return operationDefinition.buildColumn(baseOptions); + } + if (!field) { throw new Error(`Invariant error: ${operationDefinition.type} operation requires field`); } - const newColumn = operationDefinition.buildColumn({ + return operationDefinition.buildColumn({ ...baseOptions, field, }); - - return newColumn; } export { operationDefinitionMap } from './definitions'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts index 51691ae18a99a..c977a7e0fa370 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts @@ -5,8 +5,7 @@ */ import _ from 'lodash'; -import { isColumnTransferable } from './operations'; -import { operationDefinitionMap, IndexPatternColumn } from './operations'; +import { isColumnTransferable, operationDefinitionMap, IndexPatternColumn } from './operations'; import { IndexPattern, IndexPatternPrivateState, IndexPatternLayer } from './types'; export function updateColumnParam({ diff --git a/x-pack/test/functional/apps/lens/smokescreen.ts b/x-pack/test/functional/apps/lens/smokescreen.ts index 05047fab2517d..1ed3a0864c244 100644 --- a/x-pack/test/functional/apps/lens/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/smokescreen.ts @@ -67,11 +67,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // legend item(s), so we're using a class selector here. expect(await find.allByCssSelector('.echLegendItem')).to.have.length(3); }); + it('should create an xy visualization with filters aggregation', async () => { await PageObjects.visualize.gotoVisualizationLandingPage(); await listingTable.searchForItemWithName('lnsXYvis'); await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); await PageObjects.lens.goToTimeRange(); + // Change the IP field to filters await PageObjects.lens.configureDimension({ dimension: 'lnsXY_splitDimensionPanel > lns-dimensionTrigger', operation: 'filters', @@ -79,6 +81,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await PageObjects.lens.addFilterToAgg(`geo.src : CN`); + // Verify that the field was persisted from the transition expect(await PageObjects.lens.getFiltersAggLabels()).to.eql([`ip : *`, `geo.src : CN`]); expect(await find.allByCssSelector('.echLegendItem')).to.have.length(2); }); From 97fd0dfbef543d74f972cfd494a56dfbad823238 Mon Sep 17 00:00:00 2001 From: ncheckin <68351161+ncheckin@users.noreply.github.com> Date: Mon, 28 Sep 2020 11:27:27 -0400 Subject: [PATCH 004/119] Update tutorial-define-index.asciidoc (#76975) * Update tutorial-define-index.asciidoc Forgot to update alt text in previous pr. Additionally, it is unclear in the image where the "time field" dropdown is located. * Update docs/getting-started/tutorial-define-index.asciidoc Co-authored-by: Kaarina Tungseth --- docs/getting-started/tutorial-define-index.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/tutorial-define-index.asciidoc b/docs/getting-started/tutorial-define-index.asciidoc index 5a05d565ab3f8..215952c2d3595 100644 --- a/docs/getting-started/tutorial-define-index.asciidoc +++ b/docs/getting-started/tutorial-define-index.asciidoc @@ -45,7 +45,7 @@ contains the time series data. . From the *Time field* dropdown, select *@timestamp, then click *Create index pattern*. + [role="screenshot"] -image::images/tutorial_index_patterns.png[All tutorial index patterns] +image::images/tutorial_index_patterns.png[Image showing how to create an index pattern] NOTE: When you define an index pattern, the indices that match that pattern must exist in Elasticsearch and they must contain data. To check if the indices are From 689e1e32f17a53fa004c6c7fc147b73e17e6b2c2 Mon Sep 17 00:00:00 2001 From: Liza Katz Date: Mon, 28 Sep 2020 18:33:48 +0300 Subject: [PATCH 005/119] [Search] Error notification alignment (#77788) * OSS error alignemnt * Adjust error messages in xpack * Add getErrorMessage * Use showError in vizualize Add original error to expression exception * Cleanup * ts, doc and i18n fixes * Fix jest tests * Fix functional test * functional test * ts * Update functional tests * Add unit tests to interceptor and timeout error * expose toasts test function * doc * typos * review 1 * Code review * doc * doc fix * visualization type fix * fix jest * Fix xpack functional test * fix xpack test * code review * delete debubg flag * Update texts by @gchaps * docs and ts Co-authored-by: Elastic Machine --- ...plugin-plugins-data-public.isearchstart.md | 1 + ...gins-data-public.isearchstart.showerror.md | 11 ++ .../kibana-plugin-plugins-data-public.md | 4 +- ...data-public.painlesserror._constructor_.md | 21 ++ ...ta-public.painlesserror.geterrormessage.md | 22 +++ ...lugin-plugins-data-public.painlesserror.md | 30 +++ ...data-public.painlesserror.painlessstack.md | 11 ++ ...ublic.requesttimeouterror._constructor_.md | 20 -- ...plugins-data-public.requesttimeouterror.md | 20 -- ...public.searchinterceptor.gettimeoutmode.md | 15 ++ ...lic.searchinterceptor.handlesearcherror.md | 25 +++ ...n-plugins-data-public.searchinterceptor.md | 4 +- ...ns-data-public.searchinterceptor.search.md | 6 +- ...ata-public.searchinterceptor.showerror.md} | 17 +- ...public.searchtimeouterror._constructor_.md | 21 ++ ...blic.searchtimeouterror.geterrormessage.md | 22 +++ ...-plugins-data-public.searchtimeouterror.md | 32 +++ ...ins-data-public.searchtimeouterror.mode.md | 11 ++ ...in-plugins-data-public.timeouterrormode.md | 20 ++ .../search_examples/server/my_strategy.ts | 2 +- src/plugins/data/public/index.ts | 7 +- src/plugins/data/public/public.api.md | 92 ++++++--- .../public/search/errors}/index.ts | 3 +- .../public/search/errors/painless_error.tsx | 89 +++++++++ .../search/errors/timeout_error.test.tsx | 62 ++++++ .../public/search/errors/timeout_error.tsx | 111 +++++++++++ .../public/search/errors/types.ts} | 47 +---- src/plugins/data/public/search/index.ts | 2 +- src/plugins/data/public/search/mocks.ts | 1 + .../public/search/request_timeout_error.ts | 30 --- .../public/search/search_interceptor.test.ts | 114 ++++++----- .../data/public/search/search_interceptor.ts | 187 +++++++++++------- .../data/public/search/search_service.ts | 3 + src/plugins/data/public/search/types.ts | 2 + .../public/application/angular/discover.js | 28 +-- .../components/discover_legacy.tsx | 6 +- .../components/fetch_error/fetch_error.scss | 3 - .../components/fetch_error/fetch_error.tsx | 96 --------- .../common/expression_types/specs/error.ts | 1 + .../expressions/common/util/create_error.ts | 3 +- .../utils/get_visualization_instance.test.ts | 4 +- .../utils/get_visualization_instance.ts | 19 +- test/functional/apps/discover/_errors.ts | 7 +- test/functional/services/toasts.ts | 2 +- .../public/search/search_interceptor.test.ts | 5 +- .../public/search/search_interceptor.ts | 54 ++--- .../components/alerts_table/actions.test.tsx | 1 + .../translations/translations/ja-JP.json | 6 - .../translations/translations/zh-CN.json | 6 - .../apps/discover/error_handling.ts | 8 +- 50 files changed, 849 insertions(+), 465 deletions(-) create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.painlessstack.md delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md rename docs/development/plugins/data/public/{kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md => kibana-plugin-plugins-data-public.searchinterceptor.showerror.md} (53%) create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.mode.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timeouterrormode.md rename src/plugins/{discover/public/application/components/fetch_error => data/public/search/errors}/index.ts (92%) create mode 100644 src/plugins/data/public/search/errors/painless_error.tsx create mode 100644 src/plugins/data/public/search/errors/timeout_error.test.tsx create mode 100644 src/plugins/data/public/search/errors/timeout_error.tsx rename src/plugins/{discover/public/application/angular/get_painless_error.ts => data/public/search/errors/types.ts} (61%) delete mode 100644 src/plugins/data/public/search/request_timeout_error.ts delete mode 100644 src/plugins/discover/public/application/components/fetch_error/fetch_error.scss delete mode 100644 src/plugins/discover/public/application/components/fetch_error/fetch_error.tsx diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md index cee213fc6e7e3..5defe4a647614 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md @@ -19,4 +19,5 @@ export interface ISearchStart | [aggs](./kibana-plugin-plugins-data-public.isearchstart.aggs.md) | AggsStart | agg config sub service [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) | | [search](./kibana-plugin-plugins-data-public.isearchstart.search.md) | ISearchGeneric | low level search [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) | | [searchSource](./kibana-plugin-plugins-data-public.isearchstart.searchsource.md) | ISearchStartSearchSource | high level search [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) | +| [showError](./kibana-plugin-plugins-data-public.isearchstart.showerror.md) | (e: Error) => void | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md new file mode 100644 index 0000000000000..fb14057d83d5c --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [showError](./kibana-plugin-plugins-data-public.isearchstart.showerror.md) + +## ISearchStart.showError property + +Signature: + +```typescript +showError: (e: Error) => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md index 0f45b5a727676..e5f56a1ec387f 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md @@ -19,10 +19,11 @@ | [IndexPatternSelect](./kibana-plugin-plugins-data-public.indexpatternselect.md) | | | [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) | | | [OptionedParamType](./kibana-plugin-plugins-data-public.optionedparamtype.md) | | +| [PainlessError](./kibana-plugin-plugins-data-public.painlesserror.md) | | | [Plugin](./kibana-plugin-plugins-data-public.plugin.md) | | -| [RequestTimeoutError](./kibana-plugin-plugins-data-public.requesttimeouterror.md) | Class used to signify that a request timed out. Useful for applications to conditionally handle this type of error differently than other errors. | | [SearchInterceptor](./kibana-plugin-plugins-data-public.searchinterceptor.md) | | | [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) | \* | +| [SearchTimeoutError](./kibana-plugin-plugins-data-public.searchtimeouterror.md) | Request Failure - When an entire multi request fails | | [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) | | ## Enumerations @@ -35,6 +36,7 @@ | [METRIC\_TYPES](./kibana-plugin-plugins-data-public.metric_types.md) | | | [QuerySuggestionTypes](./kibana-plugin-plugins-data-public.querysuggestiontypes.md) | | | [SortDirection](./kibana-plugin-plugins-data-public.sortdirection.md) | | +| [TimeoutErrorMode](./kibana-plugin-plugins-data-public.timeouterrormode.md) | | ## Functions diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md new file mode 100644 index 0000000000000..f8966572afbb6 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PainlessError](./kibana-plugin-plugins-data-public.painlesserror.md) > [(constructor)](./kibana-plugin-plugins-data-public.painlesserror._constructor_.md) + +## PainlessError.(constructor) + +Constructs a new instance of the `PainlessError` class + +Signature: + +```typescript +constructor(err: EsError, request: IKibanaSearchRequest); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| err | EsError | | +| request | IKibanaSearchRequest | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md new file mode 100644 index 0000000000000..a3b4c51c6c331 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PainlessError](./kibana-plugin-plugins-data-public.painlesserror.md) > [getErrorMessage](./kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md) + +## PainlessError.getErrorMessage() method + +Signature: + +```typescript +getErrorMessage(application: ApplicationStart): JSX.Element; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| application | ApplicationStart | | + +Returns: + +`JSX.Element` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md new file mode 100644 index 0000000000000..306211cd60259 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PainlessError](./kibana-plugin-plugins-data-public.painlesserror.md) + +## PainlessError class + +Signature: + +```typescript +export declare class PainlessError extends KbnError +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(err, request)](./kibana-plugin-plugins-data-public.painlesserror._constructor_.md) | | Constructs a new instance of the PainlessError class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [painlessStack](./kibana-plugin-plugins-data-public.painlesserror.painlessstack.md) | | string | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [getErrorMessage(application)](./kibana-plugin-plugins-data-public.painlesserror.geterrormessage.md) | | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.painlessstack.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.painlessstack.md new file mode 100644 index 0000000000000..a7e6920b2ae21 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.painlessstack.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PainlessError](./kibana-plugin-plugins-data-public.painlesserror.md) > [painlessStack](./kibana-plugin-plugins-data-public.painlesserror.painlessstack.md) + +## PainlessError.painlessStack property + +Signature: + +```typescript +painlessStack?: string; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md deleted file mode 100644 index 25e472817b46d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RequestTimeoutError](./kibana-plugin-plugins-data-public.requesttimeouterror.md) > [(constructor)](./kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md) - -## RequestTimeoutError.(constructor) - -Constructs a new instance of the `RequestTimeoutError` class - -Signature: - -```typescript -constructor(message?: string); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| message | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror.md deleted file mode 100644 index 84b2fc3fe0b17..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.requesttimeouterror.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RequestTimeoutError](./kibana-plugin-plugins-data-public.requesttimeouterror.md) - -## RequestTimeoutError class - -Class used to signify that a request timed out. Useful for applications to conditionally handle this type of error differently than other errors. - -Signature: - -```typescript -export declare class RequestTimeoutError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(message)](./kibana-plugin-plugins-data-public.requesttimeouterror._constructor_.md) | | Constructs a new instance of the RequestTimeoutError class | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md new file mode 100644 index 0000000000000..8ecd8b8c5ac22 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchInterceptor](./kibana-plugin-plugins-data-public.searchinterceptor.md) > [getTimeoutMode](./kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md) + +## SearchInterceptor.getTimeoutMode() method + +Signature: + +```typescript +protected getTimeoutMode(): TimeoutErrorMode; +``` +Returns: + +`TimeoutErrorMode` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md new file mode 100644 index 0000000000000..02db74b1a9e91 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchInterceptor](./kibana-plugin-plugins-data-public.searchinterceptor.md) > [handleSearchError](./kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md) + +## SearchInterceptor.handleSearchError() method + +Signature: + +```typescript +protected handleSearchError(e: any, request: IKibanaSearchRequest, timeoutSignal: AbortSignal, appAbortSignal?: AbortSignal): Error; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| e | any | | +| request | IKibanaSearchRequest | | +| timeoutSignal | AbortSignal | | +| appAbortSignal | AbortSignal | | + +Returns: + +`Error` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md index 5cee345db6cd2..a02a6116d7ae0 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md @@ -21,11 +21,13 @@ export declare class SearchInterceptor | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [deps](./kibana-plugin-plugins-data-public.searchinterceptor.deps.md) | | SearchInterceptorDeps | | -| [showTimeoutError](./kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md) | | ((e: Error) => void) & import("lodash").Cancelable | | ## Methods | Method | Modifiers | Description | | --- | --- | --- | +| [getTimeoutMode()](./kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md) | | | +| [handleSearchError(e, request, timeoutSignal, appAbortSignal)](./kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md) | | | | [search(request, options)](./kibana-plugin-plugins-data-public.searchinterceptor.search.md) | | Searches using the given search method. Overrides the AbortSignal with one that will abort either when cancelPending is called, when the request times out, or when the original AbortSignal is aborted. Updates pendingCount$ when the request is started/finalized. | +| [showError(e)](./kibana-plugin-plugins-data-public.searchinterceptor.showerror.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.search.md index 1a71b5808f485..672ff5065c456 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.search.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.search.md @@ -9,17 +9,19 @@ Searches using the given `search` method. Overrides the `AbortSignal` with one t Signature: ```typescript -search(request: IEsSearchRequest, options?: ISearchOptions): Observable; +search(request: IKibanaSearchRequest, options?: ISearchOptions): Observable; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| request | IEsSearchRequest | | +| request | IKibanaSearchRequest | | | options | ISearchOptions | | Returns: `Observable` +`Observalbe` emitting the search response or an error. + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showerror.md similarity index 53% rename from docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md rename to docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showerror.md index 91ecb2821acbf..92e851c783dd0 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.showerror.md @@ -1,11 +1,22 @@ -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchInterceptor](./kibana-plugin-plugins-data-public.searchinterceptor.md) > [showTimeoutError](./kibana-plugin-plugins-data-public.searchinterceptor.showtimeouterror.md) +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchInterceptor](./kibana-plugin-plugins-data-public.searchinterceptor.md) > [showError](./kibana-plugin-plugins-data-public.searchinterceptor.showerror.md) -## SearchInterceptor.showTimeoutError property +## SearchInterceptor.showError() method Signature: ```typescript -protected showTimeoutError: ((e: Error) => void) & import("lodash").Cancelable; +showError(e: Error): void; ``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| e | Error | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md new file mode 100644 index 0000000000000..1c6370c7d0356 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchTimeoutError](./kibana-plugin-plugins-data-public.searchtimeouterror.md) > [(constructor)](./kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md) + +## SearchTimeoutError.(constructor) + +Constructs a new instance of the `SearchTimeoutError` class + +Signature: + +```typescript +constructor(err: Error, mode: TimeoutErrorMode); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| err | Error | | +| mode | TimeoutErrorMode | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md new file mode 100644 index 0000000000000..58ef953c9d7db --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchTimeoutError](./kibana-plugin-plugins-data-public.searchtimeouterror.md) > [getErrorMessage](./kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md) + +## SearchTimeoutError.getErrorMessage() method + +Signature: + +```typescript +getErrorMessage(application: ApplicationStart): JSX.Element; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| application | ApplicationStart | | + +Returns: + +`JSX.Element` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.md new file mode 100644 index 0000000000000..5c0bec04dcfbc --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchTimeoutError](./kibana-plugin-plugins-data-public.searchtimeouterror.md) + +## SearchTimeoutError class + +Request Failure - When an entire multi request fails + +Signature: + +```typescript +export declare class SearchTimeoutError extends KbnError +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(err, mode)](./kibana-plugin-plugins-data-public.searchtimeouterror._constructor_.md) | | Constructs a new instance of the SearchTimeoutError class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [mode](./kibana-plugin-plugins-data-public.searchtimeouterror.mode.md) | | TimeoutErrorMode | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [getErrorMessage(application)](./kibana-plugin-plugins-data-public.searchtimeouterror.geterrormessage.md) | | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.mode.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.mode.md new file mode 100644 index 0000000000000..d534a73eca2ec --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchtimeouterror.mode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchTimeoutError](./kibana-plugin-plugins-data-public.searchtimeouterror.md) > [mode](./kibana-plugin-plugins-data-public.searchtimeouterror.mode.md) + +## SearchTimeoutError.mode property + +Signature: + +```typescript +mode: TimeoutErrorMode; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timeouterrormode.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timeouterrormode.md new file mode 100644 index 0000000000000..8ad63e2c1e9b4 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timeouterrormode.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeoutErrorMode](./kibana-plugin-plugins-data-public.timeouterrormode.md) + +## TimeoutErrorMode enum + +Signature: + +```typescript +export declare enum TimeoutErrorMode +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| CHANGE | 2 | | +| CONTACT | 1 | | +| UPGRADE | 0 | | + diff --git a/examples/search_examples/server/my_strategy.ts b/examples/search_examples/server/my_strategy.ts index 1f59d0a5d8f3a..169982544e6e8 100644 --- a/examples/search_examples/server/my_strategy.ts +++ b/examples/search_examples/server/my_strategy.ts @@ -25,7 +25,7 @@ export const mySearchStrategyProvider = ( ): ISearchStrategy => { const es = data.search.getSearchStrategy('es'); return { - search: async (context, request, options) => { + search: async (context, request, options): Promise => { const esSearchRes = await es.search(context, request, options); return { ...esSearchRes, diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index f7dceffa9fdbc..0e21f6f695551 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -365,8 +365,6 @@ export { ISearchGeneric, ISearchSource, parseSearchSourceJSON, - RequestTimeoutError, - SearchError, SearchInterceptor, SearchInterceptorDeps, SearchRequest, @@ -375,6 +373,11 @@ export { // expression functions and types EsdslExpressionFunctionDefinition, EsRawResponseExpressionTypeDefinition, + // errors + SearchError, + SearchTimeoutError, + TimeoutErrorMode, + PainlessError, } from './search'; export type { SearchSource } from './search'; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 9c059c0f35892..1ee453a0f1411 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -8,6 +8,7 @@ import { $Values } from '@kbn/utility-types'; import _ from 'lodash'; import { Action } from 'history'; import { ApiResponse } from '@elastic/elasticsearch/lib/Transport'; +import { ApplicationStart } from 'kibana/public'; import { Assign } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; import Boom from 'boom'; @@ -69,7 +70,6 @@ import { SavedObjectsClientContract } from 'src/core/public'; import { Search } from '@elastic/elasticsearch/api/requestParams'; import { SearchResponse } from 'elasticsearch'; import { SerializedFieldFormat as SerializedFieldFormat_2 } from 'src/plugins/expressions/common'; -import { Subscription } from 'rxjs'; import { ToastInputFields } from 'src/core/public/notifications'; import { ToastsSetup } from 'kibana/public'; import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; @@ -1462,6 +1462,8 @@ export interface ISearchStart { aggs: AggsStart; search: ISearchGeneric; searchSource: ISearchStartSearchSource; + // (undocumented) + showError: (e: Error) => void; } // @public @@ -1628,6 +1630,19 @@ export interface OptionedValueProp { value: string; } +// Warning: (ae-forgotten-export) The symbol "KbnError" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "PainlessError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class PainlessError extends KbnError { + // Warning: (ae-forgotten-export) The symbol "EsError" needs to be exported by the entry point index.d.ts + constructor(err: EsError, request: IKibanaSearchRequest); + // (undocumented) + getErrorMessage(application: ApplicationStart): JSX.Element; + // (undocumented) + painlessStack?: string; +} + // Warning: (ae-forgotten-export) The symbol "parseEsInterval" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "ParsedInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -1893,13 +1908,6 @@ export interface RefreshInterval { value: number; } -// Warning: (ae-missing-release-tag) "RequestTimeoutError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class RequestTimeoutError extends Error { - constructor(message?: string); -} - // Warning: (ae-missing-release-tag) "SavedQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -2023,24 +2031,27 @@ export class SearchInterceptor { protected application: CoreStart['application']; // (undocumented) protected readonly deps: SearchInterceptorDeps; + // (undocumented) + protected getTimeoutMode(): TimeoutErrorMode; + // (undocumented) + protected handleSearchError(e: any, request: IKibanaSearchRequest, timeoutSignal: AbortSignal, appAbortSignal?: AbortSignal): Error; // @internal protected pendingCount$: BehaviorSubject; // @internal (undocumented) - protected runSearch(request: IEsSearchRequest, signal: AbortSignal, strategy?: string): Observable; - search(request: IEsSearchRequest, options?: ISearchOptions): Observable; + protected runSearch(request: IKibanaSearchRequest, signal: AbortSignal, strategy?: string): Observable; + search(request: IKibanaSearchRequest, options?: ISearchOptions): Observable; // @internal (undocumented) protected setupAbortSignal({ abortSignal, timeout, }: { abortSignal?: AbortSignal; timeout?: number; }): { combinedSignal: AbortSignal; + timeoutSignal: AbortSignal; cleanup: () => void; }; // (undocumented) - protected showTimeoutError: ((e: Error) => void) & import("lodash").Cancelable; - // @internal - protected timeoutSubscriptions: Subscription; -} + showError(e: Error): void; + } // Warning: (ae-missing-release-tag) "SearchInterceptorDeps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -2153,6 +2164,17 @@ export interface SearchSourceFields { version?: boolean; } +// Warning: (ae-missing-release-tag) "SearchTimeoutError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export class SearchTimeoutError extends KbnError { + constructor(err: Error, mode: TimeoutErrorMode); + // (undocumented) + getErrorMessage(application: ApplicationStart): JSX.Element; + // (undocumented) + mode: TimeoutErrorMode; + } + // Warning: (ae-missing-release-tag) "SortDirection" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -2225,6 +2247,18 @@ export class TimeHistory { // @public (undocumented) export type TimeHistoryContract = PublicMethodsOf; +// Warning: (ae-missing-release-tag) "TimeoutErrorMode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum TimeoutErrorMode { + // (undocumented) + CHANGE = 2, + // (undocumented) + CONTACT = 1, + // (undocumented) + UPGRADE = 0 +} + // Warning: (ae-missing-release-tag) "TimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -2314,21 +2348,21 @@ export const UI_SETTINGS: { // src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:385:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:385:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:385:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:385:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:387:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:388:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:397:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:398:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:399:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:400:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:404:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:405:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:408:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:409:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:412:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:388:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:388:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:388:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:388:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:390:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:391:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:400:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:401:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:402:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:403:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:407:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:408:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:411:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:412:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:415:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts // src/plugins/data/public/query/state_sync/connect_to_query_state.ts:45:5 - (ae-forgotten-export) The symbol "FilterStateStore" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/src/plugins/discover/public/application/components/fetch_error/index.ts b/src/plugins/data/public/search/errors/index.ts similarity index 92% rename from src/plugins/discover/public/application/components/fetch_error/index.ts rename to src/plugins/data/public/search/errors/index.ts index 0206bc48257ac..6082e758a8bad 100644 --- a/src/plugins/discover/public/application/components/fetch_error/index.ts +++ b/src/plugins/data/public/search/errors/index.ts @@ -17,4 +17,5 @@ * under the License. */ -import './fetch_error'; +export * from './painless_error'; +export * from './timeout_error'; diff --git a/src/plugins/data/public/search/errors/painless_error.tsx b/src/plugins/data/public/search/errors/painless_error.tsx new file mode 100644 index 0000000000000..244f205469a2f --- /dev/null +++ b/src/plugins/data/public/search/errors/painless_error.tsx @@ -0,0 +1,89 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButton, EuiSpacer, EuiText, EuiCodeBlock } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { ApplicationStart } from 'kibana/public'; +import { KbnError } from '../../../../kibana_utils/common'; +import { EsError, isEsError } from './types'; +import { IKibanaSearchRequest } from '..'; + +export class PainlessError extends KbnError { + painlessStack?: string; + constructor(err: EsError, request: IKibanaSearchRequest) { + const rootCause = getRootCause(err as EsError); + + super( + i18n.translate('data.painlessError.painlessScriptedFieldErrorMessage', { + defaultMessage: "Error executing Painless script: '{script}'.", + values: { script: rootCause?.script }, + }) + ); + this.painlessStack = rootCause?.script_stack ? rootCause?.script_stack.join('\n') : undefined; + } + + public getErrorMessage(application: ApplicationStart) { + function onClick() { + application.navigateToApp('management', { + path: `/kibana/indexPatterns`, + }); + } + + return ( + <> + {this.message} + + + {this.painlessStack ? ( + + {this.painlessStack} + + ) : null} + + + + + + + ); + } +} + +function getFailedShards(err: EsError) { + const failedShards = + err.body?.attributes?.error?.failed_shards || + err.body?.attributes?.error?.caused_by?.failed_shards; + return failedShards ? failedShards[0] : undefined; +} + +function getRootCause(err: EsError) { + return getFailedShards(err)?.reason; +} + +export function isPainlessError(err: Error | EsError) { + if (!isEsError(err)) return false; + + const rootCause = getRootCause(err as EsError); + if (!rootCause) return false; + + const { lang } = rootCause; + return lang === 'painless'; +} diff --git a/src/plugins/data/public/search/errors/timeout_error.test.tsx b/src/plugins/data/public/search/errors/timeout_error.test.tsx new file mode 100644 index 0000000000000..87b491b976ebc --- /dev/null +++ b/src/plugins/data/public/search/errors/timeout_error.test.tsx @@ -0,0 +1,62 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SearchTimeoutError, TimeoutErrorMode } from './timeout_error'; + +import { coreMock } from '../../../../../core/public/mocks'; +const startMock = coreMock.createStart(); + +import { mount } from 'enzyme'; +import { AbortError } from 'src/plugins/data/common'; + +describe('SearchTimeoutError', () => { + beforeEach(() => { + jest.clearAllMocks(); + startMock.application.navigateToApp.mockImplementation(jest.fn()); + }); + + it('Should navigate to upgrade', () => { + const e = new SearchTimeoutError(new AbortError(), TimeoutErrorMode.UPGRADE); + const component = mount(e.getErrorMessage(startMock.application)); + + expect(component.find('EuiButton').length).toBe(1); + component.find('EuiButton').simulate('click'); + expect(startMock.application.navigateToApp).toHaveBeenCalledWith('management', { + path: '/kibana/indexPatterns', + }); + }); + + it('Should create contact admin message', () => { + const e = new SearchTimeoutError(new AbortError(), TimeoutErrorMode.CONTACT); + const component = mount(e.getErrorMessage(startMock.application)); + + expect(component.find('EuiButton').length).toBe(0); + }); + + it('Should navigate to settings', () => { + const e = new SearchTimeoutError(new AbortError(), TimeoutErrorMode.CHANGE); + const component = mount(e.getErrorMessage(startMock.application)); + + expect(component.find('EuiButton').length).toBe(1); + component.find('EuiButton').simulate('click'); + expect(startMock.application.navigateToApp).toHaveBeenCalledWith('management', { + path: '/kibana/settings', + }); + }); +}); diff --git a/src/plugins/data/public/search/errors/timeout_error.tsx b/src/plugins/data/public/search/errors/timeout_error.tsx new file mode 100644 index 0000000000000..56aecb42f5326 --- /dev/null +++ b/src/plugins/data/public/search/errors/timeout_error.tsx @@ -0,0 +1,111 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButton, EuiSpacer, EuiText } from '@elastic/eui'; +import { ApplicationStart } from 'kibana/public'; +import { KbnError } from '../../../../kibana_utils/common'; + +export enum TimeoutErrorMode { + UPGRADE, + CONTACT, + CHANGE, +} + +/** + * Request Failure - When an entire multi request fails + * @param {Error} err - the Error that came back + */ +export class SearchTimeoutError extends KbnError { + public mode: TimeoutErrorMode; + constructor(err: Error, mode: TimeoutErrorMode) { + super(`Request timeout: ${JSON.stringify(err?.message)}`); + this.mode = mode; + } + + private getMessage() { + switch (this.mode) { + case TimeoutErrorMode.UPGRADE: + return i18n.translate('data.search.upgradeLicense', { + defaultMessage: + 'Your query has timed out. With our free Basic tier, your queries never time out.', + }); + case TimeoutErrorMode.CONTACT: + return i18n.translate('data.search.timeoutContactAdmin', { + defaultMessage: + 'Your query has timed out. Contact your system administrator to increase the run time.', + }); + case TimeoutErrorMode.CHANGE: + return i18n.translate('data.search.timeoutIncreaseSetting', { + defaultMessage: + 'Your query has timed out. Increase run time with the search timeout advanced setting.', + }); + } + } + + private getActionText() { + switch (this.mode) { + case TimeoutErrorMode.UPGRADE: + return i18n.translate('data.search.upgradeLicenseActionText', { + defaultMessage: 'Upgrade now', + }); + break; + case TimeoutErrorMode.CHANGE: + return i18n.translate('data.search.timeoutIncreaseSettingActionText', { + defaultMessage: 'Edit setting', + }); + break; + } + } + + private onClick(application: ApplicationStart) { + switch (this.mode) { + case TimeoutErrorMode.UPGRADE: + application.navigateToApp('management', { + path: `/kibana/indexPatterns`, + }); + break; + case TimeoutErrorMode.CHANGE: + application.navigateToApp('management', { + path: `/kibana/settings`, + }); + break; + } + } + + public getErrorMessage(application: ApplicationStart) { + const actionText = this.getActionText(); + return ( + <> + {this.getMessage()} + {actionText && ( + <> + + + this.onClick(application)} size="s"> + {actionText} + + + + )} + + ); + } +} diff --git a/src/plugins/discover/public/application/angular/get_painless_error.ts b/src/plugins/data/public/search/errors/types.ts similarity index 61% rename from src/plugins/discover/public/application/angular/get_painless_error.ts rename to src/plugins/data/public/search/errors/types.ts index 162dacd3ac3b7..4182209eb68a5 100644 --- a/src/plugins/discover/public/application/angular/get_painless_error.ts +++ b/src/plugins/data/public/search/errors/types.ts @@ -17,9 +17,7 @@ * under the License. */ -import { i18n } from '@kbn/i18n'; - -interface FailedShards { +interface FailedShard { shard: number; index: string; node: string; @@ -41,7 +39,7 @@ interface FailedShards { }; } -interface EsError { +export interface EsError { body: { statusCode: number; error: string; @@ -56,51 +54,20 @@ interface EsError { ]; type: string; reason: string; + failed_shards: FailedShard[]; caused_by: { type: string; reason: string; phase: string; grouped: boolean; - failed_shards: FailedShards[]; + failed_shards: FailedShard[]; + script_stack: string[]; }; }; }; }; } -export function getCause(error: EsError) { - const cause = error.body?.attributes?.error?.root_cause; - if (cause) { - return cause[0]; - } - - const failedShards = error.body?.attributes?.error?.caused_by?.failed_shards; - - if (failedShards && failedShards[0] && failedShards[0].reason) { - return error.body?.attributes?.error?.caused_by?.failed_shards[0].reason; - } -} - -export function getPainlessError(error: EsError) { - const cause = getCause(error); - - if (!cause) { - return; - } - - const { lang, script } = cause; - - if (lang !== 'painless') { - return; - } - - return { - lang, - script, - message: i18n.translate('discover.painlessError.painlessScriptedFieldErrorMessage', { - defaultMessage: "Error with Painless scripted field '{script}'.", - values: { script }, - }), - error: error.body?.message, - }; +export function isEsError(e: any): e is EsError { + return !!e.body?.attributes; } diff --git a/src/plugins/data/public/search/index.ts b/src/plugins/data/public/search/index.ts index fc3d71936a859..86804a819cb0e 100644 --- a/src/plugins/data/public/search/index.ts +++ b/src/plugins/data/public/search/index.ts @@ -46,4 +46,4 @@ export { export { getEsPreference } from './es_search'; export { SearchInterceptor, SearchInterceptorDeps } from './search_interceptor'; -export { RequestTimeoutError } from './request_timeout_error'; +export * from './errors'; diff --git a/src/plugins/data/public/search/mocks.ts b/src/plugins/data/public/search/mocks.ts index fdd6a90013413..e931b39eae2a5 100644 --- a/src/plugins/data/public/search/mocks.ts +++ b/src/plugins/data/public/search/mocks.ts @@ -34,6 +34,7 @@ function createStartContract(): jest.Mocked { return { aggs: searchAggsStartMock(), search: jest.fn(), + showError: jest.fn(), searchSource: searchSourceMock, }; } diff --git a/src/plugins/data/public/search/request_timeout_error.ts b/src/plugins/data/public/search/request_timeout_error.ts deleted file mode 100644 index 92894deb4f0ff..0000000000000 --- a/src/plugins/data/public/search/request_timeout_error.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * Class used to signify that a request timed out. Useful for applications to conditionally handle - * this type of error differently than other errors. - */ -export class RequestTimeoutError extends Error { - constructor(message = 'Request timed out') { - super(message); - this.message = message; - this.name = 'RequestTimeoutError'; - } -} diff --git a/src/plugins/data/public/search/search_interceptor.test.ts b/src/plugins/data/public/search/search_interceptor.test.ts index 7bfa6f0ab1bc5..ade15adc1c3a3 100644 --- a/src/plugins/data/public/search/search_interceptor.test.ts +++ b/src/plugins/data/public/search/search_interceptor.test.ts @@ -22,6 +22,7 @@ import { coreMock } from '../../../../core/public/mocks'; import { IEsSearchRequest } from '../../common/search'; import { SearchInterceptor } from './search_interceptor'; import { AbortError } from '../../common'; +import { SearchTimeoutError, PainlessError } from './errors'; let searchInterceptor: SearchInterceptor; let mockCoreSetup: MockedKeys; @@ -53,8 +54,8 @@ describe('SearchInterceptor', () => { expect(result).toBe(mockResponse); }); - test('Observable should fail if fetch has an error', async () => { - const mockResponse: any = { result: 500 }; + test('Observable should fail if fetch has an internal error', async () => { + const mockResponse: any = { result: 500, message: 'Internal Error' }; mockCoreSetup.http.fetch.mockRejectedValueOnce(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, @@ -68,64 +69,83 @@ describe('SearchInterceptor', () => { } }); - test('Observable should fail if fetch times out (test merged signal)', async () => { - mockCoreSetup.http.fetch.mockImplementationOnce((options: any) => { - return new Promise((resolve, reject) => { - options.signal.addEventListener('abort', () => { - reject(new AbortError()); - }); - - setTimeout(resolve, 5000); - }); - }); + test('Should throw SearchTimeoutError on server timeout AND show toast', async (done) => { + const mockResponse: any = { + result: 500, + body: { + message: 'Request timed out', + }, + }; + mockCoreSetup.http.fetch.mockRejectedValueOnce(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; const response = searchInterceptor.search(mockRequest); - const next = jest.fn(); - const error = (e: any) => { - expect(next).not.toBeCalled(); - expect(e).toBeInstanceOf(AbortError); - }; - response.subscribe({ next, error }); - - jest.advanceTimersByTime(5000); - - await flushPromises(); + try { + await response.toPromise(); + } catch (e) { + expect(e).toBeInstanceOf(SearchTimeoutError); + expect(mockCoreSetup.notifications.toasts.addDanger).toBeCalledTimes(1); + done(); + } }); - test('Should not timeout if requestTimeout is undefined', async () => { - searchInterceptor = new SearchInterceptor({ - startServices: mockCoreSetup.getStartServices(), - uiSettings: mockCoreSetup.uiSettings, - http: mockCoreSetup.http, - toasts: mockCoreSetup.notifications.toasts, - }); - mockCoreSetup.http.fetch.mockImplementationOnce((options: any) => { - return new Promise((resolve, reject) => { - options.signal.addEventListener('abort', () => { - reject(new AbortError()); - }); - - setTimeout(resolve, 5000); - }); - }); + test('Search error should be debounced', async (done) => { + const mockResponse: any = { + result: 500, + body: { + message: 'Request timed out', + }, + }; + mockCoreSetup.http.fetch.mockRejectedValue(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; - const response = searchInterceptor.search(mockRequest); + try { + await searchInterceptor.search(mockRequest).toPromise(); + } catch (e) { + expect(e).toBeInstanceOf(SearchTimeoutError); + try { + await searchInterceptor.search(mockRequest).toPromise(); + } catch (e2) { + expect(mockCoreSetup.notifications.toasts.addDanger).toBeCalledTimes(1); + done(); + } + } + }); - expect.assertions(1); - const next = jest.fn(); - const complete = () => { - expect(next).toBeCalled(); + test('Should throw Painless error on server error with OSS format', async (done) => { + const mockResponse: any = { + result: 500, + body: { + attributes: { + error: { + failed_shards: [ + { + reason: { + lang: 'painless', + script_stack: ['a', 'b'], + reason: 'banana', + }, + }, + ], + }, + }, + }, }; - response.subscribe({ next, complete }); - - jest.advanceTimersByTime(5000); + mockCoreSetup.http.fetch.mockRejectedValueOnce(mockResponse); + const mockRequest: IEsSearchRequest = { + params: {}, + }; + const response = searchInterceptor.search(mockRequest); - await flushPromises(); + try { + await response.toPromise(); + } catch (e) { + expect(e).toBeInstanceOf(PainlessError); + done(); + } }); test('Observable should fail if user aborts (test merged signal)', async () => { diff --git a/src/plugins/data/public/search/search_interceptor.ts b/src/plugins/data/public/search/search_interceptor.ts index 802ee6db9433e..2e42635a7f811 100644 --- a/src/plugins/data/public/search/search_interceptor.ts +++ b/src/plugins/data/public/search/search_interceptor.ts @@ -17,29 +17,21 @@ * under the License. */ -import { trimEnd, debounce } from 'lodash'; -import { - BehaviorSubject, - throwError, - timer, - Subscription, - defer, - from, - Observable, - NEVER, -} from 'rxjs'; +import { get, trimEnd, debounce } from 'lodash'; +import { BehaviorSubject, throwError, timer, defer, from, Observable, NEVER } from 'rxjs'; import { catchError, finalize } from 'rxjs/operators'; import { CoreStart, CoreSetup, ToastsSetup } from 'kibana/public'; -import { i18n } from '@kbn/i18n'; import { getCombinedSignal, AbortError, - IEsSearchRequest, + IKibanaSearchRequest, IKibanaSearchResponse, ISearchOptions, ES_SEARCH_STRATEGY, } from '../../common'; import { SearchUsageCollector } from './collectors'; +import { SearchTimeoutError, PainlessError, isPainlessError, TimeoutErrorMode } from './errors'; +import { toMountPoint } from '../../../kibana_react/public'; export interface SearchInterceptorDeps { http: CoreSetup['http']; @@ -62,12 +54,6 @@ export class SearchInterceptor { */ protected pendingCount$ = new BehaviorSubject(0); - /** - * The subscriptions from scheduling the automatic timeout for each request. - * @internal - */ - protected timeoutSubscriptions: Subscription = new Subscription(); - /** * @internal */ @@ -84,11 +70,46 @@ export class SearchInterceptor { }); } + /* + * @returns `TimeoutErrorMode` indicating what action should be taken in case of a request timeout based on license and permissions. + * @internal + */ + protected getTimeoutMode() { + return TimeoutErrorMode.UPGRADE; + } + + /* + * @returns `Error` a search service specific error or the original error, if a specific error can't be recognized. + * @internal + */ + protected handleSearchError( + e: any, + request: IKibanaSearchRequest, + timeoutSignal: AbortSignal, + appAbortSignal?: AbortSignal + ): Error { + if (timeoutSignal.aborted || get(e, 'body.message') === 'Request timed out') { + // Handle a client or a server side timeout + const err = new SearchTimeoutError(e, this.getTimeoutMode()); + + // Show the timeout error here, so that it's shown regardless of how an application chooses to handle errors. + this.showTimeoutError(err); + return err; + } else if (appAbortSignal?.aborted) { + // In the case an application initiated abort, throw the existing AbortError. + return e; + } else if (isPainlessError(e)) { + return new PainlessError(e, request); + } else { + return e; + } + } + /** * @internal */ protected runSearch( - request: IEsSearchRequest, + request: IKibanaSearchRequest, signal: AbortSignal, strategy?: string ): Observable { @@ -105,41 +126,6 @@ export class SearchInterceptor { ); } - /** - * Searches using the given `search` method. Overrides the `AbortSignal` with one that will abort - * either when `cancelPending` is called, when the request times out, or when the original - * `AbortSignal` is aborted. Updates `pendingCount$` when the request is started/finalized. - */ - public search( - request: IEsSearchRequest, - options?: ISearchOptions - ): Observable { - // Defer the following logic until `subscribe` is actually called - return defer(() => { - if (options?.abortSignal?.aborted) { - return throwError(new AbortError()); - } - - const { combinedSignal, cleanup } = this.setupAbortSignal({ - abortSignal: options?.abortSignal, - }); - this.pendingCount$.next(this.pendingCount$.getValue() + 1); - - return this.runSearch(request, combinedSignal, options?.strategy).pipe( - catchError((e: any) => { - if (e.body?.attributes?.error === 'Request timed out') { - this.showTimeoutError(e); - } - return throwError(e); - }), - finalize(() => { - this.pendingCount$.next(this.pendingCount$.getValue() - 1); - cleanup(); - }) - ); - }); - } - /** * @internal */ @@ -156,9 +142,7 @@ export class SearchInterceptor { const timeout$ = timeout ? timer(timeout) : NEVER; const subscription = timeout$.subscribe(() => { timeoutController.abort(); - this.showTimeoutError(new AbortError()); }); - this.timeoutSubscriptions.add(subscription); // Get a combined `AbortSignal` that will be aborted whenever the first of the following occurs: // 1. The user manually aborts (via `cancelPending`) @@ -172,34 +156,95 @@ export class SearchInterceptor { const combinedSignal = getCombinedSignal(signals); const cleanup = () => { - this.timeoutSubscriptions.remove(subscription); + subscription.unsubscribe(); }; combinedSignal.addEventListener('abort', cleanup); return { combinedSignal, + timeoutSignal, cleanup, }; } - // Right now we are debouncing but we will hook this up with background sessions to show only one - // error notification per session. - protected showTimeoutError = debounce( - (e: Error) => { - this.deps.toasts.addError(e, { + /** + * Right now we are throttling but we will hook this up with background sessions to show only one + * error notification per session. + * @internal + */ + private showTimeoutError = debounce( + (e: SearchTimeoutError) => { + this.deps.toasts.addDanger({ title: 'Timed out', - toastMessage: i18n.translate('data.search.upgradeLicense', { - defaultMessage: - 'One or more queries timed out. With our free Basic tier, your queries never time out.', - }), + text: toMountPoint(e.getErrorMessage(this.application)), }); }, - 60000, - { - leading: true, - } + 30000, + { leading: true, trailing: false } ); + + /** + * Searches using the given `search` method. Overrides the `AbortSignal` with one that will abort + * either when `cancelPending` is called, when the request times out, or when the original + * `AbortSignal` is aborted. Updates `pendingCount$` when the request is started/finalized. + * + * @param request + * @options + * @returns `Observalbe` emitting the search response or an error. + */ + public search( + request: IKibanaSearchRequest, + options?: ISearchOptions + ): Observable { + // Defer the following logic until `subscribe` is actually called + return defer(() => { + if (options?.abortSignal?.aborted) { + return throwError(new AbortError()); + } + + const { timeoutSignal, combinedSignal, cleanup } = this.setupAbortSignal({ + abortSignal: options?.abortSignal, + }); + this.pendingCount$.next(this.pendingCount$.getValue() + 1); + + return this.runSearch(request, combinedSignal, options?.strategy).pipe( + catchError((e: any) => { + return throwError( + this.handleSearchError(e, request, timeoutSignal, options?.abortSignal) + ); + }), + finalize(() => { + this.pendingCount$.next(this.pendingCount$.getValue() - 1); + cleanup(); + }) + ); + }); + } + + /* + * + */ + public showError(e: Error) { + if (e instanceof AbortError) return; + + if (e instanceof SearchTimeoutError) { + // The SearchTimeoutError is shown by the interceptor in getSearchError (regardless of how the app chooses to handle errors) + return; + } + + if (e instanceof PainlessError) { + this.deps.toasts.addDanger({ + title: 'Search Error', + text: toMountPoint(e.getErrorMessage(this.application)), + }); + return; + } + + this.deps.toasts.addError(e, { + title: 'Search Error', + }); + } } export type ISearchInterceptor = PublicMethodsOf; diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index d8937ed30e401..173baba5cab6f 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -111,6 +111,9 @@ export class SearchService implements Plugin { return { aggs: this.aggsService.start({ fieldFormats, uiSettings }), search, + showError: (e: Error) => { + this.searchInterceptor.showError(e); + }, searchSource: { /** * creates searchsource based on serialized search source fields diff --git a/src/plugins/data/public/search/types.ts b/src/plugins/data/public/search/types.ts index 6ae5d83499aa6..a133a8cd4be93 100644 --- a/src/plugins/data/public/search/types.ts +++ b/src/plugins/data/public/search/types.ts @@ -73,6 +73,8 @@ export interface ISearchStart { * {@link ISearchGeneric} */ search: ISearchGeneric; + + showError: (e: Error) => void; /** * high level search * {@link ISearchStartSearchSource} diff --git a/src/plugins/discover/public/application/angular/discover.js b/src/plugins/discover/public/application/angular/discover.js index 7871cc4b16464..a396033e5dedb 100644 --- a/src/plugins/discover/public/application/angular/discover.js +++ b/src/plugins/discover/public/application/angular/discover.js @@ -27,6 +27,12 @@ import { i18n } from '@kbn/i18n'; import { getState, splitState } from './discover_state'; import { RequestAdapter } from '../../../../inspector/public'; +import { + esFilters, + indexPatterns as indexPatternsUtils, + connectToQueryState, + syncQueryStateWithUrl, +} from '../../../../data/public'; import { SavedObjectSaveModal, showSaveModal } from '../../../../saved_objects/public'; import { getSortArray, getSortForSearchSource } from './doc_table'; import { createFixedScroll } from './directives/fixed_scroll'; @@ -34,7 +40,6 @@ import * as columnActions from './doc_table/actions/columns'; import indexTemplateLegacy from './discover_legacy.html'; import { showOpenSearchPanel } from '../components/top_nav/show_open_search_panel'; import { addHelpMenuToAppChrome } from '../components/help_menu/help_menu_util'; -import { getPainlessError } from './get_painless_error'; import { discoverResponseHandler } from './response_handler'; import { getRequestInspectorStats, @@ -65,12 +70,7 @@ const { import { getRootBreadcrumbs, getSavedSearchBreadcrumbs } from '../helpers/breadcrumbs'; import { validateTimeRange } from '../helpers/validate_time_range'; -import { - esFilters, - indexPatterns as indexPatternsUtils, - connectToQueryState, - syncQueryStateWithUrl, -} from '../../../../data/public'; + import { getIndexPatternId } from '../helpers/get_index_pattern_id'; import { addFatalError } from '../../../../kibana_legacy/public'; import { @@ -786,18 +786,10 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise // If the request was aborted then no need to surface this error in the UI if (error instanceof Error && error.name === 'AbortError') return; - const fetchError = getPainlessError(error); + $scope.fetchStatus = fetchStatuses.NO_RESULTS; + $scope.rows = []; - if (fetchError) { - $scope.fetchError = fetchError; - } else { - toastNotifications.addError(error, { - title: i18n.translate('discover.errorLoadingData', { - defaultMessage: 'Error loading data', - }), - toastMessage: error.shortMessage || error.body?.message, - }); - } + data.search.showError(error); }); }; diff --git a/src/plugins/discover/public/application/components/discover_legacy.tsx b/src/plugins/discover/public/application/components/discover_legacy.tsx index 9c3d833d73b23..de1faaf9fc19d 100644 --- a/src/plugins/discover/public/application/components/discover_legacy.tsx +++ b/src/plugins/discover/public/application/components/discover_legacy.tsx @@ -31,7 +31,6 @@ import { DiscoverNoResults } from '../angular/directives/no_results'; import { DiscoverUninitialized } from '../angular/directives/uninitialized'; import { DiscoverHistogram } from '../angular/directives/histogram'; import { LoadingSpinner } from './loading_spinner/loading_spinner'; -import { DiscoverFetchError, FetchError } from './fetch_error/fetch_error'; import { DocTableLegacy } from '../angular/doc_table/create_doc_table_react'; import { SkipBottomButton } from './skip_bottom_button'; import { @@ -54,7 +53,6 @@ export interface DiscoverLegacyProps { addColumn: (column: string) => void; fetch: () => void; fetchCounter: number; - fetchError: FetchError; fieldCounts: Record; histogramData: Chart; hits: number; @@ -95,7 +93,6 @@ export function DiscoverLegacy({ addColumn, fetch, fetchCounter, - fetchError, fieldCounts, histogramData, hits, @@ -216,8 +213,7 @@ export function DiscoverLegacy({ {resultState === 'uninitialized' && } {/* @TODO: Solved in the Angular way to satisfy functional test - should be improved*/} - {fetchError && } -
+
diff --git a/src/plugins/discover/public/application/components/fetch_error/fetch_error.scss b/src/plugins/discover/public/application/components/fetch_error/fetch_error.scss deleted file mode 100644 index a587b2897e3a0..0000000000000 --- a/src/plugins/discover/public/application/components/fetch_error/fetch_error.scss +++ /dev/null @@ -1,3 +0,0 @@ -.discoverFetchError { - max-width: 1000px; -} diff --git a/src/plugins/discover/public/application/components/fetch_error/fetch_error.tsx b/src/plugins/discover/public/application/components/fetch_error/fetch_error.tsx deleted file mode 100644 index dc8f1238eac6f..0000000000000 --- a/src/plugins/discover/public/application/components/fetch_error/fetch_error.tsx +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import './fetch_error.scss'; -import React, { Fragment } from 'react'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { EuiFlexGroup, EuiFlexItem, EuiCallOut, EuiCodeBlock, EuiSpacer } from '@elastic/eui'; -import { getServices } from '../../../kibana_services'; - -export interface FetchError { - lang: string; - script: string; - message: string; - error: string; -} - -interface Props { - fetchError: FetchError; -} - -export const DiscoverFetchError = ({ fetchError }: Props) => { - if (!fetchError) { - return null; - } - - let body; - - if (fetchError.lang === 'painless') { - const { chrome } = getServices(); - const mangagementUrlObj = chrome.navLinks.get('kibana:stack_management'); - const managementUrl = mangagementUrlObj ? mangagementUrlObj.url : ''; - const url = `${managementUrl}/kibana/indexPatterns`; - - body = ( -

- - ), - managementLink: ( - - - - ), - }} - /> -

- ); - } - - return ( - - - - - - - - {body} - - {fetchError.error} - - - - - - - - ); -}; diff --git a/src/plugins/expressions/common/expression_types/specs/error.ts b/src/plugins/expressions/common/expression_types/specs/error.ts index 35554954d0828..c95a019f4e8d2 100644 --- a/src/plugins/expressions/common/expression_types/specs/error.ts +++ b/src/plugins/expressions/common/expression_types/specs/error.ts @@ -30,6 +30,7 @@ export type ExpressionValueError = ExpressionValueBoxed< message: string; name?: string; stack?: string; + original?: Error; }; info?: unknown; } diff --git a/src/plugins/expressions/common/util/create_error.ts b/src/plugins/expressions/common/util/create_error.ts index 876e7dfec799c..9bdab74efd6f9 100644 --- a/src/plugins/expressions/common/util/create_error.ts +++ b/src/plugins/expressions/common/util/create_error.ts @@ -21,7 +21,7 @@ import { ExpressionValueError } from '../../common'; type ErrorLike = Partial>; -export const createError = (err: string | ErrorLike): ExpressionValueError => ({ +export const createError = (err: string | Error | ErrorLike): ExpressionValueError => ({ type: 'error', error: { stack: @@ -32,5 +32,6 @@ export const createError = (err: string | ErrorLike): ExpressionValueError => ({ : undefined, message: typeof err === 'string' ? err : String(err.message), name: typeof err === 'object' ? err.name || 'Error' : 'Error', + original: err instanceof Error ? err : undefined, }, }); diff --git a/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts b/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts index 31f0fc5f94479..bb4fabb189a27 100644 --- a/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts +++ b/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts @@ -50,6 +50,8 @@ describe('getVisualizationInstance', () => { }; savedVisMock = {}; // @ts-expect-error + mockServices.data.search.showError.mockImplementation(() => {}); + // @ts-expect-error mockServices.savedVisualizations.get.mockImplementation(() => savedVisMock); // @ts-expect-error mockServices.visualizations.convertToSerializedVis.mockImplementation(() => serializedVisMock); @@ -119,6 +121,6 @@ describe('getVisualizationInstance', () => { error: 'error', }); - expect(mockServices.toastNotifications.addError).toHaveBeenCalled(); + expect(mockServices.data.search.showError).toHaveBeenCalled(); }); }); diff --git a/src/plugins/visualize/public/application/utils/get_visualization_instance.ts b/src/plugins/visualize/public/application/utils/get_visualization_instance.ts index 3ffca578f8052..c5cfa5a4c639b 100644 --- a/src/plugins/visualize/public/application/utils/get_visualization_instance.ts +++ b/src/plugins/visualize/public/application/utils/get_visualization_instance.ts @@ -17,7 +17,6 @@ * under the License. */ -import { i18n } from '@kbn/i18n'; import { SerializedVis, Vis, @@ -28,6 +27,7 @@ import { import { SearchSourceFields } from 'src/plugins/data/public'; import { SavedObject } from 'src/plugins/saved_objects/public'; import { cloneDeep } from 'lodash'; +import { ExpressionValueError } from 'src/plugins/expressions/public'; import { createSavedSearchesLoader } from '../../../../discover/public'; import { VisualizeServices } from '../types'; @@ -35,14 +35,7 @@ const createVisualizeEmbeddableAndLinkSavedSearch = async ( vis: Vis, visualizeServices: VisualizeServices ) => { - const { - chrome, - data, - overlays, - createVisEmbeddableFromObject, - savedObjects, - toastNotifications, - } = visualizeServices; + const { chrome, data, overlays, createVisEmbeddableFromObject, savedObjects } = visualizeServices; const embeddableHandler = (await createVisEmbeddableFromObject(vis, { timeRange: data.query.timefilter.timefilter.getTime(), filters: data.query.filterManager.getFilters(), @@ -51,11 +44,9 @@ const createVisualizeEmbeddableAndLinkSavedSearch = async ( embeddableHandler.getOutput$().subscribe((output) => { if (output.error) { - toastNotifications.addError(output.error, { - title: i18n.translate('visualize.error.title', { - defaultMessage: 'Visualization error', - }), - }); + data.search.showError( + ((output.error as unknown) as ExpressionValueError['error']).original || output.error + ); } }); diff --git a/test/functional/apps/discover/_errors.ts b/test/functional/apps/discover/_errors.ts index 9520d652a65d5..7f1552b90668b 100644 --- a/test/functional/apps/discover/_errors.ts +++ b/test/functional/apps/discover/_errors.ts @@ -22,7 +22,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); describe('errors', function describeIndexTests() { @@ -39,8 +39,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('invalid scripted field error', () => { it('is rendered', async () => { - const isFetchErrorVisible = await testSubjects.exists('discoverFetchError'); - expect(isFetchErrorVisible).to.be(true); + const toast = await toasts.getToastElement(1); + const painlessStackTrace = await toast.findByTestSubject('painlessStackTrace'); + expect(painlessStackTrace).not.to.be(undefined); }); }); }); diff --git a/test/functional/services/toasts.ts b/test/functional/services/toasts.ts index a70e4ba464ae8..f5416a44e3b5a 100644 --- a/test/functional/services/toasts.ts +++ b/test/functional/services/toasts.ts @@ -63,7 +63,7 @@ export function ToastsProvider({ getService }: FtrProviderContext) { } } - private async getToastElement(index: number) { + public async getToastElement(index: number) { const list = await this.getGlobalToastList(); return await list.findByCssSelector(`.euiToast:nth-child(${index})`); } diff --git a/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts b/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts index af2fc85602541..6e34e4c1964c5 100644 --- a/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts +++ b/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts @@ -8,6 +8,7 @@ import { coreMock } from '../../../../../src/core/public/mocks'; import { EnhancedSearchInterceptor } from './search_interceptor'; import { CoreSetup, CoreStart } from 'kibana/public'; import { AbortError, UI_SETTINGS } from '../../../../../src/plugins/data/common'; +import { SearchTimeoutError } from 'src/plugins/data/public'; const timeTravel = (msToRun = 0) => { jest.advanceTimersByTime(msToRun); @@ -265,7 +266,7 @@ describe('EnhancedSearchInterceptor', () => { await timeTravel(1000); expect(error).toHaveBeenCalled(); - expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); + expect(error.mock.calls[0][0]).toBeInstanceOf(SearchTimeoutError); expect(mockCoreSetup.http.fetch).toHaveBeenCalled(); expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); }); @@ -305,7 +306,7 @@ describe('EnhancedSearchInterceptor', () => { await timeTravel(1000); expect(error).toHaveBeenCalled(); - expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); + expect(error.mock.calls[0][0]).toBeInstanceOf(SearchTimeoutError); expect(mockCoreSetup.http.fetch).toHaveBeenCalledTimes(2); expect(mockCoreSetup.http.delete).toHaveBeenCalled(); }); diff --git a/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts b/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts index c8fe72e6f2c1e..cca87c85e326c 100644 --- a/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts +++ b/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts @@ -5,9 +5,7 @@ */ import { throwError, EMPTY, timer, from, Subscription } from 'rxjs'; -import { mergeMap, expand, takeUntil, finalize, tap } from 'rxjs/operators'; -import { debounce } from 'lodash'; -import { i18n } from '@kbn/i18n'; +import { mergeMap, expand, takeUntil, finalize, catchError } from 'rxjs/operators'; import { SearchInterceptor, SearchInterceptorDeps, @@ -15,6 +13,7 @@ import { } from '../../../../../src/plugins/data/public'; import { isErrorResponse, isCompleteResponse } from '../../../../../src/plugins/data/public'; import { AbortError, toPromise } from '../../../../../src/plugins/data/common'; +import { TimeoutErrorMode } from '../../../../../src/plugins/data/public'; import { IAsyncSearchOptions } from '.'; import { IAsyncSearchRequest, ENHANCED_ES_SEARCH_STRATEGY } from '../../common'; @@ -40,6 +39,12 @@ export class EnhancedSearchInterceptor extends SearchInterceptor { this.uiSettingsSub.unsubscribe(); } + protected getTimeoutMode() { + return this.application.capabilities.advancedSettings?.save + ? TimeoutErrorMode.CHANGE + : TimeoutErrorMode.CONTACT; + } + /** * Abort our `AbortController`, which in turn aborts any intercepted searches. */ @@ -55,7 +60,7 @@ export class EnhancedSearchInterceptor extends SearchInterceptor { ) { let { id } = request; - const { combinedSignal, cleanup } = this.setupAbortSignal({ + const { combinedSignal, timeoutSignal, cleanup } = this.setupAbortSignal({ abortSignal: options.abortSignal, timeout: this.searchTimeout, }); @@ -86,15 +91,14 @@ export class EnhancedSearchInterceptor extends SearchInterceptor { ); }), takeUntil(aborted$), - tap({ - error: () => { - // If we haven't received the response to the initial request, including the ID, then - // we don't need to send a follow-up request to delete this search. Otherwise, we - // send the follow-up request to delete this search, then throw an abort error. - if (id !== undefined) { - this.deps.http.delete(`/internal/search/${strategy}/${id}`); - } - }, + catchError((e: any) => { + // If we haven't received the response to the initial request, including the ID, then + // we don't need to send a follow-up request to delete this search. Otherwise, we + // send the follow-up request to delete this search, then throw an abort error. + if (id !== undefined) { + this.deps.http.delete(`/internal/search/${strategy}/${id}`); + } + return throwError(this.handleSearchError(e, request, timeoutSignal, options?.abortSignal)); }), finalize(() => { this.pendingCount$.next(this.pendingCount$.getValue() - 1); @@ -102,28 +106,4 @@ export class EnhancedSearchInterceptor extends SearchInterceptor { }) ); } - - // Right now we are debouncing but we will hook this up with background sessions to show only one - // error notification per session. - protected showTimeoutError = debounce( - (e: Error) => { - const message = this.application.capabilities.advancedSettings?.save - ? i18n.translate('xpack.data.search.timeoutIncreaseSetting', { - defaultMessage: - 'One or more queries timed out. Increase run time with the search.timeout advanced setting.', - }) - : i18n.translate('xpack.data.search.timeoutContactAdmin', { - defaultMessage: - 'One or more queries timed out. Contact your system administrator to increase the run time.', - }); - this.deps.toasts.addError(e, { - title: 'Timed out', - toastMessage: message, - }); - }, - 60000, - { - leading: true, - } - ); } diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx index f326d5ad54ef2..47da1e93cf004 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx @@ -44,6 +44,7 @@ describe('alert actions', () => { updateTimelineIsLoading = jest.fn() as jest.Mocked; searchStrategyClient = { aggs: {} as ISearchStart['aggs'], + showError: jest.fn(), search: jest.fn().mockResolvedValue({ data: mockTimelineDetails }), searchSource: {} as ISearchStart['searchSource'], }; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index fd743400133a7..1c2c4c78504f0 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -1367,10 +1367,6 @@ "discover.embeddable.inspectorRequestDataTitle": "データ", "discover.embeddable.inspectorRequestDescription": "このリクエストはElasticsearchにクエリをかけ、検索データを取得します。", "discover.embeddable.search.displayName": "検索", - "discover.errorLoadingData": "データの読み込み中にエラーが発生", - "discover.fetchError.howToAddressErrorDescription": "このエラーは、{scriptedFields}タブにある {managementLink}の{fetchErrorScript}フィールドを編集することで解決できます。", - "discover.fetchError.managmentLinkText": "管理>インデックスパターン", - "discover.fetchError.scriptedFieldsText": "「スクリプトフィールド」", "discover.fieldChooser.detailViews.emptyStringText": "空の文字列", "discover.fieldChooser.detailViews.filterOutValueButtonAriaLabel": "{field}を除外:\"{value}\"", "discover.fieldChooser.detailViews.filterValueButtonAriaLabel": "{field}を除外:\"{value}\"", @@ -1445,7 +1441,6 @@ "discover.notifications.invalidTimeRangeTitle": "無効な時間範囲", "discover.notifications.notSavedSearchTitle": "検索「{savedSearchTitle}」は保存されませんでした。", "discover.notifications.savedSearchTitle": "検索「{savedSearchTitle}」が保存されました。", - "discover.painlessError.painlessScriptedFieldErrorMessage": "Painlessスクリプトのフィールド「{script}」のエラー.", "discover.reloadSavedSearchButton": "検索をリセット", "discover.rootBreadcrumb": "発見", "discover.savedSearch.savedObjectName": "保存検索", @@ -4380,7 +4375,6 @@ "visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "indexPatternまたはsavedSearchIdが必要です", "visualize.createVisualization.noVisTypeErrorMessage": "有効なビジュアライゼーションタイプを指定してください", "visualize.editor.createBreadcrumb": "作成", - "visualize.error.title": "ビジュアライゼーションエラー", "visualize.helpMenu.appName": "可視化", "visualize.linkedToSearch.unlinkSuccessNotificationText": "保存された検索「{searchTitle}」からリンクが解除されました", "visualize.listing.betaTitle": "ベータ", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 104fc70f5dd71..5738b440a9e92 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -1368,10 +1368,6 @@ "discover.embeddable.inspectorRequestDataTitle": "数据", "discover.embeddable.inspectorRequestDescription": "此请求将查询 Elasticsearch 以获取搜索的数据。", "discover.embeddable.search.displayName": "搜索", - "discover.errorLoadingData": "加载数据时出错", - "discover.fetchError.howToAddressErrorDescription": "您可以通过编辑{managementLink}中{scriptedFields}选项卡下的“{fetchErrorScript}”字段来解决此错误。", - "discover.fetchError.managmentLinkText": "“管理”>“索引模式”", - "discover.fetchError.scriptedFieldsText": "“脚本字段”", "discover.fieldChooser.detailViews.emptyStringText": "空字符串", "discover.fieldChooser.detailViews.filterOutValueButtonAriaLabel": "筛除 {field}:“{value}”", "discover.fieldChooser.detailViews.filterValueButtonAriaLabel": "筛留 {field}:“{value}”", @@ -1446,7 +1442,6 @@ "discover.notifications.invalidTimeRangeTitle": "时间范围无效", "discover.notifications.notSavedSearchTitle": "搜索“{savedSearchTitle}”未保存。", "discover.notifications.savedSearchTitle": "搜索“{savedSearchTitle}”已保存", - "discover.painlessError.painlessScriptedFieldErrorMessage": "Painless 脚本字段“{script}”有错误。", "discover.reloadSavedSearchButton": "重置搜索", "discover.rootBreadcrumb": "Discover", "discover.savedSearch.savedObjectName": "已保存搜索", @@ -4381,7 +4376,6 @@ "visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "必须提供 indexPattern 或 savedSearchId", "visualize.createVisualization.noVisTypeErrorMessage": "必须提供有效的可视化类型", "visualize.editor.createBreadcrumb": "创建", - "visualize.error.title": "可视化错误", "visualize.helpMenu.appName": "Visualize", "visualize.linkedToSearch.unlinkSuccessNotificationText": "已取消与已保存搜索“{searchTitle}”的链接", "visualize.listing.betaTitle": "公测版", diff --git a/x-pack/test/functional/apps/discover/error_handling.ts b/x-pack/test/functional/apps/discover/error_handling.ts index 515e5e293ae28..40aa8cd5c0606 100644 --- a/x-pack/test/functional/apps/discover/error_handling.ts +++ b/x-pack/test/functional/apps/discover/error_handling.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); describe('errors', function describeIndexTests() { @@ -23,11 +23,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async function () { await esArchiver.unload('invalid_scripted_field'); }); + // this is the same test as in OSS but it catches different error message issue in different licences describe('invalid scripted field error', () => { it('is rendered', async () => { - const isFetchErrorVisible = await testSubjects.exists('discoverFetchError'); - expect(isFetchErrorVisible).to.be(true); + const toast = await toasts.getToastElement(1); + const painlessStackTrace = await toast.findByTestSubject('painlessStackTrace'); + expect(painlessStackTrace).not.to.be(undefined); }); }); }); From 8ce96e3ce4345c67142faf88280eba2bd709b003 Mon Sep 17 00:00:00 2001 From: ncheckin <68351161+ncheckin@users.noreply.github.com> Date: Mon, 28 Sep 2020 11:35:33 -0400 Subject: [PATCH 006/119] Update tutorial-discovering.asciidoc (#76976) * Update tutorial-discovering.asciidoc Adds alt text to images in doc. * Update docs/getting-started/tutorial-discovering.asciidoc * Update docs/getting-started/tutorial-discovering.asciidoc Co-authored-by: Kaarina Tungseth --- docs/getting-started/tutorial-discovering.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/tutorial-discovering.asciidoc b/docs/getting-started/tutorial-discovering.asciidoc index ec07a74b8ac0d..99a07acf98791 100644 --- a/docs/getting-started/tutorial-discovering.asciidoc +++ b/docs/getting-started/tutorial-discovering.asciidoc @@ -21,7 +21,7 @@ The search returns all account numbers between zero and 99 with balances in excess of 47,500. Results appear for account numbers 8, 32, 78, 85, and 97. + [role="screenshot"] -image::images/tutorial-discover-2.png[] +image::images/tutorial-discover-2.png[Image showing the search results for account numbers between zero and 99, with balances in excess of 47,500] + . Hover over the list of *Available fields*, then click *Add* next to each field you want include in the table. @@ -30,6 +30,6 @@ For example, when you add the `account_number` field, the display changes to a l account numbers. + [role="screenshot"] -image::images/tutorial-discover-3.png[] +image::images/tutorial-discover-3.png[Image showing a dropdown with five account numbers, which match the previous query for account balance] Now that you know what your documents contain, it's time to gain insight into your data with visualizations. From 68912875c4c4879c4723dae648d74b46ca9136fa Mon Sep 17 00:00:00 2001 From: ncheckin <68351161+ncheckin@users.noreply.github.com> Date: Mon, 28 Sep 2020 11:41:03 -0400 Subject: [PATCH 007/119] Update tutorial-visualizing.asciidoc (#76977) * Update tutorial-visualizing.asciidoc adds alt text to images * Update docs/getting-started/tutorial-visualizing.asciidoc * Update docs/getting-started/tutorial-visualizing.asciidoc * Update docs/getting-started/tutorial-visualizing.asciidoc * Update docs/getting-started/tutorial-visualizing.asciidoc * Update docs/getting-started/tutorial-visualizing.asciidoc * Update docs/getting-started/tutorial-visualizing.asciidoc Co-authored-by: Elastic Machine Co-authored-by: Kaarina Tungseth --- .../tutorial-visualizing.asciidoc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/getting-started/tutorial-visualizing.asciidoc b/docs/getting-started/tutorial-visualizing.asciidoc index 33a7035160247..a53c8cb6bc23d 100644 --- a/docs/getting-started/tutorial-visualizing.asciidoc +++ b/docs/getting-started/tutorial-visualizing.asciidoc @@ -16,7 +16,7 @@ To visualize the Shakespeare data and compare the number of speaking parts in th . Click *Create new*, then click *Lens* on the *New Visualization* window. + [role="screenshot"] -image::images/tutorial-visualize-wizard-step-1.png[Bar chart] +image::images/tutorial-visualize-wizard-step-1.png[Image showing different options for your new visualization] . Make sure the index pattern is *shakes*. @@ -39,7 +39,7 @@ image::images/tutorial-visualize-wizard-step-1.png[Bar chart] .. In the *Label* field, enter `Speaking Parts`. + [role="screenshot"] -image::images/tutorial-visualize-bar-1.5.png[Bar chart] +image::images/tutorial-visualize-bar-1.5.png[Bar chart showing the speaking parts data] . *Save* the chart with the name `Bar Example`. + @@ -85,7 +85,7 @@ Since the default search matches all documents, the pie contains a single slice. The pie chart displays the proportion of the 1,000 accounts that fall into each of the ranges. + [role="screenshot"] -image::images/tutorial-visualize-pie-2.png[Pie chart] +image::images/tutorial-visualize-pie-2.png[Pie chart displaying accounts that fall into each of the ranges, scaled to 1000 accounts] . Add another bucket aggregation that displays the ages of the account holders. @@ -99,7 +99,7 @@ The break down of the ages of the account holders are displayed in a ring around the balance ranges. + [role="screenshot"] -image::images/tutorial-visualize-pie-3.png[Final pie chart] +image::images/tutorial-visualize-pie-3.png[Final pie chart showing all of the changes] . Click *Save*, then enter `Pie Example` in the *Title* field. @@ -119,7 +119,7 @@ To visualize geographic information in the log file data, use <>. .. Set the *End date* to `May 20, 2015 @ 12:00:00.000`. + [role="screenshot"] -image::images/gs_maps_time_filter.png[Time filter for Maps tutorial] +image::images/gs_maps_time_filter.png[Image showing the time filter for Maps tutorial] .. Click *Update* @@ -140,7 +140,7 @@ image::images/gs_maps_time_filter.png[Time filter for Maps tutorial] .. From the *Border color* dropdown, select *#FFF*, then click *Save & close*. + [role="screenshot"] -image::images/tutorial-visualize-map-2.png[Map] +image::images/tutorial-visualize-map-2.png[Example of a map visualization] . Click *Save*, then enter `Map Example` in the *Title* field. @@ -170,12 +170,12 @@ The Markdown widget uses **markdown** syntax. The Markdown renders in the preview pane. + [role="screenshot"] -image::images/tutorial-visualize-md-2.png[] +image::images/tutorial-visualize-md-2.png[Image showing example markdown editing field] . Click *Save*, then enter `Markdown Example` in the *Title* field. [role="screenshot"] -image::images/tutorial-dashboard.png[] +image::images/tutorial-dashboard.png[Final visualization with bar chart, pie chart, map, and markdown text field] [float] === Next steps From 93248808b33d2ab8bafcff73a3c47c409d2a4700 Mon Sep 17 00:00:00 2001 From: Daniil Suleiman <31325372+sulemanof@users.noreply.github.com> Date: Mon, 28 Sep 2020 18:47:53 +0300 Subject: [PATCH 008/119] Fix types (#78619) --- src/plugins/visualizations/public/types.ts | 4 ++-- .../public/vis_types/base_vis_type.ts | 16 +++++++++------- .../public/vis_types/types_service.ts | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/plugins/visualizations/public/types.ts b/src/plugins/visualizations/public/types.ts index 897a8c1e32319..68ab3561d375c 100644 --- a/src/plugins/visualizations/public/types.ts +++ b/src/plugins/visualizations/public/types.ts @@ -73,7 +73,7 @@ export interface VisToExpressionAstParams { abortSignal?: AbortSignal; } -export type VisToExpressionAst = ( - vis: Vis, +export type VisToExpressionAst = ( + vis: Vis, params: VisToExpressionAstParams ) => ExpressionAstExpression; diff --git a/src/plugins/visualizations/public/vis_types/base_vis_type.ts b/src/plugins/visualizations/public/vis_types/base_vis_type.ts index 283286648ff16..27a4f299c1e9c 100644 --- a/src/plugins/visualizations/public/vis_types/base_vis_type.ts +++ b/src/plugins/visualizations/public/vis_types/base_vis_type.ts @@ -18,7 +18,7 @@ */ import _ from 'lodash'; -import { VisToExpressionAst, VisualizationControllerConstructor } from '../types'; +import { VisParams, VisToExpressionAst, VisualizationControllerConstructor } from '../types'; import { TriggerContextMapping } from '../../../ui_actions/public'; import { Adapters } from '../../../inspector/public'; @@ -43,8 +43,8 @@ interface CommonBaseVisTypeOptions { inspectorAdapters?: Adapters | (() => Adapters); } -interface ExpressionBaseVisTypeOptions extends CommonBaseVisTypeOptions { - toExpressionAst: VisToExpressionAst; +interface ExpressionBaseVisTypeOptions extends CommonBaseVisTypeOptions { + toExpressionAst: VisToExpressionAst; visualization?: undefined; } @@ -53,9 +53,11 @@ interface VisualizationBaseVisTypeOptions extends CommonBaseVisTypeOptions { visualization: VisualizationControllerConstructor | undefined; } -export type BaseVisTypeOptions = ExpressionBaseVisTypeOptions | VisualizationBaseVisTypeOptions; +export type BaseVisTypeOptions = + | ExpressionBaseVisTypeOptions + | VisualizationBaseVisTypeOptions; -export class BaseVisType { +export class BaseVisType { name: string; title: string; description: string; @@ -77,9 +79,9 @@ export class BaseVisType { setup?: unknown; useCustomNoDataScreen: boolean; inspectorAdapters?: Adapters | (() => Adapters); - toExpressionAst?: VisToExpressionAst; + toExpressionAst?: VisToExpressionAst; - constructor(opts: BaseVisTypeOptions) { + constructor(opts: BaseVisTypeOptions) { if (!opts.icon && !opts.image) { throw new Error('vis_type must define its icon or image'); } diff --git a/src/plugins/visualizations/public/vis_types/types_service.ts b/src/plugins/visualizations/public/vis_types/types_service.ts index 157dbd41ce8a2..1afbd6901a195 100644 --- a/src/plugins/visualizations/public/vis_types/types_service.ts +++ b/src/plugins/visualizations/public/vis_types/types_service.ts @@ -71,7 +71,7 @@ export class TypesService { * registers a visualization type * @param config - visualization type definition */ - createBaseVisualization: (config: BaseVisTypeOptions): void => { + createBaseVisualization: (config: BaseVisTypeOptions): void => { const vis = new BaseVisType(config); registerVisualization(() => vis); }, From 37d49b00524e547daab8557fb5b9b80243b47753 Mon Sep 17 00:00:00 2001 From: ncheckin <68351161+ncheckin@users.noreply.github.com> Date: Mon, 28 Sep 2020 11:53:38 -0400 Subject: [PATCH 009/119] updated discover with alt text (#77660) * Update context.asciidoc * Update document-data.asciidoc * Update field-filter.asciidoc * Update search.asciidoc * Update set-time-filter.asciidoc * Update viewing-field-stats.asciidoc * Update canvas-edit-workpads.asciidoc * Update canvas-expression-lifecycle.asciidoc * Update canvas-present-workpad.asciidoc * Update canvas-share-workpad.asciidoc * Update canvas-tutorial.asciidoc * Update docs/canvas/canvas-share-workpad.asciidoc * Update docs/canvas/canvas-share-workpad.asciidoc * Update docs/canvas/canvas-tutorial.asciidoc * Update docs/canvas/canvas-tutorial.asciidoc * Update docs/canvas/canvas-tutorial.asciidoc * Update docs/canvas/canvas-tutorial.asciidoc * Update docs/discover/search.asciidoc * Update docs/discover/set-time-filter.asciidoc * Update docs/discover/viewing-field-stats.asciidoc * Update docs/discover/field-filter.asciidoc * Update docs/discover/document-data.asciidoc Co-authored-by: Kaarina Tungseth --- docs/canvas/canvas-edit-workpads.asciidoc | 6 +++--- docs/canvas/canvas-expression-lifecycle.asciidoc | 8 ++++---- docs/canvas/canvas-present-workpad.asciidoc | 4 ++-- docs/canvas/canvas-share-workpad.asciidoc | 8 ++++---- docs/canvas/canvas-tutorial.asciidoc | 8 ++++---- docs/discover/context.asciidoc | 2 +- docs/discover/document-data.asciidoc | 2 +- docs/discover/field-filter.asciidoc | 2 +- docs/discover/search.asciidoc | 2 +- docs/discover/set-time-filter.asciidoc | 4 ++-- docs/discover/viewing-field-stats.asciidoc | 2 +- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/canvas/canvas-edit-workpads.asciidoc b/docs/canvas/canvas-edit-workpads.asciidoc index 6558def8a7474..6ad2d89be4a42 100644 --- a/docs/canvas/canvas-edit-workpads.asciidoc +++ b/docs/canvas/canvas-edit-workpads.asciidoc @@ -25,12 +25,12 @@ For example, to change the index pattern for a set of charts: Specify the variable options. [role="screenshot"] -image::images/specify_variable_syntax.png[Specify the variable syntax] +image::images/specify_variable_syntax.png[Image describing how to specify the variable syntax] Copy the variable, then apply it to each element you want to update in the *Expression editor*. [role="screenshot"] -image::images/copy_variable_syntax.png[Copy the variable syntax] +image::images/copy_variable_syntax.png[Image demonstrating expression editor] [float] [[apply-changes-to-the-entire-workpad]] @@ -85,7 +85,7 @@ To use an element with the same functionality and appearance in multiple places, Select the element, then click *Edit > Clone*. [role="screenshot"] -image::images/clone_element.gif[Clone elements] +image::images/clone_element.gif[Image showing how to clone elements] [float] [[move-and-resize-elements]] diff --git a/docs/canvas/canvas-expression-lifecycle.asciidoc b/docs/canvas/canvas-expression-lifecycle.asciidoc index 895c1382c4d36..7d48c593f9e18 100644 --- a/docs/canvas/canvas-expression-lifecycle.asciidoc +++ b/docs/canvas/canvas-expression-lifecycle.asciidoc @@ -30,7 +30,7 @@ The filtered <> becomes the _context_ of the next functi Let’s look at another expression, which uses the same <> function, but instead produces a pie chart. -image::images/canvas-functions-can-take-arguments-pie-chart.png[Pie Chart, height=400] +image::images/canvas-functions-can-take-arguments-pie-chart.png[Pie chart showing output of demodata function] [source,text] ---- filters @@ -47,7 +47,7 @@ If the expression stopped there, it would produce a `pointseries` data type as t The end result is a simple pie chart that uses the default color palette, but the <> function can take additional arguments that control how it gets rendered. For example, you can provide a `hole` argument to turn your pie chart into a donut chart by changing the expression to: -image::images/canvas-functions-can-take-arguments-donut-chart.png[Donut Chart, height=400] +image::images/canvas-functions-can-take-arguments-donut-chart.png[Alternative output as donut chart] [source,text] ---- filters @@ -83,7 +83,7 @@ You can substitute one function for another to change the output. For example, y Let’s change that last pie chart into a bubble chart by replacing the <> function with the <> function. This is possible because both functions can accept a `pointseries` data type as their _context_. Switching the functions will work, but it won’t produce a useful visualization on its own since you don’t have the x-axis and y-axis defined. You will also need to modify the <> function to change its output. In this case, you can change the `size` argument to `y`, so the maximum price values are plotted on the y-axis, and add an `x` argument using the `@timestamp` field in the data to plot those values over time. This leaves you with the following expression and produces a bubble chart showing the max price of each state over time: -image::images/canvas-change-your-expression-chart.png[Bubble Chart, height=400] +image::images/canvas-change-your-expression-chart.png[Bubble Chart, with price along x axis, and time along y axis] [source,text] ---- filters @@ -95,7 +95,7 @@ filters Similar to the <> function, the <> function takes arguments that control the design elements of the visualization. As one example, passing a `legend` argument with a value of `false` to the function will hide the legend on the chart. -image::images/canvas-change-your-expression-chart-no-legend.png[Bubble Chart Without Legend, height=400] +image::images/canvas-change-your-expression-chart-no-legend.png[Bubble Chart Without Legend] [source,text,subs=+quotes] ---- filters diff --git a/docs/canvas/canvas-present-workpad.asciidoc b/docs/canvas/canvas-present-workpad.asciidoc index a6d801b74fce1..b1492f57e46f8 100644 --- a/docs/canvas/canvas-present-workpad.asciidoc +++ b/docs/canvas/canvas-present-workpad.asciidoc @@ -18,7 +18,7 @@ image::images/canvas-autoplay-interval.png[Element autoplay interval] . To start your presentation, click *View > Enter fullscreen mode*. + [role="screenshot"] -image::images/canvas-fullscreen.png[Fullscreen mode] +image::images/canvas-fullscreen.png[Image showing how to enter fullscreen mode from view dropdown] . When you are ready to exit fullscreen mode, press the Esc (Escape) key. @@ -33,7 +33,7 @@ To get a closer look at a portion of your workpad, use the zoom options. . Select the zoom option. + [role="screenshot"] -image::images/canvas-zoom-controls.png[Zoom controls] +image::images/canvas-zoom-controls.png[Zoom controls, also in view dropdown] [float] [[configure-auto-refresh-interval]] diff --git a/docs/canvas/canvas-share-workpad.asciidoc b/docs/canvas/canvas-share-workpad.asciidoc index f6cd2d93a9372..4887eb6ca870d 100644 --- a/docs/canvas/canvas-share-workpad.asciidoc +++ b/docs/canvas/canvas-share-workpad.asciidoc @@ -13,7 +13,7 @@ Create a JSON file of your workpad that you can export outside of {kib}. Click *Share > Download as JSON*. [role="screenshot"] -image::images/canvas-export-workpad.png[Export single workpad] +image::images/canvas-export-workpad.png[Export single workpad through JSON, from Share dropdown] Want to export multiple workpads? Go to the *Canvas* home page, select the workpads you want to export, then click *Export*. @@ -26,7 +26,7 @@ If you have a subscription that supports the {report-features}, you can create a Click *Share > PDF reports > Generate PDF*. [role="screenshot"] -image::images/canvas-generate-pdf.gif[Generate PDF] +image::images/canvas-generate-pdf.gif[Image showing how to generate a PDF] For more information, refer to <>. @@ -39,7 +39,7 @@ If you have a subscription that supports the {report-features}, you can create a Click *Share > PDF reports > Copy POST URL*. [role="screenshot"] -image::images/canvas-create-URL.gif[Create POST URL] +image::images/canvas-create-URL.gif[Image showing how to create POST URL] For more information, refer to <>. @@ -58,7 +58,7 @@ beta[] Canvas allows you to create _shareables_, which are workpads that you dow To make sure that your data remains secure, the data in the JSON file is not connected to {kib}. Canvas does not display elements that manipulate the data on the workpad. + [role="screenshot"] -image::canvas/images/canvas-embed_workpad.gif[Share the workpad on a website] +image::canvas/images/canvas-embed_workpad.gif[Image showing how to share the workpad on a website] + NOTE: Shareable workpads encode the current state of the workpad in a JSON file. When you make changes to the workpad, the changes do not appear in the shareable workpad on your website. diff --git a/docs/canvas/canvas-tutorial.asciidoc b/docs/canvas/canvas-tutorial.asciidoc index a861b30db784f..ea4d2c8cc6a83 100644 --- a/docs/canvas/canvas-tutorial.asciidoc +++ b/docs/canvas/canvas-tutorial.asciidoc @@ -30,7 +30,7 @@ The default Elastic logo image appears on the page. . To replace the Elastic logo with your own image, select the image, then use the editor. [role="screenshot"] -image::images/canvas-image-element.png[] +image::images/canvas-image-element.png[Image showing how to add the image element] [float] === Customize your data with metrics @@ -70,7 +70,7 @@ You're now looking at the raw data syntax that Canvas uses to display the elemen .. Click *Run*. [role="screenshot"] -image::images/canvas-metric-element.png[] +image::images/canvas-metric-element.png[Image showing changes to the Canvas workpad] [float] === Show off your data with charts @@ -96,7 +96,7 @@ To show what your data can do, add charts, graphs, progress monitors, and more t .. From the *Y-axis* drop-down lists, select *Value*, then select *taxless_total_price*. [role="screenshot"] -image::images/canvas-chart-element.png[] +image::images/canvas-chart-element.png[Image showing Canvas workpad with sample data graph] [float] === Show how your data changes over time @@ -110,7 +110,7 @@ To focus your data on a specific time range, add the time filter. . To use the date time field from the sample data, enter `order_date` in the *Column* field, then click *Set*. [role="screenshot"] -image::images/canvas-timefilter-element.png[] +image::images/canvas-timefilter-element.png[Image showing Canvas workpad with filtered sample data graph] To see how the data changes, set the time filter to *Last 7 days*. As you change the time filter options, the elements automatically update. diff --git a/docs/discover/context.asciidoc b/docs/discover/context.asciidoc index 17ed78a163571..e26c91bfef075 100644 --- a/docs/discover/context.asciidoc +++ b/docs/discover/context.asciidoc @@ -16,7 +16,7 @@ The anchor document is highlighted in blue. [role="screenshot"] -image::images/Discover-ContextView.png[Context View] +image::images/Discover-ContextView.png[Image showing context view feature, with anchor documents highlighted in blue] [float] [[filter-context]] diff --git a/docs/discover/document-data.asciidoc b/docs/discover/document-data.asciidoc index ee130e8405483..dd245e4b4558f 100644 --- a/docs/discover/document-data.asciidoc +++ b/docs/discover/document-data.asciidoc @@ -44,7 +44,7 @@ immediately before and after your event. share the link for direct access to a particular document. [role="screenshot"] -image::images/Expanded-Document.png[] +image::images/Expanded-Document.png[Image showing expanded view, with JSON and table viewing options] [float] diff --git a/docs/discover/field-filter.asciidoc b/docs/discover/field-filter.asciidoc index 949cab2c2f976..0c521b401e4b8 100644 --- a/docs/discover/field-filter.asciidoc +++ b/docs/discover/field-filter.asciidoc @@ -19,7 +19,7 @@ the field, the top 5 values for the field, and the percentage of documents that contain each value. + [role="screenshot"] -image::images/filter-field.png[height=317] +image::images/filter-field.png[Picture showing top 5 values for each field, and correspnding percentage of documents that contain each value] . Use the image:images/PositiveFilter.jpg[Positive Filter] icon to show only documents that contain that value, diff --git a/docs/discover/search.asciidoc b/docs/discover/search.asciidoc index da58382deb89a..ee1e1526f9d6f 100644 --- a/docs/discover/search.asciidoc +++ b/docs/discover/search.asciidoc @@ -28,7 +28,7 @@ configure a refresh interval to periodically resubmit your searches to retrieve the latest results. [role="screenshot"] -image::images/autorefresh-interval.png[] +image::images/autorefresh-interval.png[Image showing what refresh interval option looks like. The configurable time interval is located in the dropdown] You can also manually refresh the search results by clicking the *Refresh* button. diff --git a/docs/discover/set-time-filter.asciidoc b/docs/discover/set-time-filter.asciidoc index a5b81b0fa461c..93fdf9ffd695a 100644 --- a/docs/discover/set-time-filter.asciidoc +++ b/docs/discover/set-time-filter.asciidoc @@ -14,7 +14,7 @@ range in the histogram. Use the time filter to change the time range. By default, the time filter is set to the last 15 minutes. -. Click image:images/time-filter-calendar.png[]. +. Click image:images/time-filter-calendar.png[Calendar icon]. . Choose one of the following: @@ -53,4 +53,4 @@ when you hover over a valid start point. * Click the dropdown, then select an interval. [role="screenshot"] -image::images/Histogram-Time.png[Time range selector in Histogram] +image::images/Histogram-Time.png[Time range selector in Histogram dropdown] diff --git a/docs/discover/viewing-field-stats.asciidoc b/docs/discover/viewing-field-stats.asciidoc index 5ada5839fd344..5c46177347530 100644 --- a/docs/discover/viewing-field-stats.asciidoc +++ b/docs/discover/viewing-field-stats.asciidoc @@ -11,4 +11,4 @@ they are available in the side bar if you uncheck "Hide missing fields". To view field data statistics, click the name of a field in the fields list. -image:images/filter-field.png[Field Statistics,height=317] +image:images/filter-field.png[Fields list that displays the top five search results] From c285287da39abe4c9f091c02f5ae3ffd10ca25a7 Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Mon, 28 Sep 2020 18:50:48 +0200 Subject: [PATCH 010/119] Fix Lens smokescreen flaky tests (#78566) Co-authored-by: Elastic Machine --- .../dashboard_mode/dashboard_empty_screen.js | 3 --- x-pack/test/functional/apps/lens/rollup.ts | 3 --- x-pack/test/functional/apps/lens/smokescreen.ts | 17 +---------------- .../test/functional/page_objects/lens_page.ts | 16 +++++++++++++++- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js b/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js index b74df71701026..bd35374643e9b 100644 --- a/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js +++ b/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js @@ -40,21 +40,18 @@ export default function ({ getPageObjects, getService }) { operation: 'date_histogram', field: '@timestamp', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', operation: 'avg', field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: 'ip', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.save(title, saveAsNew, redirectToOrigin); } diff --git a/x-pack/test/functional/apps/lens/rollup.ts b/x-pack/test/functional/apps/lens/rollup.ts index 8e1dc231b6b1a..f6882c8aed214 100644 --- a/x-pack/test/functional/apps/lens/rollup.ts +++ b/x-pack/test/functional/apps/lens/rollup.ts @@ -34,21 +34,18 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { operation: 'date_histogram', field: '@timestamp', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', operation: 'sum', field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: 'geo.src', }); - await PageObjects.lens.closeDimensionEditor(); expect(await find.allByCssSelector('.echLegendItem')).to.have.length(2); await PageObjects.lens.save('Afancilenstest'); diff --git a/x-pack/test/functional/apps/lens/smokescreen.ts b/x-pack/test/functional/apps/lens/smokescreen.ts index 1ed3a0864c244..d26c92a2bcd63 100644 --- a/x-pack/test/functional/apps/lens/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/smokescreen.ts @@ -25,21 +25,18 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { operation: 'date_histogram', field: '@timestamp', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', operation: 'avg', field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: '@message.raw', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.switchToVisualization('lnsDatatable'); await PageObjects.lens.removeDimension('lnsDatatable_column'); @@ -50,7 +47,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { operation: 'terms', field: 'ip', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.save('Afancilenstest'); @@ -78,6 +74,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dimension: 'lnsXY_splitDimensionPanel > lns-dimensionTrigger', operation: 'filters', isPreviousIncompatible: true, + keepOpen: true, }); await PageObjects.lens.addFilterToAgg(`geo.src : CN`); @@ -110,14 +107,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { field: '@timestamp', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', operation: 'avg', field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.createLayer(); expect(await PageObjects.lens.hasChartSwitchWarning('line')).to.eql(false); @@ -132,7 +127,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 1 ); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension( { dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', @@ -142,7 +136,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 1 ); - await PageObjects.lens.closeDimensionEditor(); expect(await PageObjects.lens.getLayerCount()).to.eql(2); await testSubjects.click('lnsLayerRemove'); await testSubjects.click('lnsLayerRemove'); @@ -171,8 +164,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.existOrFail('indexPattern-dimension-formatDecimals'); - await PageObjects.lens.closeDimensionEditor(); - expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( 'Test of label' ); @@ -189,14 +180,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { field: 'geo.dest', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', operation: 'avg', field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.createLayer(); await PageObjects.lens.configureDimension( @@ -208,7 +197,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 1 ); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension( { dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', @@ -218,7 +206,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 1 ); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.save('twolayerchart'); await testSubjects.click('lnsSuggestion-asDonut > lnsSuggestion'); @@ -304,7 +291,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { operation: 'date_histogram', field: '@timestamp', }); - await PageObjects.lens.closeDimensionEditor(); await PageObjects.lens.configureDimension({ dimension: 'lnsPie_sizeByDimensionPanel > lns-empty-dimension', @@ -312,7 +298,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { field: 'bytes', }); - await PageObjects.lens.closeDimensionEditor(); expect(await PageObjects.lens.hasChartSwitchWarning('lnsDatatable')).to.eql(false); await PageObjects.lens.switchToVisualization('lnsDatatable'); diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index a1e62afbe14c8..ec7281e53c5e1 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -90,6 +90,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont operation: string; field?: string; isPreviousIncompatible?: boolean; + keepOpen?: boolean; }, layerIndex = 0 ) { @@ -107,6 +108,10 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await comboBox.openOptionsList(target); await comboBox.setElement(target, opts.field); } + + if (!opts.keepOpen) { + this.closeDimensionEditor(); + } }, // closes the dimension editor flyout @@ -127,7 +132,16 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await testSubjects.click('lns-newBucket-add'); const queryInput = await testSubjects.find('indexPattern-filters-queryStringInput'); await queryInput.type(queryString); - await PageObjects.common.pressEnterKey(); + // Problem here is that after typing in the queryInput a dropdown will fetch the server + // with suggestions and show up. Depending on the cursor position and some other factors + // pressing Enter at this point may lead to auto-complete the queryInput with random stuff from the + // dropdown which was not intended originally. + // To close the Filter popover we need to move to the label input and then press Enter: + // solution is to press Tab 2 twice (first Tab will close the dropdown) instead of Enter to avoid + // race condition with the dropdown + await PageObjects.common.pressTabKey(); + await PageObjects.common.pressTabKey(); + // Now it is safe to press Enter as we're in the label input await PageObjects.common.pressEnterKey(); await PageObjects.common.sleep(1000); // give time for debounced components to rerender }, From 54a2c75097bf7851fc6e10fe1ed26c22cd2ba470 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 28 Sep 2020 11:31:53 -0600 Subject: [PATCH 011/119] Add deprecated message to tile_map and region_map visualizations. (#77683) * Add deprecation message to coordinate map and region map * clean up text * add default distro link and view in maps link * move url generation into onClick handler * create tile map layer descritor * set metrics and color and scaling * lazy load createTileMapLayerDescriptor * tslint fixes * tslint cleanup for OSS code * add region map deprecation message * tslint cleanup * consolidate logic into LegacyMapDeprecationMessage * fix jest test * fix tile-map and region_map in OSS distro * tslint fixes * assert urlGenerator exists * update message text * ensure legacy-ids get correctly evaluated (#37) * handle 6.x region map saved objects * turn off field meta * fix type Co-authored-by: Elastic Machine Co-authored-by: Thomas Neirynck --- .../legacy_map_deprecation_message.tsx | 79 +++++++ src/plugins/maps_legacy/public/index.ts | 1 + src/plugins/region_map/kibana.json | 3 +- .../public/get_deprecation_message.tsx | 93 ++++++++ .../region_map/public/kibana_services.ts | 10 + src/plugins/region_map/public/plugin.ts | 22 +- .../region_map/public/region_map_type.js | 3 + src/plugins/tile_map/kibana.json | 3 +- .../public/get_deprecation_message.tsx | 89 ++++++++ src/plugins/tile_map/public/plugin.ts | 20 +- src/plugins/tile_map/public/services.ts | 6 + src/plugins/tile_map/public/tile_map_type.js | 3 + .../public/vis_types/base_vis_type.ts | 8 + .../components/visualize_editor_common.tsx | 44 ++-- .../create_region_map_layer_descriptor.ts | 117 ++++++++++ .../create_tile_map_layer_descriptor.test.ts | 43 ++++ .../create_tile_map_layer_descriptor.ts | 159 ++++++++++++++ .../observability/create_layer_descriptor.ts | 1 - .../ems_file_source/ems_file_source.tsx | 4 +- .../maps/public/lazy_load_bundle/index.ts | 42 ++++ .../public/lazy_load_bundle/lazy/index.ts | 2 + x-pack/plugins/maps/public/plugin.ts | 27 ++- .../plugins/maps/public/url_generator.test.ts | 5 +- x-pack/plugins/maps/public/url_generator.ts | 199 ++++++++++++++---- 24 files changed, 899 insertions(+), 84 deletions(-) create mode 100644 src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx create mode 100644 src/plugins/region_map/public/get_deprecation_message.tsx create mode 100644 src/plugins/tile_map/public/get_deprecation_message.tsx create mode 100644 x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts create mode 100644 x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.test.ts create mode 100644 x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts diff --git a/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx b/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx new file mode 100644 index 0000000000000..3fae842663fdd --- /dev/null +++ b/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx @@ -0,0 +1,79 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { EuiButton, EuiCallOut, EuiLink } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +interface Props { + isMapsAvailable: boolean; + onClick: (e: React.MouseEvent) => Promise; + visualizationLabel: string; +} + +export function LegacyMapDeprecationMessage(props: Props) { + const getMapsMessage = !props.isMapsAvailable ? ( + + default distribution + + ), + }} + /> + ) : null; + + const button = props.isMapsAvailable ? ( +
+ + + +
+ ) : null; + + return ( + +

+ +

+ {button} +
+ ); +} diff --git a/src/plugins/maps_legacy/public/index.ts b/src/plugins/maps_legacy/public/index.ts index d31f23f4bc4a6..fe5338b890ec8 100644 --- a/src/plugins/maps_legacy/public/index.ts +++ b/src/plugins/maps_legacy/public/index.ts @@ -63,6 +63,7 @@ export * from './common/types'; export { ORIGIN } from './common/constants/origin'; export { WmsOptions } from './components/wms_options'; +export { LegacyMapDeprecationMessage } from './components/legacy_map_deprecation_message'; export { lazyLoadMapsLegacyModules } from './lazy_load_bundle'; diff --git a/src/plugins/region_map/kibana.json b/src/plugins/region_map/kibana.json index bd5517d2a5bf7..e679baf6d6f06 100644 --- a/src/plugins/region_map/kibana.json +++ b/src/plugins/region_map/kibana.json @@ -10,7 +10,8 @@ "expressions", "mapsLegacy", "kibanaLegacy", - "data" + "data", + "share" ], "requiredBundles": [ "kibanaUtils", diff --git a/src/plugins/region_map/public/get_deprecation_message.tsx b/src/plugins/region_map/public/get_deprecation_message.tsx new file mode 100644 index 0000000000000..ea5cdf42c3111 --- /dev/null +++ b/src/plugins/region_map/public/get_deprecation_message.tsx @@ -0,0 +1,93 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { UrlGeneratorContract } from 'src/plugins/share/public'; +import { getCoreService, getQueryService, getShareService } from './kibana_services'; +import { Vis } from '../../visualizations/public'; +import { LegacyMapDeprecationMessage } from '../../maps_legacy/public'; + +function getEmsLayerId(id: string | number, layerId: string) { + if (typeof id === 'string') { + return id; + } + + // Region maps from 6.x will have numerical EMS id refering to S3 bucket id. + // In this case, use layerId with contains the EMS layer name. + const split = layerId.split('.'); + return split.length === 2 ? split[1] : undefined; +} + +export function getDeprecationMessage(vis: Vis) { + let mapsRegionMapUrlGenerator: + | UrlGeneratorContract<'MAPS_APP_REGION_MAP_URL_GENERATOR'> + | undefined; + try { + mapsRegionMapUrlGenerator = getShareService().urlGenerators.getUrlGenerator( + 'MAPS_APP_REGION_MAP_URL_GENERATOR' + ); + } catch (error) { + // ignore error thrown when url generator is not available + } + + const title = i18n.translate('regionMap.mapVis.regionMapTitle', { defaultMessage: 'Region Map' }); + + async function onClick(e: React.MouseEvent) { + e.preventDefault(); + + const query = getQueryService(); + const createUrlParams: { [key: string]: any } = { + label: vis.title ? vis.title : title, + emsLayerId: vis.params.selectedLayer.isEMS + ? getEmsLayerId(vis.params.selectedLayer.id, vis.params.selectedLayer.layerId) + : undefined, + leftFieldName: vis.params.selectedLayer.isEMS ? vis.params.selectedJoinField.name : undefined, + colorSchema: vis.params.colorSchema, + indexPatternId: vis.data.indexPattern?.id, + indexPatternTitle: vis.data.indexPattern?.title, + metricAgg: 'count', + filters: query.filterManager.getFilters(), + query: query.queryString.getQuery(), + timeRange: query.timefilter.timefilter.getTime(), + }; + + const bucketAggs = vis.data?.aggs?.byType('buckets'); + if (bucketAggs?.length && bucketAggs[0].type.dslName === 'terms') { + createUrlParams.termsFieldName = bucketAggs[0].getField()?.name; + } + + const metricAggs = vis.data?.aggs?.byType('metrics'); + if (metricAggs?.length) { + createUrlParams.metricAgg = metricAggs[0].type.dslName; + createUrlParams.metricFieldName = metricAggs[0].getField()?.name; + } + + const url = await mapsRegionMapUrlGenerator!.createUrl(createUrlParams); + getCoreService().application.navigateToUrl(url); + } + + return ( + + ); +} diff --git a/src/plugins/region_map/public/kibana_services.ts b/src/plugins/region_map/public/kibana_services.ts index 8367325c7415b..7edbf2da36fc7 100644 --- a/src/plugins/region_map/public/kibana_services.ts +++ b/src/plugins/region_map/public/kibana_services.ts @@ -17,10 +17,14 @@ * under the License. */ +import { CoreStart } from 'kibana/public'; import { NotificationsStart } from 'kibana/public'; import { createGetterSetter } from '../../kibana_utils/public'; import { DataPublicPluginStart } from '../../data/public'; import { KibanaLegacyStart } from '../../kibana_legacy/public'; +import { SharePluginStart } from '../../share/public'; + +export const [getCoreService, setCoreService] = createGetterSetter('Core'); export const [getFormatService, setFormatService] = createGetterSetter< DataPublicPluginStart['fieldFormats'] @@ -30,6 +34,12 @@ export const [getNotifications, setNotifications] = createGetterSetter('Query'); + +export const [getShareService, setShareService] = createGetterSetter('Share'); + export const [getKibanaLegacy, setKibanaLegacy] = createGetterSetter( 'KibanaLegacy' ); diff --git a/src/plugins/region_map/public/plugin.ts b/src/plugins/region_map/public/plugin.ts index c641c16a8112b..e9978803ad5e2 100644 --- a/src/plugins/region_map/public/plugin.ts +++ b/src/plugins/region_map/public/plugin.ts @@ -31,11 +31,19 @@ import { createRegionMapFn } from './region_map_fn'; // @ts-ignore import { createRegionMapTypeDefinition } from './region_map_type'; import { IServiceSettings, MapsLegacyPluginSetup } from '../../maps_legacy/public'; -import { setFormatService, setNotifications, setKibanaLegacy } from './kibana_services'; +import { + setCoreService, + setFormatService, + setNotifications, + setKibanaLegacy, + setQueryService, + setShareService, +} from './kibana_services'; import { DataPublicPluginStart } from '../../data/public'; import { RegionMapsConfigType } from './index'; import { MapsLegacyConfig } from '../../maps_legacy/config'; import { KibanaLegacyStart } from '../../kibana_legacy/public'; +import { SharePluginStart } from '../../share/public'; /** @private */ interface RegionMapVisualizationDependencies { @@ -57,6 +65,7 @@ export interface RegionMapPluginStartDependencies { data: DataPublicPluginStart; notifications: NotificationsStart; kibanaLegacy: KibanaLegacyStart; + share: SharePluginStart; } /** @internal */ @@ -108,10 +117,13 @@ export class RegionMapPlugin implements Plugin | undefined; + try { + mapsTileMapUrlGenerator = getShareService().urlGenerators.getUrlGenerator( + 'MAPS_APP_TILE_MAP_URL_GENERATOR' + ); + } catch (error) { + // ignore error thrown when url generator is not available + } + + const title = i18n.translate('tileMap.vis.mapTitle', { + defaultMessage: 'Coordinate Map', + }); + + async function onClick(e: React.MouseEvent) { + e.preventDefault(); + + const query = getQueryService(); + const createUrlParams: { [key: string]: any } = { + label: vis.title ? vis.title : title, + mapType: vis.params.mapType, + colorSchema: vis.params.colorSchema, + indexPatternId: vis.data.indexPattern?.id, + metricAgg: 'count', + filters: query.filterManager.getFilters(), + query: query.queryString.getQuery(), + timeRange: query.timefilter.timefilter.getTime(), + }; + + const bucketAggs = vis.data?.aggs?.byType('buckets'); + if (bucketAggs?.length && bucketAggs[0].type.dslName === 'geohash_grid') { + createUrlParams.geoFieldName = bucketAggs[0].getField()?.name; + } else if (vis.data.indexPattern) { + // attempt to default to first geo point field when geohash is not configured yet + const geoField = vis.data.indexPattern.fields.find((field) => { + return ( + !indexPatterns.isNestedField(field) && field.aggregatable && field.type === 'geo_point' + ); + }); + if (geoField) { + createUrlParams.geoFieldName = geoField.name; + } + } + + const metricAggs = vis.data?.aggs?.byType('metrics'); + if (metricAggs?.length) { + createUrlParams.metricAgg = metricAggs[0].type.dslName; + createUrlParams.metricFieldName = metricAggs[0].getField()?.name; + } + + const url = await mapsTileMapUrlGenerator!.createUrl(createUrlParams); + getCoreService().application.navigateToUrl(url); + } + + return ( + + ); +} diff --git a/src/plugins/tile_map/public/plugin.ts b/src/plugins/tile_map/public/plugin.ts index 07add6901fb49..dfcafafbe47f7 100644 --- a/src/plugins/tile_map/public/plugin.ts +++ b/src/plugins/tile_map/public/plugin.ts @@ -34,8 +34,15 @@ import { createTileMapFn } from './tile_map_fn'; import { createTileMapTypeDefinition } from './tile_map_type'; import { IServiceSettings, MapsLegacyPluginSetup } from '../../maps_legacy/public'; import { DataPublicPluginStart } from '../../data/public'; -import { setFormatService, setQueryService, setKibanaLegacy } from './services'; +import { + setCoreService, + setFormatService, + setQueryService, + setKibanaLegacy, + setShareService, +} from './services'; import { KibanaLegacyStart } from '../../kibana_legacy/public'; +import { SharePluginStart } from '../../share/public'; export interface TileMapConfigType { tilemap: any; @@ -61,6 +68,7 @@ export interface TileMapPluginSetupDependencies { export interface TileMapPluginStartDependencies { data: DataPublicPluginStart; kibanaLegacy: KibanaLegacyStart; + share: SharePluginStart; } export interface TileMapPluginSetup { @@ -100,10 +108,12 @@ export class TileMapPlugin implements Plugin('Core'); export const [getFormatService, setFormatService] = createGetterSetter< DataPublicPluginStart['fieldFormats'] @@ -29,6 +33,8 @@ export const [getQueryService, setQueryService] = createGetterSetter< DataPublicPluginStart['query'] >('Query'); +export const [getShareService, setShareService] = createGetterSetter('Share'); + export const [getKibanaLegacy, setKibanaLegacy] = createGetterSetter( 'KibanaLegacy' ); diff --git a/src/plugins/tile_map/public/tile_map_type.js b/src/plugins/tile_map/public/tile_map_type.js index 2b23f345f012e..7073958a1b318 100644 --- a/src/plugins/tile_map/public/tile_map_type.js +++ b/src/plugins/tile_map/public/tile_map_type.js @@ -25,6 +25,7 @@ import { createTileMapVisualization } from './tile_map_visualization'; import { TileMapOptions } from './components/tile_map_options'; import { supportsCssFilters } from './css_filters'; import { truncatedColorSchemas } from '../../charts/public'; +import { getDeprecationMessage } from './get_deprecation_message'; export function createTileMapTypeDefinition(dependencies) { const CoordinateMapsVisualization = createTileMapVisualization(dependencies); @@ -32,6 +33,8 @@ export function createTileMapTypeDefinition(dependencies) { return { name: 'tile_map', + isDeprecated: true, + getDeprecationMessage, title: i18n.translate('tileMap.vis.mapTitle', { defaultMessage: 'Coordinate Map', }), diff --git a/src/plugins/visualizations/public/vis_types/base_vis_type.ts b/src/plugins/visualizations/public/vis_types/base_vis_type.ts index 27a4f299c1e9c..149146bf77e73 100644 --- a/src/plugins/visualizations/public/vis_types/base_vis_type.ts +++ b/src/plugins/visualizations/public/vis_types/base_vis_type.ts @@ -18,9 +18,11 @@ */ import _ from 'lodash'; +import { ReactElement } from 'react'; import { VisParams, VisToExpressionAst, VisualizationControllerConstructor } from '../types'; import { TriggerContextMapping } from '../../../ui_actions/public'; import { Adapters } from '../../../inspector/public'; +import { Vis } from '../vis'; interface CommonBaseVisTypeOptions { name: string; @@ -41,6 +43,8 @@ interface CommonBaseVisTypeOptions { setup?: unknown; useCustomNoDataScreen?: boolean; inspectorAdapters?: Adapters | (() => Adapters); + isDeprecated?: boolean; + getDeprecationMessage?: (vis: Vis) => ReactElement; } interface ExpressionBaseVisTypeOptions extends CommonBaseVisTypeOptions { @@ -80,6 +84,8 @@ export class BaseVisType { useCustomNoDataScreen: boolean; inspectorAdapters?: Adapters | (() => Adapters); toExpressionAst?: VisToExpressionAst; + isDeprecated: boolean; + getDeprecationMessage?: (vis: Vis) => ReactElement; constructor(opts: BaseVisTypeOptions) { if (!opts.icon && !opts.image) { @@ -117,6 +123,8 @@ export class BaseVisType { this.useCustomNoDataScreen = opts.useCustomNoDataScreen || false; this.inspectorAdapters = opts.inspectorAdapters; this.toExpressionAst = opts.toExpressionAst; + this.isDeprecated = opts.isDeprecated || false; + this.getDeprecationMessage = opts.getDeprecationMessage; } public get schemas() { diff --git a/src/plugins/visualize/public/application/components/visualize_editor_common.tsx b/src/plugins/visualize/public/application/components/visualize_editor_common.tsx index b811936c63b14..4321d7dd1a6ca 100644 --- a/src/plugins/visualize/public/application/components/visualize_editor_common.tsx +++ b/src/plugins/visualize/public/application/components/visualize_editor_common.tsx @@ -79,28 +79,34 @@ export const VisualizeEditorCommon = ({ /> )} {visInstance?.vis?.type?.isExperimental && } + {visInstance?.vis?.type?.isDeprecated && + visInstance?.vis?.type?.getDeprecationMessage && + visInstance.vis.type.getDeprecationMessage(visInstance?.vis)} {visInstance && (

- {'savedVis' in visInstance && visInstance.savedVis.id ? ( - - ) : ( - - )} + { + // @ts-expect-error + 'savedVis' in visInstance && visInstance.savedVis.id ? ( + + ) : ( + + ) + }

)} diff --git a/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts b/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts new file mode 100644 index 0000000000000..8bf078806cfbc --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts @@ -0,0 +1,117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import uuid from 'uuid/v4'; +import { + AggDescriptor, + ColorDynamicOptions, + LayerDescriptor, +} from '../../../common/descriptor_types'; +import { + AGG_TYPE, + COLOR_MAP_TYPE, + FIELD_ORIGIN, + SOURCE_TYPES, + STYLE_TYPE, + VECTOR_STYLES, +} from '../../../common/constants'; +import { VectorStyle } from '../styles/vector/vector_style'; +import { EMSFileSource } from '../sources/ems_file_source'; +// @ts-ignore +import { ESGeoGridSource } from '../sources/es_geo_grid_source'; +import { VectorLayer } from './vector_layer/vector_layer'; +import { getDefaultDynamicProperties } from '../styles/vector/vector_style_defaults'; +import { NUMERICAL_COLOR_PALETTES } from '../styles/color_palettes'; +import { getJoinAggKey } from '../../../common/get_agg_key'; + +const defaultDynamicProperties = getDefaultDynamicProperties(); + +export function createAggDescriptor(metricAgg: string, metricFieldName?: string): AggDescriptor { + const aggTypeKey = Object.keys(AGG_TYPE).find((key) => { + return AGG_TYPE[key as keyof typeof AGG_TYPE] === metricAgg; + }); + const aggType = aggTypeKey ? AGG_TYPE[aggTypeKey as keyof typeof AGG_TYPE] : undefined; + + return aggType && metricFieldName + ? { type: aggType, field: metricFieldName } + : { type: AGG_TYPE.COUNT }; +} + +export function createRegionMapLayerDescriptor({ + label, + emsLayerId, + leftFieldName, + termsFieldName, + colorSchema, + indexPatternId, + indexPatternTitle, + metricAgg, + metricFieldName, +}: { + label: string; + emsLayerId?: string; + leftFieldName?: string; + termsFieldName?: string; + colorSchema: string; + indexPatternId?: string; + indexPatternTitle?: string; + metricAgg: string; + metricFieldName?: string; +}): LayerDescriptor | null { + if (!indexPatternId || !emsLayerId || !leftFieldName || !termsFieldName) { + return null; + } + + const metricsDescriptor = createAggDescriptor(metricAgg, metricFieldName); + const joinId = uuid(); + const joinKey = getJoinAggKey({ + aggType: metricsDescriptor.type, + aggFieldName: metricsDescriptor.field ? metricsDescriptor.field : '', + rightSourceId: joinId, + }); + const colorPallette = NUMERICAL_COLOR_PALETTES.find((pallette) => { + return pallette.value.toLowerCase() === colorSchema.toLowerCase(); + }); + return VectorLayer.createDescriptor({ + label, + joins: [ + { + leftField: leftFieldName, + right: { + type: SOURCE_TYPES.ES_TERM_SOURCE, + id: joinId, + indexPatternId, + indexPatternTitle: indexPatternTitle ? indexPatternTitle : indexPatternId, + term: termsFieldName, + metrics: [metricsDescriptor], + }, + }, + ], + sourceDescriptor: EMSFileSource.createDescriptor({ + id: emsLayerId, + tooltipProperties: ['name', leftFieldName], + }), + style: VectorStyle.createDescriptor({ + [VECTOR_STYLES.FILL_COLOR]: { + type: STYLE_TYPE.DYNAMIC, + options: { + ...(defaultDynamicProperties[VECTOR_STYLES.FILL_COLOR]!.options as ColorDynamicOptions), + field: { + name: joinKey, + origin: FIELD_ORIGIN.JOIN, + }, + color: colorPallette ? colorPallette.value : 'Yellow to Red', + type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions: { + ...(defaultDynamicProperties[VECTOR_STYLES.FILL_COLOR]!.options as ColorDynamicOptions) + .fieldMetaOptions, + isEnabled: false, + }, + }, + }, + }), + }); +} diff --git a/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.test.ts b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.test.ts new file mode 100644 index 0000000000000..18e5f462bb310 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createAggDescriptor } from './create_tile_map_layer_descriptor'; + +describe('createAggDescriptor', () => { + test('Should allow supported metric aggs', () => { + expect(createAggDescriptor('Scaled Circle Markers', 'sum', 'bytes')).toEqual({ + type: 'sum', + field: 'bytes', + }); + }); + + test('Should fallback to count when field not provided', () => { + expect(createAggDescriptor('Scaled Circle Markers', 'sum', undefined)).toEqual({ + type: 'count', + }); + }); + + test('Should fallback to count when metric agg is not supported in maps', () => { + expect(createAggDescriptor('Scaled Circle Markers', 'top_hits', 'bytes')).toEqual({ + type: 'count', + }); + }); + + describe('heatmap', () => { + test('Should allow countable metric aggs', () => { + expect(createAggDescriptor('Heatmap', 'sum', 'bytes')).toEqual({ + type: 'sum', + field: 'bytes', + }); + }); + + test('Should fallback to count for non-countable metric aggs', () => { + expect(createAggDescriptor('Heatmap', 'avg', 'bytes')).toEqual({ + type: 'count', + }); + }); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts new file mode 100644 index 0000000000000..05a8620e436d5 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + AggDescriptor, + ColorDynamicOptions, + LayerDescriptor, + SizeDynamicOptions, + VectorStylePropertiesDescriptor, +} from '../../../common/descriptor_types'; +import { + AGG_TYPE, + COLOR_MAP_TYPE, + FIELD_ORIGIN, + GRID_RESOLUTION, + RENDER_AS, + STYLE_TYPE, + VECTOR_STYLES, +} from '../../../common/constants'; +import { VectorStyle } from '../styles/vector/vector_style'; +// @ts-ignore +import { ESGeoGridSource } from '../sources/es_geo_grid_source'; +import { VectorLayer } from './vector_layer/vector_layer'; +// @ts-ignore +import { HeatmapLayer } from './heatmap_layer/heatmap_layer'; +import { getDefaultDynamicProperties } from '../styles/vector/vector_style_defaults'; +import { NUMERICAL_COLOR_PALETTES } from '../styles/color_palettes'; +import { getSourceAggKey } from '../../../common/get_agg_key'; +import { isMetricCountable } from '../util/is_metric_countable'; + +const defaultDynamicProperties = getDefaultDynamicProperties(); + +function isHeatmap(mapType: string): boolean { + return mapType.toLowerCase() === 'heatmap'; +} + +function getGeoGridRequestType(mapType: string): RENDER_AS { + if (isHeatmap(mapType)) { + return RENDER_AS.HEATMAP; + } + + if (mapType.toLowerCase() === 'shaded geohash grid') { + return RENDER_AS.GRID; + } + + return RENDER_AS.POINT; +} + +export function createAggDescriptor( + mapType: string, + metricAgg: string, + metricFieldName?: string +): AggDescriptor { + const aggTypeKey = Object.keys(AGG_TYPE).find((key) => { + return AGG_TYPE[key as keyof typeof AGG_TYPE] === metricAgg; + }); + const aggType = aggTypeKey ? AGG_TYPE[aggTypeKey as keyof typeof AGG_TYPE] : undefined; + + return aggType && metricFieldName && (!isHeatmap(mapType) || isMetricCountable(aggType)) + ? { type: aggType, field: metricFieldName } + : { type: AGG_TYPE.COUNT }; +} + +export function createTileMapLayerDescriptor({ + label, + mapType, + colorSchema, + indexPatternId, + geoFieldName, + metricAgg, + metricFieldName, +}: { + label: string; + mapType: string; + colorSchema: string; + indexPatternId?: string; + geoFieldName?: string; + metricAgg: string; + metricFieldName?: string; +}): LayerDescriptor | null { + if (!indexPatternId || !geoFieldName) { + return null; + } + + const metricsDescriptor = createAggDescriptor(mapType, metricAgg, metricFieldName); + const geoGridSourceDescriptor = ESGeoGridSource.createDescriptor({ + indexPatternId, + geoField: geoFieldName, + metrics: [metricsDescriptor], + requestType: getGeoGridRequestType(mapType), + resolution: GRID_RESOLUTION.MOST_FINE, + }); + + if (isHeatmap(mapType)) { + return HeatmapLayer.createDescriptor({ + label, + sourceDescriptor: geoGridSourceDescriptor, + }); + } + + const metricSourceKey = getSourceAggKey({ + aggType: metricsDescriptor.type, + aggFieldName: metricsDescriptor.field, + }); + const metricStyleField = { + name: metricSourceKey, + origin: FIELD_ORIGIN.SOURCE, + }; + + const colorPallette = NUMERICAL_COLOR_PALETTES.find((pallette) => { + return pallette.value.toLowerCase() === colorSchema.toLowerCase(); + }); + const styleProperties: VectorStylePropertiesDescriptor = { + [VECTOR_STYLES.FILL_COLOR]: { + type: STYLE_TYPE.DYNAMIC, + options: { + ...(defaultDynamicProperties[VECTOR_STYLES.FILL_COLOR]!.options as ColorDynamicOptions), + field: metricStyleField, + color: colorPallette ? colorPallette.value : 'Yellow to Red', + type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions: { + ...(defaultDynamicProperties[VECTOR_STYLES.FILL_COLOR]!.options as ColorDynamicOptions) + .fieldMetaOptions, + isEnabled: false, + }, + }, + }, + [VECTOR_STYLES.LINE_COLOR]: { + type: STYLE_TYPE.STATIC, + options: { + color: '#3d3d3d', + }, + }, + }; + if (mapType.toLowerCase() === 'scaled circle markers') { + styleProperties[VECTOR_STYLES.ICON_SIZE] = { + type: STYLE_TYPE.DYNAMIC, + options: { + ...(defaultDynamicProperties[VECTOR_STYLES.ICON_SIZE]!.options as SizeDynamicOptions), + maxSize: 18, + field: metricStyleField, + fieldMetaOptions: { + ...(defaultDynamicProperties[VECTOR_STYLES.ICON_SIZE]!.options as SizeDynamicOptions) + .fieldMetaOptions, + isEnabled: false, + }, + }, + }; + } + + return VectorLayer.createDescriptor({ + label, + sourceDescriptor: geoGridSourceDescriptor, + style: VectorStyle.createDescriptor(styleProperties), + }); +} diff --git a/x-pack/plugins/maps/public/classes/layers/solution_layers/observability/create_layer_descriptor.ts b/x-pack/plugins/maps/public/classes/layers/solution_layers/observability/create_layer_descriptor.ts index 85601cfc17e8f..bdd86d78b5300 100644 --- a/x-pack/plugins/maps/public/classes/layers/solution_layers/observability/create_layer_descriptor.ts +++ b/x-pack/plugins/maps/public/classes/layers/solution_layers/observability/create_layer_descriptor.ts @@ -29,7 +29,6 @@ import { OBSERVABILITY_LAYER_TYPE } from './layer_select'; import { OBSERVABILITY_METRIC_TYPE } from './metric_select'; import { DISPLAY } from './display_select'; import { VectorStyle } from '../../../styles/vector/vector_style'; -// @ts-ignore import { EMSFileSource } from '../../../sources/ems_file_source'; // @ts-ignore import { ESGeoGridSource } from '../../../sources/es_geo_grid_source'; diff --git a/x-pack/plugins/maps/public/classes/sources/ems_file_source/ems_file_source.tsx b/x-pack/plugins/maps/public/classes/sources/ems_file_source/ems_file_source.tsx index 5f73a9e23431b..38e13a68437c7 100644 --- a/x-pack/plugins/maps/public/classes/sources/ems_file_source/ems_file_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/ems_file_source/ems_file_source.tsx @@ -72,9 +72,7 @@ export class EMSFileSource extends AbstractVectorSource implements IEmsFileSourc async getEMSFileLayer(): Promise { const emsFileLayers = await getEmsFileLayers(); - const emsFileLayer = emsFileLayers.find( - (fileLayer) => fileLayer.getId() === this._descriptor.id - ); + const emsFileLayer = emsFileLayers.find((fileLayer) => fileLayer.hasId(this._descriptor.id)); if (!emsFileLayer) { throw new Error( i18n.translate('xpack.maps.source.emsFile.unableToFindIdErrorMessage', { diff --git a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts index 03752a1c3e11e..9bced75b613d7 100644 --- a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts +++ b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts @@ -48,6 +48,44 @@ interface LazyLoadedMapModules { registerLayerWizard: (layerWizard: LayerWizard) => void; registerSource(entry: SourceRegistryEntry): void; getIndexPatternsFromIds: (indexPatternIds: string[]) => Promise; + createTileMapLayerDescriptor: ({ + label, + mapType, + colorSchema, + indexPatternId, + geoFieldName, + metricAgg, + metricFieldName, + }: { + label: string; + mapType: string; + colorSchema: string; + indexPatternId?: string; + geoFieldName?: string; + metricAgg: string; + metricFieldName?: string; + }) => LayerDescriptor | null; + createRegionMapLayerDescriptor: ({ + label, + emsLayerId, + leftFieldName, + termsFieldName, + colorSchema, + indexPatternId, + indexPatternTitle, + metricAgg, + metricFieldName, + }: { + label: string; + emsLayerId?: string; + leftFieldName?: string; + termsFieldName?: string; + colorSchema: string; + indexPatternId?: string; + indexPatternTitle?: string; + metricAgg: string; + metricFieldName?: string; + }) => LayerDescriptor | null; } export async function lazyLoadMapModules(): Promise { @@ -72,6 +110,8 @@ export async function lazyLoadMapModules(): Promise { registerLayerWizard, registerSource, getIndexPatternsFromIds, + createTileMapLayerDescriptor, + createRegionMapLayerDescriptor, } = await import('./lazy'); resolve({ @@ -90,6 +130,8 @@ export async function lazyLoadMapModules(): Promise { registerLayerWizard, registerSource, getIndexPatternsFromIds, + createTileMapLayerDescriptor, + createRegionMapLayerDescriptor, }); }); return loadModulesPromise; diff --git a/x-pack/plugins/maps/public/lazy_load_bundle/lazy/index.ts b/x-pack/plugins/maps/public/lazy_load_bundle/lazy/index.ts index 28f5acdc17656..782d645dc230a 100644 --- a/x-pack/plugins/maps/public/lazy_load_bundle/lazy/index.ts +++ b/x-pack/plugins/maps/public/lazy_load_bundle/lazy/index.ts @@ -20,3 +20,5 @@ export * from '../../classes/layers/solution_layers/security'; export { registerLayerWizard } from '../../classes/layers/layer_wizard_registry'; export { registerSource } from '../../classes/sources/source_registry'; export { getIndexPatternsFromIds } from '../../index_pattern_util'; +export { createTileMapLayerDescriptor } from '../../classes/layers/create_tile_map_layer_descriptor'; +export { createRegionMapLayerDescriptor } from '../../classes/layers/create_region_map_layer_descriptor'; diff --git a/x-pack/plugins/maps/public/plugin.ts b/x-pack/plugins/maps/public/plugin.ts index 8f49598cf2a8d..696964f0258d4 100644 --- a/x-pack/plugins/maps/public/plugin.ts +++ b/x-pack/plugins/maps/public/plugin.ts @@ -32,7 +32,11 @@ import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { VisualizationsSetup } from '../../../../src/plugins/visualizations/public'; import { APP_ICON_SOLUTION, APP_ID, MAP_SAVED_OBJECT_TYPE } from '../common/constants'; import { VISUALIZE_GEO_FIELD_TRIGGER } from '../../../../src/plugins/ui_actions/public'; -import { createMapsUrlGenerator } from './url_generator'; +import { + createMapsUrlGenerator, + createRegionMapUrlGenerator, + createTileMapUrlGenerator, +} from './url_generator'; import { visualizeGeoFieldAction } from './trigger_actions/visualize_geo_field_action'; import { MapEmbeddableFactory } from './embeddable/map_embeddable_factory'; import { EmbeddableSetup } from '../../../../src/plugins/embeddable/public'; @@ -97,15 +101,18 @@ export class MapsPlugin setKibanaCommonConfig(plugins.mapsLegacy.config); setMapAppConfig(config); setKibanaVersion(this._initializerContext.env.packageInfo.version); - plugins.share.urlGenerators.registerUrlGenerator( - createMapsUrlGenerator(async () => { - const [coreStart] = await core.getStartServices(); - return { - appBasePath: coreStart.application.getUrlForApp('maps'), - useHashedUrl: coreStart.uiSettings.get('state:storeInSessionStorage'), - }; - }) - ); + + // register url generators + const getStartServices = async () => { + const [coreStart] = await core.getStartServices(); + return { + appBasePath: coreStart.application.getUrlForApp('maps'), + useHashedUrl: coreStart.uiSettings.get('state:storeInSessionStorage'), + }; + }; + plugins.share.urlGenerators.registerUrlGenerator(createMapsUrlGenerator(getStartServices)); + plugins.share.urlGenerators.registerUrlGenerator(createTileMapUrlGenerator(getStartServices)); + plugins.share.urlGenerators.registerUrlGenerator(createRegionMapUrlGenerator(getStartServices)); plugins.inspector.registerView(MapView); if (plugins.home) { diff --git a/x-pack/plugins/maps/public/url_generator.test.ts b/x-pack/plugins/maps/public/url_generator.test.ts index a44f8d952fde1..880d5a5e03b43 100644 --- a/x-pack/plugins/maps/public/url_generator.test.ts +++ b/x-pack/plugins/maps/public/url_generator.test.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import rison from 'rison-node'; + import { createMapsUrlGenerator } from './url_generator'; import { LAYER_TYPE, SOURCE_TYPES, SCALING_TYPES } from '../common/constants'; import { esFilters } from '../../../../src/plugins/data/public'; @@ -63,12 +63,11 @@ describe('visualize url generator', () => { }, }, ]; - const encodedLayers = rison.encode_array(initialLayers); const url = await generator.createUrl!({ initialLayers, }); expect(url).toMatchInlineSnapshot( - `"test/app/maps/map#/?_g=()&_a=()&initialLayers=${encodedLayers}"` + `"test/app/maps/map#/?_g=()&_a=()&initialLayers=(id%3A'13823000-99b9-11ea-9eb6-d9e8adceb647'%2CsourceDescriptor%3A(geoField%3Atest%2Cid%3A'13823000-99b9-11ea-9eb6-d9e8adceb647'%2CindexPatternId%3A'90943e30-9a47-11e8-b64d-95841ca0b247'%2Clabel%3A'Sample%20Data'%2CscalingType%3ALIMIT%2CtooltipProperties%3A!()%2Ctype%3AES_SEARCH)%2Ctype%3AVECTOR%2Cvisible%3A!t)"` ); }); diff --git a/x-pack/plugins/maps/public/url_generator.ts b/x-pack/plugins/maps/public/url_generator.ts index 3fbb361342c7a..7f7f3f2c60327 100644 --- a/x-pack/plugins/maps/public/url_generator.ts +++ b/x-pack/plugins/maps/public/url_generator.ts @@ -16,11 +16,14 @@ import { setStateToKbnUrl } from '../../../../src/plugins/kibana_utils/public'; import { UrlGeneratorsDefinition } from '../../../../src/plugins/share/public'; import { LayerDescriptor } from '../common/descriptor_types'; import { INITIAL_LAYERS_KEY } from '../common/constants'; +import { lazyLoadMapModules } from './lazy_load_bundle'; const STATE_STORAGE_KEY = '_a'; const GLOBAL_STATE_STORAGE_KEY = '_g'; export const MAPS_APP_URL_GENERATOR = 'MAPS_APP_URL_GENERATOR'; +export const MAPS_APP_TILE_MAP_URL_GENERATOR = 'MAPS_APP_TILE_MAP_URL_GENERATOR'; +export const MAPS_APP_REGION_MAP_URL_GENERATOR = 'MAPS_APP_REGION_MAP_URL_GENERATOR'; export interface MapsUrlGeneratorState { /** @@ -59,51 +62,175 @@ export interface MapsUrlGeneratorState { hash?: boolean; } +type GetStartServices = () => Promise<{ + appBasePath: string; + useHashedUrl: boolean; +}>; + +async function createMapUrl({ + getStartServices, + mapId, + filters, + query, + refreshInterval, + timeRange, + initialLayers, + hash, +}: MapsUrlGeneratorState & { getStartServices: GetStartServices }): Promise { + const startServices = await getStartServices(); + const useHash = hash ?? startServices.useHashedUrl; + const appBasePath = startServices.appBasePath; + + const appState: { + query?: Query; + filters?: Filter[]; + vis?: unknown; + } = {}; + const queryState: QueryState = {}; + + if (query) appState.query = query; + if (filters && filters.length) + appState.filters = filters?.filter((f) => !esFilters.isFilterPinned(f)); + + if (timeRange) queryState.time = timeRange; + if (filters && filters.length) + queryState.filters = filters?.filter((f) => esFilters.isFilterPinned(f)); + if (refreshInterval) queryState.refreshInterval = refreshInterval; + + let url = `${appBasePath}/map#/${mapId || ''}`; + url = setStateToKbnUrl(GLOBAL_STATE_STORAGE_KEY, queryState, { useHash }, url); + url = setStateToKbnUrl(STATE_STORAGE_KEY, appState, { useHash }, url); + + if (initialLayers && initialLayers.length) { + // @ts-ignore + const risonEncodedInitialLayers = rison.encode_array(initialLayers); + url = `${url}&${INITIAL_LAYERS_KEY}=${encodeURIComponent(risonEncodedInitialLayers)}`; + } + + return url; +} + export const createMapsUrlGenerator = ( - getStartServices: () => Promise<{ - appBasePath: string; - useHashedUrl: boolean; - }> + getStartServices: GetStartServices ): UrlGeneratorsDefinition => ({ id: MAPS_APP_URL_GENERATOR, + createUrl: async (mapsUrlGeneratorState: MapsUrlGeneratorState): Promise => { + return createMapUrl({ ...mapsUrlGeneratorState, getStartServices }); + }, +}); + +export const createTileMapUrlGenerator = ( + getStartServices: GetStartServices +): UrlGeneratorsDefinition => ({ + id: MAPS_APP_TILE_MAP_URL_GENERATOR, + createUrl: async ({ + label, + mapType, + colorSchema, + indexPatternId, + geoFieldName, + metricAgg, + metricFieldName, + filters, + query, + timeRange, + hash, + }: { + label: string; + mapType: string; + colorSchema: string; + indexPatternId?: string; + geoFieldName?: string; + metricAgg: string; + metricFieldName?: string; + timeRange?: TimeRange; + filters?: Filter[]; + query?: Query; + hash?: boolean; + }): Promise => { + const mapModules = await lazyLoadMapModules(); + const initialLayers = []; + const tileMapLayerDescriptor = mapModules.createTileMapLayerDescriptor({ + label, + mapType, + colorSchema, + indexPatternId, + geoFieldName, + metricAgg, + metricFieldName, + }); + if (tileMapLayerDescriptor) { + initialLayers.push(tileMapLayerDescriptor); + } + + return createMapUrl({ + initialLayers, + filters, + query, + timeRange, + hash: true, + getStartServices, + }); + }, +}); + +export const createRegionMapUrlGenerator = ( + getStartServices: GetStartServices +): UrlGeneratorsDefinition => ({ + id: MAPS_APP_REGION_MAP_URL_GENERATOR, createUrl: async ({ - mapId, + label, + emsLayerId, + leftFieldName, + termsFieldName, + colorSchema, + indexPatternId, + indexPatternTitle, + metricAgg, + metricFieldName, filters, query, - refreshInterval, timeRange, - initialLayers, hash, - }: MapsUrlGeneratorState): Promise => { - const startServices = await getStartServices(); - const useHash = hash ?? startServices.useHashedUrl; - const appBasePath = startServices.appBasePath; - - const appState: { - query?: Query; - filters?: Filter[]; - vis?: unknown; - } = {}; - const queryState: QueryState = {}; - - if (query) appState.query = query; - if (filters && filters.length) - appState.filters = filters?.filter((f) => !esFilters.isFilterPinned(f)); - - if (timeRange) queryState.time = timeRange; - if (filters && filters.length) - queryState.filters = filters?.filter((f) => esFilters.isFilterPinned(f)); - if (refreshInterval) queryState.refreshInterval = refreshInterval; - - let url = `${appBasePath}/map#/${mapId || ''}`; - url = setStateToKbnUrl(GLOBAL_STATE_STORAGE_KEY, queryState, { useHash }, url); - url = setStateToKbnUrl(STATE_STORAGE_KEY, appState, { useHash }, url); - - if (initialLayers && initialLayers.length) { - // @ts-ignore - url = `${url}&${INITIAL_LAYERS_KEY}=${rison.encode_array(initialLayers)}`; + }: { + label: string; + emsLayerId?: string; + leftFieldName?: string; + termsFieldName?: string; + colorSchema: string; + indexPatternId?: string; + indexPatternTitle?: string; + metricAgg: string; + metricFieldName?: string; + timeRange?: TimeRange; + filters?: Filter[]; + query?: Query; + hash?: boolean; + }): Promise => { + const mapModules = await lazyLoadMapModules(); + const initialLayers = []; + const regionMapLayerDescriptor = mapModules.createRegionMapLayerDescriptor({ + label, + emsLayerId, + leftFieldName, + termsFieldName, + colorSchema, + indexPatternId, + indexPatternTitle, + metricAgg, + metricFieldName, + }); + if (regionMapLayerDescriptor) { + initialLayers.push(regionMapLayerDescriptor); } - return url; + return createMapUrl({ + initialLayers, + filters, + query, + timeRange, + hash: true, + getStartServices, + }); }, }); From 33e3aa2563af3e09f65fa6389c03f1b4540b9435 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Mon, 28 Sep 2020 12:37:33 -0500 Subject: [PATCH 012/119] Fix APM lodash imports (#78438) Co-authored-by: Elastic Machine --- .../apm/public/components/app/ServiceMap/Cytoscape.tsx | 4 +--- .../components/app/ServiceMap/use_cytoscape_event_handlers.ts | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx index 5fa74f927d2de..d65ce1879ce02 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx @@ -6,9 +6,7 @@ import cytoscape from 'cytoscape'; import dagre from 'cytoscape-dagre'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; +import { isEqual } from 'lodash'; import React, { createContext, CSSProperties, diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/use_cytoscape_event_handlers.ts b/x-pack/plugins/apm/public/components/app/ServiceMap/use_cytoscape_event_handlers.ts index e77fc4dfb2f51..e8c6a3165ce93 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/use_cytoscape_event_handlers.ts +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/use_cytoscape_event_handlers.ts @@ -5,9 +5,7 @@ */ import cytoscape from 'cytoscape'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import debounce from 'lodash/debounce'; +import { debounce } from 'lodash'; import { useEffect } from 'react'; import { EuiTheme, useUiTracker } from '../../../../../observability/public'; import { getAnimationOptions, getNodeHeight } from './cytoscapeOptions'; From c8731205d74b5c7f237c44b8a0493e6e43f9d110 Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 28 Sep 2020 11:13:58 -0700 Subject: [PATCH 013/119] [kbn/optimizer] fix .json extension handling (#78524) Co-authored-by: spalger Co-authored-by: Elastic Machine --- packages/kbn-optimizer/src/worker/webpack.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index 9f2c5654a8bd4..2edf1c999888e 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -216,7 +216,7 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: }, resolve: { - extensions: ['.js', '.ts', '.tsx', 'json'], + extensions: ['.js', '.ts', '.tsx', '.json'], mainFields: ['browser', 'main'], alias: { tinymath: require.resolve('tinymath/lib/tinymath.es5.js'), From 3c85d3d2afbd38ad0eb38f55c5679dd46d7bbc18 Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 28 Sep 2020 11:14:17 -0700 Subject: [PATCH 014/119] [kbn/es] use a basic build process (#78090) Co-authored-by: spalger Co-authored-by: Elastic Machine --- packages/kbn-es/package.json | 11 +- packages/kbn-es/scripts/build.js | 71 ++++++++++++ .../integration_tests/__fixtures__/es_bin.js | 104 +++++++++--------- scripts/es.js | 2 +- yarn.lock | 19 ++-- 5 files changed, 142 insertions(+), 65 deletions(-) create mode 100644 packages/kbn-es/scripts/build.js diff --git a/packages/kbn-es/package.json b/packages/kbn-es/package.json index 52ef3fe05e751..fc6c888d1d41e 100644 --- a/packages/kbn-es/package.json +++ b/packages/kbn-es/package.json @@ -1,9 +1,13 @@ { "name": "@kbn/es", - "main": "./src/index.js", + "main": "./target/index.js", "version": "1.0.0", "license": "Apache-2.0", "private": true, + "scripts": { + "kbn:bootstrap": "node scripts/build", + "kbn:watch": "node scripts/build --watch" + }, "dependencies": { "@elastic/elasticsearch": "7.9.0-rc.1", "@kbn/dev-utils": "1.0.0", @@ -19,5 +23,10 @@ "tar-fs": "^2.1.0", "tree-kill": "^1.2.2", "yauzl": "^2.10.0" + }, + "devDependencies": { + "@kbn/babel-preset": "1.0.0", + "@babel/cli": "^7.10.5", + "del": "^5.1.0" } } diff --git a/packages/kbn-es/scripts/build.js b/packages/kbn-es/scripts/build.js new file mode 100644 index 0000000000000..50aad665c920b --- /dev/null +++ b/packages/kbn-es/scripts/build.js @@ -0,0 +1,71 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { resolve } = require('path'); + +const del = require('del'); +const { run, withProcRunner } = require('@kbn/dev-utils'); + +const ROOT_DIR = resolve(__dirname, '..'); +const BUILD_DIR = resolve(ROOT_DIR, 'target'); + +run( + async ({ log, flags }) => { + await withProcRunner(log, async (proc) => { + log.info('Deleting old output'); + await del(BUILD_DIR); + + const cwd = ROOT_DIR; + + log.info(`Starting babel${flags.watch ? ' in watch mode' : ''}`); + await proc.run(`babel`, { + cmd: 'babel', + args: [ + 'src', + '--no-babelrc', + '--presets', + require.resolve('@kbn/babel-preset/node_preset'), + '--extensions', + '.ts,.js', + '--copy-files', + '--out-dir', + BUILD_DIR, + ...(flags.watch ? ['--watch'] : ['--quiet']), + ...(!flags['source-maps'] || !!process.env.CODE_COVERAGE + ? [] + : ['--source-maps', 'inline']), + ], + wait: true, + cwd, + }); + + log.success('Complete'); + }); + }, + { + description: 'Simple build tool for @kbn/es package', + flags: { + boolean: ['watch', 'source-maps'], + help: ` + --watch Run in watch mode + --source-maps Include sourcemaps + `, + }, + } +); diff --git a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js index b860664443d1a..27e73e6c204e8 100644 --- a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js +++ b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js @@ -25,65 +25,67 @@ const { exitCode, start, ssl } = JSON.parse(process.argv[2]); const { createServer } = ssl ? require('https') : require('http'); const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils'); -process.exitCode = exitCode; +(function main() { + process.exitCode = exitCode; -if (!start) { - return; -} + if (!start) { + return; + } + + let serverUrl; + const server = createServer( + { + // Note: the integration uses the ES_P12_PATH, but that keystore contains + // the same key/cert as ES_KEY_PATH and ES_CERT_PATH + key: ssl ? fs.readFileSync(ES_KEY_PATH) : undefined, + cert: ssl ? fs.readFileSync(ES_CERT_PATH) : undefined, + }, + (req, res) => { + const url = new URL(req.url, serverUrl); + const send = (code, body) => { + res.writeHead(code, { 'content-type': 'application/json' }); + res.end(JSON.stringify(body)); + }; -let serverUrl; -const server = createServer( - { - // Note: the integration uses the ES_P12_PATH, but that keystore contains - // the same key/cert as ES_KEY_PATH and ES_CERT_PATH - key: ssl ? fs.readFileSync(ES_KEY_PATH) : undefined, - cert: ssl ? fs.readFileSync(ES_CERT_PATH) : undefined, - }, - (req, res) => { - const url = new URL(req.url, serverUrl); - const send = (code, body) => { - res.writeHead(code, { 'content-type': 'application/json' }); - res.end(JSON.stringify(body)); - }; + if (url.pathname === '/_xpack') { + return send(400, { + error: { + reason: 'foo bar', + }, + }); + } - if (url.pathname === '/_xpack') { - return send(400, { + return send(404, { error: { - reason: 'foo bar', + reason: 'not found', }, }); } + ); - return send(404, { - error: { - reason: 'not found', - }, - }); - } -); - -// setup server auto close after 1 second of silence -let serverCloseTimer; -const delayServerClose = () => { - clearTimeout(serverCloseTimer); - serverCloseTimer = setTimeout(() => server.close(), 1000); -}; -server.on('request', delayServerClose); -server.on('listening', delayServerClose); + // setup server auto close after 1 second of silence + let serverCloseTimer; + const delayServerClose = () => { + clearTimeout(serverCloseTimer); + serverCloseTimer = setTimeout(() => server.close(), 1000); + }; + server.on('request', delayServerClose); + server.on('listening', delayServerClose); -server.listen(0, '127.0.0.1', function () { - const { port, address: hostname } = server.address(); - serverUrl = new URL( - formatUrl({ - protocol: 'http:', - port, - hostname, - }) - ); + server.listen(0, '127.0.0.1', function () { + const { port, address: hostname } = server.address(); + serverUrl = new URL( + formatUrl({ + protocol: 'http:', + port, + hostname, + }) + ); - console.log( - `[o.e.h.AbstractHttpServerTransport] [computer] publish_address {127.0.0.1:${port}}, bound_addresses {[::1]:${port}}, {127.0.0.1:${port}}` - ); + console.log( + `[o.e.h.AbstractHttpServerTransport] [computer] publish_address {127.0.0.1:${port}}, bound_addresses {[::1]:${port}}, {127.0.0.1:${port}}` + ); - console.log('started'); -}); + console.log('started'); + }); +})(); diff --git a/scripts/es.js b/scripts/es.js index 93f1d69350bac..2d56496f2fdd2 100644 --- a/scripts/es.js +++ b/scripts/es.js @@ -17,7 +17,7 @@ * under the License. */ -require('../src/setup_node_env'); +require('../src/setup_node_env/prebuilt_dev_only_entry'); var resolve = require('path').resolve; var pkg = require('../package.json'); diff --git a/yarn.lock b/yarn.lock index 7aa88bcc88348..35f3f7797655e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/cli@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.5.tgz#57df2987c8cf89d0fc7d4b157ec59d7619f1b77a" - integrity sha512-j9H9qSf3kLdM0Ao3aGPbGZ73mEA9XazuupcS6cDGWuiyAcANoguhP0r2Lx32H5JGw4sSSoHG3x/mxVnHgvOoyA== + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.11.6.tgz#1fcbe61c2a6900c3539c06ee58901141f3558482" + integrity sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -20365,15 +20365,10 @@ moment-timezone@^0.5.27: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@>=1.6.0, moment@>=2.14.0, moment@^2.10.6, moment@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -moment@^2.19.3, moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== +"moment@>= 2.9.0", moment@>=1.6.0, moment@>=2.14.0, moment@^2.10.6, moment@^2.19.3, moment@^2.24.0, moment@^2.27.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.28.0.tgz#cdfe73ce01327cee6537b0fafac2e0f21a237d75" + integrity sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw== monaco-editor@~0.17.0: version "0.17.1" From 768ae211b5468f41e3f3116a4042951ad512be91 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Mon, 28 Sep 2020 14:18:40 -0400 Subject: [PATCH 015/119] [Security Solution] Initiate endpoint package upgrade from security app (#77498) * Working on package update functionality * Correctly installing package * Moving upgrade component and working upgrade * Doing permissions check * Cleaning up imports * Adding bulk upgrade api * Addressing comments * Removing todo * Changing body field * Adding helper for getting the bulk install route * Adding request spec * Using bulk install endpoint from ingest * Moving component to a hook * Addressing feedback --- .../public/app/home/index.tsx | 7 ++ .../public/common/hooks/endpoint/upgrade.ts | 95 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 x-pack/plugins/security_solution/public/common/hooks/endpoint/upgrade.ts diff --git a/x-pack/plugins/security_solution/public/app/home/index.tsx b/x-pack/plugins/security_solution/public/app/home/index.tsx index 24e25470feb3b..68eb93f7e2fe8 100644 --- a/x-pack/plugins/security_solution/public/app/home/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/index.tsx @@ -21,6 +21,7 @@ import { useInitSourcerer, useSourcererScope } from '../../common/containers/sou import { useKibana } from '../../common/lib/kibana'; import { DETECTIONS_SUB_PLUGIN_ID } from '../../../common/constants'; import { SourcererScopeName } from '../../common/store/sourcerer/model'; +import { useUpgradeEndpointPackage } from '../../common/hooks/endpoint/upgrade'; import { useThrottledResizeObserver } from '../../common/components/utils'; const Main = styled.main.attrs<{ paddingTop: number }>(({ paddingTop }) => ({ @@ -58,6 +59,12 @@ const HomePageComponent: React.FC = ({ children }) => { const [showTimeline] = useShowTimeline(); const { browserFields, indexPattern, indicesExist } = useSourcererScope(); + // side effect: this will attempt to upgrade the endpoint package if it is not up to date + // this will run when a user navigates to the Security Solution app and when they navigate between + // tabs in the app. This is useful for keeping the endpoint package as up to date as possible until + // a background task solution can be built on the server side. Once a background task solution is available we + // can remove this. + useUpgradeEndpointPackage(); return ( diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/upgrade.ts b/x-pack/plugins/security_solution/public/common/hooks/endpoint/upgrade.ts new file mode 100644 index 0000000000000..48f826d1c3a91 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/hooks/endpoint/upgrade.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { useEffect } from 'react'; +import { HttpFetchOptions, HttpStart } from 'src/core/public'; +import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; +import { + epmRouteService, + appRoutesService, + CheckPermissionsResponse, + BulkInstallPackagesResponse, +} from '../../../../../ingest_manager/common'; +import { StartServices } from '../../../types'; +import { useIngestEnabledCheck } from './ingest_enabled'; + +/** + * Requests that the endpoint package be upgraded to the latest version + * + * @param http an http client for sending the request + * @param options an object containing options for the request + */ +const sendUpgradeEndpointPackage = async ( + http: HttpStart, + options: HttpFetchOptions = {} +): Promise => { + return http.post(epmRouteService.getBulkInstallPath(), { + ...options, + body: JSON.stringify({ + packages: ['endpoint'], + }), + }); +}; + +/** + * Checks with the ingest manager if the current user making these requests has the right permissions + * to install the endpoint package. + * + * @param http an http client for sending the request + * @param options an object containing options for the request + */ +const sendCheckPermissions = async ( + http: HttpStart, + options: HttpFetchOptions = {} +): Promise => { + return http.get(appRoutesService.getCheckPermissionsPath(), { + ...options, + }); +}; + +export const useUpgradeEndpointPackage = () => { + const context = useKibana(); + const { allEnabled: ingestEnabled } = useIngestEnabledCheck(); + + useEffect(() => { + const abortController = new AbortController(); + + // cancel any ongoing requests + const abortRequests = () => { + abortController.abort(); + }; + + if (ingestEnabled) { + const signal = abortController.signal; + + (async () => { + try { + // make sure we're a privileged user before trying to install the package + const { success: hasPermissions } = await sendCheckPermissions(context.services.http, { + signal, + }); + + // if we're not a privileged user then return and don't try to check the status of the endpoint package + if (!hasPermissions) { + return abortRequests; + } + + // ignore the response for now since we aren't notifying the user + await sendUpgradeEndpointPackage(context.services.http, { signal }); + } catch (error) { + // Ignore Errors, since this should not hinder the user's ability to use the UI + + // ignore the error that occurs from aborting a request + if (!abortController.signal.aborted) { + // eslint-disable-next-line no-console + console.error(error); + } + } + + return abortRequests; + })(); + } + }, [ingestEnabled, context.services.http]); +}; From 9c959947a8bc237ffc1892c22d361fe6c30ea075 Mon Sep 17 00:00:00 2001 From: Bhavya RM Date: Mon, 28 Sep 2020 14:21:54 -0400 Subject: [PATCH 016/119] Fixing a11y test failure on discover app (https://github.com/elastic/kibana/issues/59975) (#77614) --- test/accessibility/apps/discover.ts | 97 +++++++------------ test/functional/page_objects/discover_page.ts | 39 +++++++- 2 files changed, 72 insertions(+), 64 deletions(-) diff --git a/test/accessibility/apps/discover.ts b/test/accessibility/apps/discover.ts index 44639af9da9f8..4ca6c936143df 100644 --- a/test/accessibility/apps/discover.ts +++ b/test/accessibility/apps/discover.ts @@ -21,21 +21,14 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'discover', 'header', 'share', 'timePicker']); - const retry = getService('retry'); const a11y = getService('a11y'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const inspector = getService('inspector'); - const docTable = getService('docTable'); - const filterBar = getService('filterBar'); - const TEST_COLUMN_NAMES = ['@message']; - const TEST_FILTER_COLUMN_NAMES = [ - ['extension', 'jpg'], - ['geo.src', 'IN'], - ]; - - // Failing: See https://github.com/elastic/kibana/issues/59975 - describe.skip('Discover', () => { + const testSubjects = getService('testSubjects'); + const TEST_COLUMN_NAMES = ['extension', 'geo.src']; + + describe('Discover a11y tests', () => { before(async () => { await esArchiver.load('discover'); await esArchiver.loadIfNeeded('logstash_functional'); @@ -46,105 +39,85 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.setDefaultAbsoluteRange(); }); - it('main view', async () => { + it('Discover main page', async () => { await a11y.testAppSnapshot(); }); - it('Click save button', async () => { + it('a11y test on save button', async () => { await PageObjects.discover.clickSaveSearchButton(); await a11y.testAppSnapshot(); }); - it('Save search panel', async () => { + it('a11y test on save search panel', async () => { await PageObjects.discover.inputSavedSearchTitle('a11ySearch'); await a11y.testAppSnapshot(); }); - it('Confirm saved search', async () => { + it('a11y test on clicking on confirm save', async () => { await PageObjects.discover.clickConfirmSavedSearch(); await a11y.testAppSnapshot(); }); - it('Click on new to clear the search', async () => { + it('a11y test on click new to reload discover', async () => { await PageObjects.discover.clickNewSearchButton(); await a11y.testAppSnapshot(); }); - it('Open load saved search panel', async () => { + it('a11y test on load saved search panel', async () => { await PageObjects.discover.openLoadSavedSearchPanel(); await a11y.testAppSnapshot(); await PageObjects.discover.closeLoadSavedSearchPanel(); }); - it('Open inspector panel', async () => { + it('a11y test on inspector panel', async () => { await inspector.open(); await a11y.testAppSnapshot(); await inspector.close(); }); - it('Open add filter', async () => { - await PageObjects.discover.openAddFilterPanel(); - await a11y.testAppSnapshot(); - }); - - it('Select values for a filter', async () => { - await filterBar.addFilter('extension.raw', 'is one of', 'jpg'); - await a11y.testAppSnapshot(); - }); - - it('Load a new search from the panel', async () => { - await PageObjects.discover.clickSaveSearchButton(); - await PageObjects.discover.inputSavedSearchTitle('filterSearch'); - await PageObjects.discover.clickConfirmSavedSearch(); - await PageObjects.discover.openLoadSavedSearchPanel(); - await PageObjects.discover.loadSavedSearch('filterSearch'); - await a11y.testAppSnapshot(); - }); - - it('click share button', async () => { + it('a11y test on share panel', async () => { await PageObjects.share.clickShareTopNavButton(); await a11y.testAppSnapshot(); }); - it('Open sidebar filter', async () => { + it('a11y test on open sidenav filter', async () => { await PageObjects.discover.openSidebarFieldFilter(); await a11y.testAppSnapshot(); - }); - - it('Close sidebar filter', async () => { await PageObjects.discover.closeSidebarFieldFilter(); - await a11y.testAppSnapshot(); }); - it('Add a field from sidebar', async () => { + it('a11y test on tables with columns view', async () => { for (const columnName of TEST_COLUMN_NAMES) { - await PageObjects.discover.clickFieldListItemAdd(columnName); + await PageObjects.discover.clickFieldListItemToggle(columnName); } await a11y.testAppSnapshot(); }); - it('Add more fields from sidebar', async () => { - for (const [columnName, value] of TEST_FILTER_COLUMN_NAMES) { - await PageObjects.discover.clickFieldListItem(columnName); - await PageObjects.discover.clickFieldListPlusFilter(columnName, value); - } + it('a11y test on save queries popover', async () => { + await PageObjects.discover.clickSavedQueriesPopOver(); await a11y.testAppSnapshot(); }); - // Context view test - it('should open context view on a doc', async () => { - await retry.try(async () => { - await docTable.clickRowToggle(); - // click the open action - const rowActions = await docTable.getRowActions(); - if (!rowActions.length) { - throw new Error('row actions empty, trying again'); - } - await rowActions[0].click(); - }); + it('a11y test on save queries panel', async () => { + await PageObjects.discover.clickCurrentSavedQuery(); await a11y.testAppSnapshot(); }); - // Adding rest of the tests after https://github.com/elastic/kibana/issues/53888 is resolved + it('a11y test on toggle include filters option on saved queries panel', async () => { + await PageObjects.discover.setSaveQueryFormTitle('test'); + await PageObjects.discover.toggleIncludeFilters(); + await a11y.testAppSnapshot(); + await PageObjects.discover.saveCurrentSavedQuery(); + }); + + // issue - https://github.com/elastic/kibana/issues/78488 + it.skip('a11y test on saved queries list panel', async () => { + await PageObjects.discover.clickSavedQueriesPopOver(); + await testSubjects.moveMouseTo( + 'saved-query-list-item load-saved-query-test-button saved-query-list-item-selected saved-query-list-item-selected' + ); + await testSubjects.find('delete-saved-query-test-button'); + await a11y.testAppSnapshot(); + }); }); } diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts index 7a99509257bf7..e522f41952a49 100644 --- a/test/functional/page_objects/discover_page.ts +++ b/test/functional/page_objects/discover_page.ts @@ -119,8 +119,7 @@ export function DiscoverPageProvider({ getService, getPageObjects }: FtrProvider public async loadSavedSearch(searchName: string) { await this.openLoadSavedSearchPanel(); - const searchLink = await find.byButtonText(searchName); - await searchLink.click(); + await testSubjects.click(`savedObjectTitle${searchName.split(' ').join('-')}`); await header.waitUntilLoadingHasFinished(); } @@ -387,6 +386,42 @@ export function DiscoverPageProvider({ getService, getPageObjects }: FtrProvider return await this.isDiscoverAppOnScreen(); }); } + + public async showAllFilterActions() { + await testSubjects.click('showFilterActions'); + } + + public async clickSavedQueriesPopOver() { + await testSubjects.click('saved-query-management-popover-button'); + } + + public async clickCurrentSavedQuery() { + await testSubjects.click('saved-query-management-save-button'); + } + + public async setSaveQueryFormTitle(savedQueryName: string) { + await testSubjects.setValue('saveQueryFormTitle', savedQueryName); + } + + public async toggleIncludeFilters() { + await testSubjects.click('saveQueryFormIncludeFiltersOption'); + } + + public async saveCurrentSavedQuery() { + await testSubjects.click('savedQueryFormSaveButton'); + } + + public async deleteSavedQuery() { + await testSubjects.click('delete-saved-query-TEST-button'); + } + + public async confirmDeletionOfSavedQuery() { + await testSubjects.click('confirmModalConfirmButton'); + } + + public async clearSavedQuery() { + await testSubjects.click('saved-query-management-clear-button'); + } } return new DiscoverPage(); From 6f1b6907ba010b40a688f99def1c8fa497949008 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Mon, 28 Sep 2020 20:31:44 +0200 Subject: [PATCH 017/119] fix createAppNavigationHandler to use `navigateToUrl` (#78583) --- .../application/components/app_navigation_handler.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/plugins/home/public/application/components/app_navigation_handler.ts b/src/plugins/home/public/application/components/app_navigation_handler.ts index 61d85c033b544..91407ffcaf226 100644 --- a/src/plugins/home/public/application/components/app_navigation_handler.ts +++ b/src/plugins/home/public/application/components/app_navigation_handler.ts @@ -24,12 +24,6 @@ export const createAppNavigationHandler = (targetUrl: string) => (event: MouseEv if (event.altKey || event.metaKey || event.ctrlKey) { return; } - if (targetUrl.startsWith('/app/')) { - const [, appId, path] = /\/app\/(.*?)((\/|\?|#|$).*)/.exec(targetUrl) || []; - if (!appId) { - return; - } - event.preventDefault(); - getServices().application.navigateToApp(appId, { path }); - } + event.preventDefault(); + getServices().application.navigateToUrl(targetUrl); }; From ac8b8516a654c72eeeff421def5b9e05af01eb3e Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 28 Sep 2020 14:37:34 -0400 Subject: [PATCH 018/119] [ML] DF Analytics creation: ensure job did not fail to start before showing results link (#78200) * ensure job did not fail to start before showing results link * simplify job started check * update job finished check --- .../components/create_step_footer/create_step_footer.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/create_step_footer/create_step_footer.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/create_step_footer/create_step_footer.tsx index 9fe5963593229..bfa63e21e6c94 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/create_step_footer/create_step_footer.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/create_step_footer/create_step_footer.tsx @@ -82,7 +82,11 @@ export const CreateStepFooter: FC = ({ jobId, jobType, showProgress }) => jobStats.state === DATA_FRAME_TASK_STATE.STOPPED ) { clearInterval(interval); - setJobFinished(true); + // Check job has started. Jobs that fail to start will also have STOPPED state + setJobFinished( + progressStats.currentPhase === progressStats.totalPhases && + progressStats.progress === 100 + ); } } else { clearInterval(interval); From 3e426a0eab4bad404e3de7cfa3db39d8e88465b1 Mon Sep 17 00:00:00 2001 From: Constance Date: Mon, 28 Sep 2020 12:04:05 -0700 Subject: [PATCH 019/119] [Enterprise Search] Remove all instances of KibanaContext to Kea store (#78513) * Add KibanaLogic store/mount * Update usage of setBreadcrumbs/setDocTitle to KibanaLogic * Update usage of Kibana config context to KibanaLogic * Update usage of navigateToUrl context to KibanaLogic * :fire: Remove unused shallow_usecontext mocks, repurpose file to shallow_useeffect - The file is now no longer used to mock useContext, only unseEffect, hence the rename * :fire: Delete/repurpose mount with context helpers - Remove mountWithKibanaContext completely - Change mountWithContext to mountWithIntl, since that's the only context remaining, and move it to its own file - Change mountWithAsyncContext to just mountAsync and move it to its own file + add an option to pair it w/ mountWithIntl for formatted date/number support * :fire: Delete KibanaContext and mockKibanaContext + minor newline linting/grouping tweaks Co-authored-by: Elastic Machine --- .../public/applications/__mocks__/index.ts | 12 +-- .../public/applications/__mocks__/kea.mock.ts | 2 + ...a_context.mock.ts => kibana_logic.mock.ts} | 8 +- .../__mocks__/mount_async.mock.tsx | 46 ++++++++++ .../__mocks__/mount_with_context.mock.tsx | 83 ------------------- .../__mocks__/mount_with_i18n.mock.tsx | 21 +++++ .../__mocks__/shallow_usecontext.mock.ts | 40 --------- .../__mocks__/shallow_useeffect.mock.ts | 21 +++++ .../engine_overview/engine_overview.test.tsx | 12 +-- .../engine_overview/engine_table.test.tsx | 47 +++++------ .../applications/app_search/index.test.tsx | 8 +- .../public/applications/app_search/index.tsx | 6 +- .../product_card/product_card.test.tsx | 8 +- .../components/product_card/product_card.tsx | 11 +-- .../product_selector.test.tsx | 9 +- .../product_selector/product_selector.tsx | 17 ++-- .../enterprise_search/index.test.tsx | 20 ++--- .../applications/enterprise_search/index.tsx | 6 +- .../public/applications/index.tsx | 50 +++++------ .../error_state/error_state_prompt.test.tsx | 2 +- .../shared/error_state/error_state_prompt.tsx | 7 +- .../applications/shared/kibana/index.ts | 7 ++ .../shared/kibana/kibana_logic.test.ts | 32 +++++++ .../shared/kibana/kibana_logic.ts | 32 +++++++ .../generate_breadcrumbs.test.ts | 10 +-- .../kibana_chrome/generate_breadcrumbs.ts | 6 +- .../shared/kibana_chrome/set_chrome.test.tsx | 23 ++--- .../shared/kibana_chrome/set_chrome.tsx | 12 +-- .../react_router_helpers/eui_link.test.tsx | 8 +- .../shared/react_router_helpers/eui_link.tsx | 7 +- .../shared/setup_guide/setup_guide.test.tsx | 4 +- .../shared/telemetry/send_telemetry.test.tsx | 2 +- .../content_section/content_section.test.tsx | 2 - .../shared/loading/loading.test.tsx | 2 - .../shared/source_icon/source_icon.test.tsx | 2 - .../shared/source_row/source_row.test.tsx | 2 - .../view_content_header.test.tsx | 2 - .../workplace_search/index.test.tsx | 8 +- .../applications/workplace_search/index.tsx | 6 +- .../views/error_state/error_state.test.tsx | 2 - .../overview/organization_stats.test.tsx | 1 - 41 files changed, 300 insertions(+), 306 deletions(-) rename x-pack/plugins/enterprise_search/public/applications/__mocks__/{kibana_context.mock.ts => kibana_logic.mock.ts} (65%) create mode 100644 x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_async.mock.tsx delete mode 100644 x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_context.mock.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_i18n.mock.tsx delete mode 100644 x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_usecontext.mock.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_useeffect.mock.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana/index.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts index 88a900f69c5ec..f48f5fb91e3e7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts @@ -5,17 +5,13 @@ */ export { mockHistory, mockLocation } from './react_router_history.mock'; -export { mockKibanaContext } from './kibana_context.mock'; +export { mockKibanaValues } from './kibana_logic.mock'; export { mockLicensingValues } from './licensing_logic.mock'; export { mockHttpValues } from './http_logic.mock'; export { mockFlashMessagesValues, mockFlashMessagesActions } from './flash_messages_logic.mock'; export { mockAllValues, mockAllActions, setMockValues } from './kea.mock'; -export { - mountWithContext, - mountWithKibanaContext, - mountWithAsyncContext, -} from './mount_with_context.mock'; +export { mountAsync } from './mount_async.mock'; +export { mountWithIntl } from './mount_with_i18n.mock'; export { shallowWithIntl } from './shallow_with_i18n.mock'; - -// Note: shallow_usecontext must be imported directly as a file +// Note: shallow_useeffect must be imported directly as a file diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts index bad6beaa1652e..b616cbab03e28 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts @@ -10,11 +10,13 @@ * NOTE: These variable names MUST start with 'mock*' in order for * Jest to accept its use within a jest.mock() */ +import { mockKibanaValues } from './kibana_logic.mock'; import { mockLicensingValues } from './licensing_logic.mock'; import { mockHttpValues } from './http_logic.mock'; import { mockFlashMessagesValues, mockFlashMessagesActions } from './flash_messages_logic.mock'; export const mockAllValues = { + ...mockKibanaValues, ...mockLicensingValues, ...mockHttpValues, ...mockFlashMessagesValues, diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_context.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts similarity index 65% rename from x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_context.mock.ts rename to x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts index ee77b0937cd82..9f3c2443bc9b8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_context.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts @@ -4,13 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -/** - * A set of default Kibana context values to use across component tests. - * @see enterprise_search/public/index.tsx for the KibanaContext definition/import - */ -export const mockKibanaContext = { +export const mockKibanaValues = { + config: { host: 'http://localhost:3002' }, navigateToUrl: jest.fn(), setBreadcrumbs: jest.fn(), setDocTitle: jest.fn(), - config: { host: 'http://localhost:3002' }, }; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_async.mock.tsx b/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_async.mock.tsx new file mode 100644 index 0000000000000..a33e116c7ca72 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_async.mock.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { act } from 'react-dom/test-utils'; +import { mount, ReactWrapper } from 'enzyme'; + +import { mountWithIntl } from './'; + +/** + * This helper is intended for components that have async effects + * (e.g. http fetches) on mount. It mostly adds act/update boilerplate + * that's needed for the wrapper to play nice with Enzyme/Jest + * + * Example usage: + * + * const wrapper = mountAsync(); + */ + +interface IOptions { + i18n?: boolean; +} + +export const mountAsync = async ( + children: React.ReactElement, + options: IOptions +): Promise => { + let wrapper: ReactWrapper | undefined; + + // We get a lot of act() warning/errors in the terminal without this. + // TBH, I don't fully understand why since Enzyme's mount is supposed to + // have act() baked in - could be because of the wrapping context provider? + await act(async () => { + wrapper = options.i18n ? mountWithIntl(children) : mount(children); + }); + if (wrapper) { + wrapper.update(); // This seems to be required for the DOM to actually update + + return wrapper; + } else { + throw new Error('Could not mount wrapper'); + } +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_context.mock.tsx b/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_context.mock.tsx deleted file mode 100644 index 646c3104c286f..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_context.mock.tsx +++ /dev/null @@ -1,83 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import { act } from 'react-dom/test-utils'; -import { mount, ReactWrapper } from 'enzyme'; - -import { Provider } from 'react-redux'; -import { Store } from 'redux'; -import { getContext, resetContext } from 'kea'; - -import { I18nProvider } from '@kbn/i18n/react'; -import { KibanaContext } from '../'; -import { mockKibanaContext } from './kibana_context.mock'; - -/** - * This helper mounts a component with all the contexts/providers used - * by the production app, while allowing custom context to be - * passed in via a second arg - * - * Example usage: - * - * const wrapper = mountWithContext(, { config: { host: 'someOverride' } }); - */ -export const mountWithContext = (children: React.ReactNode, context?: object) => { - resetContext({ createStore: true }); - const store = getContext().store as Store; - - return mount( - - - {children} - - - ); -}; - -/** - * This helper mounts a component with just the default KibanaContext - - * useful for isolated / helper components that only need this context - * - * Same usage/override functionality as mountWithContext - */ -export const mountWithKibanaContext = (children: React.ReactNode, context?: object) => { - return mount( - - {children} - - ); -}; - -/** - * This helper is intended for components that have async effects - * (e.g. http fetches) on mount. It mostly adds act/update boilerplate - * that's needed for the wrapper to play nice with Enzyme/Jest - * - * Example usage: - * - * const wrapper = mountWithAsyncContext(, { http: { get: () => someData } }); - */ -export const mountWithAsyncContext = async ( - children: React.ReactNode, - context?: object -): Promise => { - let wrapper: ReactWrapper | undefined; - - // We get a lot of act() warning/errors in the terminal without this. - // TBH, I don't fully understand why since Enzyme's mount is supposed to - // have act() baked in - could be because of the wrapping context provider? - await act(async () => { - wrapper = mountWithContext(children, context); - }); - if (wrapper) { - wrapper.update(); // This seems to be required for the DOM to actually update - - return wrapper; - } else { - throw new Error('Could not mount wrapper'); - } -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_i18n.mock.tsx b/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_i18n.mock.tsx new file mode 100644 index 0000000000000..55abe1030544f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/mount_with_i18n.mock.tsx @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { mount } from 'enzyme'; +import { I18nProvider } from '@kbn/i18n/react'; + +/** + * This helper wraps a component with react-intl's which + * fixes "Could not find required `intl` object" console errors when running tests + * + * Example usage (should be the same as mount()): + * + * const wrapper = mountWithI18n(); + */ +export const mountWithIntl = (children: React.ReactElement) => { + return mount({children}); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_usecontext.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_usecontext.mock.ts deleted file mode 100644 index df9e58994e36b..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_usecontext.mock.ts +++ /dev/null @@ -1,40 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -/** - * NOTE: These variable names MUST start with 'mock*' in order for - * Jest to accept its use within a jest.mock() - */ -import { mockKibanaContext } from './kibana_context.mock'; - -jest.mock('react', () => ({ - ...(jest.requireActual('react') as object), - useContext: jest.fn(() => ({ ...mockKibanaContext })), - useEffect: jest.fn((fn) => fn()), // Calls on mount/every update - use mount for more complex behavior -})); - -/** - * Example usage within a component test using shallow(): - * - * import '../../../__mocks__/shallow_usecontext'; // Must come before React's import, adjust relative path as needed - * - * import React from 'react'; - * import { shallow } from 'enzyme'; - * - * // ... etc. - */ - -/** - * If you need to override the default mock context values, you can do so via jest.mockImplementation: - * - * import React, { useContext } from 'react'; - * - * // ... etc. - * - * it('some test', () => { - * useContext.mockImplementationOnce(() => ({ config: { host: 'someOverride' } })); - * }); - */ diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_useeffect.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_useeffect.mock.ts new file mode 100644 index 0000000000000..732786b5f9249 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/shallow_useeffect.mock.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +jest.mock('react', () => ({ + ...(jest.requireActual('react') as object), + useEffect: jest.fn((fn) => fn()), // Calls on mount/every update - use mount for more complex behavior +})); + +/** + * Example usage within a component test using shallow(): + * + * import '../../../__mocks__/shallow_useeffect.mock'; // Must come before React's import, adjust relative path as needed + * + * import React from 'react'; + * import { shallow } from 'enzyme'; + * + * // ... etc. + */ diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.test.tsx index 44afce96c1a6c..f87ea2d422780 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.test.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; import { shallow, ReactWrapper } from 'enzyme'; -import { mountWithAsyncContext, mockHttpValues, setMockValues } from '../../../__mocks__'; +import { mountAsync, mockHttpValues, setMockValues } from '../../../__mocks__'; import { LoadingState, EmptyState } from './components'; import { EngineTable } from './engine_table'; @@ -36,7 +36,7 @@ describe('EngineOverview', () => { }), }, }); - const wrapper = await mountWithAsyncContext(); + const wrapper = await mountAsync(, { i18n: true }); expect(wrapper.find(EmptyState)).toHaveLength(1); }); @@ -69,7 +69,7 @@ describe('EngineOverview', () => { }); it('renders and calls the engines API', async () => { - const wrapper = await mountWithAsyncContext(); + const wrapper = await mountAsync(, { i18n: true }); expect(wrapper.find(EngineTable)).toHaveLength(1); expect(mockApi).toHaveBeenNthCalledWith(1, '/api/app_search/engines', { @@ -86,7 +86,7 @@ describe('EngineOverview', () => { hasPlatinumLicense: true, http: { ...mockHttpValues.http, get: mockApi }, }); - const wrapper = await mountWithAsyncContext(); + const wrapper = await mountAsync(, { i18n: true }); expect(wrapper.find(EngineTable)).toHaveLength(2); expect(mockApi).toHaveBeenNthCalledWith(2, '/api/app_search/engines', { @@ -103,7 +103,7 @@ describe('EngineOverview', () => { wrapper.find(EngineTable).prop('pagination'); it('passes down page data from the API', async () => { - const wrapper = await mountWithAsyncContext(); + const wrapper = await mountAsync(, { i18n: true }); const pagination = getTablePagination(wrapper); expect(pagination.totalEngines).toEqual(100); @@ -111,7 +111,7 @@ describe('EngineOverview', () => { }); it('re-polls the API on page change', async () => { - const wrapper = await mountWithAsyncContext(); + const wrapper = await mountAsync(, { i18n: true }); await act(async () => getTablePagination(wrapper).onPaginate(5)); wrapper.update(); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_table.test.tsx index c66fd24fee12a..4d97a16991b71 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_table.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_table.test.tsx @@ -6,11 +6,9 @@ import '../../../__mocks__/kea.mock'; import '../../../__mocks__/enterprise_search_url.mock'; -import { mockHttpValues } from '../../../__mocks__/'; +import { mockHttpValues, mountWithIntl } from '../../../__mocks__/'; import React from 'react'; -import { mount } from 'enzyme'; -import { I18nProvider } from '@kbn/i18n/react'; import { EuiBasicTable, EuiPagination, EuiButtonEmpty, EuiLink } from '@elastic/eui'; jest.mock('../../../shared/telemetry', () => ({ sendTelemetry: jest.fn() })); @@ -21,24 +19,22 @@ import { EngineTable } from './engine_table'; describe('EngineTable', () => { const onPaginate = jest.fn(); // onPaginate updates the engines API call upstream - const wrapper = mount( - - - + const wrapper = mountWithIntl( + ); const table = wrapper.find(EuiBasicTable); @@ -78,13 +74,8 @@ describe('EngineTable', () => { }); it('handles empty data', () => { - const emptyWrapper = mount( - - {} }} - /> - + const emptyWrapper = mountWithIntl( + {} }} /> ); const emptyTable = emptyWrapper.find(EuiBasicTable); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx index 052f4446e4409..c54d6ed3ddd6f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx @@ -4,11 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../__mocks__/shallow_usecontext.mock'; +import '../__mocks__/shallow_useeffect.mock'; import '../__mocks__/kea.mock'; import '../__mocks__/enterprise_search_url.mock'; -import React, { useContext } from 'react'; +import React from 'react'; import { Redirect } from 'react-router-dom'; import { shallow } from 'enzyme'; import { useValues, useActions } from 'kea'; @@ -21,14 +21,14 @@ import { AppSearch, AppSearchUnconfigured, AppSearchConfigured, AppSearchNav } f describe('AppSearch', () => { it('renders AppSearchUnconfigured when config.host is not set', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); const wrapper = shallow(); expect(wrapper.find(AppSearchUnconfigured)).toHaveLength(1); }); it('renders AppSearchConfigured when config.host set', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); const wrapper = shallow(); expect(wrapper.find(AppSearchConfigured)).toHaveLength(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/index.tsx index 410f6eb524822..9aa2cce9c74df 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/index.tsx @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext, useEffect } from 'react'; +import React, { useEffect } from 'react'; import { Route, Redirect, Switch } from 'react-router-dom'; import { useActions, useValues } from 'kea'; import { i18n } from '@kbn/i18n'; -import { KibanaContext, IKibanaContext } from '../index'; import { getAppSearchUrl } from '../shared/enterprise_search_url'; +import { KibanaLogic } from '../shared/kibana'; import { HttpLogic } from '../shared/http'; import { AppLogic } from './app_logic'; import { IInitialAppData } from '../../../common/types'; @@ -34,7 +34,7 @@ import { NotFound } from '../shared/not_found'; import { EngineOverview } from './components/engine_overview'; export const AppSearch: React.FC = (props) => { - const { config } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); return !config.host ? : ; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.test.tsx index 35301af44b413..b2030ec910cd8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.test.tsx @@ -5,9 +5,9 @@ */ import '../../../__mocks__/kea.mock'; -import '../../../__mocks__/shallow_usecontext.mock'; -import React, { useContext } from 'react'; +import React from 'react'; +import { useValues } from 'kea'; import { shallow } from 'enzyme'; import { EuiCard } from '@elastic/eui'; @@ -27,7 +27,6 @@ describe('ProductCard', () => { }); it('renders an App Search card', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'localhost' } })); const wrapper = shallow(); const card = wrapper.find(EuiCard).dive().shallow(); @@ -43,7 +42,6 @@ describe('ProductCard', () => { }); it('renders a Workplace Search card', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'localhost' } })); const wrapper = shallow(); const card = wrapper.find(EuiCard).dive().shallow(); @@ -61,7 +59,7 @@ describe('ProductCard', () => { }); it('renders correct button text when host not present', () => { - (useContext as jest.Mock).mockImplementation(() => ({ config: { host: '' } })); + (useValues as jest.Mock).mockImplementation(() => ({ config: { host: '' } })); const wrapper = shallow(); const card = wrapper.find(EuiCard).dive().shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.tsx index 482d68736af01..1d05128adc2e3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_card/product_card.tsx @@ -4,17 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; +import React from 'react'; import { useValues } from 'kea'; import { snakeCase } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EuiCard, EuiTextColor } from '@elastic/eui'; -import { KibanaContext, IKibanaContext } from '../../../index'; - import { EuiButton } from '../../../shared/react_router_helpers'; import { sendTelemetry } from '../../../shared/telemetry'; import { HttpLogic } from '../../../shared/http'; +import { KibanaLogic } from '../../../shared/kibana'; import './product_card.scss'; @@ -31,9 +30,7 @@ interface IProductCard { export const ProductCard: React.FC = ({ product, image }) => { const { http } = useValues(HttpLogic); - const { - config: { host }, - } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); const LAUNCH_BUTTON_TEXT = i18n.translate( 'xpack.enterpriseSearch.overview.productCard.launchButton', @@ -80,7 +77,7 @@ export const ProductCard: React.FC = ({ product, image }) => { }) } > - {host ? LAUNCH_BUTTON_TEXT : SETUP_BUTTON_TEXT} + {config.host ? LAUNCH_BUTTON_TEXT : SETUP_BUTTON_TEXT} } /> diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.test.tsx index 44efa57db897f..f1f16d1a6f7a4 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.test.tsx @@ -4,9 +4,10 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../../__mocks__/shallow_usecontext.mock'; +import '../../../__mocks__/kea.mock'; -import React, { useContext } from 'react'; +import React from 'react'; +import { useValues } from 'kea'; import { shallow } from 'enzyme'; import { EuiPage } from '@elastic/eui'; @@ -15,7 +16,7 @@ import { ProductCard } from '../product_card'; describe('ProductSelector', () => { it('renders the overview page and product cards with no host set', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); const wrapper = shallow(); expect(wrapper.find(EuiPage).hasClass('enterpriseSearchOverview')).toBe(true); @@ -24,7 +25,7 @@ describe('ProductSelector', () => { describe('access checks when host is set', () => { beforeEach(() => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'localhost' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'localhost' } })); }); it('does not render the App Search card if the user does not have access to AS', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.tsx index 07b8d4b9926d7..5c2d105e69c40 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/product_selector/product_selector.tsx @@ -9,8 +9,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; - +import React from 'react'; +import { useValues } from 'kea'; import { EuiPage, EuiPageBody, @@ -24,10 +24,8 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { KibanaContext, IKibanaContext } from '../../../index'; - import { APP_SEARCH_PLUGIN, WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; - +import { KibanaLogic } from '../../../shared/kibana'; import { SetEnterpriseSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendEnterpriseSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; @@ -45,12 +43,11 @@ interface IProductSelectorProps { export const ProductSelector: React.FC = ({ access }) => { const { hasAppSearchAccess, hasWorkplaceSearchAccess } = access; - const { - config: { host }, - } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); - const shouldShowAppSearchCard = !host || hasAppSearchAccess; - const shouldShowWorkplaceSearchCard = !host || hasWorkplaceSearchAccess; + // If Enterprise Search hasn't been set up yet, show all products. Otherwise, only show products the user has access to + const shouldShowAppSearchCard = !config.host || hasAppSearchAccess; + const shouldShowWorkplaceSearchCard = !config.host || hasWorkplaceSearchAccess; return ( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.test.tsx index 2c0902163e3d6..803d2c8462b1b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.test.tsx @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../__mocks__/shallow_usecontext.mock'; - -import React, { useContext } from 'react'; +import React from 'react'; import { shallow } from 'enzyme'; import { EuiPage } from '@elastic/eui'; @@ -19,12 +17,11 @@ import { ErrorConnecting } from './components/error_connecting'; import { ProductSelector } from './components/product_selector'; describe('EnterpriseSearch', () => { - beforeEach(() => { - (useValues as jest.Mock).mockReturnValue({ errorConnecting: false }); - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'localhost' } })); - }); - it('renders the Setup Guide and Product Selector', () => { + (useValues as jest.Mock).mockReturnValue({ + errorConnecting: false, + config: { host: 'localhost' }, + }); const wrapper = shallow(); expect(wrapper.find(SetupGuide)).toHaveLength(1); @@ -32,9 +29,10 @@ describe('EnterpriseSearch', () => { }); it('renders the error connecting prompt when host is not configured', () => { - (useValues as jest.Mock).mockReturnValueOnce({ errorConnecting: true }); - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); - + (useValues as jest.Mock).mockReturnValueOnce({ + errorConnecting: true, + config: { host: '' }, + }); const wrapper = shallow(); expect(wrapper.find(ErrorConnecting)).toHaveLength(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.tsx index e2c05434dd0bb..7b97c6c9e58b6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/index.tsx @@ -4,11 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; +import React from 'react'; import { Route, Switch } from 'react-router-dom'; import { useValues } from 'kea'; -import { KibanaContext, IKibanaContext } from '../index'; +import { KibanaLogic } from '../shared/kibana'; import { IInitialAppData } from '../../../common/types'; import { HttpLogic } from '../shared/http'; @@ -23,7 +23,7 @@ import './index.scss'; export const EnterpriseSearch: React.FC = ({ access = {} }) => { const { errorConnecting } = useValues(HttpLogic); - const { config } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); const showErrorConnecting = config.host && errorConnecting; diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 2c6bc787923e3..63be9b684e56f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -7,28 +7,20 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Router } from 'react-router-dom'; - import { Provider } from 'react-redux'; import { Store } from 'redux'; import { getContext, resetContext } from 'kea'; - import { I18nProvider } from '@kbn/i18n/react'; -import { AppMountParameters, CoreStart, ApplicationStart, ChromeBreadcrumb } from 'src/core/public'; + +import { AppMountParameters, CoreStart } from 'src/core/public'; import { PluginsStart, ClientConfigType, ClientData } from '../plugin'; +import { IInitialAppData } from '../../common/types'; + +import { mountKibanaLogic } from './shared/kibana'; import { mountLicensingLogic } from './shared/licensing'; import { mountHttpLogic } from './shared/http'; import { mountFlashMessagesLogic } from './shared/flash_messages'; import { externalUrl } from './shared/enterprise_search_url'; -import { IInitialAppData } from '../../common/types'; - -export interface IKibanaContext { - config: { host?: string }; - navigateToUrl: ApplicationStart['navigateToUrl']; - setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; - setDocTitle(title: string): void; -} - -export const KibanaContext = React.createContext({}); /** * This file serves as a reusable wrapper to share Kibana-level context and other helpers @@ -47,39 +39,37 @@ export const renderApp = ( resetContext({ createStore: true }); const store = getContext().store as Store; + const unmountKibanaLogic = mountKibanaLogic({ + config, + navigateToUrl: core.application.navigateToUrl, + setBreadcrumbs: core.chrome.setBreadcrumbs, + setDocTitle: core.chrome.docTitle.change, + }); const unmountLicensingLogic = mountLicensingLogic({ license$: plugins.licensing.license$, }); - const unmountHttpLogic = mountHttpLogic({ http: core.http, errorConnecting, readOnlyMode: initialData.readOnlyMode, }); - - const unmountFlashMessagesLogic = mountFlashMessagesLogic({ history: params.history }); + const unmountFlashMessagesLogic = mountFlashMessagesLogic({ + history: params.history, + }); ReactDOM.render( - - - - - - - + + + + + , params.element ); return () => { ReactDOM.unmountComponentAtNode(params.element); + unmountKibanaLogic(); unmountLicensingLogic(); unmountHttpLogic(); unmountFlashMessagesLogic(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.test.tsx index 29b773b80158a..25a02e847ccbd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.test.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../__mocks__/shallow_usecontext.mock'; +import '../../__mocks__/kea.mock'; import React from 'react'; import { shallow } from 'enzyme'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.tsx index a2cb424dadee8..b92a5bbf1c64e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/error_state/error_state_prompt.tsx @@ -4,17 +4,18 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; +import React from 'react'; +import { useValues } from 'kea'; import { EuiEmptyPrompt, EuiCode } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButton } from '../react_router_helpers'; -import { KibanaContext, IKibanaContext } from '../../index'; +import { KibanaLogic } from '../../shared/kibana'; import './error_state_prompt.scss'; export const ErrorStatePrompt: React.FC = () => { - const { config } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); return ( { + beforeEach(() => { + jest.clearAllMocks(); + resetContext({}); + }); + + describe('mounts', () => { + it('sets values from props', () => { + mountKibanaLogic(mockKibanaValues); + + expect(KibanaLogic.values).toEqual(mockKibanaValues); + }); + + it('gracefully handles missing configs', () => { + mountKibanaLogic({ ...mockKibanaValues, config: undefined } as any); + + expect(KibanaLogic.values.config).toEqual({}); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts new file mode 100644 index 0000000000000..a884acb02d10a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { ApplicationStart, ChromeBreadcrumb } from 'src/core/public'; + +export interface IKibanaValues { + config: { host?: string }; + navigateToUrl: ApplicationStart['navigateToUrl']; + setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; + setDocTitle(title: string): void; +} + +export const KibanaLogic = kea>({ + path: ['enterprise_search', 'kibana_logic'], + reducers: ({ props }) => ({ + config: [props.config || {}, {}], + navigateToUrl: [props.navigateToUrl, {}], + setBreadcrumbs: [props.setBreadcrumbs, {}], + setDocTitle: [props.setDocTitle, {}], + }), +}); + +export const mountKibanaLogic = (props: IKibanaValues) => { + KibanaLogic(props); + const unmount = KibanaLogic.mount(); + return unmount; +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts index 3c8b3a7218862..a2c0bcae6fc18 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../__mocks__/shallow_usecontext.mock'; +import '../../__mocks__/kea.mock'; import '../../__mocks__/react_router_history.mock'; -import { mockKibanaContext, mockHistory } from '../../__mocks__'; +import { mockKibanaValues, mockHistory } from '../../__mocks__'; jest.mock('../react_router_helpers', () => ({ letBrowserHandleEvent: jest.fn(() => false) })); import { letBrowserHandleEvent } from '../react_router_helpers'; @@ -53,7 +53,7 @@ describe('useBreadcrumbs', () => { const event = { preventDefault: jest.fn() }; breadcrumb.onClick(event); - expect(mockKibanaContext.navigateToUrl).toHaveBeenCalledWith('/app/enterprise_search/test'); + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/app/enterprise_search/test'); expect(mockHistory.createHref).toHaveBeenCalled(); expect(event.preventDefault).toHaveBeenCalled(); }); @@ -64,7 +64,7 @@ describe('useBreadcrumbs', () => { ])[0] as any; breadcrumb.onClick({ preventDefault: () => null }); - expect(mockKibanaContext.navigateToUrl).toHaveBeenCalledWith('/test'); + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/test'); expect(mockHistory.createHref).not.toHaveBeenCalled(); }); @@ -74,7 +74,7 @@ describe('useBreadcrumbs', () => { (letBrowserHandleEvent as jest.Mock).mockImplementationOnce(() => true); breadcrumb.onClick(); - expect(mockKibanaContext.navigateToUrl).not.toHaveBeenCalled(); + expect(mockKibanaValues.navigateToUrl).not.toHaveBeenCalled(); }); it('does not generate link behavior if path is excluded', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts index 19714608e73e9..ff7f29e2e393c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts @@ -4,11 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useContext } from 'react'; +import { useValues } from 'kea'; import { useHistory } from 'react-router-dom'; import { EuiBreadcrumb } from '@elastic/eui'; -import { KibanaContext, IKibanaContext } from '../../index'; +import { KibanaLogic } from '../../shared/kibana'; import { ENTERPRISE_SEARCH_PLUGIN, @@ -34,7 +34,7 @@ export type TBreadcrumbs = IBreadcrumb[]; export const useBreadcrumbs = (breadcrumbs: TBreadcrumbs) => { const history = useHistory(); - const { navigateToUrl } = useContext(KibanaContext) as IKibanaContext; + const { navigateToUrl } = useValues(KibanaLogic); return breadcrumbs.map(({ text, path, shouldNotCreateHref }) => { const breadcrumb = { text } as EuiBreadcrumb; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx index 61a066bb92216..2aee224304f89 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx @@ -4,12 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../__mocks__/shallow_usecontext.mock'; +import '../../__mocks__/kea.mock'; +import '../../__mocks__/shallow_useeffect.mock'; import '../../__mocks__/react_router_history.mock'; +import { mockKibanaValues } from '../../__mocks__'; import React from 'react'; - -import { mockKibanaContext, mountWithKibanaContext } from '../../__mocks__'; +import { shallow } from 'enzyme'; jest.mock('./generate_breadcrumbs', () => ({ useEnterpriseSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), @@ -37,13 +38,13 @@ describe('Set Kibana Chrome helpers', () => { }); afterEach(() => { - expect(mockKibanaContext.setBreadcrumbs).toHaveBeenCalled(); - expect(mockKibanaContext.setDocTitle).toHaveBeenCalled(); + expect(mockKibanaValues.setBreadcrumbs).toHaveBeenCalled(); + expect(mockKibanaValues.setDocTitle).toHaveBeenCalled(); }); describe('SetEnterpriseSearchChrome', () => { it('sets breadcrumbs and document title', () => { - mountWithKibanaContext(); + shallow(); expect(enterpriseSearchTitle).toHaveBeenCalledWith(['Hello World']); expect(useEnterpriseSearchBreadcrumbs).toHaveBeenCalledWith([ @@ -55,7 +56,7 @@ describe('Set Kibana Chrome helpers', () => { }); it('sets empty breadcrumbs and document title when isRoot is true', () => { - mountWithKibanaContext(); + shallow(); expect(enterpriseSearchTitle).toHaveBeenCalledWith([]); expect(useEnterpriseSearchBreadcrumbs).toHaveBeenCalledWith([]); @@ -64,7 +65,7 @@ describe('Set Kibana Chrome helpers', () => { describe('SetAppSearchChrome', () => { it('sets breadcrumbs and document title', () => { - mountWithKibanaContext(); + shallow(); expect(appSearchTitle).toHaveBeenCalledWith(['Engines']); expect(useAppSearchBreadcrumbs).toHaveBeenCalledWith([ @@ -76,7 +77,7 @@ describe('Set Kibana Chrome helpers', () => { }); it('sets empty breadcrumbs and document title when isRoot is true', () => { - mountWithKibanaContext(); + shallow(); expect(appSearchTitle).toHaveBeenCalledWith([]); expect(useAppSearchBreadcrumbs).toHaveBeenCalledWith([]); @@ -85,7 +86,7 @@ describe('Set Kibana Chrome helpers', () => { describe('SetWorkplaceSearchChrome', () => { it('sets breadcrumbs and document title', () => { - mountWithKibanaContext(); + shallow(); expect(workplaceSearchTitle).toHaveBeenCalledWith(['Sources']); expect(useWorkplaceSearchBreadcrumbs).toHaveBeenCalledWith([ @@ -97,7 +98,7 @@ describe('Set Kibana Chrome helpers', () => { }); it('sets empty breadcrumbs and document title when isRoot is true', () => { - mountWithKibanaContext(); + shallow(); expect(workplaceSearchTitle).toHaveBeenCalledWith([]); expect(useWorkplaceSearchBreadcrumbs).toHaveBeenCalledWith([]); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx index 5e8d972e1a135..2ae3ca0137d54 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx @@ -4,11 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext, useEffect } from 'react'; +import React, { useEffect } from 'react'; +import { useValues } from 'kea'; import { useHistory } from 'react-router-dom'; import { EuiBreadcrumb } from '@elastic/eui'; -import { KibanaContext, IKibanaContext } from '../../index'; +import { KibanaLogic } from '../kibana'; + import { useEnterpriseSearchBreadcrumbs, useAppSearchBreadcrumbs, @@ -41,7 +43,7 @@ type TBreadcrumbsProps = IBreadcrumbsProps | IRootBreadcrumbsProps; export const SetEnterpriseSearchChrome: React.FC = ({ text, isRoot }) => { const history = useHistory(); - const { setBreadcrumbs, setDocTitle } = useContext(KibanaContext) as IKibanaContext; + const { setBreadcrumbs, setDocTitle } = useValues(KibanaLogic); const title = isRoot ? [] : [text]; const docTitle = enterpriseSearchTitle(title as TTitle | []); @@ -59,7 +61,7 @@ export const SetEnterpriseSearchChrome: React.FC = ({ text, i export const SetAppSearchChrome: React.FC = ({ text, isRoot }) => { const history = useHistory(); - const { setBreadcrumbs, setDocTitle } = useContext(KibanaContext) as IKibanaContext; + const { setBreadcrumbs, setDocTitle } = useValues(KibanaLogic); const title = isRoot ? [] : [text]; const docTitle = appSearchTitle(title as TTitle | []); @@ -77,7 +79,7 @@ export const SetAppSearchChrome: React.FC = ({ text, isRoot } export const SetWorkplaceSearchChrome: React.FC = ({ text, isRoot }) => { const history = useHistory(); - const { setBreadcrumbs, setDocTitle } = useContext(KibanaContext) as IKibanaContext; + const { setBreadcrumbs, setDocTitle } = useValues(KibanaLogic); const title = isRoot ? [] : [text]; const docTitle = workplaceSearchTitle(title as TTitle | []); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx index 0c7bac99085dd..eba632d86dc66 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../__mocks__/shallow_usecontext.mock'; +import '../../__mocks__/kea.mock'; import '../../__mocks__/react_router_history.mock'; import React from 'react'; import { shallow, mount } from 'enzyme'; import { EuiLink, EuiButton } from '@elastic/eui'; -import { mockKibanaContext, mockHistory } from '../../__mocks__'; +import { mockKibanaValues, mockHistory } from '../../__mocks__'; import { EuiReactRouterLink, EuiReactRouterButton } from './eui_link'; @@ -69,7 +69,7 @@ describe('EUI & React Router Component Helpers', () => { wrapper.find(EuiLink).simulate('click', simulatedEvent); expect(simulatedEvent.preventDefault).toHaveBeenCalled(); - expect(mockKibanaContext.navigateToUrl).toHaveBeenCalled(); + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalled(); }); it('does not prevent default browser behavior on new tab/window clicks', () => { @@ -81,7 +81,7 @@ describe('EUI & React Router Component Helpers', () => { }; wrapper.find(EuiLink).simulate('click', simulatedEvent); - expect(mockKibanaContext.navigateToUrl).not.toHaveBeenCalled(); + expect(mockKibanaValues.navigateToUrl).not.toHaveBeenCalled(); }); it('calls inherited onClick actions in addition to default navigation', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx index e3b46632ddf9e..99314515f2734 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx @@ -4,11 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; +import React from 'react'; +import { useValues } from 'kea'; import { useHistory } from 'react-router-dom'; import { EuiLink, EuiButton, EuiButtonProps, EuiLinkAnchorProps } from '@elastic/eui'; -import { KibanaContext, IKibanaContext } from '../../index'; +import { KibanaLogic } from '../../shared/kibana'; import { letBrowserHandleEvent } from './link_events'; /** @@ -33,7 +34,7 @@ export const EuiReactRouterHelper: React.FC = ({ children, }) => { const history = useHistory(); - const { navigateToUrl } = useContext(KibanaContext) as IKibanaContext; + const { navigateToUrl } = useValues(KibanaLogic); // Generate the correct link href (with basename etc. accounted for) const href = shouldNotCreateHref ? to : history.createHref({ pathname: to }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx index 0423ae61779af..802a10e3b3db7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { EuiSteps, EuiIcon, EuiLink } from '@elastic/eui'; -import { mountWithContext } from '../../__mocks__'; +import { mountWithIntl } from '../../__mocks__'; import { SetupGuide } from './'; @@ -27,7 +27,7 @@ describe('SetupGuide', () => { }); it('renders with optional auth links', () => { - const wrapper = mountWithContext( + const wrapper = mountWithIntl( { it('renders WorkplaceSearchUnconfigured when config.host is not set', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); const wrapper = shallow(); expect(wrapper.find(WorkplaceSearchUnconfigured)).toHaveLength(1); }); it('renders WorkplaceSearchConfigured when config.host set', () => { - (useContext as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); + (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); const wrapper = shallow(); expect(wrapper.find(WorkplaceSearchConfigured)).toHaveLength(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx index a68dfaf8ea471..4769358a3eb30 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx @@ -4,13 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext, useEffect } from 'react'; +import React, { useEffect } from 'react'; import { Route, Redirect, Switch } from 'react-router-dom'; import { useActions, useValues } from 'kea'; import { WORKPLACE_SEARCH_PLUGIN } from '../../../common/constants'; import { IInitialAppData } from '../../../common/types'; -import { KibanaContext, IKibanaContext } from '../index'; +import { KibanaLogic } from '../shared/kibana'; import { HttpLogic } from '../shared/http'; import { AppLogic } from './app_logic'; import { Layout } from '../shared/layout'; @@ -24,7 +24,7 @@ import { NotFound } from '../shared/not_found'; import { Overview } from './views/overview'; export const WorkplaceSearch: React.FC = (props) => { - const { config } = useContext(KibanaContext) as IKibanaContext; + const { config } = useValues(KibanaLogic); return !config.host ? : ; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.test.tsx index ab5cd7f0de90f..a757e187da098 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.test.tsx @@ -4,8 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../../__mocks__/shallow_usecontext.mock'; - import React from 'react'; import { shallow } from 'enzyme'; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.test.tsx index d9b05c5da777d..d9d03245f6141 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.test.tsx @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import '../../../__mocks__/shallow_usecontext.mock'; import './__mocks__/overview_logic.mock'; import { setMockValues } from './__mocks__'; From 25682bf7ce5df9402ce5270fcaa345683195c3a4 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 28 Sep 2020 15:13:20 -0400 Subject: [PATCH 020/119] [ML]DF Analytics exploration: default filter of results page by `defaultIsTraining` value in url (#78303) * df exploration page: handle default isTraining filter in url * default training query updated to match what the searchBar would produce. fixes evaluate panel dataset label * clear defaultIsTraining filter from url once applied --- .../ml/common/types/ml_url_generator.ts | 2 ++ .../data_frame_analytics/common/analytics.ts | 11 +++++++ .../data_frame_analytics/common/index.ts | 1 + .../classification_exploration.tsx | 30 +++++++++---------- .../exploration_page_wrapper.tsx | 9 +++++- .../exploration_query_bar.tsx | 2 +- .../exploration_results_table.tsx | 22 ++++++++++++++ .../regression_exploration.tsx | 24 +++++++-------- .../pages/analytics_exploration/page.tsx | 7 +++-- .../analytics_job_exploration.tsx | 3 +- .../data_frame_analytics_urls_generator.ts | 3 +- 11 files changed, 80 insertions(+), 34 deletions(-) diff --git a/x-pack/plugins/ml/common/types/ml_url_generator.ts b/x-pack/plugins/ml/common/types/ml_url_generator.ts index d176c22bdbb62..95d06e62f9ef0 100644 --- a/x-pack/plugins/ml/common/types/ml_url_generator.ts +++ b/x-pack/plugins/ml/common/types/ml_url_generator.ts @@ -167,6 +167,7 @@ export interface DataFrameAnalyticsExplorationQueryState { ml: { jobId: JobId; analysisType: DataFrameAnalysisConfigType; + defaultIsTraining?: boolean; }; } @@ -176,6 +177,7 @@ export type DataFrameAnalyticsExplorationUrlState = MLPageState< jobId: JobId; analysisType: DataFrameAnalysisConfigType; globalState?: MlCommonGlobalState; + defaultIsTraining?: boolean; } >; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts index d22bba7738db4..49f3f2311a938 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts @@ -67,6 +67,17 @@ export const defaultSearchQuery = { match_all: {}, }; +export const getDefaultTrainingFilterQuery = (resultsField: string, isTraining: boolean) => ({ + bool: { + minimum_should_match: 1, + should: [ + { + match: { [`${resultsField}.is_training`]: isTraining }, + }, + ], + }, +}); + export interface SearchQuery { track_total_hits?: boolean; query: SavedSearchQuery; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/common/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/common/index.ts index 83eebccd310e3..7ba3e910ddd32 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/common/index.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/common/index.ts @@ -8,6 +8,7 @@ export { getAnalysisType, getDependentVar, getPredictionFieldName, + getDefaultTrainingFilterQuery, isOutlierAnalysis, refreshAnalyticsList$, useRefreshAnalyticsList, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/classification_exploration.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/classification_exploration.tsx index 2e3a5d89367ce..28ef3898cde97 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/classification_exploration.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/classification_exploration.tsx @@ -13,20 +13,20 @@ import { EvaluatePanel } from './evaluate_panel'; interface Props { jobId: string; + defaultIsTraining?: boolean; } -export const ClassificationExploration: FC = ({ jobId }) => { - return ( - - ); -}; +export const ClassificationExploration: FC = ({ jobId, defaultIsTraining }) => ( + +); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx index 84b44ef0d349f..f3fc65d264e62 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx @@ -27,9 +27,15 @@ interface Props { jobId: string; title: string; EvaluatePanel: FC; + defaultIsTraining?: boolean; } -export const ExplorationPageWrapper: FC = ({ jobId, title, EvaluatePanel }) => { +export const ExplorationPageWrapper: FC = ({ + jobId, + title, + EvaluatePanel, + defaultIsTraining, +}) => { const { indexPattern, isInitialized, @@ -70,6 +76,7 @@ export const ExplorationPageWrapper: FC = ({ jobId, title, EvaluatePanel needsDestIndexPattern={needsDestIndexPattern} setEvaluateSearchQuery={setSearchQuery} title={title} + defaultIsTraining={defaultIsTraining} /> )} diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx index 8c158c1ca14a0..8ed732bf7da2b 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx @@ -52,7 +52,7 @@ export const ExplorationQueryBar: FC = ({ if (defaultQueryString !== undefined) { setSearchInput({ query: defaultQueryString, language: SEARCH_QUERY_LANGUAGE.KUERY }); } - }, []); + }, [defaultQueryString !== undefined]); const searchChangeHandler = (query: Query) => setSearchInput(query); const searchSubmitHandler = (query: Query) => { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx index 07a15b01fca93..ef014b07a937e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx @@ -20,6 +20,7 @@ import { SEARCH_SIZE, defaultSearchQuery, getAnalysisType, + getDefaultTrainingFilterQuery, } from '../../../../common'; import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/use_columns'; import { DATA_FRAME_TASK_STATE } from '../../../analytics_management/components/analytics_list/common'; @@ -30,6 +31,7 @@ import { IndexPatternPrompt } from '../index_pattern_prompt'; import { useExplorationResults } from './use_exploration_results'; import { useMlKibana } from '../../../../../contexts/kibana'; import { DataFrameAnalysisConfigType } from '../../../../../../../common/types/data_frame_analytics'; +import { useUrlState } from '../../../../../util/url_state'; const showingDocs = i18n.translate( 'xpack.ml.dataframe.analytics.explorationResults.documentsShownHelpText', @@ -53,6 +55,7 @@ interface Props { needsDestIndexPattern: boolean; setEvaluateSearchQuery: React.Dispatch>; title: string; + defaultIsTraining?: boolean; } export const ExplorationResultsTable: FC = React.memo( @@ -63,18 +66,36 @@ export const ExplorationResultsTable: FC = React.memo( needsDestIndexPattern, setEvaluateSearchQuery, title, + defaultIsTraining, }) => { const { services: { mlServices: { mlApiServices }, }, } = useMlKibana(); + const [globalState, setGlobalState] = useUrlState('_g'); const [searchQuery, setSearchQuery] = useState(defaultSearchQuery); + const [defaultQueryString, setDefaultQueryString] = useState(); useEffect(() => { setEvaluateSearchQuery(searchQuery); }, [JSON.stringify(searchQuery)]); + useEffect(() => { + if (defaultIsTraining !== undefined) { + // Apply defaultIsTraining filter + setSearchQuery( + getDefaultTrainingFilterQuery(jobConfig.dest.results_field, defaultIsTraining) + ); + setDefaultQueryString(`${jobConfig.dest.results_field}.is_training : ${defaultIsTraining}`); + // Clear defaultIsTraining from url + setGlobalState('ml', { + analysisType: globalState.ml.analysisType, + jobId: globalState.ml.jobId, + }); + } + }, []); + const analysisType = getAnalysisType(jobConfig.analysis); const classificationData = useExplorationResults( @@ -140,6 +161,7 @@ export const ExplorationResultsTable: FC = React.memo( diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx index 36d91f6f41d44..40279ecc6ffa4 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx @@ -14,17 +14,17 @@ import { EvaluatePanel } from './evaluate_panel'; interface Props { jobId: string; + defaultIsTraining?: boolean; } -export const RegressionExploration: FC = ({ jobId }) => { - return ( - - ); -}; +export const RegressionExploration: FC = ({ jobId, defaultIsTraining }) => ( + +); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx index f4f01330271fc..4620bbd969fab 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx @@ -32,7 +32,8 @@ import { DataFrameAnalysisConfigType } from '../../../../../common/types/data_fr export const Page: FC<{ jobId: string; analysisType: DataFrameAnalysisConfigType; -}> = ({ jobId, analysisType }) => ( + defaultIsTraining?: boolean; +}> = ({ jobId, analysisType, defaultIsTraining }) => ( @@ -70,10 +71,10 @@ export const Page: FC<{ )} {analysisType === ANALYSIS_CONFIG_TYPE.REGRESSION && ( - + )} {analysisType === ANALYSIS_CONFIG_TYPE.CLASSIFICATION && ( - + )} diff --git a/x-pack/plugins/ml/public/application/routing/routes/data_frame_analytics/analytics_job_exploration.tsx b/x-pack/plugins/ml/public/application/routing/routes/data_frame_analytics/analytics_job_exploration.tsx index f9f2ebe48f4aa..b2d2a92617922 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/data_frame_analytics/analytics_job_exploration.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/data_frame_analytics/analytics_job_exploration.tsx @@ -67,10 +67,11 @@ const PageWrapper: FC = ({ location, deps }) => { } const jobId: string = globalState.ml.jobId; const analysisType: DataFrameAnalysisConfigType = globalState.ml.analysisType; + const defaultIsTraining: boolean | undefined = globalState.ml.defaultIsTraining; return ( - + ); }; diff --git a/x-pack/plugins/ml/public/ml_url_generator/data_frame_analytics_urls_generator.ts b/x-pack/plugins/ml/public/ml_url_generator/data_frame_analytics_urls_generator.ts index 88761edf241a9..2408290e76773 100644 --- a/x-pack/plugins/ml/public/ml_url_generator/data_frame_analytics_urls_generator.ts +++ b/x-pack/plugins/ml/public/ml_url_generator/data_frame_analytics_urls_generator.ts @@ -61,12 +61,13 @@ export function createDataFrameAnalyticsExplorationUrl( let url = `${appBasePath}/${ML_PAGES.DATA_FRAME_ANALYTICS_EXPLORATION}`; if (mlUrlGeneratorState) { - const { jobId, analysisType, globalState } = mlUrlGeneratorState; + const { jobId, analysisType, defaultIsTraining, globalState } = mlUrlGeneratorState; const queryState: DataFrameAnalyticsExplorationQueryState = { ml: { jobId, analysisType, + defaultIsTraining, }, ...globalState, }; From 3f4e9f4bc14996c2a0c81ddef8a05bcb8f1430be Mon Sep 17 00:00:00 2001 From: "Devin W. Hurley" Date: Mon, 28 Sep 2020 15:24:58 -0400 Subject: [PATCH 021/119] [Security Solution] [Detections] Log message enhancements (#78429) * adds missing buildRuleMessage to debug logs to display rule id, name, etc. in logs * add buildRuleMessage fn to params Co-authored-by: Elastic Machine --- .../signals/bulk_create_ml_signals.ts | 6 +++-- .../signals/bulk_create_threshold_signals.ts | 5 +++- .../signals/find_threshold_signals.ts | 4 ++++ .../signals/search_after_bulk_create.ts | 2 ++ .../signals/signal_rule_alert_type.ts | 3 +++ .../signals/single_bulk_create.test.ts | 13 +++++++++++ .../signals/single_bulk_create.ts | 23 +++++++++++++------ .../signals/single_search_after.test.ts | 12 ++++++++++ .../signals/single_search_after.ts | 5 +++- 9 files changed, 62 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts index 80839545951d5..5c2dfa62e5951 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts @@ -14,6 +14,7 @@ import { RuleAlertAction } from '../../../../common/detection_engine/types'; import { RuleTypeParams, RefreshTypes } from '../types'; import { singleBulkCreate, SingleBulkCreateResponse } from './single_bulk_create'; import { AnomalyResults, Anomaly } from '../../machine_learning'; +import { BuildRuleMessage } from './rule_messages'; interface BulkCreateMlSignalsParams { actions: RuleAlertAction[]; @@ -33,6 +34,7 @@ interface BulkCreateMlSignalsParams { refresh: RefreshTypes; tags: string[]; throttle: string; + buildRuleMessage: BuildRuleMessage; } interface EcsAnomaly extends Anomaly { @@ -85,6 +87,6 @@ export const bulkCreateMlSignals = async ( ): Promise => { const anomalyResults = params.someResult; const ecsResults = transformAnomalyResultsToEcs(anomalyResults); - - return singleBulkCreate({ ...params, filteredEvents: ecsResults }); + const buildRuleMessage = params.buildRuleMessage; + return singleBulkCreate({ ...params, filteredEvents: ecsResults, buildRuleMessage }); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_threshold_signals.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_threshold_signals.ts index bdcddbf2ed21b..9eee04030a909 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_threshold_signals.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_threshold_signals.ts @@ -15,6 +15,7 @@ import { RuleAlertAction } from '../../../../common/detection_engine/types'; import { RuleTypeParams, RefreshTypes } from '../types'; import { singleBulkCreate, SingleBulkCreateResponse } from './single_bulk_create'; import { SignalSearchResponse } from './types'; +import { BuildRuleMessage } from './rule_messages'; // used to generate constant Threshold Signals ID when run with the same params const NAMESPACE_ID = '0684ec03-7201-4ee0-8ee0-3a3f6b2479b2'; @@ -40,6 +41,7 @@ interface BulkCreateThresholdSignalsParams { tags: string[]; throttle: string; startedAt: Date; + buildRuleMessage: BuildRuleMessage; } interface FilterObject { @@ -195,6 +197,7 @@ export const bulkCreateThresholdSignals = async ( params.ruleParams.threshold!, params.ruleParams.ruleId ); + const buildRuleMessage = params.buildRuleMessage; - return singleBulkCreate({ ...params, filteredEvents: ecsResults }); + return singleBulkCreate({ ...params, filteredEvents: ecsResults, buildRuleMessage }); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/find_threshold_signals.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/find_threshold_signals.ts index 604b452174045..2822568049960 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/find_threshold_signals.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/find_threshold_signals.ts @@ -12,6 +12,7 @@ import { singleSearchAfter } from './single_search_after'; import { AlertServices } from '../../../../../alerts/server'; import { Logger } from '../../../../../../../src/core/server'; import { SignalSearchResponse } from './types'; +import { BuildRuleMessage } from './rule_messages'; interface FindThresholdSignalsParams { from: string; @@ -21,6 +22,7 @@ interface FindThresholdSignalsParams { logger: Logger; filter: unknown; threshold: Threshold; + buildRuleMessage: BuildRuleMessage; } export const findThresholdSignals = async ({ @@ -31,6 +33,7 @@ export const findThresholdSignals = async ({ logger, filter, threshold, + buildRuleMessage, }: FindThresholdSignalsParams): Promise<{ searchResult: SignalSearchResponse; searchDuration: string; @@ -59,5 +62,6 @@ export const findThresholdSignals = async ({ logger, filter, pageSize: 0, + buildRuleMessage, }); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts index d369a91335347..2df180582a0ac 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts @@ -80,6 +80,7 @@ export const searchAfterAndBulkCreate = async ({ // perform search_after with optionally undefined sortId const { searchResult, searchDuration, searchErrors } = await singleSearchAfter({ + buildRuleMessage, searchAfterSortId: sortId, index: inputIndexPattern, from: tuple.from.toISOString(), @@ -153,6 +154,7 @@ export const searchAfterAndBulkCreate = async ({ success: bulkSuccess, errors: bulkErrors, } = await singleBulkCreate({ + buildRuleMessage, filteredEvents, ruleParams, services, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts index f7b56f42755ab..a3b37270e50b1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts @@ -257,6 +257,7 @@ export const signalRulesAlertType = ({ enabled, refresh, tags, + buildRuleMessage, }); // The legacy ES client does not define failures when it can be present on the structure, hence why I have the & { failures: [] } const shardFailures = @@ -295,6 +296,7 @@ export const signalRulesAlertType = ({ logger, filter: esFilter, threshold, + buildRuleMessage, }); const { @@ -323,6 +325,7 @@ export const signalRulesAlertType = ({ enabled, refresh, tags, + buildRuleMessage, }); result = mergeReturns([ result, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.test.ts index 374b967d1e77f..b7cc13fd13a01 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.test.ts @@ -19,7 +19,14 @@ import { import { DEFAULT_SIGNALS_INDEX } from '../../../../common/constants'; import { singleBulkCreate, filterDuplicateRules } from './single_bulk_create'; import { alertsMock, AlertServicesMock } from '../../../../../alerts/server/mocks'; +import { buildRuleMessageFactory } from './rule_messages'; +const buildRuleMessage = buildRuleMessageFactory({ + id: 'fake id', + ruleId: 'fake rule id', + index: 'fakeindex', + name: 'fake name', +}); describe('singleBulkCreate', () => { const mockService: AlertServicesMock = alertsMock.createAlertServices(); @@ -158,6 +165,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(success).toEqual(true); expect(createdItemsCount).toEqual(0); @@ -192,6 +200,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(success).toEqual(true); expect(createdItemsCount).toEqual(0); @@ -218,6 +227,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(success).toEqual(true); expect(createdItemsCount).toEqual(0); @@ -245,6 +255,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(mockLogger.error).not.toHaveBeenCalled(); @@ -274,6 +285,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(mockLogger.error).toHaveBeenCalled(); expect(errors).toEqual(['[4]: internal server error']); @@ -339,6 +351,7 @@ describe('singleBulkCreate', () => { refresh: false, tags: ['some fake tag 1', 'some fake tag 2'], throttle: 'no_actions', + buildRuleMessage, }); expect(success).toEqual(true); expect(createdItemsCount).toEqual(1); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.ts index e3c3c940b3225..759890cc9d074 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_bulk_create.ts @@ -12,6 +12,7 @@ import { RuleAlertAction } from '../../../../common/detection_engine/types'; import { RuleTypeParams, RefreshTypes } from '../types'; import { generateId, makeFloatString, errorAggregator } from './utils'; import { buildBulkBody } from './build_bulk_body'; +import { BuildRuleMessage } from './rule_messages'; import { Logger } from '../../../../../../../src/core/server'; interface SingleBulkCreateParams { @@ -32,6 +33,7 @@ interface SingleBulkCreateParams { tags: string[]; throttle: string; refresh: RefreshTypes; + buildRuleMessage: BuildRuleMessage; } /** @@ -85,6 +87,7 @@ export interface BulkInsertSignalsResponse { // Bulk Index documents. export const singleBulkCreate = async ({ + buildRuleMessage, filteredEvents, ruleParams, services, @@ -104,9 +107,9 @@ export const singleBulkCreate = async ({ throttle, }: SingleBulkCreateParams): Promise => { filteredEvents.hits.hits = filterDuplicateRules(id, filteredEvents); - logger.debug(`about to bulk create ${filteredEvents.hits.hits.length} events`); + logger.debug(buildRuleMessage(`about to bulk create ${filteredEvents.hits.hits.length} events`)); if (filteredEvents.hits.hits.length === 0) { - logger.debug(`all events were duplicates`); + logger.debug(buildRuleMessage(`all events were duplicates`)); return { success: true, createdItemsCount: 0, errors: [] }; } // index documents after creating an ID based on the @@ -153,21 +156,27 @@ export const singleBulkCreate = async ({ body: bulkBody, }); const end = performance.now(); - logger.debug(`individual bulk process time took: ${makeFloatString(end - start)} milliseconds`); - logger.debug(`took property says bulk took: ${response.took} milliseconds`); + logger.debug( + buildRuleMessage( + `individual bulk process time took: ${makeFloatString(end - start)} milliseconds` + ) + ); + logger.debug(buildRuleMessage(`took property says bulk took: ${response.took} milliseconds`)); const createdItemsCount = countBy(response.items, 'create.status')['201'] ?? 0; const duplicateSignalsCount = countBy(response.items, 'create.status')['409']; const errorCountByMessage = errorAggregator(response, [409]); - logger.debug(`bulk created ${createdItemsCount} signals`); + logger.debug(buildRuleMessage(`bulk created ${createdItemsCount} signals`)); if (duplicateSignalsCount > 0) { - logger.debug(`ignored ${duplicateSignalsCount} duplicate signals`); + logger.debug(buildRuleMessage(`ignored ${duplicateSignalsCount} duplicate signals`)); } if (!isEmpty(errorCountByMessage)) { logger.error( - `[-] bulkResponse had errors with responses of: ${JSON.stringify(errorCountByMessage)}` + buildRuleMessage( + `[-] bulkResponse had errors with responses of: ${JSON.stringify(errorCountByMessage)}` + ) ); return { errors: Object.keys(errorCountByMessage), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.test.ts index da81911f07ad9..7b7c40f0c4355 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.test.ts @@ -12,7 +12,14 @@ import { import { singleSearchAfter } from './single_search_after'; import { alertsMock, AlertServicesMock } from '../../../../../alerts/server/mocks'; import { ShardError } from '../../types'; +import { buildRuleMessageFactory } from './rule_messages'; +const buildRuleMessage = buildRuleMessageFactory({ + id: 'fake id', + ruleId: 'fake rule id', + index: 'fakeindex', + name: 'fake name', +}); describe('singleSearchAfter', () => { const mockService: AlertServicesMock = alertsMock.createAlertServices(); @@ -32,6 +39,7 @@ describe('singleSearchAfter', () => { pageSize: 1, filter: undefined, timestampOverride: undefined, + buildRuleMessage, }); expect(searchResult).toEqual(sampleDocSearchResultsNoSortId()); }); @@ -47,6 +55,7 @@ describe('singleSearchAfter', () => { pageSize: 1, filter: undefined, timestampOverride: undefined, + buildRuleMessage, }); expect(searchErrors).toEqual([]); }); @@ -94,6 +103,7 @@ describe('singleSearchAfter', () => { pageSize: 1, filter: undefined, timestampOverride: undefined, + buildRuleMessage, }); expect(searchErrors).toEqual(['reason: some reason, type: some type, caused by: some reason']); }); @@ -110,6 +120,7 @@ describe('singleSearchAfter', () => { pageSize: 1, filter: undefined, timestampOverride: undefined, + buildRuleMessage, }); expect(searchResult).toEqual(sampleDocSearchResultsWithSortId()); }); @@ -129,6 +140,7 @@ describe('singleSearchAfter', () => { pageSize: 1, filter: undefined, timestampOverride: undefined, + buildRuleMessage, }) ).rejects.toThrow('Fake Error'); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.ts index f758adb21611c..3b89a2d79c0d0 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/single_search_after.ts @@ -8,6 +8,7 @@ import { performance } from 'perf_hooks'; import { AlertServices } from '../../../../../alerts/server'; import { Logger } from '../../../../../../../src/core/server'; import { SignalSearchResponse } from './types'; +import { BuildRuleMessage } from './rule_messages'; import { buildEventsSearchQuery } from './build_events_query'; import { createErrorsFromShard, makeFloatString } from './utils'; import { TimestampOverrideOrUndefined } from '../../../../common/detection_engine/schemas/common/schemas'; @@ -23,6 +24,7 @@ interface SingleSearchAfterParams { pageSize: number; filter: unknown; timestampOverride: TimestampOverrideOrUndefined; + buildRuleMessage: BuildRuleMessage; } // utilize search_after for paging results into bulk. @@ -37,6 +39,7 @@ export const singleSearchAfter = async ({ logger, pageSize, timestampOverride, + buildRuleMessage, }: SingleSearchAfterParams): Promise<{ searchResult: SignalSearchResponse; searchDuration: string; @@ -69,7 +72,7 @@ export const singleSearchAfter = async ({ searchErrors, }; } catch (exc) { - logger.error(`[-] nextSearchAfter threw an error ${exc}`); + logger.error(buildRuleMessage(`[-] nextSearchAfter threw an error ${exc}`)); throw exc; } }; From 9017d50ffe3a1d431fa305048d4b266bc855e885 Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau <189600+XavierM@users.noreply.github.com> Date: Mon, 28 Sep 2020 15:38:16 -0400 Subject: [PATCH 022/119] fix name without a category or if field end with .text (#78655) --- .../index_fields/index.test.ts | 116 ++++++++++++------ .../search_strategy/index_fields/index.ts | 11 +- .../search_strategy/index_fields/mock.ts | 16 +++ 3 files changed, 107 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.test.ts b/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.test.ts index 570d2fc9192c0..5a219304cea18 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.test.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.test.ts @@ -136,6 +136,29 @@ describe('Index Fields', () => { readFromDocValues: false, esTypes: [], }, + { + aggregatable: true, + category: 'agent', + esTypes: [], + indexes: ['auditbeat'], + name: 'agent.user.name', + readFromDocValues: false, + searchable: true, + type: 'string', + }, + { + aggregatable: true, + category: 'client', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + esTypes: [], + example: 15169, + indexes: ['auditbeat'], + name: 'client.as.number.text', + readFromDocValues: false, + searchable: true, + type: 'string', + }, ]) ); }); @@ -149,6 +172,7 @@ describe('Index Fields', () => { ); expect(fields).toEqual([ { + category: 'base', description: 'Each document has an _id that uniquely identifies it', example: 'Y-6TfmcB0WOhS6qyMv3s', name: '_id', @@ -156,11 +180,11 @@ describe('Index Fields', () => { searchable: true, aggregatable: false, readFromDocValues: false, - category: 'base', - indexes: ['auditbeat'], esTypes: [], + indexes: ['auditbeat'], }, { + category: 'base', description: 'An index is like a ‘database’ in a relational database. It has a mapping which defines multiple types. An index is a logical namespace which maps to one or more primary shards and can have zero or more replica shards.', example: 'auditbeat-8.0.0-2019.02.19-000001', @@ -169,11 +193,11 @@ describe('Index Fields', () => { searchable: true, aggregatable: true, readFromDocValues: false, - category: 'base', - indexes: ['auditbeat'], esTypes: [], + indexes: ['auditbeat'], }, { + category: 'base', description: 'Date/time when the event originated. This is the date/time extracted from the event, typically representing when the event was generated by the source. If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events.', example: '2016-05-23T08:05:34.853Z', @@ -181,12 +205,12 @@ describe('Index Fields', () => { type: 'date', searchable: true, aggregatable: true, - category: 'base', - indexes: ['auditbeat'], readFromDocValues: true, esTypes: [], + indexes: ['auditbeat'], }, { + category: 'agent', description: 'Ephemeral identifier of this agent (if one exists). This id normally changes across restarts, but `agent.id` does not.', example: '8a4f500f', @@ -194,12 +218,12 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['auditbeat'], readFromDocValues: false, esTypes: [], + indexes: ['auditbeat'], }, { + category: 'agent', description: 'Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty.', example: 'foo', @@ -207,12 +231,12 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['auditbeat'], readFromDocValues: false, esTypes: [], + indexes: ['auditbeat'], }, { + category: 'agent', description: 'Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine.', example: 'filebeat', @@ -220,36 +244,59 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['auditbeat'], readFromDocValues: false, esTypes: [], + indexes: ['auditbeat'], }, { + category: 'agent', description: 'Version of the agent.', example: '6.0.0-rc2', name: 'agent.version', type: 'string', searchable: true, aggregatable: true, + readFromDocValues: false, + esTypes: [], + indexes: ['auditbeat'], + }, + { category: 'agent', + name: 'agent.user.name', + searchable: true, + type: 'string', + aggregatable: true, + readFromDocValues: false, + esTypes: [], indexes: ['auditbeat'], + }, + { + category: 'client', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + name: 'client.as.number.text', + type: 'string', + searchable: true, + aggregatable: true, readFromDocValues: false, esTypes: [], + indexes: ['auditbeat'], }, { + category: 'base', description: 'Each document has an _id that uniquely identifies it', example: 'Y-6TfmcB0WOhS6qyMv3s', name: '_id', type: 'string', searchable: true, aggregatable: false, - category: 'base', - indexes: ['filebeat'], readFromDocValues: false, esTypes: [], + indexes: ['filebeat'], }, { + category: 'base', description: 'An index is like a ‘database’ in a relational database. It has a mapping which defines multiple types. An index is a logical namespace which maps to one or more primary shards and can have zero or more replica shards.', example: 'auditbeat-8.0.0-2019.02.19-000001', @@ -257,12 +304,12 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'base', - indexes: ['filebeat'], readFromDocValues: false, esTypes: [], + indexes: ['filebeat'], }, { + category: 'base', description: 'Date/time when the event originated. This is the date/time extracted from the event, typically representing when the event was generated by the source. If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events.', example: '2016-05-23T08:05:34.853Z', @@ -270,24 +317,24 @@ describe('Index Fields', () => { type: 'date', searchable: true, aggregatable: true, - category: 'base', - indexes: ['filebeat'], readFromDocValues: true, esTypes: [], + indexes: ['filebeat'], }, { + category: 'agent', description: 'Deprecated - use agent.name or agent.id to identify an agent. Hostname of the agent. ', name: 'agent.hostname', - searchable: true, type: 'string', + searchable: true, aggregatable: true, - category: 'agent', - indexes: ['filebeat'], readFromDocValues: false, esTypes: [], + indexes: ['filebeat'], }, { + category: 'agent', description: 'Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty.', example: 'foo', @@ -295,36 +342,36 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['filebeat'], readFromDocValues: false, esTypes: [], + indexes: ['filebeat'], }, { + category: 'agent', description: 'Version of the agent.', example: '6.0.0-rc2', name: 'agent.version', type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['filebeat'], readFromDocValues: false, esTypes: [], + indexes: ['filebeat'], }, { + category: 'base', description: 'Each document has an _id that uniquely identifies it', example: 'Y-6TfmcB0WOhS6qyMv3s', name: '_id', type: 'string', searchable: true, aggregatable: false, - category: 'base', - indexes: ['packetbeat'], readFromDocValues: false, esTypes: [], + indexes: ['packetbeat'], }, { + category: 'base', description: 'An index is like a ‘database’ in a relational database. It has a mapping which defines multiple types. An index is a logical namespace which maps to one or more primary shards and can have zero or more replica shards.', example: 'auditbeat-8.0.0-2019.02.19-000001', @@ -332,12 +379,12 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'base', - indexes: ['packetbeat'], readFromDocValues: false, esTypes: [], + indexes: ['packetbeat'], }, { + category: 'base', description: 'Date/time when the event originated. This is the date/time extracted from the event, typically representing when the event was generated by the source. If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events.', example: '2016-05-23T08:05:34.853Z', @@ -345,12 +392,12 @@ describe('Index Fields', () => { type: 'date', searchable: true, aggregatable: true, - category: 'base', - indexes: ['packetbeat'], readFromDocValues: true, esTypes: [], + indexes: ['packetbeat'], }, { + category: 'agent', description: 'Unique identifier of this agent (if one exists). Example: For Beats this would be beat.id.', example: '8a4f500d', @@ -358,12 +405,12 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['packetbeat'], readFromDocValues: false, esTypes: [], + indexes: ['packetbeat'], }, { + category: 'agent', description: 'Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine.', example: 'filebeat', @@ -371,10 +418,9 @@ describe('Index Fields', () => { type: 'string', searchable: true, aggregatable: true, - category: 'agent', - indexes: ['packetbeat'], readFromDocValues: false, esTypes: [], + indexes: ['packetbeat'], }, ]); }); diff --git a/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.ts b/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.ts index 403a9425b221f..71b641237d6b0 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/index_fields/index.ts @@ -121,8 +121,17 @@ export const createFieldItem = ( indexesAliasIdx: number ): IndexField => { const alias = indexesAlias[indexesAliasIdx]; + const splitIndexName = index.name.split('.'); + const indexName = + splitIndexName[splitIndexName.length - 1] === 'text' + ? splitIndexName.slice(0, splitIndexName.length - 1).join('.') + : index.name; + const beatIndex = fieldsBeat[indexName] ?? {}; + if (isEmpty(beatIndex.category)) { + beatIndex.category = splitIndexName[0]; + } return { - ...(fieldsBeat[index.name] ?? {}), + ...beatIndex, ...index, indexes: [alias], }; diff --git a/x-pack/plugins/security_solution/server/search_strategy/index_fields/mock.ts b/x-pack/plugins/security_solution/server/search_strategy/index_fields/mock.ts index efb992a868f65..e5c502fe26f2c 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/index_fields/mock.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/index_fields/mock.ts @@ -48,6 +48,22 @@ export const mockAuditbeatIndexField: FieldDescriptor[] = [ readFromDocValues: false, esTypes: [], }, + { + name: 'agent.user.name', + searchable: true, + type: 'string', + aggregatable: true, + readFromDocValues: false, + esTypes: [], + }, + { + name: 'client.as.number.text', + searchable: true, + type: 'string', + aggregatable: true, + readFromDocValues: false, + esTypes: [], + }, ]; export const mockFilebeatIndexField: FieldDescriptor[] = [ From 26f2bd204db1e2aebc96b56e698b753bfc20e280 Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Mon, 28 Sep 2020 13:01:27 -0700 Subject: [PATCH 023/119] [Ingest Manager] Surface saved object client 10,000 limitation to bulk actions UI (#78520) * Surface saved object client 10,000 limitation to UI * Update x-pack/plugins/ingest_manager/server/services/saved_object.ts Co-authored-by: John Schulz Co-authored-by: John Schulz Co-authored-by: Elastic Machine --- .../ingest_manager/common/constants/index.ts | 6 +++++ .../ingest_manager/constants/index.ts | 1 + .../components/bulk_actions.tsx | 26 ++++++++++++++----- .../agent_policy_selection.tsx | 3 ++- .../components/agent_policy_section.tsx | 3 ++- .../ingest_manager/server/constants/index.ts | 1 + .../server/services/saved_object.ts | 9 ++----- .../ingest_manager/server/services/setup.ts | 3 ++- 8 files changed, 35 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/ingest_manager/common/constants/index.ts b/x-pack/plugins/ingest_manager/common/constants/index.ts index 519e2861cdc1d..bdc5714f7e2fe 100644 --- a/x-pack/plugins/ingest_manager/common/constants/index.ts +++ b/x-pack/plugins/ingest_manager/common/constants/index.ts @@ -13,3 +13,9 @@ export * from './epm'; export * from './output'; export * from './enrollment_api_key'; export * from './settings'; + +// TODO: This is the default `index.max_result_window` ES setting, which dictates +// the maximum amount of results allowed to be returned from a search. It's possible +// for the actual setting to differ from the default. Can we retrieve the real +// setting in the future? +export const SO_SEARCH_LIMIT = 10000; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/constants/index.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/constants/index.ts index 185e1fa5eb0ce..b97d39bac920b 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/constants/index.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/constants/index.ts @@ -7,6 +7,7 @@ export { PLUGIN_ID, EPM_API_ROUTES, AGENT_API_ROUTES, + SO_SEARCH_LIMIT, AGENT_POLICY_SAVED_OBJECT_TYPE, AGENT_EVENT_SAVED_OBJECT_TYPE, AGENT_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/components/bulk_actions.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/components/bulk_actions.tsx index 25684c9faf594..ee453b9e786f1 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/components/bulk_actions.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/components/bulk_actions.tsx @@ -15,7 +15,8 @@ import { EuiIcon, EuiPortal, } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; +import { FormattedMessage, FormattedNumber } from '@kbn/i18n/react'; +import { SO_SEARCH_LIMIT } from '../../../../constants'; import { Agent } from '../../../../types'; import { AgentReassignAgentPolicyFlyout, AgentUnenrollAgentModal } from '../../components'; @@ -153,11 +154,22 @@ export const AgentBulkActions: React.FunctionComponent<{ - + {totalAgents > SO_SEARCH_LIMIT ? ( + , + total: , + }} + /> + ) : ( + + )} {(selectionMode === 'manual' && selectedAgents.length) || @@ -184,7 +196,7 @@ export const AgentBulkActions: React.FunctionComponent<{ count: selectionMode === 'manual' ? selectedAgents.length - : totalAgents - totalInactiveAgents, + : Math.min(totalAgents - totalInactiveAgents, SO_SEARCH_LIMIT), }} /> diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/agent_policy_selection.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/agent_policy_selection.tsx index 7f23c645f9a2e..874d42a8db095 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/agent_policy_selection.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/agent_policy_selection.tsx @@ -8,6 +8,7 @@ import React, { useState, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiSelect, EuiSpacer, EuiText, EuiButtonEmpty } from '@elastic/eui'; +import { SO_SEARCH_LIMIT } from '../../../../constants'; import { AgentPolicy, GetEnrollmentAPIKeysResponse } from '../../../../types'; import { sendGetEnrollmentAPIKeys, useCore } from '../../../../hooks'; import { AgentPolicyPackageBadges } from '../agent_policy_package_badges'; @@ -98,7 +99,7 @@ export const EnrollmentStepAgentPolicy: React.FC = (props) => { try { const res = await sendGetEnrollmentAPIKeys({ page: 1, - perPage: 10000, + perPage: SO_SEARCH_LIMIT, }); if (res.error) { throw res.error; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_policy_section.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_policy_section.tsx index 617be92b3b1fe..e54eff1cbd4a5 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_policy_section.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_policy_section.tsx @@ -15,6 +15,7 @@ import { } from '@elastic/eui'; import { OverviewPanel } from './overview_panel'; import { OverviewStats } from './overview_stats'; +import { SO_SEARCH_LIMIT } from '../../../constants'; import { useLink, useGetPackagePolicies } from '../../../hooks'; import { AgentPolicy } from '../../../types'; import { Loading } from '../../fleet/components'; @@ -25,7 +26,7 @@ export const OverviewPolicySection: React.FC<{ agentPolicies: AgentPolicy[] }> = const { getHref } = useLink(); const packagePoliciesRequest = useGetPackagePolicies({ page: 1, - perPage: 10000, + perPage: SO_SEARCH_LIMIT, }); return ( diff --git a/x-pack/plugins/ingest_manager/server/constants/index.ts b/x-pack/plugins/ingest_manager/server/constants/index.ts index d677b79bb46f8..3965e27da0542 100644 --- a/x-pack/plugins/ingest_manager/server/constants/index.ts +++ b/x-pack/plugins/ingest_manager/server/constants/index.ts @@ -31,6 +31,7 @@ export { SETTINGS_API_ROUTES, APP_API_ROUTES, // Saved object types + SO_SEARCH_LIMIT, AGENT_SAVED_OBJECT_TYPE, AGENT_EVENT_SAVED_OBJECT_TYPE, AGENT_ACTION_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/ingest_manager/server/services/saved_object.ts b/x-pack/plugins/ingest_manager/server/services/saved_object.ts index 06772206d5198..77c0e446d5c23 100644 --- a/x-pack/plugins/ingest_manager/server/services/saved_object.ts +++ b/x-pack/plugins/ingest_manager/server/services/saved_object.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { SavedObjectsClientContract, SavedObjectsFindResponse } from 'src/core/server'; +import { SO_SEARCH_LIMIT } from '../constants'; import { ListWithKuery } from '../types'; /** @@ -40,19 +41,13 @@ export const findAllSOs = async ( const { type, sortField, sortOrder, kuery } = options; let savedObjectResults: SavedObjectsFindResponse['saved_objects'] = []; - // TODO: This is the default `index.max_result_window` ES setting, which dictates - // the maximum amount of results allowed to be returned from a search. It's possible - // for the actual setting to differ from the default. Can we retrieve the real - // setting in the future? - const searchLimit = 10000; - const query = { type, sortField, sortOrder, filter: kuery, page: 1, - perPage: searchLimit, + perPage: SO_SEARCH_LIMIT, }; const { saved_objects: initialSOs, total } = await soClient.find(query); diff --git a/x-pack/plugins/ingest_manager/server/services/setup.ts b/x-pack/plugins/ingest_manager/server/services/setup.ts index f02057bae1598..c7ecf843d6a51 100644 --- a/x-pack/plugins/ingest_manager/server/services/setup.ts +++ b/x-pack/plugins/ingest_manager/server/services/setup.ts @@ -22,6 +22,7 @@ import { Output, DEFAULT_AGENT_POLICIES_PACKAGES, } from '../../common'; +import { SO_SEARCH_LIMIT } from '../constants'; import { getPackageInfo } from './epm/packages'; import { packagePolicyService } from './package_policy'; import { generateEnrollmentAPIKey } from './api_keys'; @@ -159,7 +160,7 @@ export async function setupFleet( }); const { items: agentPolicies } = await agentPolicyService.list(soClient, { - perPage: 10000, + perPage: SO_SEARCH_LIMIT, }); await Promise.all( From e75b36a68dc68621f3ed487ed64482dd62827805 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Mon, 28 Sep 2020 16:12:34 -0400 Subject: [PATCH 024/119] [Ingest Manager] Ingest setup upgrade (#78081) * Adding bulk upgrade api * Addressing comments * Removing todo * Changing body field * Adding helper for getting the bulk install route * Adding request spec * Pulling in Johns changes * Removing test for same package upgraded multiple times * Adding upgrade to setup route * Adding setup integration test * Clean up error handling * Beginning to add tests * Failing jest mock tests * Break up tests & modules for easier testing. Deal with issue described in https://github.com/facebook/jest/issues/1075#issuecomment-221771095 epm/packages/install has functions a, b, c which are independent but a can also call b and c function a() { b(); c(); } The linked FB issue describes the cause and rationale (Jest works on "module" boundary) but TL;DR: it's easier if you split up your files Some related links I found during this journey * https://medium.com/@qjli/how-to-mock-specific-module-function-in-jest-715e39a391f4 * https://stackoverflow.com/questions/52650367/jestjs-how-to-test-function-being-called-inside-another-function * https://stackoverflow.com/questions/50854440/spying-on-an-imported-function-that-calls-another-function-in-jest/50855968#50855968 * Add test confirming update error result will throw * Keep orig error. Add status code in http handler * Leave error as-is * Removing accidental code changes. File rename. * Missed a function when moving to a new file * Add missing type imports * Lift .map lambda into named outer function * Adding additional test * Fixing type error Co-authored-by: John Schulz Co-authored-by: Elastic Machine --- .../common/types/rest_spec/epm.ts | 4 +- .../server/routes/epm/handlers.ts | 32 +++- .../epm/packages/bulk_install_packages.ts | 61 ++++++++ .../ensure_installed_default_packages.test.ts | 144 ++++++++++++++++++ .../epm/packages/get_install_type.test.ts | 101 ++++++++++++ .../server/services/epm/packages/index.ts | 10 +- .../services/epm/packages/install.test.ts | 103 ------------- .../server/services/epm/packages/install.ts | 109 ++++--------- .../apis/epm/bulk_upgrade.ts | 4 +- .../apis/epm/index.js | 1 + .../apis/epm/setup.ts | 48 ++++++ 11 files changed, 426 insertions(+), 191 deletions(-) create mode 100644 x-pack/plugins/ingest_manager/server/services/epm/packages/bulk_install_packages.ts create mode 100644 x-pack/plugins/ingest_manager/server/services/epm/packages/ensure_installed_default_packages.test.ts create mode 100644 x-pack/plugins/ingest_manager/server/services/epm/packages/get_install_type.test.ts delete mode 100644 x-pack/plugins/ingest_manager/server/services/epm/packages/install.test.ts create mode 100644 x-pack/test/ingest_manager_api_integration/apis/epm/setup.ts diff --git a/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts b/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts index 7ed2fed91aa93..0709eddaa52ec 100644 --- a/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts +++ b/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts @@ -71,7 +71,7 @@ export interface InstallPackageResponse { response: AssetReference[]; } -export interface IBulkInstallPackageError { +export interface IBulkInstallPackageHTTPError { name: string; statusCode: number; error: string | Error; @@ -86,7 +86,7 @@ export interface BulkInstallPackageInfo { } export interface BulkInstallPackagesResponse { - response: Array; + response: Array; } export interface BulkInstallPackagesRequest { diff --git a/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts b/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts index 7ae896c1f30a6..c55979d187f9d 100644 --- a/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts +++ b/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts @@ -13,7 +13,9 @@ import { GetCategoriesResponse, GetPackagesResponse, GetLimitedPackagesResponse, + BulkInstallPackageInfo, BulkInstallPackagesResponse, + IBulkInstallPackageHTTPError, } from '../../../common'; import { GetCategoriesRequestSchema, @@ -26,21 +28,21 @@ import { BulkUpgradePackagesFromRegistryRequestSchema, } from '../../types'; import { + BulkInstallResponse, + bulkInstallPackages, getCategories, getPackages, getFile, getPackageInfo, + handleInstallPackageFailure, installPackage, + isBulkInstallError, removeInstallation, getLimitedPackages, getInstallationObject, } from '../../services/epm/packages'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultIngestErrorHandler, ingestErrorToResponseOptions } from '../../errors'; import { splitPkgKey } from '../../services/epm/registry'; -import { - handleInstallPackageFailure, - bulkInstallPackages, -} from '../../services/epm/packages/install'; export const getCategoriesHandler: RequestHandler< undefined, @@ -171,6 +173,21 @@ export const installPackageFromRegistryHandler: RequestHandler< } }; +const bulkInstallServiceResponseToHttpEntry = ( + result: BulkInstallResponse +): BulkInstallPackageInfo | IBulkInstallPackageHTTPError => { + if (isBulkInstallError(result)) { + const { statusCode, body } = ingestErrorToResponseOptions(result.error); + return { + name: result.name, + statusCode, + error: body.message, + }; + } else { + return result; + } +}; + export const bulkInstallPackagesFromRegistryHandler: RequestHandler< undefined, undefined, @@ -178,13 +195,14 @@ export const bulkInstallPackagesFromRegistryHandler: RequestHandler< > = async (context, request, response) => { const savedObjectsClient = context.core.savedObjects.client; const callCluster = context.core.elasticsearch.legacy.client.callAsCurrentUser; - const res = await bulkInstallPackages({ + const bulkInstalledResponses = await bulkInstallPackages({ savedObjectsClient, callCluster, packagesToUpgrade: request.body.packages, }); + const payload = bulkInstalledResponses.map(bulkInstallServiceResponseToHttpEntry); const body: BulkInstallPackagesResponse = { - response: res, + response: payload, }; return response.ok({ body }); }; diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/bulk_install_packages.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/bulk_install_packages.ts new file mode 100644 index 0000000000000..af937c5593082 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/bulk_install_packages.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsClientContract } from 'src/core/server'; +import { CallESAsCurrentUser } from '../../../types'; +import * as Registry from '../registry'; +import { getInstallationObject } from './index'; +import { BulkInstallResponse, IBulkInstallPackageError, upgradePackage } from './install'; + +interface BulkInstallPackagesParams { + savedObjectsClient: SavedObjectsClientContract; + packagesToUpgrade: string[]; + callCluster: CallESAsCurrentUser; +} + +export async function bulkInstallPackages({ + savedObjectsClient, + packagesToUpgrade, + callCluster, +}: BulkInstallPackagesParams): Promise { + const installedAndLatestPromises = packagesToUpgrade.map((pkgToUpgrade) => + Promise.all([ + getInstallationObject({ savedObjectsClient, pkgName: pkgToUpgrade }), + Registry.fetchFindLatestPackage(pkgToUpgrade), + ]) + ); + const installedAndLatestResults = await Promise.allSettled(installedAndLatestPromises); + const installResponsePromises = installedAndLatestResults.map(async (result, index) => { + const pkgToUpgrade = packagesToUpgrade[index]; + if (result.status === 'fulfilled') { + const [installedPkg, latestPkg] = result.value; + return upgradePackage({ + savedObjectsClient, + callCluster, + installedPkg, + latestPkg, + pkgToUpgrade, + }); + } else { + return { name: pkgToUpgrade, error: result.reason }; + } + }); + const installResults = await Promise.allSettled(installResponsePromises); + const installResponses = installResults.map((result, index) => { + const pkgToUpgrade = packagesToUpgrade[index]; + if (result.status === 'fulfilled') { + return result.value; + } else { + return { name: pkgToUpgrade, error: result.reason }; + } + }); + + return installResponses; +} + +export function isBulkInstallError(test: any): test is IBulkInstallPackageError { + return 'error' in test && test.error instanceof Error; +} diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/ensure_installed_default_packages.test.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/ensure_installed_default_packages.test.ts new file mode 100644 index 0000000000000..f0b487ad59774 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/ensure_installed_default_packages.test.ts @@ -0,0 +1,144 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ElasticsearchAssetType, Installation, KibanaAssetType } from '../../../types'; +import { SavedObject, SavedObjectsClientContract } from 'src/core/server'; + +jest.mock('./install'); +jest.mock('./bulk_install_packages'); +jest.mock('./get'); + +import { bulkInstallPackages, isBulkInstallError } from './bulk_install_packages'; +const { ensureInstalledDefaultPackages } = jest.requireActual('./install'); +const { isBulkInstallError: actualIsBulkInstallError } = jest.requireActual( + './bulk_install_packages' +); +import { getInstallation } from './get'; +import { savedObjectsClientMock } from 'src/core/server/mocks'; +import { appContextService } from '../../app_context'; +import { createAppContextStartContractMock } from '../../../mocks'; + +// if we add this assertion, TS will type check the return value +// and the editor will also know about .mockImplementation, .mock.calls, etc +const mockedBulkInstallPackages = bulkInstallPackages as jest.MockedFunction< + typeof bulkInstallPackages +>; +const mockedIsBulkInstallError = isBulkInstallError as jest.MockedFunction< + typeof isBulkInstallError +>; +const mockedGetInstallation = getInstallation as jest.MockedFunction; + +// I was unable to get the actual implementation set in the `jest.mock()` call at the top to work +// so this will set the `isBulkInstallError` function back to the actual implementation +mockedIsBulkInstallError.mockImplementation(actualIsBulkInstallError); + +const mockInstallation: SavedObject = { + id: 'test-pkg', + references: [], + type: 'epm-packages', + attributes: { + id: 'test-pkg', + installed_kibana: [{ type: KibanaAssetType.dashboard, id: 'dashboard-1' }], + installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + es_index_patterns: { pattern: 'pattern-name' }, + name: 'test package', + version: '1.0.0', + install_status: 'installed', + install_version: '1.0.0', + install_started_at: new Date().toISOString(), + }, +}; + +describe('ensureInstalledDefaultPackages', () => { + let soClient: jest.Mocked; + beforeEach(async () => { + soClient = savedObjectsClientMock.create(); + appContextService.start(createAppContextStartContractMock()); + }); + afterEach(async () => { + appContextService.stop(); + }); + it('should return an array of Installation objects when successful', async () => { + mockedGetInstallation.mockImplementation(async () => { + return mockInstallation.attributes; + }); + mockedBulkInstallPackages.mockImplementationOnce(async function () { + return [ + { + name: mockInstallation.attributes.name, + assets: [], + newVersion: '', + oldVersion: '', + statusCode: 200, + }, + ]; + }); + const resp = await ensureInstalledDefaultPackages(soClient, jest.fn()); + expect(resp).toEqual([mockInstallation.attributes]); + }); + it('should throw the first Error it finds', async () => { + class SomeCustomError extends Error {} + mockedGetInstallation.mockImplementation(async () => { + return mockInstallation.attributes; + }); + mockedBulkInstallPackages.mockImplementationOnce(async function () { + return [ + { + name: 'success one', + assets: [], + newVersion: '', + oldVersion: '', + statusCode: 200, + }, + { + name: 'success two', + assets: [], + newVersion: '', + oldVersion: '', + statusCode: 200, + }, + { + name: 'failure one', + error: new SomeCustomError('abc 123'), + }, + { + name: 'success three', + assets: [], + newVersion: '', + oldVersion: '', + statusCode: 200, + }, + { + name: 'failure two', + error: new Error('zzz'), + }, + ]; + }); + const installPromise = ensureInstalledDefaultPackages(soClient, jest.fn()); + expect.assertions(2); + expect(installPromise).rejects.toThrow(SomeCustomError); + expect(installPromise).rejects.toThrow('abc 123'); + }); + it('should throw an error when get installation returns undefined', async () => { + mockedGetInstallation.mockImplementation(async () => { + return undefined; + }); + mockedBulkInstallPackages.mockImplementationOnce(async function () { + return [ + { + name: 'undefined package', + assets: [], + newVersion: '', + oldVersion: '', + statusCode: 200, + }, + ]; + }); + const installPromise = ensureInstalledDefaultPackages(soClient, jest.fn()); + expect.assertions(1); + expect(installPromise).rejects.toThrow(); + }); +}); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/get_install_type.test.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/get_install_type.test.ts new file mode 100644 index 0000000000000..cce4b7fee8fd7 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/get_install_type.test.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { SavedObject } from 'src/core/server'; +import { ElasticsearchAssetType, Installation, KibanaAssetType } from '../../../types'; +import { getInstallType } from './install'; + +const mockInstallation: SavedObject = { + id: 'test-pkg', + references: [], + type: 'epm-packages', + attributes: { + id: 'test-pkg', + installed_kibana: [{ type: KibanaAssetType.dashboard, id: 'dashboard-1' }], + installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + es_index_patterns: { pattern: 'pattern-name' }, + name: 'test packagek', + version: '1.0.0', + install_status: 'installed', + install_version: '1.0.0', + install_started_at: new Date().toISOString(), + }, +}; +const mockInstallationUpdateFail: SavedObject = { + id: 'test-pkg', + references: [], + type: 'epm-packages', + attributes: { + id: 'test-pkg', + installed_kibana: [{ type: KibanaAssetType.dashboard, id: 'dashboard-1' }], + installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + es_index_patterns: { pattern: 'pattern-name' }, + name: 'test packagek', + version: '1.0.0', + install_status: 'installing', + install_version: '1.0.1', + install_started_at: new Date().toISOString(), + }, +}; + +describe('getInstallType', () => { + it('should return correct type when installing and no other version is currently installed', () => { + const installTypeInstall = getInstallType({ pkgVersion: '1.0.0', installedPkg: undefined }); + expect(installTypeInstall).toBe('install'); + + // @ts-expect-error can only be 'install' if no installedPkg given + expect(installTypeInstall === 'update').toBe(false); + // @ts-expect-error can only be 'install' if no installedPkg given + expect(installTypeInstall === 'reinstall').toBe(false); + // @ts-expect-error can only be 'install' if no installedPkg given + expect(installTypeInstall === 'reupdate').toBe(false); + // @ts-expect-error can only be 'install' if no installedPkg given + expect(installTypeInstall === 'rollback').toBe(false); + }); + + it('should return correct type when installing the same version', () => { + const installTypeReinstall = getInstallType({ + pkgVersion: '1.0.0', + installedPkg: mockInstallation, + }); + expect(installTypeReinstall).toBe('reinstall'); + + // @ts-expect-error cannot be 'install' if given installedPkg + expect(installTypeReinstall === 'install').toBe(false); + }); + + it('should return correct type when moving from one version to another', () => { + const installTypeUpdate = getInstallType({ + pkgVersion: '1.0.1', + installedPkg: mockInstallation, + }); + expect(installTypeUpdate).toBe('update'); + + // @ts-expect-error cannot be 'install' if given installedPkg + expect(installTypeUpdate === 'install').toBe(false); + }); + + it('should return correct type when update fails and trys again', () => { + const installTypeReupdate = getInstallType({ + pkgVersion: '1.0.1', + installedPkg: mockInstallationUpdateFail, + }); + expect(installTypeReupdate).toBe('reupdate'); + + // @ts-expect-error cannot be 'install' if given installedPkg + expect(installTypeReupdate === 'install').toBe(false); + }); + + it('should return correct type when attempting to rollback from a failed update', () => { + const installTypeRollback = getInstallType({ + pkgVersion: '1.0.0', + installedPkg: mockInstallationUpdateFail, + }); + expect(installTypeRollback).toBe('rollback'); + + // @ts-expect-error cannot be 'install' if given installedPkg + expect(installTypeRollback === 'install').toBe(false); + }); +}); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/index.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/index.ts index 57c4f77432455..94aa969c2d2b8 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/index.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/index.ts @@ -12,6 +12,8 @@ import { InstallationStatus, KibanaAssetType, } from '../../../types'; + +export { bulkInstallPackages, isBulkInstallError } from './bulk_install_packages'; export { getCategories, getFile, @@ -23,7 +25,13 @@ export { SearchParams, } from './get'; -export { installPackage, ensureInstalledPackage } from './install'; +export { + BulkInstallResponse, + handleInstallPackageFailure, + installPackage, + IBulkInstallPackageError, + ensureInstalledPackage, +} from './install'; export { removeInstallation } from './remove'; type RequiredPackage = 'system' | 'endpoint'; diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.test.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/install.test.ts deleted file mode 100644 index 2f60c74d3514f..0000000000000 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.test.ts +++ /dev/null @@ -1,103 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { ElasticsearchAssetType, Installation, KibanaAssetType } from '../../../types'; -import { SavedObject } from 'src/core/server'; -import { getInstallType } from './install'; - -const mockInstallation: SavedObject = { - id: 'test-pkg', - references: [], - type: 'epm-packages', - attributes: { - id: 'test-pkg', - installed_kibana: [{ type: KibanaAssetType.dashboard, id: 'dashboard-1' }], - installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], - es_index_patterns: { pattern: 'pattern-name' }, - name: 'test packagek', - version: '1.0.0', - install_status: 'installed', - install_version: '1.0.0', - install_started_at: new Date().toISOString(), - }, -}; -const mockInstallationUpdateFail: SavedObject = { - id: 'test-pkg', - references: [], - type: 'epm-packages', - attributes: { - id: 'test-pkg', - installed_kibana: [{ type: KibanaAssetType.dashboard, id: 'dashboard-1' }], - installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], - es_index_patterns: { pattern: 'pattern-name' }, - name: 'test packagek', - version: '1.0.0', - install_status: 'installing', - install_version: '1.0.1', - install_started_at: new Date().toISOString(), - }, -}; -describe('install', () => { - describe('getInstallType', () => { - it('should return correct type when installing and no other version is currently installed', () => { - const installTypeInstall = getInstallType({ pkgVersion: '1.0.0', installedPkg: undefined }); - expect(installTypeInstall).toBe('install'); - - // @ts-expect-error can only be 'install' if no installedPkg given - expect(installTypeInstall === 'update').toBe(false); - // @ts-expect-error can only be 'install' if no installedPkg given - expect(installTypeInstall === 'reinstall').toBe(false); - // @ts-expect-error can only be 'install' if no installedPkg given - expect(installTypeInstall === 'reupdate').toBe(false); - // @ts-expect-error can only be 'install' if no installedPkg given - expect(installTypeInstall === 'rollback').toBe(false); - }); - - it('should return correct type when installing the same version', () => { - const installTypeReinstall = getInstallType({ - pkgVersion: '1.0.0', - installedPkg: mockInstallation, - }); - expect(installTypeReinstall).toBe('reinstall'); - - // @ts-expect-error cannot be 'install' if given installedPkg - expect(installTypeReinstall === 'install').toBe(false); - }); - - it('should return correct type when moving from one version to another', () => { - const installTypeUpdate = getInstallType({ - pkgVersion: '1.0.1', - installedPkg: mockInstallation, - }); - expect(installTypeUpdate).toBe('update'); - - // @ts-expect-error cannot be 'install' if given installedPkg - expect(installTypeUpdate === 'install').toBe(false); - }); - - it('should return correct type when update fails and trys again', () => { - const installTypeReupdate = getInstallType({ - pkgVersion: '1.0.1', - installedPkg: mockInstallationUpdateFail, - }); - expect(installTypeReupdate).toBe('reupdate'); - - // @ts-expect-error cannot be 'install' if given installedPkg - expect(installTypeReupdate === 'install').toBe(false); - }); - - it('should return correct type when attempting to rollback from a failed update', () => { - const installTypeRollback = getInstallType({ - pkgVersion: '1.0.0', - installedPkg: mockInstallationUpdateFail, - }); - expect(installTypeRollback).toBe('rollback'); - - // @ts-expect-error cannot be 'install' if given installedPkg - expect(installTypeRollback === 'install').toBe(false); - }); - }); -}); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts index 800151a41a429..6187f683a3a80 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts @@ -8,7 +8,7 @@ import { SavedObject, SavedObjectsClientContract } from 'src/core/server'; import semver from 'semver'; import Boom from 'boom'; import { UnwrapPromise } from '@kbn/utility-types'; -import { BulkInstallPackageInfo, IBulkInstallPackageError } from '../../../../common'; +import { BulkInstallPackageInfo } from '../../../../common'; import { PACKAGES_SAVED_OBJECT_TYPE, MAX_TIME_COMPLETE_INSTALL } from '../../../constants'; import { AssetReference, @@ -23,7 +23,13 @@ import { } from '../../../types'; import { installIndexPatterns } from '../kibana/index_pattern/install'; import * as Registry from '../registry'; -import { getInstallation, getInstallationObject, isRequiredPackage } from './index'; +import { + getInstallation, + getInstallationObject, + isRequiredPackage, + bulkInstallPackages, + isBulkInstallError, +} from './index'; import { installTemplates } from '../elasticsearch/template/install'; import { generateESIndexPatterns } from '../elasticsearch/template/template'; import { installPipelines, deletePreviousPipelines } from '../elasticsearch/ingest_pipeline/'; @@ -36,11 +42,7 @@ import { } from '../kibana/assets/install'; import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; import { deleteKibanaSavedObjectsAssets, removeInstallation } from './remove'; -import { - IngestManagerError, - PackageOutdatedError, - ingestErrorToResponseOptions, -} from '../../../errors'; +import { IngestManagerError, PackageOutdatedError } from '../../../errors'; import { getPackageSavedObjects } from './get'; import { installTransformForDataset } from '../elasticsearch/transform/install'; import { appContextService } from '../../app_context'; @@ -68,17 +70,27 @@ export async function ensureInstalledDefaultPackages( callCluster: CallESAsCurrentUser ): Promise { const installations = []; - for (const pkgName in DefaultPackages) { - if (!DefaultPackages.hasOwnProperty(pkgName)) continue; - const installation = ensureInstalledPackage({ - savedObjectsClient, - pkgName, - callCluster, - }); - installations.push(installation); + const bulkResponse = await bulkInstallPackages({ + savedObjectsClient, + packagesToUpgrade: Object.values(DefaultPackages), + callCluster, + }); + + for (const resp of bulkResponse) { + if (isBulkInstallError(resp)) { + throw resp.error; + } else { + installations.push(getInstallation({ savedObjectsClient, pkgName: resp.name })); + } } - return Promise.all(installations); + const retrievedInstallations = await Promise.all(installations); + return retrievedInstallations.map((installation, index) => { + if (!installation) { + throw new Error(`could not get installation ${bulkResponse[index].name}`); + } + return installation; + }); } export async function ensureInstalledPackage(options: { @@ -154,21 +166,11 @@ export async function handleInstallPackageFailure({ } } -type BulkInstallResponse = BulkInstallPackageInfo | IBulkInstallPackageError; -function bulkInstallErrorToOptions({ - pkgToUpgrade, - error, -}: { - pkgToUpgrade: string; +export interface IBulkInstallPackageError { + name: string; error: Error; -}): IBulkInstallPackageError { - const { statusCode, body } = ingestErrorToResponseOptions(error); - return { - name: pkgToUpgrade, - statusCode, - error: body.message, - }; } +export type BulkInstallResponse = BulkInstallPackageInfo | IBulkInstallPackageError; interface UpgradePackageParams { savedObjectsClient: SavedObjectsClientContract; @@ -177,7 +179,7 @@ interface UpgradePackageParams { latestPkg: UnwrapPromise>; pkgToUpgrade: string; } -async function upgradePackage({ +export async function upgradePackage({ savedObjectsClient, callCluster, installedPkg, @@ -207,7 +209,7 @@ async function upgradePackage({ installedPkg, callCluster, }); - return bulkInstallErrorToOptions({ pkgToUpgrade, error: installFailed }); + return { name: pkgToUpgrade, error: installFailed }; } } else { // package was already at the latest version @@ -223,51 +225,6 @@ async function upgradePackage({ } } -interface BulkInstallPackagesParams { - savedObjectsClient: SavedObjectsClientContract; - packagesToUpgrade: string[]; - callCluster: CallESAsCurrentUser; -} -export async function bulkInstallPackages({ - savedObjectsClient, - packagesToUpgrade, - callCluster, -}: BulkInstallPackagesParams): Promise { - const installedAndLatestPromises = packagesToUpgrade.map((pkgToUpgrade) => - Promise.all([ - getInstallationObject({ savedObjectsClient, pkgName: pkgToUpgrade }), - Registry.fetchFindLatestPackage(pkgToUpgrade), - ]) - ); - const installedAndLatestResults = await Promise.allSettled(installedAndLatestPromises); - const installResponsePromises = installedAndLatestResults.map(async (result, index) => { - const pkgToUpgrade = packagesToUpgrade[index]; - if (result.status === 'fulfilled') { - const [installedPkg, latestPkg] = result.value; - return upgradePackage({ - savedObjectsClient, - callCluster, - installedPkg, - latestPkg, - pkgToUpgrade, - }); - } else { - return bulkInstallErrorToOptions({ pkgToUpgrade, error: result.reason }); - } - }); - const installResults = await Promise.allSettled(installResponsePromises); - const installResponses = installResults.map((result, index) => { - const pkgToUpgrade = packagesToUpgrade[index]; - if (result.status === 'fulfilled') { - return result.value; - } else { - return bulkInstallErrorToOptions({ pkgToUpgrade, error: result.reason }); - } - }); - - return installResponses; -} - interface InstallPackageParams { savedObjectsClient: SavedObjectsClientContract; pkgkey: string; diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/bulk_upgrade.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/bulk_upgrade.ts index e377ea5a762f9..bafcb79a419c2 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/epm/bulk_upgrade.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/bulk_upgrade.ts @@ -10,7 +10,7 @@ import { skipIfNoDockerRegistry } from '../../helpers'; import { BulkInstallPackageInfo, BulkInstallPackagesResponse, - IBulkInstallPackageError, + IBulkInstallPackageHTTPError, } from '../../../../plugins/ingest_manager/common'; export default function (providerContext: FtrProviderContext) { @@ -68,7 +68,7 @@ export default function (providerContext: FtrProviderContext) { expect(entry.oldVersion).equal('0.1.0'); expect(entry.newVersion).equal('0.3.0'); - const err = body.response[1] as IBulkInstallPackageError; + const err = body.response[1] as IBulkInstallPackageHTTPError; expect(err.statusCode).equal(404); expect(body.response[1].name).equal('blahblah'); }); diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/index.js b/x-pack/test/ingest_manager_api_integration/apis/epm/index.js index e509babc9828b..0cb998b9b7c35 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/epm/index.js +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/index.js @@ -7,6 +7,7 @@ export default function loadTests({ loadTestFile }) { describe('EPM Endpoints', () => { loadTestFile(require.resolve('./list')); + loadTestFile(require.resolve('./setup')); loadTestFile(require.resolve('./get')); loadTestFile(require.resolve('./file')); //loadTestFile(require.resolve('./template')); diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/setup.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/setup.ts new file mode 100644 index 0000000000000..da06f49dd6139 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/setup.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { skipIfNoDockerRegistry } from '../../helpers'; +import { GetInfoResponse, Installed } from '../../../../plugins/ingest_manager/common'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + const log = getService('log'); + + describe('setup api', async () => { + skipIfNoDockerRegistry(providerContext); + describe('setup performs upgrades', async () => { + const oldEndpointVersion = '0.13.0'; + beforeEach(async () => { + await supertest + .post(`/api/ingest_manager/epm/packages/endpoint-${oldEndpointVersion}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) + .expect(200); + }); + it('upgrades the endpoint package from 0.13.0 to the latest version available', async function () { + let { body }: { body: GetInfoResponse } = await supertest + .get(`/api/ingest_manager/epm/packages/endpoint-${oldEndpointVersion}`) + .expect(200); + const latestEndpointVersion = body.response.latestVersion; + log.info(`Endpoint package latest version: ${latestEndpointVersion}`); + // make sure we're actually doing an upgrade + expect(latestEndpointVersion).not.eql(oldEndpointVersion); + await supertest.post(`/api/ingest_manager/setup`).set('kbn-xsrf', 'xxxx').expect(200); + + ({ body } = await supertest + .get(`/api/ingest_manager/epm/packages/endpoint-${latestEndpointVersion}`) + .expect(200)); + expect(body.response).to.have.property('savedObject'); + expect((body.response as Installed).savedObject.attributes.install_version).to.eql( + latestEndpointVersion + ); + }); + }); + }); +} From f5ca7d82d5486155f998be685687cfff4221532c Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 28 Sep 2020 13:25:15 -0700 Subject: [PATCH 025/119] [kbn/optimizer] only build xpack examples when building xpack plugins (#78656) Co-authored-by: spalger --- examples/alerting_example/common/constants.ts | 34 -------------- .../public/alert_types/index.ts | 33 ------------- examples/alerting_example/public/index.ts | 22 --------- .../server/alert_types/always_firing.ts | 47 ------------------- examples/alerting_example/server/index.ts | 23 --------- .../src/optimizer/optimizer_config.ts | 3 +- test/scripts/jenkins_build_plugins.sh | 1 - x-pack/.i18nrc.json | 8 ++-- .../examples}/alerting_example/README.md | 0 .../alerting_example/common/constants.ts | 21 +++++++++ .../examples}/alerting_example/kibana.json | 0 .../public/alert_types/always_firing.tsx | 21 ++------- .../public/alert_types/astros.tsx | 25 +++------- .../public/alert_types/index.ts | 20 ++++++++ .../alerting_example/public/application.tsx | 27 +++-------- .../public/components/create_alert.tsx | 24 ++-------- .../public/components/documentation.tsx | 20 ++------ .../public/components/page.tsx | 19 ++------ .../public/components/view_alert.tsx | 26 ++-------- .../public/components/view_astros_alert.tsx | 26 ++-------- .../examples/alerting_example/public/index.ts | 9 ++++ .../alerting_example/public/plugin.tsx | 36 ++++++-------- .../server/alert_types/always_firing.ts | 34 ++++++++++++++ .../server/alert_types/astros.ts | 21 ++------- .../examples/alerting_example/server/index.ts | 10 ++++ .../alerting_example/server/plugin.ts | 27 +++-------- .../examples}/alerting_example/tsconfig.json | 6 +-- .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - 29 files changed, 166 insertions(+), 381 deletions(-) delete mode 100644 examples/alerting_example/common/constants.ts delete mode 100644 examples/alerting_example/public/alert_types/index.ts delete mode 100644 examples/alerting_example/public/index.ts delete mode 100644 examples/alerting_example/server/alert_types/always_firing.ts delete mode 100644 examples/alerting_example/server/index.ts rename {examples => x-pack/examples}/alerting_example/README.md (100%) create mode 100644 x-pack/examples/alerting_example/common/constants.ts rename {examples => x-pack/examples}/alerting_example/kibana.json (100%) rename {examples => x-pack/examples}/alerting_example/public/alert_types/always_firing.tsx (69%) rename {examples => x-pack/examples}/alerting_example/public/alert_types/astros.tsx (89%) create mode 100644 x-pack/examples/alerting_example/public/alert_types/index.ts rename {examples => x-pack/examples}/alerting_example/public/application.tsx (73%) rename {examples => x-pack/examples}/alerting_example/public/components/create_alert.tsx (64%) rename {examples => x-pack/examples}/alerting_example/public/components/documentation.tsx (63%) rename {examples => x-pack/examples}/alerting_example/public/components/page.tsx (61%) rename {examples => x-pack/examples}/alerting_example/public/components/view_alert.tsx (79%) rename {examples => x-pack/examples}/alerting_example/public/components/view_astros_alert.tsx (79%) create mode 100644 x-pack/examples/alerting_example/public/index.ts rename {examples => x-pack/examples}/alerting_example/public/plugin.tsx (63%) create mode 100644 x-pack/examples/alerting_example/server/alert_types/always_firing.ts rename {examples => x-pack/examples}/alerting_example/server/alert_types/astros.ts (67%) create mode 100644 x-pack/examples/alerting_example/server/index.ts rename {examples => x-pack/examples}/alerting_example/server/plugin.ts (64%) rename {examples => x-pack/examples}/alerting_example/tsconfig.json (64%) diff --git a/examples/alerting_example/common/constants.ts b/examples/alerting_example/common/constants.ts deleted file mode 100644 index 5884eb3220519..0000000000000 --- a/examples/alerting_example/common/constants.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export const ALERTING_EXAMPLE_APP_ID = 'AlertingExample'; - -// always firing -export const DEFAULT_INSTANCES_TO_GENERATE = 5; - -// Astros -export enum Craft { - OuterSpace = 'Outer Space', - ISS = 'ISS', -} -export enum Operator { - AreAbove = 'Are above', - AreBelow = 'Are below', - AreExactly = 'Are exactly', -} diff --git a/examples/alerting_example/public/alert_types/index.ts b/examples/alerting_example/public/alert_types/index.ts deleted file mode 100644 index db9f855b573e8..0000000000000 --- a/examples/alerting_example/public/alert_types/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { registerNavigation as registerPeopleInSpaceNavigation } from './astros'; -import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; -import { SanitizedAlert } from '../../../../x-pack/plugins/alerts/common'; -import { PluginSetupContract as AlertingSetup } from '../../../../x-pack/plugins/alerts/public'; - -export function registerNavigation(alerts: AlertingSetup) { - // register default navigation - alerts.registerDefaultNavigation( - ALERTING_EXAMPLE_APP_ID, - (alert: SanitizedAlert) => `/alert/${alert.id}` - ); - - registerPeopleInSpaceNavigation(alerts); -} diff --git a/examples/alerting_example/public/index.ts b/examples/alerting_example/public/index.ts deleted file mode 100644 index 4a2bfc79903c3..0000000000000 --- a/examples/alerting_example/public/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { AlertingExamplePlugin } from './plugin'; - -export const plugin = () => new AlertingExamplePlugin(); diff --git a/examples/alerting_example/server/alert_types/always_firing.ts b/examples/alerting_example/server/alert_types/always_firing.ts deleted file mode 100644 index b89e5da089336..0000000000000 --- a/examples/alerting_example/server/alert_types/always_firing.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import uuid from 'uuid'; -import { range } from 'lodash'; -import { AlertType } from '../../../../x-pack/plugins/alerts/server'; -import { DEFAULT_INSTANCES_TO_GENERATE, ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; - -export const alertType: AlertType = { - id: 'example.always-firing', - name: 'Always firing', - actionGroups: [{ id: 'default', name: 'default' }], - defaultActionGroupId: 'default', - async executor({ services, params: { instances = DEFAULT_INSTANCES_TO_GENERATE }, state }) { - const count = (state.count ?? 0) + 1; - - range(instances) - .map(() => ({ id: uuid.v4() })) - .forEach((instance: { id: string }) => { - services - .alertInstanceFactory(instance.id) - .replaceState({ triggerdOnCycle: count }) - .scheduleActions('default'); - }); - - return { - count, - }; - }, - producer: ALERTING_EXAMPLE_APP_ID, -}; diff --git a/examples/alerting_example/server/index.ts b/examples/alerting_example/server/index.ts deleted file mode 100644 index 32e9b181ebb54..0000000000000 --- a/examples/alerting_example/server/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { PluginInitializer } from 'kibana/server'; -import { AlertingExamplePlugin } from './plugin'; - -export const plugin: PluginInitializer = () => new AlertingExamplePlugin(); diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_config.ts b/packages/kbn-optimizer/src/optimizer/optimizer_config.ts index 45598ff8831b0..b1ab1ebfe49f2 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_config.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_config.ts @@ -161,7 +161,8 @@ export class OptimizerConfig { Path.resolve(repoRoot, 'src/plugins'), ...(oss ? [] : [Path.resolve(repoRoot, 'x-pack/plugins')]), Path.resolve(repoRoot, 'plugins'), - ...(examples ? [Path.resolve('examples'), Path.resolve('x-pack/examples')] : []), + ...(examples ? [Path.resolve('examples')] : []), + ...(examples && !oss ? [Path.resolve('x-pack/examples')] : []), Path.resolve(repoRoot, '../kibana-extra'), ]; if (!pluginScanDirs.every((p) => Path.isAbsolute(p))) { diff --git a/test/scripts/jenkins_build_plugins.sh b/test/scripts/jenkins_build_plugins.sh index 0c3ee4e3f261f..59df02d401167 100755 --- a/test/scripts/jenkins_build_plugins.sh +++ b/test/scripts/jenkins_build_plugins.sh @@ -5,7 +5,6 @@ source src/dev/ci_setup/setup_env.sh echo " -> building kibana platform plugins" node scripts/build_kibana_platform_plugins \ --oss \ - --filter '!alertingExample' \ --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ --scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \ --workers 6 \ diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 66ae478b86828..c37a3231b2705 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -2,10 +2,7 @@ "prefix": "xpack", "paths": { "xpack.actions": "plugins/actions", - "xpack.uiActionsEnhanced": [ - "plugins/ui_actions_enhanced", - "examples/ui_actions_enhanced_examples" - ], + "xpack.uiActionsEnhanced": "plugins/ui_actions_enhanced", "xpack.alerts": "plugins/alerts", "xpack.eventLog": "plugins/event_log", "xpack.alertingBuiltins": "plugins/alerting_builtins", @@ -59,6 +56,9 @@ "xpack.watcher": "plugins/watcher", "xpack.observability": "plugins/observability" }, + "exclude": [ + "examples" + ], "translations": [ "plugins/translations/translations/zh-CN.json", "plugins/translations/translations/ja-JP.json" diff --git a/examples/alerting_example/README.md b/x-pack/examples/alerting_example/README.md similarity index 100% rename from examples/alerting_example/README.md rename to x-pack/examples/alerting_example/README.md diff --git a/x-pack/examples/alerting_example/common/constants.ts b/x-pack/examples/alerting_example/common/constants.ts new file mode 100644 index 0000000000000..dd9cc21954e61 --- /dev/null +++ b/x-pack/examples/alerting_example/common/constants.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const ALERTING_EXAMPLE_APP_ID = 'AlertingExample'; + +// always firing +export const DEFAULT_INSTANCES_TO_GENERATE = 5; + +// Astros +export enum Craft { + OuterSpace = 'Outer Space', + ISS = 'ISS', +} +export enum Operator { + AreAbove = 'Are above', + AreBelow = 'Are below', + AreExactly = 'Are exactly', +} diff --git a/examples/alerting_example/kibana.json b/x-pack/examples/alerting_example/kibana.json similarity index 100% rename from examples/alerting_example/kibana.json rename to x-pack/examples/alerting_example/kibana.json diff --git a/examples/alerting_example/public/alert_types/always_firing.tsx b/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx similarity index 69% rename from examples/alerting_example/public/alert_types/always_firing.tsx rename to x-pack/examples/alerting_example/public/alert_types/always_firing.tsx index 130519308d3c3..839669bda1098 100644 --- a/examples/alerting_example/public/alert_types/always_firing.tsx +++ b/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx @@ -1,26 +1,13 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import React, { Fragment } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFieldNumber, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { AlertTypeModel } from '../../../../x-pack/plugins/triggers_actions_ui/public'; +import { AlertTypeModel } from '../../../../plugins/triggers_actions_ui/public'; import { DEFAULT_INSTANCES_TO_GENERATE } from '../../common/constants'; interface AlwaysFiringParamsProps { diff --git a/examples/alerting_example/public/alert_types/astros.tsx b/x-pack/examples/alerting_example/public/alert_types/astros.tsx similarity index 89% rename from examples/alerting_example/public/alert_types/astros.tsx rename to x-pack/examples/alerting_example/public/alert_types/astros.tsx index d52223cb6b988..4f894cfe231c9 100644 --- a/examples/alerting_example/public/alert_types/astros.tsx +++ b/x-pack/examples/alerting_example/public/alert_types/astros.tsx @@ -1,20 +1,7 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import React, { useState, useEffect, Fragment } from 'react'; @@ -32,9 +19,9 @@ import { import { i18n } from '@kbn/i18n'; import { flatten } from 'lodash'; import { ALERTING_EXAMPLE_APP_ID, Craft, Operator } from '../../common/constants'; -import { SanitizedAlert } from '../../../../x-pack/plugins/alerts/common'; -import { PluginSetupContract as AlertingSetup } from '../../../../x-pack/plugins/alerts/public'; -import { AlertTypeModel } from '../../../../x-pack/plugins/triggers_actions_ui/public'; +import { SanitizedAlert } from '../../../../plugins/alerts/common'; +import { PluginSetupContract as AlertingSetup } from '../../../../plugins/alerts/public'; +import { AlertTypeModel } from '../../../../plugins/triggers_actions_ui/public'; export function registerNavigation(alerts: AlertingSetup) { alerts.registerNavigation( diff --git a/x-pack/examples/alerting_example/public/alert_types/index.ts b/x-pack/examples/alerting_example/public/alert_types/index.ts new file mode 100644 index 0000000000000..f9a97f43e116a --- /dev/null +++ b/x-pack/examples/alerting_example/public/alert_types/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { registerNavigation as registerPeopleInSpaceNavigation } from './astros'; +import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; +import { SanitizedAlert } from '../../../../plugins/alerts/common'; +import { PluginSetupContract as AlertingSetup } from '../../../../plugins/alerts/public'; + +export function registerNavigation(alerts: AlertingSetup) { + // register default navigation + alerts.registerDefaultNavigation( + ALERTING_EXAMPLE_APP_ID, + (alert: SanitizedAlert) => `/alert/${alert.id}` + ); + + registerPeopleInSpaceNavigation(alerts); +} diff --git a/examples/alerting_example/public/application.tsx b/x-pack/examples/alerting_example/public/application.tsx similarity index 73% rename from examples/alerting_example/public/application.tsx rename to x-pack/examples/alerting_example/public/application.tsx index 23e9d19441002..ebffc7d038aef 100644 --- a/examples/alerting_example/public/application.tsx +++ b/x-pack/examples/alerting_example/public/application.tsx @@ -1,20 +1,7 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import React from 'react'; @@ -28,14 +15,14 @@ import { DocLinksStart, ToastsSetup, ApplicationStart, -} from '../../../src/core/public'; -import { DataPublicPluginStart } from '../../../src/plugins/data/public'; -import { ChartsPluginStart } from '../../../src/plugins/charts/public'; +} from '../../../../src/core/public'; +import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; +import { ChartsPluginStart } from '../../../../src/plugins/charts/public'; import { Page } from './components/page'; import { DocumentationPage } from './components/documentation'; import { ViewAlertPage } from './components/view_alert'; -import { TriggersAndActionsUIPublicPluginStart } from '../../../x-pack/plugins/triggers_actions_ui/public'; +import { TriggersAndActionsUIPublicPluginStart } from '../../../plugins/triggers_actions_ui/public'; import { AlertingExamplePublicStartDeps } from './plugin'; import { ViewPeopleInSpaceAlertPage } from './components/view_astros_alert'; diff --git a/examples/alerting_example/public/components/create_alert.tsx b/x-pack/examples/alerting_example/public/components/create_alert.tsx similarity index 64% rename from examples/alerting_example/public/components/create_alert.tsx rename to x-pack/examples/alerting_example/public/components/create_alert.tsx index 72e3835b100fe..c75c230e4f04e 100644 --- a/examples/alerting_example/public/components/create_alert.tsx +++ b/x-pack/examples/alerting_example/public/components/create_alert.tsx @@ -1,30 +1,14 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import React, { useState } from 'react'; import { EuiIcon, EuiFlexItem, EuiCard, EuiFlexGroup } from '@elastic/eui'; -import { - AlertsContextProvider, - AlertAdd, -} from '../../../../x-pack/plugins/triggers_actions_ui/public'; +import { AlertsContextProvider, AlertAdd } from '../../../../plugins/triggers_actions_ui/public'; import { AlertingExampleComponentParams } from '../application'; import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; diff --git a/examples/alerting_example/public/components/documentation.tsx b/x-pack/examples/alerting_example/public/components/documentation.tsx similarity index 63% rename from examples/alerting_example/public/components/documentation.tsx rename to x-pack/examples/alerting_example/public/components/documentation.tsx index 17cc34959b010..73896fdb8fc92 100644 --- a/examples/alerting_example/public/components/documentation.tsx +++ b/x-pack/examples/alerting_example/public/components/documentation.tsx @@ -1,21 +1,9 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ + import React from 'react'; import { diff --git a/examples/alerting_example/public/components/page.tsx b/x-pack/examples/alerting_example/public/components/page.tsx similarity index 61% rename from examples/alerting_example/public/components/page.tsx rename to x-pack/examples/alerting_example/public/components/page.tsx index 99076c7ddcedf..e7fba53d7a333 100644 --- a/examples/alerting_example/public/components/page.tsx +++ b/x-pack/examples/alerting_example/public/components/page.tsx @@ -1,20 +1,7 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import React from 'react'; diff --git a/examples/alerting_example/public/components/view_alert.tsx b/x-pack/examples/alerting_example/public/components/view_alert.tsx similarity index 79% rename from examples/alerting_example/public/components/view_alert.tsx rename to x-pack/examples/alerting_example/public/components/view_alert.tsx index 0f7fc70648a9e..6d71872d5d3f2 100644 --- a/examples/alerting_example/public/components/view_alert.tsx +++ b/x-pack/examples/alerting_example/public/components/view_alert.tsx @@ -1,21 +1,9 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ + import React, { useState, useEffect, Fragment } from 'react'; import { @@ -32,11 +20,7 @@ import { import { withRouter, RouteComponentProps } from 'react-router-dom'; import { CoreStart } from 'kibana/public'; import { isEmpty } from 'lodash'; -import { - Alert, - AlertTaskState, - BASE_ALERT_API_PATH, -} from '../../../../x-pack/plugins/alerts/common'; +import { Alert, AlertTaskState, BASE_ALERT_API_PATH } from '../../../../plugins/alerts/common'; import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; type Props = RouteComponentProps & { diff --git a/examples/alerting_example/public/components/view_astros_alert.tsx b/x-pack/examples/alerting_example/public/components/view_astros_alert.tsx similarity index 79% rename from examples/alerting_example/public/components/view_astros_alert.tsx rename to x-pack/examples/alerting_example/public/components/view_astros_alert.tsx index b2d3cec269b72..e4687c75fa0b7 100644 --- a/examples/alerting_example/public/components/view_astros_alert.tsx +++ b/x-pack/examples/alerting_example/public/components/view_astros_alert.tsx @@ -1,21 +1,9 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ + import React, { useState, useEffect, Fragment } from 'react'; import { @@ -34,11 +22,7 @@ import { import { withRouter, RouteComponentProps } from 'react-router-dom'; import { CoreStart } from 'kibana/public'; import { isEmpty } from 'lodash'; -import { - Alert, - AlertTaskState, - BASE_ALERT_API_PATH, -} from '../../../../x-pack/plugins/alerts/common'; +import { Alert, AlertTaskState, BASE_ALERT_API_PATH } from '../../../../plugins/alerts/common'; import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; type Props = RouteComponentProps & { diff --git a/x-pack/examples/alerting_example/public/index.ts b/x-pack/examples/alerting_example/public/index.ts new file mode 100644 index 0000000000000..9e44d167184a9 --- /dev/null +++ b/x-pack/examples/alerting_example/public/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AlertingExamplePlugin } from './plugin'; + +export const plugin = () => new AlertingExamplePlugin(); diff --git a/examples/alerting_example/public/plugin.tsx b/x-pack/examples/alerting_example/public/plugin.tsx similarity index 63% rename from examples/alerting_example/public/plugin.tsx rename to x-pack/examples/alerting_example/public/plugin.tsx index 3f972fa9fe2ee..b1f8b6b99ece1 100644 --- a/examples/alerting_example/public/plugin.tsx +++ b/x-pack/examples/alerting_example/public/plugin.tsx @@ -1,31 +1,23 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ -import { Plugin, CoreSetup, AppMountParameters, AppNavLinkStatus } from '../../../src/core/public'; -import { PluginSetupContract as AlertingSetup } from '../../../x-pack/plugins/alerts/public'; -import { ChartsPluginStart } from '../../../src/plugins/charts/public'; -import { TriggersAndActionsUIPublicPluginSetup } from '../../../x-pack/plugins/triggers_actions_ui/public'; -import { DataPublicPluginStart } from '../../../src/plugins/data/public'; +import { + Plugin, + CoreSetup, + AppMountParameters, + AppNavLinkStatus, +} from '../../../../src/core/public'; +import { PluginSetupContract as AlertingSetup } from '../../../plugins/alerts/public'; +import { ChartsPluginStart } from '../../../../src/plugins/charts/public'; +import { TriggersAndActionsUIPublicPluginSetup } from '../../../plugins/triggers_actions_ui/public'; +import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; import { getAlertType as getAlwaysFiringAlertType } from './alert_types/always_firing'; import { getAlertType as getPeopleInSpaceAlertType } from './alert_types/astros'; import { registerNavigation } from './alert_types'; -import { DeveloperExamplesSetup } from '../../developer_examples/public'; +import { DeveloperExamplesSetup } from '../../../../examples/developer_examples/public'; export type Setup = void; export type Start = void; diff --git a/x-pack/examples/alerting_example/server/alert_types/always_firing.ts b/x-pack/examples/alerting_example/server/alert_types/always_firing.ts new file mode 100644 index 0000000000000..bb1cb0d97689b --- /dev/null +++ b/x-pack/examples/alerting_example/server/alert_types/always_firing.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import uuid from 'uuid'; +import { range } from 'lodash'; +import { AlertType } from '../../../../plugins/alerts/server'; +import { DEFAULT_INSTANCES_TO_GENERATE, ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; + +export const alertType: AlertType = { + id: 'example.always-firing', + name: 'Always firing', + actionGroups: [{ id: 'default', name: 'default' }], + defaultActionGroupId: 'default', + async executor({ services, params: { instances = DEFAULT_INSTANCES_TO_GENERATE }, state }) { + const count = (state.count ?? 0) + 1; + + range(instances) + .map(() => ({ id: uuid.v4() })) + .forEach((instance: { id: string }) => { + services + .alertInstanceFactory(instance.id) + .replaceState({ triggerdOnCycle: count }) + .scheduleActions('default'); + }); + + return { + count, + }; + }, + producer: ALERTING_EXAMPLE_APP_ID, +}; diff --git a/examples/alerting_example/server/alert_types/astros.ts b/x-pack/examples/alerting_example/server/alert_types/astros.ts similarity index 67% rename from examples/alerting_example/server/alert_types/astros.ts rename to x-pack/examples/alerting_example/server/alert_types/astros.ts index 1ccf8af4ce623..852e6f57d1106 100644 --- a/examples/alerting_example/server/alert_types/astros.ts +++ b/x-pack/examples/alerting_example/server/alert_types/astros.ts @@ -1,24 +1,11 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import axios from 'axios'; -import { AlertType } from '../../../../x-pack/plugins/alerts/server'; +import { AlertType } from '../../../../plugins/alerts/server'; import { Operator, Craft, ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; interface PeopleInSpace { diff --git a/x-pack/examples/alerting_example/server/index.ts b/x-pack/examples/alerting_example/server/index.ts new file mode 100644 index 0000000000000..95676bec73555 --- /dev/null +++ b/x-pack/examples/alerting_example/server/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { PluginInitializer } from 'kibana/server'; +import { AlertingExamplePlugin } from './plugin'; + +export const plugin: PluginInitializer = () => new AlertingExamplePlugin(); diff --git a/examples/alerting_example/server/plugin.ts b/x-pack/examples/alerting_example/server/plugin.ts similarity index 64% rename from examples/alerting_example/server/plugin.ts rename to x-pack/examples/alerting_example/server/plugin.ts index 4141b48ffeeaf..69971846e32b0 100644 --- a/examples/alerting_example/server/plugin.ts +++ b/x-pack/examples/alerting_example/server/plugin.ts @@ -1,31 +1,18 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import { Plugin, CoreSetup } from 'kibana/server'; import { i18n } from '@kbn/i18n'; -import { DEFAULT_APP_CATEGORIES } from '../../../src/core/server'; -import { PluginSetupContract as AlertingSetup } from '../../../x-pack/plugins/alerts/server'; -import { PluginSetupContract as FeaturesPluginSetup } from '../../../x-pack/plugins/features/server'; +import { DEFAULT_APP_CATEGORIES } from '../../../../src/core/server'; +import { PluginSetupContract as AlertingSetup } from '../../../plugins/alerts/server'; +import { PluginSetupContract as FeaturesPluginSetup } from '../../../plugins/features/server'; import { alertType as alwaysFiringAlert } from './alert_types/always_firing'; import { alertType as peopleInSpaceAlert } from './alert_types/astros'; -import { INDEX_THRESHOLD_ID } from '../../../x-pack/plugins/alerting_builtins/server'; +import { INDEX_THRESHOLD_ID } from '../../../plugins/alerting_builtins/server'; import { ALERTING_EXAMPLE_APP_ID } from '../common/constants'; // this plugin's dependendencies diff --git a/examples/alerting_example/tsconfig.json b/x-pack/examples/alerting_example/tsconfig.json similarity index 64% rename from examples/alerting_example/tsconfig.json rename to x-pack/examples/alerting_example/tsconfig.json index 214e4b78a9a70..95d42d40aceb3 100644 --- a/examples/alerting_example/tsconfig.json +++ b/x-pack/examples/alerting_example/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./target" }, @@ -9,10 +9,10 @@ "public/**/*.tsx", "server/**/*.ts", "common/**/*.ts", - "../../typings/**/*", + "../../../typings/**/*", ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../../src/core/tsconfig.json" } ] } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 1c2c4c78504f0..7dd6d478f82b0 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18198,7 +18198,6 @@ "xpack.triggersActionsUI.typeRegistry.register.duplicateObjectTypeErrorMessage": "オブジェクトタイプ「{id}」は既に登録されています。", "xpack.uiActionsEnhanced.components.actionWizard.changeButton": "変更", "xpack.uiActionsEnhanced.components.actionWizard.insufficientLicenseLevelTooltip": "不十分なライセンスレベル", - "xpack.uiActionsEnhanced.components.DiscoverDrilldownConfig.chooseIndexPattern": "対象インデックスパターンを選択", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.addToPanelButtonTitle": "パネルに追加", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.cancelButtonTitle": "キャンセル", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.optionsMenuForm.panelTitleFormRowLabel": "時間範囲", @@ -18206,7 +18205,6 @@ "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.updatePanelTimeRangeButtonTitle": "更新", "xpack.uiActionsEnhanced.customizeTimeRange.modal.headerTitle": "パネルの時間範囲のカスタマイズ", "xpack.uiActionsEnhanced.customizeTimeRangeMenuItem.displayName": "時間範囲のカスタマイズ", - "xpack.uiActionsEnhanced.drilldown.goToDiscover": "Discoverに移動(例)", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "ドリルダウンにより、パネルと連携する新しい動作を定義できます。複数のアクションを追加し、デフォルトフィルターを無効化できます。", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "非表示", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "ドキュメントを表示", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 5738b440a9e92..9ba587e718a08 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18209,7 +18209,6 @@ "xpack.triggersActionsUI.typeRegistry.register.duplicateObjectTypeErrorMessage": "已注册对象类型“{id}”。", "xpack.uiActionsEnhanced.components.actionWizard.changeButton": "更改", "xpack.uiActionsEnhanced.components.actionWizard.insufficientLicenseLevelTooltip": "许可证级别不够", - "xpack.uiActionsEnhanced.components.DiscoverDrilldownConfig.chooseIndexPattern": "选择目标索引模式", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.addToPanelButtonTitle": "添加到面板", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.cancelButtonTitle": "取消", "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.optionsMenuForm.panelTitleFormRowLabel": "时间范围", @@ -18217,7 +18216,6 @@ "xpack.uiActionsEnhanced.customizePanelTimeRange.modal.updatePanelTimeRangeButtonTitle": "更新", "xpack.uiActionsEnhanced.customizeTimeRange.modal.headerTitle": "定制面板时间范围", "xpack.uiActionsEnhanced.customizeTimeRangeMenuItem.displayName": "定制时间范围", - "xpack.uiActionsEnhanced.drilldown.goToDiscover": "前往 Discover(示例)", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "向下钻取允许您定义与面板交互的新行为。您可以添加多个操作并覆盖默认筛选。", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "隐藏", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "查看文档", From feab3e3b0205f5be3a8ed7f6f27a78e9c9a6755d Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Mon, 28 Sep 2020 16:42:13 -0400 Subject: [PATCH 026/119] [Alerting] retry internal OCC calls within alertsClient (#77838) During development of https://github.com/elastic/kibana/pull/75553, some issues came up with the optimistic concurrency control (OCC) we were using internally within the alertsClient, via the `version` option/property of the saved object. The referenced PR updates new fields in the alert from the taskManager task after the alertType executor runs. In some alertsClient methods, OCC is used to update the alert which are requested via user requests. And so in some cases, version conflict errors were coming up when the alert was updated by task manager, in the middle of one of these methods. Note: the SIEM function test cases stress test this REALLY well. In this PR, we wrap all the methods using OCC with a function that will retry them, a short number of times, with a short delay in between. If the original method STILL has a conflict error, it will get thrown after the retry limit. In practice, this eliminated the version conflict calls that were occurring with the SIEM tests, once we started updating the saved object in the executor. For cases where we know only attributes not contributing to AAD are being updated, a new function is provided that does a partial update on just those attributes, making partial updates for those attributes a bit safer. That will be also used by PR #75553. --- .../alerts/server/alerts_client.test.ts | 35 +- x-pack/plugins/alerts/server/alerts_client.ts | 126 ++++-- .../alerts_client_conflict_retries.test.ts | 359 ++++++++++++++++++ .../server/lib/retry_if_conflicts.test.ts | 78 ++++ .../alerts/server/lib/retry_if_conflicts.ts | 58 +++ .../alerts/server/saved_objects/index.ts | 17 + .../partially_update_alert.test.ts | 112 ++++++ .../saved_objects/partially_update_alert.ts | 49 +++ 8 files changed, 801 insertions(+), 33 deletions(-) create mode 100644 x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts create mode 100644 x-pack/plugins/alerts/server/lib/retry_if_conflicts.test.ts create mode 100644 x-pack/plugins/alerts/server/lib/retry_if_conflicts.ts create mode 100644 x-pack/plugins/alerts/server/saved_objects/partially_update_alert.test.ts create mode 100644 x-pack/plugins/alerts/server/saved_objects/partially_update_alert.ts diff --git a/x-pack/plugins/alerts/server/alerts_client.test.ts b/x-pack/plugins/alerts/server/alerts_client.test.ts index a6cffb0284815..d4817eab64acb 100644 --- a/x-pack/plugins/alerts/server/alerts_client.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client.test.ts @@ -1696,14 +1696,22 @@ describe('muteAll()', () => { muteAll: false, }, references: [], + version: '123', }); await alertsClient.muteAll({ id: '1' }); - expect(unsecuredSavedObjectsClient.update).toHaveBeenCalledWith('alert', '1', { - muteAll: true, - mutedInstanceIds: [], - updatedBy: 'elastic', - }); + expect(unsecuredSavedObjectsClient.update).toHaveBeenCalledWith( + 'alert', + '1', + { + muteAll: true, + mutedInstanceIds: [], + updatedBy: 'elastic', + }, + { + version: '123', + } + ); }); describe('authorization', () => { @@ -1785,11 +1793,18 @@ describe('unmuteAll()', () => { }); await alertsClient.unmuteAll({ id: '1' }); - expect(unsecuredSavedObjectsClient.update).toHaveBeenCalledWith('alert', '1', { - muteAll: false, - mutedInstanceIds: [], - updatedBy: 'elastic', - }); + expect(unsecuredSavedObjectsClient.update).toHaveBeenCalledWith( + 'alert', + '1', + { + muteAll: false, + mutedInstanceIds: [], + updatedBy: 'elastic', + }, + { + version: '123', + } + ); }); describe('authorization', () => { diff --git a/x-pack/plugins/alerts/server/alerts_client.ts b/x-pack/plugins/alerts/server/alerts_client.ts index 671b1d6411d7f..033fdd752c695 100644 --- a/x-pack/plugins/alerts/server/alerts_client.ts +++ b/x-pack/plugins/alerts/server/alerts_client.ts @@ -45,6 +45,8 @@ import { parseIsoOrRelativeDate } from './lib/iso_or_relative_date'; import { alertInstanceSummaryFromEventLog } from './lib/alert_instance_summary_from_event_log'; import { IEvent } from '../../event_log/server'; import { parseDuration } from '../common/parse_duration'; +import { retryIfConflicts } from './lib/retry_if_conflicts'; +import { partiallyUpdateAlert } from './saved_objects'; export interface RegistryAlertTypeWithAuth extends RegistryAlertType { authorizedConsumers: string[]; @@ -421,6 +423,14 @@ export class AlertsClient { } public async update({ id, data }: UpdateOptions): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.update('${id}')`, + async () => await this.updateWithOCC({ id, data }) + ); + } + + private async updateWithOCC({ id, data }: UpdateOptions): Promise { let alertSavedObject: SavedObject; try { @@ -529,7 +539,15 @@ export class AlertsClient { }; } - public async updateApiKey({ id }: { id: string }) { + public async updateApiKey({ id }: { id: string }): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.updateApiKey('${id}')`, + async () => await this.updateApiKeyWithOCC({ id }) + ); + } + + private async updateApiKeyWithOCC({ id }: { id: string }) { let apiKeyToInvalidate: string | null = null; let attributes: RawAlert; let version: string | undefined; @@ -597,7 +615,15 @@ export class AlertsClient { } } - public async enable({ id }: { id: string }) { + public async enable({ id }: { id: string }): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.enable('${id}')`, + async () => await this.enableWithOCC({ id }) + ); + } + + private async enableWithOCC({ id }: { id: string }) { let apiKeyToInvalidate: string | null = null; let attributes: RawAlert; let version: string | undefined; @@ -658,7 +684,15 @@ export class AlertsClient { } } - public async disable({ id }: { id: string }) { + public async disable({ id }: { id: string }): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.disable('${id}')`, + async () => await this.disableWithOCC({ id }) + ); + } + + private async disableWithOCC({ id }: { id: string }) { let apiKeyToInvalidate: string | null = null; let attributes: RawAlert; let version: string | undefined; @@ -711,8 +745,19 @@ export class AlertsClient { } } - public async muteAll({ id }: { id: string }) { - const { attributes } = await this.unsecuredSavedObjectsClient.get('alert', id); + public async muteAll({ id }: { id: string }): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.muteAll('${id}')`, + async () => await this.muteAllWithOCC({ id }) + ); + } + + private async muteAllWithOCC({ id }: { id: string }) { + const { attributes, version } = await this.unsecuredSavedObjectsClient.get( + 'alert', + id + ); await this.authorization.ensureAuthorized( attributes.alertTypeId, attributes.consumer, @@ -723,19 +768,34 @@ export class AlertsClient { await this.actionsAuthorization.ensureAuthorized('execute'); } - await this.unsecuredSavedObjectsClient.update( - 'alert', + const updateAttributes = this.updateMeta({ + muteAll: true, + mutedInstanceIds: [], + updatedBy: await this.getUserName(), + }); + const updateOptions = { version }; + + await partiallyUpdateAlert( + this.unsecuredSavedObjectsClient, id, - this.updateMeta({ - muteAll: true, - mutedInstanceIds: [], - updatedBy: await this.getUserName(), - }) + updateAttributes, + updateOptions + ); + } + + public async unmuteAll({ id }: { id: string }): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.unmuteAll('${id}')`, + async () => await this.unmuteAllWithOCC({ id }) ); } - public async unmuteAll({ id }: { id: string }) { - const { attributes } = await this.unsecuredSavedObjectsClient.get('alert', id); + private async unmuteAllWithOCC({ id }: { id: string }) { + const { attributes, version } = await this.unsecuredSavedObjectsClient.get( + 'alert', + id + ); await this.authorization.ensureAuthorized( attributes.alertTypeId, attributes.consumer, @@ -746,18 +806,30 @@ export class AlertsClient { await this.actionsAuthorization.ensureAuthorized('execute'); } - await this.unsecuredSavedObjectsClient.update( - 'alert', + const updateAttributes = this.updateMeta({ + muteAll: false, + mutedInstanceIds: [], + updatedBy: await this.getUserName(), + }); + const updateOptions = { version }; + + await partiallyUpdateAlert( + this.unsecuredSavedObjectsClient, id, - this.updateMeta({ - muteAll: false, - mutedInstanceIds: [], - updatedBy: await this.getUserName(), - }) + updateAttributes, + updateOptions + ); + } + + public async muteInstance({ alertId, alertInstanceId }: MuteOptions): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.muteInstance('${alertId}')`, + async () => await this.muteInstanceWithOCC({ alertId, alertInstanceId }) ); } - public async muteInstance({ alertId, alertInstanceId }: MuteOptions) { + private async muteInstanceWithOCC({ alertId, alertInstanceId }: MuteOptions) { const { attributes, version } = await this.unsecuredSavedObjectsClient.get( 'alert', alertId @@ -788,7 +860,15 @@ export class AlertsClient { } } - public async unmuteInstance({ + public async unmuteInstance({ alertId, alertInstanceId }: MuteOptions): Promise { + return await retryIfConflicts( + this.logger, + `alertsClient.unmuteInstance('${alertId}')`, + async () => await this.unmuteInstanceWithOCC({ alertId, alertInstanceId }) + ); + } + + private async unmuteInstanceWithOCC({ alertId, alertInstanceId, }: { diff --git a/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts b/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts new file mode 100644 index 0000000000000..1c5edb45c80fe --- /dev/null +++ b/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts @@ -0,0 +1,359 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { cloneDeep } from 'lodash'; + +import { AlertsClient, ConstructorOptions } from './alerts_client'; +import { savedObjectsClientMock, loggingSystemMock } from '../../../../src/core/server/mocks'; +import { taskManagerMock } from '../../task_manager/server/task_manager.mock'; +import { alertTypeRegistryMock } from './alert_type_registry.mock'; +import { alertsAuthorizationMock } from './authorization/alerts_authorization.mock'; +import { encryptedSavedObjectsMock } from '../../encrypted_saved_objects/server/mocks'; +import { actionsClientMock, actionsAuthorizationMock } from '../../actions/server/mocks'; +import { AlertsAuthorization } from './authorization/alerts_authorization'; +import { ActionsAuthorization } from '../../actions/server'; +import { SavedObjectsErrorHelpers } from '../../../../src/core/server'; +import { RetryForConflictsAttempts } from './lib/retry_if_conflicts'; +import { TaskStatus } from '../../../plugins/task_manager/server/task'; + +let alertsClient: AlertsClient; + +const MockAlertId = 'alert-id'; + +const ConflictAfterRetries = RetryForConflictsAttempts + 1; + +const taskManager = taskManagerMock.start(); +const alertTypeRegistry = alertTypeRegistryMock.create(); +const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); + +const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); +const authorization = alertsAuthorizationMock.create(); +const actionsAuthorization = actionsAuthorizationMock.create(); + +const kibanaVersion = 'v7.10.0'; +const logger = loggingSystemMock.create().get(); +const alertsClientParams: jest.Mocked = { + taskManager, + alertTypeRegistry, + unsecuredSavedObjectsClient, + authorization: (authorization as unknown) as AlertsAuthorization, + actionsAuthorization: (actionsAuthorization as unknown) as ActionsAuthorization, + spaceId: 'default', + namespace: 'default', + getUserName: jest.fn(), + createAPIKey: jest.fn(), + invalidateAPIKey: jest.fn(), + logger, + encryptedSavedObjectsClient: encryptedSavedObjects, + getActionsClient: jest.fn(), + getEventLogClient: jest.fn(), + kibanaVersion, +}; + +// this suite consists of two suites running tests against mutable alertsClient APIs: +// - one to run tests where an SO update conflicts once +// - one to run tests where an SO update conflicts too many times +describe('alerts_client_conflict_retries', () => { + // tests that mutable operations work if only one SO conflict occurs + describe(`1 retry works for method`, () => { + beforeEach(() => { + mockSavedObjectUpdateConflictErrorTimes(1); + }); + + testFn(update, true); + testFn(updateApiKey, true); + testFn(enable, true); + testFn(disable, true); + testFn(muteAll, true); + testFn(unmuteAll, true); + testFn(muteInstance, true); + testFn(unmuteInstance, true); + }); + + // tests that mutable operations fail if too many SO conflicts occurs + describe(`${ConflictAfterRetries} retries fails with conflict error`, () => { + beforeEach(() => { + mockSavedObjectUpdateConflictErrorTimes(ConflictAfterRetries); + }); + + testFn(update, false); + testFn(updateApiKey, false); + testFn(enable, false); + testFn(disable, false); + testFn(muteAll, false); + testFn(unmuteAll, false); + testFn(muteInstance, false); + testFn(unmuteInstance, false); + }); +}); + +// alertsClients methods being tested +// - success is passed as an indication if the alertsClient method +// is expected to succeed or not, based on the number of conflicts +// set up in the `beforeEach()` method + +async function update(success: boolean) { + try { + await alertsClient.update({ + id: MockAlertId, + data: { + schedule: { interval: '5s' }, + name: 'cba', + tags: ['bar'], + params: { bar: true }, + throttle: '10s', + actions: [], + }, + }); + } catch (err) { + // only checking the warn messages in this test + expect(logger.warn).lastCalledWith( + `alertsClient.update('alert-id') conflict, exceeded retries` + ); + return expectConflict(success, err, 'create'); + } + expectSuccess(success, 2, 'create'); + + // only checking the debug messages in this test + expect(logger.debug).nthCalledWith(1, `alertsClient.update('alert-id') conflict, retrying ...`); +} + +async function updateApiKey(success: boolean) { + try { + await alertsClient.updateApiKey({ id: MockAlertId }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +async function enable(success: boolean) { + setupRawAlertMocks({}, { enabled: false }); + + try { + await alertsClient.enable({ id: MockAlertId }); + } catch (err) { + return expectConflict(success, err); + } + + // a successful enable call makes 2 calls to update, so that's 3 total, + // 1 with conflict + 2 on success + expectSuccess(success, 3); +} + +async function disable(success: boolean) { + try { + await alertsClient.disable({ id: MockAlertId }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +async function muteAll(success: boolean) { + try { + await alertsClient.muteAll({ id: MockAlertId }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +async function unmuteAll(success: boolean) { + try { + await alertsClient.unmuteAll({ id: MockAlertId }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +async function muteInstance(success: boolean) { + try { + await alertsClient.muteInstance({ alertId: MockAlertId, alertInstanceId: 'instance-id' }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +async function unmuteInstance(success: boolean) { + setupRawAlertMocks({}, { mutedInstanceIds: ['instance-id'] }); + try { + await alertsClient.unmuteInstance({ alertId: MockAlertId, alertInstanceId: 'instance-id' }); + } catch (err) { + return expectConflict(success, err); + } + + expectSuccess(success); +} + +// tests to run when the method is expected to succeed +function expectSuccess( + success: boolean, + count: number = 2, + method: 'update' | 'create' = 'update' +) { + expect(success).toBe(true); + expect(unsecuredSavedObjectsClient[method]).toHaveBeenCalledTimes(count); + // message content checked in the update test + expect(logger.debug).toHaveBeenCalled(); +} + +// tests to run when the method is expected to fail +function expectConflict(success: boolean, err: Error, method: 'update' | 'create' = 'update') { + const conflictErrorMessage = SavedObjectsErrorHelpers.createConflictError('alert', MockAlertId) + .message; + + expect(`${err}`).toBe(`Error: ${conflictErrorMessage}`); + expect(success).toBe(false); + expect(unsecuredSavedObjectsClient[method]).toHaveBeenCalledTimes(ConflictAfterRetries); + // message content checked in the update test + expect(logger.debug).toBeCalledTimes(RetryForConflictsAttempts); + expect(logger.warn).toBeCalledTimes(1); +} + +// wrapper to call the test function with a it's own name +function testFn(fn: (success: boolean) => unknown, success: boolean) { + test(`${fn.name}`, async () => await fn(success)); +} + +// set up mocks for update or create (the update() method uses create!) +function mockSavedObjectUpdateConflictErrorTimes(times: number) { + // default success value + const mockUpdateValue = { + id: MockAlertId, + type: 'alert', + attributes: { + actions: [], + scheduledTaskId: 'scheduled-task-id', + }, + references: [], + }; + + unsecuredSavedObjectsClient.update.mockResolvedValue(mockUpdateValue); + unsecuredSavedObjectsClient.create.mockResolvedValue(mockUpdateValue); + + // queue up specified number of errors before a success call + for (let i = 0; i < times; i++) { + unsecuredSavedObjectsClient.update.mockRejectedValueOnce( + SavedObjectsErrorHelpers.createConflictError('alert', MockAlertId) + ); + unsecuredSavedObjectsClient.create.mockRejectedValueOnce( + SavedObjectsErrorHelpers.createConflictError('alert', MockAlertId) + ); + } +} + +// set up mocks needed to get the tested methods to run +function setupRawAlertMocks( + overrides: Record = {}, + attributeOverrides: Record = {} +) { + const rawAlert = { + id: MockAlertId, + type: 'alert', + attributes: { + enabled: true, + tags: ['foo'], + alertTypeId: 'myType', + schedule: { interval: '10s' }, + consumer: 'myApp', + scheduledTaskId: 'task-123', + params: {}, + throttle: null, + actions: [], + muteAll: false, + mutedInstanceIds: [], + ...attributeOverrides, + }, + references: [], + version: '123', + ...overrides, + }; + const decryptedRawAlert = { + ...rawAlert, + attributes: { + ...rawAlert.attributes, + apiKey: Buffer.from('123:abc').toString('base64'), + }, + }; + + unsecuredSavedObjectsClient.get.mockReset(); + encryptedSavedObjects.getDecryptedAsInternalUser.mockReset(); + + // splitting this out as it's easier to set a breakpoint :-) + // eslint-disable-next-line prettier/prettier + unsecuredSavedObjectsClient.get.mockImplementation(async () => + cloneDeep(rawAlert) + ); + + encryptedSavedObjects.getDecryptedAsInternalUser.mockImplementation(async () => + cloneDeep(decryptedRawAlert) + ); +} + +// setup for each test +beforeEach(() => { + jest.resetAllMocks(); + + alertsClientParams.createAPIKey.mockResolvedValue({ apiKeysEnabled: false }); + alertsClientParams.invalidateAPIKey.mockResolvedValue({ + apiKeysEnabled: true, + result: { + invalidated_api_keys: [], + previously_invalidated_api_keys: [], + error_count: 0, + }, + }); + alertsClientParams.getUserName.mockResolvedValue('elastic'); + + taskManager.runNow.mockResolvedValue({ id: '' }); + taskManager.schedule.mockResolvedValue({ + id: 'scheduled-task-id', + scheduledAt: new Date(), + attempts: 0, + status: TaskStatus.Idle, + runAt: new Date(), + startedAt: null, + retryAt: null, + state: {}, + ownerId: null, + taskType: 'task-type', + params: {}, + }); + + const actionsClient = actionsClientMock.create(); + actionsClient.getBulk.mockResolvedValue([]); + alertsClientParams.getActionsClient.mockResolvedValue(actionsClient); + + alertTypeRegistry.get.mockImplementation((id) => ({ + id: '123', + name: 'Test', + actionGroups: [{ id: 'default', name: 'Default' }], + defaultActionGroupId: 'default', + async executor() {}, + producer: 'alerts', + })); + + alertTypeRegistry.get.mockReturnValue({ + id: 'myType', + name: 'Test', + actionGroups: [{ id: 'default', name: 'Default' }], + defaultActionGroupId: 'default', + async executor() {}, + producer: 'alerts', + }); + + alertsClient = new AlertsClient(alertsClientParams); + + setupRawAlertMocks(); +}); diff --git a/x-pack/plugins/alerts/server/lib/retry_if_conflicts.test.ts b/x-pack/plugins/alerts/server/lib/retry_if_conflicts.test.ts new file mode 100644 index 0000000000000..19caccc753e38 --- /dev/null +++ b/x-pack/plugins/alerts/server/lib/retry_if_conflicts.test.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsErrorHelpers } from '../../../../../src/core/server'; +import { retryIfConflicts, RetryForConflictsAttempts } from './retry_if_conflicts'; +import { loggingSystemMock } from '../../../../../src/core/server/mocks'; + +describe('retry_if_conflicts', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + test('should work when operation is a success', async () => { + const result = await retryIfConflicts(MockLogger, MockOperationName, OperationSuccessful); + expect(result).toBe(MockResult); + }); + + test('should throw error if not a conflict error', async () => { + await expect( + retryIfConflicts(MockLogger, MockOperationName, OperationFailure) + ).rejects.toThrowError('wops'); + }); + + for (let i = 1; i <= RetryForConflictsAttempts; i++) { + test(`should work when operation conflicts ${i} times`, async () => { + const result = await retryIfConflicts( + MockLogger, + MockOperationName, + getOperationConflictsTimes(i) + ); + expect(result).toBe(MockResult); + expect(MockLogger.debug).toBeCalledTimes(i); + for (let j = 0; j < i; j++) { + expect(MockLogger.debug).nthCalledWith(i, `${MockOperationName} conflict, retrying ...`); + } + }); + } + + test(`should throw conflict error when conflicts > ${RetryForConflictsAttempts} times`, async () => { + await expect( + retryIfConflicts( + MockLogger, + MockOperationName, + getOperationConflictsTimes(RetryForConflictsAttempts + 1) + ) + ).rejects.toThrowError(SavedObjectsErrorHelpers.createConflictError('alert', MockAlertId)); + expect(MockLogger.debug).toBeCalledTimes(RetryForConflictsAttempts); + expect(MockLogger.warn).toBeCalledTimes(1); + expect(MockLogger.warn).toBeCalledWith(`${MockOperationName} conflict, exceeded retries`); + }); +}); + +const MockAlertId = 'alert-id'; +const MockOperationName = 'conflict-retryable-operation'; +const MockLogger = loggingSystemMock.create().get(); +const MockResult = 42; + +async function OperationSuccessful() { + return MockResult; +} + +async function OperationFailure() { + throw new Error('wops'); +} + +function getOperationConflictsTimes(times: number) { + return async function OperationConflictsTimes() { + times--; + if (times >= 0) { + throw SavedObjectsErrorHelpers.createConflictError('alert', MockAlertId); + } + + return MockResult; + }; +} diff --git a/x-pack/plugins/alerts/server/lib/retry_if_conflicts.ts b/x-pack/plugins/alerts/server/lib/retry_if_conflicts.ts new file mode 100644 index 0000000000000..9cb1d7975855c --- /dev/null +++ b/x-pack/plugins/alerts/server/lib/retry_if_conflicts.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +// This module provides a helper to perform retries on a function if the +// function ends up throwing a SavedObject 409 conflict. This can happen +// when alert SO's are updated in the background, and will avoid having to +// have the caller make explicit conflict checks, where the conflict was +// caused by a background update. + +import { Logger, SavedObjectsErrorHelpers } from '../../../../../src/core/server'; + +type RetryableForConflicts = () => Promise; + +// number of times to retry when conflicts occur +// note: it seems unlikely that we'd need more than one retry, but leaving +// this statically configurable in case we DO need > 1 +export const RetryForConflictsAttempts = 1; + +// milliseconds to wait before retrying when conflicts occur +// note: we considered making this random, to help avoid a stampede, but +// with 1 retry it probably doesn't matter, and adding randomness could +// make it harder to diagnose issues +const RetryForConflictsDelay = 250; + +// retry an operation if it runs into 409 Conflict's, up to a limit +export async function retryIfConflicts( + logger: Logger, + name: string, + operation: RetryableForConflicts, + retries: number = RetryForConflictsAttempts +): Promise { + // run the operation, return if no errors or throw if not a conflict error + try { + return await operation(); + } catch (err) { + if (!SavedObjectsErrorHelpers.isConflictError(err)) { + throw err; + } + + // must be a conflict; if no retries left, throw it + if (retries <= 0) { + logger.warn(`${name} conflict, exceeded retries`); + throw err; + } + + // delay a bit before retrying + logger.debug(`${name} conflict, retrying ...`); + await waitBeforeNextRetry(); + return await retryIfConflicts(logger, name, operation, retries - 1); + } +} + +async function waitBeforeNextRetry(): Promise { + await new Promise((resolve) => setTimeout(resolve, RetryForConflictsDelay)); +} diff --git a/x-pack/plugins/alerts/server/saved_objects/index.ts b/x-pack/plugins/alerts/server/saved_objects/index.ts index 06ce8d673e6b7..51ac68b589977 100644 --- a/x-pack/plugins/alerts/server/saved_objects/index.ts +++ b/x-pack/plugins/alerts/server/saved_objects/index.ts @@ -9,6 +9,23 @@ import mappings from './mappings.json'; import { getMigrations } from './migrations'; import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; +export { partiallyUpdateAlert } from './partially_update_alert'; + +export const AlertAttributesExcludedFromAAD = [ + 'scheduledTaskId', + 'muteAll', + 'mutedInstanceIds', + 'updatedBy', +]; + +// useful for Pick which is a +// type which is a subset of RawAlert with just attributes excluded from AAD +export type AlertAttributesExcludedFromAADType = + | 'scheduledTaskId' + | 'muteAll' + | 'mutedInstanceIds' + | 'updatedBy'; + export function setupSavedObjects( savedObjects: SavedObjectsServiceSetup, encryptedSavedObjects: EncryptedSavedObjectsPluginSetup diff --git a/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.test.ts b/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.test.ts new file mode 100644 index 0000000000000..50815c797e399 --- /dev/null +++ b/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.test.ts @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + SavedObjectsClientContract, + ISavedObjectsRepository, + SavedObjectsErrorHelpers, +} from '../../../../../src/core/server'; + +import { partiallyUpdateAlert, PartiallyUpdateableAlertAttributes } from './partially_update_alert'; +import { savedObjectsClientMock } from '../../../../../src/core/server/mocks'; + +const MockSavedObjectsClientContract = savedObjectsClientMock.create(); +const MockISavedObjectsRepository = (MockSavedObjectsClientContract as unknown) as jest.Mocked< + ISavedObjectsRepository +>; + +describe('partially_update_alert', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + for (const [soClientName, soClient] of Object.entries(getMockSavedObjectClients())) + describe(`using ${soClientName}`, () => { + test('should work with no options', async () => { + soClient.update.mockResolvedValueOnce(MockUpdateValue); + + await partiallyUpdateAlert(soClient, MockAlertId, DefaultAttributes); + expect(soClient.update).toHaveBeenCalledWith('alert', MockAlertId, DefaultAttributes, {}); + }); + + test('should work with extraneous attributes ', async () => { + const attributes = (InvalidAttributes as unknown) as PartiallyUpdateableAlertAttributes; + soClient.update.mockResolvedValueOnce(MockUpdateValue); + + await partiallyUpdateAlert(soClient, MockAlertId, attributes); + expect(soClient.update).toHaveBeenCalledWith('alert', MockAlertId, DefaultAttributes, {}); + }); + + test('should handle SO errors', async () => { + soClient.update.mockRejectedValueOnce(new Error('wops')); + + await expect( + partiallyUpdateAlert(soClient, MockAlertId, DefaultAttributes) + ).rejects.toThrowError('wops'); + }); + + test('should handle the version option', async () => { + soClient.update.mockResolvedValueOnce(MockUpdateValue); + + await partiallyUpdateAlert(soClient, MockAlertId, DefaultAttributes, { version: '1.2.3' }); + expect(soClient.update).toHaveBeenCalledWith('alert', MockAlertId, DefaultAttributes, { + version: '1.2.3', + }); + }); + + test('should handle the ignore404 option', async () => { + const err = SavedObjectsErrorHelpers.createGenericNotFoundError(); + soClient.update.mockRejectedValueOnce(err); + + await partiallyUpdateAlert(soClient, MockAlertId, DefaultAttributes, { ignore404: true }); + expect(soClient.update).toHaveBeenCalledWith('alert', MockAlertId, DefaultAttributes, {}); + }); + + test('should handle the namespace option', async () => { + soClient.update.mockResolvedValueOnce(MockUpdateValue); + + await partiallyUpdateAlert(soClient, MockAlertId, DefaultAttributes, { + namespace: 'bat.cave', + }); + expect(soClient.update).toHaveBeenCalledWith('alert', MockAlertId, DefaultAttributes, { + namespace: 'bat.cave', + }); + }); + }); +}); + +function getMockSavedObjectClients(): Record< + string, + jest.Mocked +> { + return { + SavedObjectsClientContract: MockSavedObjectsClientContract, + // doesn't appear to be a mock for this, but it's basically the same as the above, + // so just cast it to make sure we catch any type errors + ISavedObjectsRepository: MockISavedObjectsRepository, + }; +} + +const DefaultAttributes = { + scheduledTaskId: 'scheduled-task-id', + muteAll: true, + mutedInstanceIds: ['muted-instance-id-1', 'muted-instance-id-2'], + updatedBy: 'someone', +}; + +const InvalidAttributes = { ...DefaultAttributes, foo: 'bar' }; + +const MockAlertId = 'alert-id'; + +const MockUpdateValue = { + id: MockAlertId, + type: 'alert', + attributes: { + actions: [], + scheduledTaskId: 'scheduled-task-id', + }, + references: [], +}; diff --git a/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.ts b/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.ts new file mode 100644 index 0000000000000..cc25aaba35798 --- /dev/null +++ b/x-pack/plugins/alerts/server/saved_objects/partially_update_alert.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { pick } from 'lodash'; +import { RawAlert } from '../types'; + +import { + SavedObjectsClient, + SavedObjectsErrorHelpers, + SavedObjectsUpdateOptions, +} from '../../../../../src/core/server'; + +import { AlertAttributesExcludedFromAAD, AlertAttributesExcludedFromAADType } from './index'; + +export type PartiallyUpdateableAlertAttributes = Pick; + +export interface PartiallyUpdateAlertSavedObjectOptions { + version?: string; + ignore404?: boolean; + namespace?: string; // only should be used with ISavedObjectsRepository +} + +// typed this way so we can send a SavedObjectClient or SavedObjectRepository +type SavedObjectClientForUpdate = Pick; + +// direct, partial update to an alert saved object via scoped SavedObjectsClient +// using namespace set in the client +export async function partiallyUpdateAlert( + savedObjectsClient: SavedObjectClientForUpdate, + id: string, + attributes: PartiallyUpdateableAlertAttributes, + options: PartiallyUpdateAlertSavedObjectOptions = {} +): Promise { + // ensure we only have the valid attributes excluded from AAD + const attributeUpdates = pick(attributes, AlertAttributesExcludedFromAAD); + const updateOptions: SavedObjectsUpdateOptions = pick(options, 'namespace', 'version'); + + try { + await savedObjectsClient.update('alert', id, attributeUpdates, updateOptions); + } catch (err) { + if (options?.ignore404 && SavedObjectsErrorHelpers.isNotFoundError(err)) { + return; + } + throw err; + } +} From 085cac13f2922dadffd080dffb3083ad0f3c7662 Mon Sep 17 00:00:00 2001 From: Josh Dover Date: Mon, 28 Sep 2020 15:24:23 -0600 Subject: [PATCH 027/119] Slim down core bundle (#75912) Co-authored-by: Elastic Machine --- .../public/chrome/ui/header/collapsible_nav.tsx | 2 +- src/core/public/chrome/ui/header/header.tsx | 2 +- .../chrome/ui/header/header_breadcrumbs.tsx | 2 +- src/core/public/chrome/ui/header/header_logo.tsx | 2 +- .../chrome/ui/header/header_nav_controls.tsx | 2 +- .../overlays/banners/user_banner_service.tsx | 15 ++++++++++++--- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/core/public/chrome/ui/header/collapsible_nav.tsx b/src/core/public/chrome/ui/header/collapsible_nav.tsx index b00e82b660e9f..151f98120ffc2 100644 --- a/src/core/public/chrome/ui/header/collapsible_nav.tsx +++ b/src/core/public/chrome/ui/header/collapsible_nav.tsx @@ -31,7 +31,7 @@ import { import { i18n } from '@kbn/i18n'; import { groupBy, sortBy } from 'lodash'; import React, { Fragment, useRef } from 'react'; -import { useObservable } from 'react-use'; +import useObservable from 'react-use/lib/useObservable'; import * as Rx from 'rxjs'; import { ChromeNavLink, ChromeRecentlyAccessedHistoryItem } from '../..'; import { AppCategory } from '../../../../types'; diff --git a/src/core/public/chrome/ui/header/header.tsx b/src/core/public/chrome/ui/header/header.tsx index e01a62a54c34d..8ab7cf872fe87 100644 --- a/src/core/public/chrome/ui/header/header.tsx +++ b/src/core/public/chrome/ui/header/header.tsx @@ -28,7 +28,7 @@ import { import { i18n } from '@kbn/i18n'; import classnames from 'classnames'; import React, { createRef, useState } from 'react'; -import { useObservable } from 'react-use'; +import useObservable from 'react-use/lib/useObservable'; import { Observable } from 'rxjs'; import { LoadingIndicator } from '../'; import { diff --git a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx index 174c46981db53..52412f8990c7a 100644 --- a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx +++ b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx @@ -20,7 +20,7 @@ import { EuiHeaderBreadcrumbs } from '@elastic/eui'; import classNames from 'classnames'; import React from 'react'; -import { useObservable } from 'react-use'; +import useObservable from 'react-use/lib/useObservable'; import { Observable } from 'rxjs'; import { ChromeBreadcrumb } from '../../chrome_service'; diff --git a/src/core/public/chrome/ui/header/header_logo.tsx b/src/core/public/chrome/ui/header/header_logo.tsx index dee93ecb1a804..83e0c52ab3f3a 100644 --- a/src/core/public/chrome/ui/header/header_logo.tsx +++ b/src/core/public/chrome/ui/header/header_logo.tsx @@ -20,7 +20,7 @@ import { EuiHeaderLogo } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { useObservable } from 'react-use'; +import useObservable from 'react-use/lib/useObservable'; import { Observable } from 'rxjs'; import Url from 'url'; import { ChromeNavLink } from '../..'; diff --git a/src/core/public/chrome/ui/header/header_nav_controls.tsx b/src/core/public/chrome/ui/header/header_nav_controls.tsx index 8d9d8097fd8e3..69b0e3bd8afe3 100644 --- a/src/core/public/chrome/ui/header/header_nav_controls.tsx +++ b/src/core/public/chrome/ui/header/header_nav_controls.tsx @@ -19,7 +19,7 @@ import { EuiHeaderSectionItem } from '@elastic/eui'; import React from 'react'; -import { useObservable } from 'react-use'; +import useObservable from 'react-use/lib/useObservable'; import { Observable } from 'rxjs'; import { ChromeNavControl } from '../../nav_controls'; import { HeaderExtension } from './header_extension'; diff --git a/src/core/public/overlays/banners/user_banner_service.tsx b/src/core/public/overlays/banners/user_banner_service.tsx index 643d95a1e3bb4..2b93c3e4b6c21 100644 --- a/src/core/public/overlays/banners/user_banner_service.tsx +++ b/src/core/public/overlays/banners/user_banner_service.tsx @@ -19,12 +19,11 @@ import React, { Fragment } from 'react'; import ReactDOM from 'react-dom'; -import ReactMarkdown from 'react-markdown'; import { filter } from 'rxjs/operators'; import { Subscription } from 'rxjs'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiCallOut, EuiButton } from '@elastic/eui'; +import { EuiCallOut, EuiButton, EuiLoadingSpinner } from '@elastic/eui'; import { I18nStart } from '../../i18n'; import { IUiSettingsClient } from '../../ui_settings'; @@ -36,6 +35,8 @@ interface StartDeps { uiSettings: IUiSettingsClient; } +const ReactMarkdownLazy = React.lazy(() => import('react-markdown')); + /** * Sets up the custom banner that can be specified in advanced settings. * @internal @@ -75,7 +76,15 @@ export class UserBannerService { } iconType="help" > - {content.trim()} + + +
+ } + > + + banners.remove(id!)}> Date: Mon, 28 Sep 2020 15:27:02 -0600 Subject: [PATCH 028/119] [QA][Code Coverage] Coverage teams lookup w/o Additional Config (#77111) * [QA][Code Coverage] Coverage teams lookup * Fix test per cr. * Drop unused fn's. * Add integration test to prove that the sys does indeed strip the CC prefix and still walks the fs. * Cleanup "todo" list. * Use import, like Dima's previous suggestion. * Add coverage teams only definitions to CODEOWNERS per Lee. * Add coverage teams for logstash, reporting and security. * Update description. * Update names per Lee. * Drop mutation. * Fix dupes. * Add the file check, per Dima * Add more teams * Update regex to only match on "build/" and add test. * More teams * More teams * Add print statement of the canonical timestamp, so we can lookup stuff in gcp during errors. * CR fixups --- .ci/Jenkinsfile_coverage | 14 +- .github/CODEOWNERS | 129 ++++++++++++ ...gnment.js => generate_team_assignments.js} | 2 +- .../ingest_coverage/__tests__/either.test.js | 16 +- .../__tests__/enumerate_patterns.test.js | 60 ++++++ .../__tests__/enumeration_helpers.test.js | 50 +++++ .../__tests__/ingest_helpers.test.js | 25 +-- .../__tests__/mocks/team_assign_mock.json | 3 - .../__tests__/mocks/team_assign_mock.txt | 194 ++++++++++++++++++ .../__tests__/team_assignment.test.js | 45 ---- .../__tests__/transforms.test.js | 67 +++++- .../ingest_coverage/constants.js | 2 - .../code_coverage/ingest_coverage/either.js | 6 + .../code_coverage/ingest_coverage/index.js | 13 +- .../code_coverage/ingest_coverage/ingest.js | 12 +- .../ingest_coverage/ingest_helpers.js | 7 - .../integration_tests/ingest_coverage.test.js | 21 ++ .../integration_tests/mocks/CODEOWNERS | 6 + .../coverage-summary-possibly-n-teams.json | 28 +++ .../coverage-summary-qa-research-job.json | 28 +++ .../integration_tests/team_assignment.test.js | 58 ++++++ .../code_coverage/ingest_coverage/process.js | 11 +- .../team_assignment/enumerate_patterns.js | 78 +++++++ .../team_assignment/enumeration_helpers.js | 46 +++++ .../ingest_coverage/team_assignment/flush.js | 44 ++++ .../ingest_coverage/team_assignment/index.js | 71 ++++--- .../ingestion_pipeline_painless.json | 1 - ...ate_ingest_pipeline.js => parse_owners.js} | 28 ++- .../team_assignment/parse_owners_helpers.js | 48 +++++ .../{get_data.js => parsing_helpers.js} | 19 +- .../ingest_coverage/transforms.js | 61 +++++- .../code_coverage/ingest_coverage/utils.js | 6 +- .../shell_scripts/assign_teams.sh | 15 -- ...e_team_assignments_and_ingest_coverage.sh} | 9 +- vars/kibanaCoverage.groovy | 12 +- vars/kibanaTeamAssign.groovy | 24 +-- 36 files changed, 1051 insertions(+), 208 deletions(-) rename scripts/{load_team_assignment.js => generate_team_assignments.js} (96%) create mode 100644 src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js create mode 100644 src/dev/code_coverage/ingest_coverage/__tests__/enumeration_helpers.test.js delete mode 100644 src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.json create mode 100644 src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt delete mode 100644 src/dev/code_coverage/ingest_coverage/__tests__/team_assignment.test.js create mode 100644 src/dev/code_coverage/ingest_coverage/integration_tests/mocks/CODEOWNERS create mode 100644 src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-possibly-n-teams.json create mode 100644 src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-qa-research-job.json create mode 100644 src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js create mode 100644 src/dev/code_coverage/ingest_coverage/team_assignment/enumerate_patterns.js create mode 100644 src/dev/code_coverage/ingest_coverage/team_assignment/enumeration_helpers.js create mode 100644 src/dev/code_coverage/ingest_coverage/team_assignment/flush.js delete mode 100644 src/dev/code_coverage/ingest_coverage/team_assignment/ingestion_pipeline_painless.json rename src/dev/code_coverage/ingest_coverage/team_assignment/{update_ingest_pipeline.js => parse_owners.js} (58%) create mode 100644 src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners_helpers.js rename src/dev/code_coverage/ingest_coverage/team_assignment/{get_data.js => parsing_helpers.js} (64%) delete mode 100644 src/dev/code_coverage/shell_scripts/assign_teams.sh rename src/dev/code_coverage/shell_scripts/{ingest_coverage.sh => generate_team_assignments_and_ingest_coverage.sh} (78%) diff --git a/.ci/Jenkinsfile_coverage b/.ci/Jenkinsfile_coverage index ebb9c3dc86dd2..db19a0a5b249d 100644 --- a/.ci/Jenkinsfile_coverage +++ b/.ci/Jenkinsfile_coverage @@ -12,8 +12,12 @@ kibanaPipeline(timeoutMinutes: 240) { ]) { workers.base(name: 'coverage-worker', size: 'l', ramDisk: false, bootstrapped: false) { catchError { + + kibanaPipeline.bash(""" + echo '${TIME_STAMP}' + """, "### Print Canonical Time Stamp") + kibanaCoverage.runTests() - kibanaTeamAssign.load('team_assignment', "### Upload Team Assignment JSON") handleIngestion(TIME_STAMP) } handleFail() @@ -30,7 +34,7 @@ def handleIngestion(timestamp) { kibanaCoverage.collectVcsInfo("### Collect VCS Info") kibanaCoverage.generateReports("### Merge coverage reports") kibanaCoverage.uploadCombinedReports() - kibanaCoverage.ingest(env.JOB_NAME, BUILD_NUMBER, BUILD_URL, timestamp, previousSha, '### Ingest && Upload') + kibanaCoverage.ingest(env.JOB_NAME, BUILD_NUMBER, BUILD_URL, timestamp, previousSha, teamAssignmentsPath(), '### Generate Team Assignments && Ingest') kibanaCoverage.uploadCoverageStaticSite(timestamp) } @@ -42,7 +46,7 @@ def handlePreviousSha() { def handleFail() { def buildStatus = buildUtils.getBuildStatus() - if(params.NOTIFY_ON_FAILURE && buildStatus != 'SUCCESS' && buildStatus != 'ABORTED' && buildStatus != 'UNSTABLE') { + if (params.NOTIFY_ON_FAILURE && buildStatus != 'SUCCESS' && buildStatus != 'ABORTED' && buildStatus != 'UNSTABLE') { slackNotifications.sendFailedBuild( channel: '#kibana-qa', username: 'Kibana QA' @@ -50,3 +54,7 @@ def handleFail() { } } +def teamAssignmentsPath() { + return 'src/dev/code_coverage/ingest_coverage/team_assignment/team_assignments.txt' +} + diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2f5e14f1f1599..54cf52fae5fe8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,6 +2,9 @@ # Identify which groups will be pinged by changes to different parts of the codebase. # For more info, see https://help.github.com/articles/about-codeowners/ +# The #CC# prefix delineates Code Coverage, +# used for the 'team' designator within Kibana Stats + # App /x-pack/plugins/dashboard_enhanced/ @elastic/kibana-app /x-pack/plugins/discover_enhanced/ @elastic/kibana-app @@ -26,6 +29,33 @@ /src/plugins/vis_type_xy/ @elastic/kibana-app /src/plugins/visualize/ @elastic/kibana-app /src/plugins/visualizations/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public/local_application_service/ @elastic/kibana-app +#CC# /src/plugins/vis_type @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/common/utils @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/migrations @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public/dashboard/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public/dev_tools/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public/discover/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/kibana/public/local_application_service/ @elastic/kibana-app +#CC# /src/legacy/core_plugins/console_legacy @elastic/kibana-app +#CC# /src/legacy/core_plugins/input_control_vis @elastic/kibana-app +#CC# /src/legacy/core_plugins/timelion @elastic/kibana-app +#CC# /src/legacy/core_plugins/vis_type_tagcloud @elastic/kibana-app +#CC# /src/legacy/core_plugins/vis_type_vega @elastic/kibana-app +#CC# /src/legacy/core_plugins/vis_type_vislib/ @elastic/kibana-app +#CC# /src/legacy/server/sample_data/ @elastic/kibana-app +#CC# /src/legacy/server/url_shortening/ @elastic/kibana-app +#CC# /src/legacy/ui/public/state_management @elastic/kibana-app +#CC# /src/plugins/charts/public/static/color_maps @elastic/kibana-app +#CC# /src/plugins/index_pattern_management/public @elastic/kibana-app +#CC# /src/plugins/input_control_vis/ @elastic/kibana-app +#CC# /src/plugins/kibana_legacy/ @elastic/kibana-app +#CC# /src/plugins/timelion @elastic/kibana-app +#CC# /x-pack/legacy/plugins/dashboard_mode/ @elastic/kibana-app +#CC# /x-pack/plugins/dashboard_mode @elastic/kibana-app +#CC# /x-pack/plugins/lens/ @elastic/kibana-app # App Architecture /examples/bfetch_explorer/ @elastic/kibana-app-arch @@ -56,12 +86,37 @@ /x-pack/plugins/data_enhanced/ @elastic/kibana-app-arch /x-pack/plugins/embeddable_enhanced/ @elastic/kibana-app-arch /x-pack/plugins/ui_actions_enhanced/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/kibana/public/management/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/kibana/server/routes/api/management/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/embeddable_api/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/interpreter/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/kibana_react/ @elastic/kibana-app-arch +#CC# /src/legacy/core_plugins/status_page/public @elastic/kibana-app-arch +#CC# /src/legacy/server/index_patterns/ @elastic/kibana-app-arch +#CC# /src/legacy/ui/public/field_editor @elastic/kibana-app-arch +#CC# /src/legacy/ui/public/management @elastic/kibana-app-arch +#CC# /src/plugins/advanced_settings/ @elastic/kibana-app-arch +#CC# /src/plugins/bfetch/ @elastic/kibana-app-arch +#CC# /src/plugins/charts/ @elastic/kibana-app-arch +#CC# /src/plugins/index_pattern_management/public/service @elastic/kibana-app-arch +#CC# /src/plugins/inspector/ @elastic/kibana-app-arch +#CC# /src/plugins/saved_objects/ @elastic/kibana-app-arch +#CC# /src/plugins/share/ @elastic/kibana-app-arch +#CC# /src/plugins/vis_default_editor @elastic/kibana-app-arch +#CC# /x-pack/plugins/advanced_ui_actions/ @elastic/kibana-app-arch +#CC# /x-pack/plugins/drilldowns/ @elastic/kibana-app-arch +#CC# /packages/kbn-interpreter/ @elastic/kibana-app-arch # APM /x-pack/plugins/apm/ @elastic/apm-ui /x-pack/test/functional/apps/apm/ @elastic/apm-ui /src/plugins/apm_oss/ @elastic/apm-ui /src/apm.js @watson @vigneshshanmugam +#CC# /src/plugins/apm_oss/ @elastic/apm-ui +#CC# /src/legacy/core_plugins/apm_oss/ @elastic/apm-ui +#CC# /src/legacy/ui/public/apm @elastic/apm-ui +#CC# /x-pack/legacy/plugins/apm/ @elastic/apm-ui +#CC# /x-pack/plugins/observability/ @elastic/apm-ui # Client Side Monitoring (lives in APM directories but owned by Uptime) /x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm @elastic/uptime @@ -71,13 +126,19 @@ /x-pack/plugins/apm/server/lib/rum_client @elastic/uptime /x-pack/plugins/apm/server/routes/rum_client.ts @elastic/uptime /x-pack/plugins/apm/server/projections/rum_page_load_transactions.ts @elastic/uptime +/x-pack/plugins/apm/server/projections/rum_overview.ts @elastic/uptime +#CC# /x-pack/legacy/plugins/uptime @elastic/uptime # Beats /x-pack/plugins/beats_management/ @elastic/beats +/x-pack/legacy/plugins/beats_management/ @elastic/beats +#CC# /x-pack/plugins/beats_management/ @elastic/beats # Canvas /x-pack/plugins/canvas/ @elastic/kibana-canvas /x-pack/test/functional/apps/canvas/ @elastic/kibana-canvas +#CC# /src/plugins/kibana_react/public/code_editor/ @elastic/kibana-canvas +#CC# /x-pack/legacy/plugins/canvas/ @elastic/kibana-canvas # Core UI # Exclude tutorials folder for now because they are not owned by Kibana app and most will move out soon @@ -85,6 +146,12 @@ /src/plugins/home/server/*.ts @elastic/kibana-core-ui /src/plugins/home/server/services/ @elastic/kibana-core-ui /x-pack/plugins/global_search_bar/ @elastic/kibana-core-ui +#CC# /src/legacy/core_plugins/newsfeed @elastic/kibana-core-ui +#CC# /src/plugins/newsfeed @elastic/kibana-core-ui +#CC# /src/plugins/home/public @elastic/kibana-core-ui +#CC# /src/plugins/home/server/services/ @elastic/kibana-core-ui +#CC# /src/plugins/home/ @elastic/kibana-core-ui +#CC# /x-pack/plugins/global_search_providers/ @elastic/kibana-core-ui # Observability UIs /x-pack/plugins/infra/ @elastic/logs-metrics-ui @@ -110,6 +177,14 @@ /x-pack/test/functional/apps/maps/ @elastic/kibana-gis /x-pack/test/functional/es_archives/maps/ @elastic/kibana-gis /x-pack/test/visual_regression/tests/maps/index.js @elastic/kibana-gis +#CC# /src/legacy/core_plugins/region_map @elastic/kibana-gis +#CC# /src/legacy/core_plugins/tile_map @elastic/kibana-gis +#CC# /src/plugins/maps_legacy/ @elastic/kibana-gis +#CC# /x-pack/plugins/file_upload @elastic/kibana-gis +#CC# /x-pack/plugins/maps_legacy_licensing @elastic/kibana-gis +#CC# /src/plugins/home/server/tutorials @elastic/kibana-gis +#CC# /src/plugins/tile_map/ @elastic/kibana-gis +#CC# /src/plugins/region_map/ @elastic/kibana-gis # Operations /src/dev/ @elastic/kibana-operations @@ -132,6 +207,7 @@ /src/legacy/server/warnings/ @elastic/kibana-operations /.ci/es-snapshots/ @elastic/kibana-operations /vars/ @elastic/kibana-operations +#CC# /packages/kbn-expect/ @elastic/kibana-operations # Quality Assurance /src/dev/code_coverage @elastic/kibana-qa @@ -158,6 +234,31 @@ /src/plugins/status_page/ @elastic/kibana-platform /src/plugins/saved_objects_management/ @elastic/kibana-platform /src/dev/run_check_published_api_changes.ts @elastic/kibana-platform +#CC# /src/core/server/csp/ @elastic/kibana-platform +#CC# /src/legacy/core_plugins/kibana/server/lib @elastic/kibana-platform +#CC# /src/legacy/core_plugins/kibana/server/lib/management/saved_objects @elastic/kibana-platform +#CC# /src/legacy/core_plugins/kibana/server/routes/api/import/ @elastic/kibana-platform +#CC# /src/legacy/core_plugins/kibana/server/routes/api/export/ @elastic/kibana-platform +#CC# /src/legacy/core_plugins/elasticsearch @elastic/kibana-platform +#CC# /src/legacy/core_plugins/testbed @elastic/kibana-platform +#CC# /src/legacy/server/config/ @elastic/kibana-platform +#CC# /src/legacy/server/http/ @elastic/kibana-platform +#CC# /src/legacy/server/status/ @elastic/kibana-platform +#CC# /src/legacy/ui/public/new_platform @elastic/kibana-platform +#CC# /src/legacy/ui/public/plugin_discovery @elastic/kibana-platform +#CC# /src/legacy/ui/public/chrome @elastic/kibana-platform +#CC# /src/legacy/ui/public/notify @elastic/kibana-platform +#CC# /src/legacy/ui/public/documentation_links @elastic/kibana-platform +#CC# /src/legacy/ui/public/autoload @elastic/kibana-platform +#CC# /src/plugins/legacy_export/ @elastic/kibana-platform +#CC# /src/plugins/status_page/ @elastic/kibana-platform +#CC# /src/plugins/testbed/server/ @elastic/kibana-platform +#CC# /x-pack/legacy/plugins/xpack_main/server/ @elastic/kibana-platform +#CC# /x-pack/legacy/server/lib/ @elastic/kibana-platform +#CC# /x-pack/plugins/cloud/ @elastic/kibana-platform +#CC# /x-pack/plugins/features/ @elastic/kibana-platform +#CC# /x-pack/plugins/global_search/ @elastic/kibana-platform +#CC# /src/legacy/plugin_discovery/ @elastic/kibana-platform # Security /src/core/server/csp/ @elastic/kibana-security @elastic/kibana-platform @@ -177,12 +278,19 @@ /x-pack/test/security_functional/ @elastic/kibana-security /x-pack/test/spaces_api_integration/ @elastic/kibana-security /x-pack/test/token_api_integration/ @elastic/kibana-security +#CC# /src/legacy/ui/public/capabilities @elastic/kibana-security +#CC# /x-pack/legacy/plugins/encrypted_saved_objects/ @elastic/kibana-security +#CC# /x-pack/plugins/security_solution/ @elastic/kibana-security +#CC# /x-pack/plugins/security/ @elastic/kibana-security +#CC# /x-pack/plugins/audit_trail/ @elastic/kibana-security # Kibana Localization /src/dev/i18n/ @elastic/kibana-localization /src/legacy/server/i18n/ @elastic/kibana-localization /src/core/public/i18n/ @elastic/kibana-localization /packages/kbn-i18n/ @elastic/kibana-localization +#CC# /src/legacy/server/i18n/ @elastic/kibana-localization +#CC# /x-pack/plugins/translations/ @elastic/kibana-localization # Kibana Telemetry /packages/kbn-analytics/ @elastic/kibana-telemetry @@ -211,6 +319,11 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib /x-pack/plugins/triggers_actions_ui/ @elastic/kibana-alerting-services /x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/ @elastic/kibana-alerting-services /x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/ @elastic/kibana-alerting-services +#CC# /x-pack/legacy/plugins/actions/ @elastic/kibana-alerting-services +#CC# /x-pack/legacy/plugins/alerting/ @elastic/kibana-alerting-services +#CC# /x-pack/legacy/plugins/task_manager @elastic/kibana-alerting-services +#CC# /x-pack/legacy/plugins/triggers_actions_ui/ @elastic/kibana-alerting-services +#CC# /x-pack/plugins/alerting_builtins @elastic/kibana-alerting-services # Enterprise Search # Shared @@ -248,6 +361,12 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib /x-pack/plugins/ingest_pipelines/ @elastic/es-ui /packages/kbn-ace/ @elastic/es-ui /packages/kbn-monaco/ @elastic/es-ui +#CC# /x-pack/legacy/plugins/rollup/ @elastic/es-ui +#CC# /x-pack/legacy/server/lib/create_router/ @elastic/es-ui +#CC# /x-pack/legacy/server/lib/check_license/ @elastic/es-ui +#CC# /x-pack/plugins/console_extensions/ @elastic/es-ui +#CC# /x-pack/plugins/cross_cluster_replication/ @elastic/es-ui +#CC# /x-pack/plugins/es_ui_shared/ @elastic/es-u # Endpoint /x-pack/plugins/endpoint/ @elastic/endpoint-app-team @elastic/siem @@ -257,6 +376,9 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib /x-pack/test/functional/es_archives/endpoint/ @elastic/endpoint-app-team @elastic/siem /x-pack/test/plugin_functional/plugins/resolver_test/ @elastic/endpoint-app-team @elastic/siem /x-pack/test/plugin_functional/test_suites/resolver/ @elastic/endpoint-app-team @elastic/siem +#CC# /x-pack/legacy/plugins/siem/ @elastic/siem +#CC# /x-pack/plugins/siem/ @elastic/siem +#CC# /x-pack/plugins/security_solution/ @elastic/siem # Security Solution /x-pack/plugins/security_solution/ @elastic/siem @elastic/endpoint-app-team @@ -271,6 +393,7 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib # Design (at the bottom for specificity of SASS files) **/*.scss @elastic/kibana-design +#CC# /packages/kbn-ui-framework/ @elastic/kibana-design # Core design /src/plugins/dashboard/**/*.scss @elastic/kibana-core-ui-designers @@ -292,3 +415,9 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib /x-pack/plugins/endpoint/**/*.scss @elastic/security-design /x-pack/plugins/security_solution/**/*.scss @elastic/security-design +# Logstash +#CC# /x-pack/plugins/logstash/ @elastic/logstash + +# Reporting +#CC# /x-pack/plugins/reporting/ @elastic/kibana-reporting-services + diff --git a/scripts/load_team_assignment.js b/scripts/generate_team_assignments.js similarity index 96% rename from scripts/load_team_assignment.js rename to scripts/generate_team_assignments.js index b8f5edc833634..9dcb9bb90e0fd 100644 --- a/scripts/load_team_assignment.js +++ b/scripts/generate_team_assignments.js @@ -18,4 +18,4 @@ */ require('../src/setup_node_env'); -require('../src/dev/code_coverage/ingest_coverage/team_assignment').uploadTeamAssignmentJson(); +require('../src/dev/code_coverage/ingest_coverage/team_assignment').generateTeamAssignments(); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/either.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/either.test.js index 3a493539f6743..0ae55508e8434 100644 --- a/src/dev/code_coverage/ingest_coverage/__tests__/either.test.js +++ b/src/dev/code_coverage/ingest_coverage/__tests__/either.test.js @@ -53,7 +53,7 @@ describe(`either datatype functions`, () => { expect(sut.inspect()).to.be('Right(undefined)'); }); }); - describe(`'fromNullable`, () => { + describe(`fromNullable`, () => { it(`should continue processing if a truthy is calculated`, () => { attempt({ detail: 'x' }).fold( () => {}, @@ -64,4 +64,18 @@ describe(`either datatype functions`, () => { attempt(false).fold(expectNull, () => {}); }); }); + describe(`predicate fns`, () => { + it(`right.isRight() is true`, () => { + expect(Either.right('a').isRight()).to.be(true); + }); + it(`right.isLeft() is false`, () => { + expect(Either.right('a').isLeft()).to.be(false); + }); + it(`left.isLeft() is true`, () => { + expect(Either.left().isLeft()).to.be(true); + }); + it(`left.isRight() is true`, () => { + expect(Either.left().isRight()).to.be(false); + }); + }); }); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js new file mode 100644 index 0000000000000..371695337ed56 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js @@ -0,0 +1,60 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { enumeratePatterns } from '../team_assignment/enumerate_patterns'; +import { ToolingLog, REPO_ROOT } from '@kbn/dev-utils'; + +const log = new ToolingLog({ + level: 'info', + writeTo: process.stdout, +}); + +describe(`enumeratePatterns`, () => { + it(`should resolve x-pack/plugins/reporting/server/browsers/extract/unzip.js to kibana-reporting`, () => { + const actual = enumeratePatterns(REPO_ROOT)(log)( + new Map([['x-pack/plugins/reporting', ['kibana-reporting']]]) + ); + + expect( + actual[0].includes( + 'x-pack/plugins/reporting/server/browsers/extract/unzip.js kibana-reporting' + ) + ).to.be(true); + }); + it(`should resolve src/plugins/charts/public/static/color_maps/color_maps.ts to kibana-app`, () => { + const actual = enumeratePatterns(REPO_ROOT)(log)( + new Map([['src/plugins/charts/public/static/color_maps', ['kibana-app']]]) + ); + + expect(actual[0][0]).to.be( + 'src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app' + ); + }); + it(`should resolve x-pack/plugins/security_solution/public/common/components/exceptions/builder/translations.ts to kibana-security`, () => { + const short = 'x-pack/plugins/security_solution'; + const actual = enumeratePatterns(REPO_ROOT)(log)(new Map([[short, ['kibana-security']]])); + + expect( + actual[0].includes( + `${short}/public/common/components/exceptions/builder/translations.ts kibana-security` + ) + ).to.be(true); + }); +}); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/enumeration_helpers.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/enumeration_helpers.test.js new file mode 100644 index 0000000000000..f480135b45ac6 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/__tests__/enumeration_helpers.test.js @@ -0,0 +1,50 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { tryPath } from '../team_assignment/enumeration_helpers'; + +describe(`enumeration helper fns`, () => { + describe(`tryPath`, () => { + describe(`w/o glob file paths`, () => { + it(`should return a right on an existing path`, () => { + const aPath = 'src/dev/code_coverage/ingest_coverage/ingest.js'; + const actual = tryPath(aPath); + expect(actual.isRight()).to.be(true); + }); + it(`should return a left on a non existing path`, () => { + const aPath = 'src/dev/code_coverage/ingest_coverage/does_not_exist.js'; + const actual = tryPath(aPath); + expect(actual.isLeft()).to.be(true); + }); + }); + describe(`with glob file paths`, () => { + it(`should not error when the glob expands to nothing, but instead return a Left`, () => { + const aPath = 'src/legacy/core_plugins/kibana/public/home/*.ts'; + const actual = tryPath(aPath); + expect(actual.isLeft()).to.be(true); + }); + it(`should return a right on a glob that does indeed expand`, () => { + const aPath = 'src/dev/code_coverage/ingest_coverage/*.js'; + const actual = tryPath(aPath); + expect(actual.isRight()).to.be(true); + }); + }); + }); +}); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/ingest_helpers.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/ingest_helpers.test.js index 7ca7279e0d64c..f668c1f86f5b0 100644 --- a/src/dev/code_coverage/ingest_coverage/__tests__/ingest_helpers.test.js +++ b/src/dev/code_coverage/ingest_coverage/__tests__/ingest_helpers.test.js @@ -18,13 +18,8 @@ */ import expect from '@kbn/expect'; -import { maybeTeamAssign, whichIndex } from '../ingest_helpers'; -import { - TOTALS_INDEX, - RESEARCH_TOTALS_INDEX, - RESEARCH_COVERAGE_INDEX, - // COVERAGE_INDEX, -} from '../constants'; +import { whichIndex } from '../ingest_helpers'; +import { TOTALS_INDEX, RESEARCH_TOTALS_INDEX, RESEARCH_COVERAGE_INDEX } from '../constants'; describe(`Ingest Helper fns`, () => { describe(`whichIndex`, () => { @@ -56,20 +51,4 @@ describe(`Ingest Helper fns`, () => { }); }); }); - describe(`maybeTeamAssign`, () => { - describe(`against a coverage index`, () => { - it(`should have the pipeline prop`, () => { - const actual = maybeTeamAssign(true, { a: 'blah' }); - expect(actual).to.have.property('pipeline'); - }); - }); - describe(`against a totals index`, () => { - describe(`for "prod"`, () => { - it(`should not have the pipeline prop`, () => { - const actual = maybeTeamAssign(false, { b: 'blah' }); - expect(actual).not.to.have.property('pipeline'); - }); - }); - }); - }); }); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.json b/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.json deleted file mode 100644 index 355c484a84fa3..0000000000000 --- a/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "abc": "123" -} diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt b/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt new file mode 100644 index 0000000000000..d8924bd563f30 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt @@ -0,0 +1,194 @@ +x-pack/plugins/dashboard_enhanced/public/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/mocks.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/plugin.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/drilldown_shared.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.test.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.test.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/i18n.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/index.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/menu_item.test.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/menu_item.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/test_helpers.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_drilldowns_services.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/collect_config_container.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.story.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.test.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/i18n.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/i18n.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/constants.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/drilldown.test.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/drilldown.tsx kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/i18n.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/types.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/drilldowns/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/public/services/index.ts kibana-app +x-pack/plugins/dashboard_enhanced/scripts/storybook.js kibana-app +x-pack/plugins/discover_enhanced/common/config.ts kibana-app +x-pack/plugins/discover_enhanced/common/index.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/index.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/kibana_url.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/explore_data/shared.ts kibana-app +x-pack/plugins/discover_enhanced/public/actions/index.ts kibana-app +x-pack/plugins/discover_enhanced/public/index.ts kibana-app +x-pack/plugins/discover_enhanced/public/plugin.ts kibana-app +x-pack/plugins/discover_enhanced/server/config.ts kibana-app +x-pack/plugins/discover_enhanced/server/index.ts kibana-app +x-pack/plugins/discover_enhanced/server/plugin.ts kibana-app +x-pack/plugins/lens/common/api.ts kibana-app +x-pack/plugins/lens/common/constants.ts kibana-app +x-pack/plugins/lens/common/index.ts kibana-app +x-pack/plugins/lens/common/types.ts kibana-app +x-pack/plugins/lens/config.ts kibana-app +x-pack/plugins/lens/public/app_plugin/app.test.tsx kibana-app +x-pack/plugins/lens/public/app_plugin/app.tsx kibana-app +x-pack/plugins/lens/public/app_plugin/index.ts kibana-app +x-pack/plugins/lens/public/app_plugin/mounter.tsx kibana-app +x-pack/plugins/lens/public/datatable_visualization/expression.test.tsx kibana-app +x-pack/plugins/lens/public/datatable_visualization/expression.tsx kibana-app +x-pack/plugins/lens/public/datatable_visualization/index.ts kibana-app +x-pack/plugins/lens/public/datatable_visualization/visualization.test.tsx kibana-app +x-pack/plugins/lens/public/datatable_visualization/visualization.tsx kibana-app +x-pack/plugins/lens/public/debounced_component/debounced_component.test.tsx kibana-app +x-pack/plugins/lens/public/debounced_component/debounced_component.tsx kibana-app +x-pack/plugins/lens/public/debounced_component/index.ts kibana-app +x-pack/plugins/lens/public/drag_drop/drag_drop.test.tsx kibana-app +x-pack/plugins/lens/public/drag_drop/drag_drop.tsx kibana-app +x-pack/plugins/lens/public/drag_drop/index.ts kibana-app +x-pack/plugins/lens/public/drag_drop/providers.test.tsx kibana-app +x-pack/plugins/lens/public/drag_drop/providers.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/__mocks__/expression_helpers.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/__mocks__/suggestion_helpers.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_popover.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/index.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions.test.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_settings.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/types.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/expression_helpers.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/index.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.test.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.test.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_helpers.test.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_helpers.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/index.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable_factory.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/embeddable/expression_wrapper.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/format_column.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/index.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/merge_tables.test.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/merge_tables.ts kibana-app +x-pack/plugins/lens/public/editor_frame_service/mocks.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/service.test.tsx kibana-app +x-pack/plugins/lens/public/editor_frame_service/service.tsx kibana-app +x-pack/plugins/lens/public/help_menu_util.tsx kibana-app +x-pack/plugins/lens/public/id_generator/id_generator.test.ts kibana-app +x-pack/plugins/lens/public/id_generator/id_generator.ts kibana-app +x-pack/plugins/lens/public/id_generator/index.ts kibana-app +x-pack/plugins/lens/public/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/__mocks__/loader.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/__mocks__/state_helpers.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/format_selector.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/popover_editor.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/document_field.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/field_item.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.test.tsx kibana-app +x-pack/plugins/reporting/server/browsers/download/clean.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/download/download.test.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/download/download.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/download/index.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/download/util.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/extract/extract.js kibana-reporting +x-pack/plugins/reporting/server/browsers/extract/extract_error.js kibana-reporting +x-pack/plugins/reporting/server/browsers/extract/index.js kibana-reporting +x-pack/plugins/reporting/server/browsers/extract/unzip.js kibana-reporting +x-pack/plugins/reporting/server/browsers/index.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/install.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/network_policy.test.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/network_policy.ts kibana-reporting +x-pack/plugins/reporting/server/browsers/safe_child_process.ts kibana-reporting +x-pack/plugins/reporting/server/config/config.ts kibana-reporting +x-pack/plugins/reporting/server/config/create_config.test.ts kibana-reporting +x-pack/plugins/reporting/server/config/create_config.ts kibana-reporting +x-pack/plugins/reporting/server/config/default_chromium_sandbox_disabled.test.ts kibana-reporting +x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/lens_field_icon.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/lens_field_icon.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/loader.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/loader.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/mocks.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/no_fields_callout.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/no_fields_callout.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.test.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms.tsx kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/index.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/pure_helpers.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/pure_helpers.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/rename_columns.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/rename_columns.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.test.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/types.ts kibana-app +x-pack/plugins/lens/public/indexpattern_datasource/utils.ts kibana-app +x-pack/plugins/lens/public/lens_ui_telemetry/factory.test.ts kibana-app diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/team_assignment.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/team_assignment.test.js deleted file mode 100644 index e597ffb5d2f4b..0000000000000 --- a/src/dev/code_coverage/ingest_coverage/__tests__/team_assignment.test.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import expect from '@kbn/expect'; -import { fetch } from '../team_assignment/get_data'; -import { noop } from '../utils'; - -describe(`Team Assignment`, () => { - const mockPath = 'src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.json'; - describe(`fetch fn`, () => { - it(`should be a fn`, () => { - expect(typeof fetch).to.be('function'); - }); - describe(`applied to a path that exists`, () => { - it(`should return the contents of the path`, () => { - const sut = fetch(mockPath); - expect(sut.chain(JSON.parse)).to.have.property('abc'); - }); - }); - describe(`applied to an non-existing path`, () => { - it(`should return a Left with the error message within`, () => { - const expectLeft = (err) => - expect(err.message).to.contain('ENOENT: no such file or directory'); - - fetch('fake_path.json').fold(expectLeft, noop); - }); - }); - }); -}); diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js index 746bccc3d718a..b6d17f83e327e 100644 --- a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js +++ b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js @@ -18,9 +18,17 @@ */ import expect from '@kbn/expect'; -import { ciRunUrl, coveredFilePath, itemizeVcs, prokPrevious } from '../transforms'; +import { + ciRunUrl, + coveredFilePath, + itemizeVcs, + prokPrevious, + teamAssignment, + last, +} from '../transforms'; +import { ToolingLog } from '@kbn/dev-utils'; -describe(`Transform fn`, () => { +describe(`Transform fns`, () => { describe(`ciRunUrl`, () => { it(`should add the url when present in the environment`, () => { process.env.CI_RUN_URL = 'blah'; @@ -83,4 +91,59 @@ describe(`Transform fn`, () => { ); }); }); + describe(`teamAssignment`, () => { + const teamAssignmentsPathMOCK = + 'src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt'; + const coveredFilePath = 'x-pack/plugins/reporting/server/browsers/extract/unzip.js'; + const obj = { coveredFilePath }; + const log = new ToolingLog({ + level: 'info', + writeTo: process.stdout, + }); + + describe(`with a coveredFilePath of ${coveredFilePath}`, () => { + const expected = 'kibana-reporting'; + it(`should resolve to ${expected}`, async () => { + const actual = await teamAssignment(teamAssignmentsPathMOCK)(log)(obj); + const { team } = actual; + expect(team).to.eql(expected); + }); + }); + + describe(`with a coveredFilePath of src/plugins/charts/public/static/color_maps/color_maps.ts`, () => { + const expected = 'kibana-reporting'; + it(`should resolve to ${expected}`, async () => { + const actual = await teamAssignment(teamAssignmentsPathMOCK)(log)(obj); + const { team } = actual; + expect(team).to.eql(expected); + }); + }); + + describe(`last fn`, () => { + describe(`applied to n results`, () => { + it(`should pick the last one`, () => { + const nteams = `src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app +src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app-arch`; + + const actual = last(nteams); + + expect(actual).to.be( + 'src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app-arch' + ); + }); + }); + describe(`applied to 1 result`, () => { + it(`should pick that 1 result`, () => { + const nteams = + 'src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app-arch'; + + const actual = last(nteams); + + expect(actual).to.be( + 'src/plugins/charts/public/static/color_maps/color_maps.ts kibana-app-arch' + ); + }); + }); + }); + }); }); diff --git a/src/dev/code_coverage/ingest_coverage/constants.js b/src/dev/code_coverage/ingest_coverage/constants.js index f2f467e461ae5..8f850ac2f1f12 100644 --- a/src/dev/code_coverage/ingest_coverage/constants.js +++ b/src/dev/code_coverage/ingest_coverage/constants.js @@ -27,8 +27,6 @@ export const RESEARCH_COVERAGE_INDEX = export const RESEARCH_TOTALS_INDEX = process.env.RESEARCH_TOTALS_INDEX || `qa_research_total_code_coverage`; -export const TEAM_ASSIGNMENT_PIPELINE_NAME = process.env.PIPELINE_NAME || 'team_assignment'; - export const CODE_COVERAGE_CI_JOB_NAME = 'elastic+kibana+code-coverage'; export const RESEARCH_CI_JOB_NAME = 'elastic+kibana+qa-research'; export const CI_JOB_NAME = process.env.COVERAGE_JOB_NAME || RESEARCH_CI_JOB_NAME; diff --git a/src/dev/code_coverage/ingest_coverage/either.js b/src/dev/code_coverage/ingest_coverage/either.js index eeb48893f18d8..326f238074e30 100644 --- a/src/dev/code_coverage/ingest_coverage/either.js +++ b/src/dev/code_coverage/ingest_coverage/either.js @@ -20,11 +20,15 @@ /* eslint new-cap: 0 */ /* eslint no-unused-vars: 0 */ +import { always } from './utils'; + export const Right = (x) => ({ chain: (f) => f(x), map: (f) => Right(f(x)), fold: (leftFn, rightFn) => rightFn(x), inspect: () => `Right(${x})`, + isLeft: always(false), + isRight: always(true), }); Right.of = function of(x) { @@ -40,6 +44,8 @@ export const Left = (x) => ({ map: (f) => Left(x), fold: (leftFn, rightFn) => leftFn(x), inspect: () => `Left(${x})`, + isLeft: always(true), + isRight: always(false), }); Left.of = function of(x) { diff --git a/src/dev/code_coverage/ingest_coverage/index.js b/src/dev/code_coverage/ingest_coverage/index.js index 4047ee78ee6ec..f29739c4cf29c 100644 --- a/src/dev/code_coverage/ingest_coverage/index.js +++ b/src/dev/code_coverage/ingest_coverage/index.js @@ -20,13 +20,16 @@ import { resolve } from 'path'; import { prok } from './process'; import { run, createFlagError } from '@kbn/dev-utils'; +import { pathExists } from './team_assignment/enumeration_helpers'; +import { id, reThrow } from './utils'; const ROOT = resolve(__dirname, '../../../..'); const flags = { - string: ['path', 'verbose', 'vcsInfoPath'], + string: ['path', 'verbose', 'vcsInfoPath', 'teamAssignmentsPath'], help: ` --path Required, path to the file to extract coverage data --vcsInfoPath Required, path to the git info file (branch, sha, author, & commit msg) +--teamAssignmentsPath Required, path to the team assignments data file `, }; @@ -36,12 +39,18 @@ export function runCoverageIngestionCli() { if (flags.path === '') throw createFlagError('please provide a single --path flag'); if (flags.vcsInfoPath === '') throw createFlagError('please provide a single --vcsInfoPath flag'); + if (flags.teamAssignmentsPath === '') + throw createFlagError('please provide a single --teamAssignments flag'); if (flags.verbose) log.verbose(`Verbose logging enabled`); const resolveRoot = resolve.bind(null, ROOT); const jsonSummaryPath = resolveRoot(flags.path); const vcsInfoFilePath = resolveRoot(flags.vcsInfoPath); - prok({ jsonSummaryPath, vcsInfoFilePath }, log); + const { teamAssignmentsPath } = flags; + + pathExists(teamAssignmentsPath).fold(reThrow, id); + + prok({ jsonSummaryPath, vcsInfoFilePath, teamAssignmentsPath }, log); }, { description: ` diff --git a/src/dev/code_coverage/ingest_coverage/ingest.js b/src/dev/code_coverage/ingest_coverage/ingest.js index 31a94d161a3cc..24da7a9338a46 100644 --- a/src/dev/code_coverage/ingest_coverage/ingest.js +++ b/src/dev/code_coverage/ingest_coverage/ingest.js @@ -19,7 +19,7 @@ const { Client } = require('@elastic/elasticsearch'); import { createFailError } from '@kbn/dev-utils'; -import { RESEARCH_CI_JOB_NAME, TEAM_ASSIGNMENT_PIPELINE_NAME } from './constants'; +import { RESEARCH_CI_JOB_NAME } from './constants'; import { errMsg, redact, whichIndex } from './ingest_helpers'; import { pretty, green } from './utils'; import { right, left } from './either'; @@ -34,14 +34,10 @@ const isResearchJob = process.env.COVERAGE_JOB_NAME === RESEARCH_CI_JOB_NAME ? t export const ingest = (log) => async (body) => { const isTotal = !!body.isTotal; const index = whichIndex(isResearchJob)(isTotal); - const isACoverageIndex = isTotal ? false : true; const stringified = pretty(body); - const pipeline = TEAM_ASSIGNMENT_PIPELINE_NAME; - const finalPayload = isACoverageIndex - ? { index, body: stringified, pipeline } - : { index, body: stringified }; + const finalPayload = { index, body: stringified }; const justLog = dontSendButLog(log); const doSendToIndex = doSend(index); @@ -77,11 +73,11 @@ async function send(logF, idx, redactedEsHostUrl, client, requestBody) { const sendMsg = (actuallySent, redactedEsHostUrl, payload) => { const { index, body } = payload; return `### ${actuallySent ? 'Sent' : 'Fake Sent'}: -${payload.pipeline ? `\t### Team Assignment Pipeline: ${green(payload.pipeline)}` : ''} ${redactedEsHostUrl ? `\t### ES Host: ${redactedEsHostUrl}` : ''} + \t### Index: ${green(index)} + \t### payload.body: ${body} -${process.env.NODE_ENV === 'integration_test' ? `ingest-pipe=>${payload.pipeline}` : ''} `; }; diff --git a/src/dev/code_coverage/ingest_coverage/ingest_helpers.js b/src/dev/code_coverage/ingest_coverage/ingest_helpers.js index 86bcf03977082..a7822a671887b 100644 --- a/src/dev/code_coverage/ingest_coverage/ingest_helpers.js +++ b/src/dev/code_coverage/ingest_coverage/ingest_helpers.js @@ -24,7 +24,6 @@ import { COVERAGE_INDEX, RESEARCH_COVERAGE_INDEX, RESEARCH_TOTALS_INDEX, - TEAM_ASSIGNMENT_PIPELINE_NAME, TOTALS_INDEX, } from './constants'; @@ -70,12 +69,6 @@ function color(whichColor) { }; } -export function maybeTeamAssign(isACoverageIndex, body) { - const doAddTeam = isACoverageIndex ? true : false; - const payload = doAddTeam ? { ...body, pipeline: TEAM_ASSIGNMENT_PIPELINE_NAME } : body; - return payload; -} - export function whichIndex(isResearchJob) { return (isTotal) => isTotal ? whichTotalsIndex(isResearchJob) : whichCoverageIndex(isResearchJob); diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/ingest_coverage.test.js b/src/dev/code_coverage/ingest_coverage/integration_tests/ingest_coverage.test.js index ba73922ec508a..a4d07215efec1 100644 --- a/src/dev/code_coverage/ingest_coverage/integration_tests/ingest_coverage.test.js +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/ingest_coverage.test.js @@ -20,6 +20,7 @@ import { resolve } from 'path'; import execa from 'execa'; import expect from '@kbn/expect'; +import shell from 'shelljs'; const ROOT_DIR = resolve(__dirname, '../../../../..'); const MOCKS_DIR = resolve(__dirname, './mocks'); @@ -35,9 +36,14 @@ const env = { }; describe('Ingesting coverage', () => { + const teamAssignmentsPath = + 'src/dev/code_coverage/ingest_coverage/team_assignment/team_assignments.txt'; + const verboseArgs = [ 'scripts/ingest_coverage.js', '--verbose', + '--teamAssignmentsPath', + teamAssignmentsPath, '--vcsInfoPath', 'src/dev/code_coverage/ingest_coverage/integration_tests/mocks/VCS_INFO.txt', '--path', @@ -46,6 +52,21 @@ describe('Ingesting coverage', () => { const summaryPath = 'jest-combined/coverage-summary-manual-mix.json'; const resolved = resolve(MOCKS_DIR, summaryPath); + beforeAll(async () => { + const params = [ + 'scripts/generate_team_assignments.js', + '--src', + '.github/CODEOWNERS', + '--dest', + teamAssignmentsPath, + ]; + await execa(process.execPath, params, { cwd: ROOT_DIR, env }); + }); + + afterAll(() => { + shell.rm(teamAssignmentsPath); + }); + describe(`staticSiteUrl`, () => { let actualUrl = ''; const siteUrlRegex = /"staticSiteUrl":\s*(.+,)/; diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/CODEOWNERS b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/CODEOWNERS new file mode 100644 index 0000000000000..1822c3fd95e34 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/CODEOWNERS @@ -0,0 +1,6 @@ +# GitHub CODEOWNERS definition +# Identify which groups will be pinged by changes to different parts of the codebase. +# For more info, see https://help.github.com/articles/about-codeowners/ + +# App +/x-pack/plugins/code/ @elastic/kibana-tre diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-possibly-n-teams.json b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-possibly-n-teams.json new file mode 100644 index 0000000000000..9e66d8f5cb101 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-possibly-n-teams.json @@ -0,0 +1,28 @@ +{ + "/var/lib/jenkins/workspace/elastic+kibana+code-coverage/kibana/src/plugins/charts/public/static/color_maps/color_maps.ts": { + "lines": { + "total": 4, + "covered": 4, + "skipped": 0, + "pct": 100 + }, + "functions": { + "total": 1, + "covered": 1, + "skipped": 0, + "pct": 100 + }, + "statements": { + "total": 4, + "covered": 4, + "skipped": 0, + "pct": 100 + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 100 + } + } +} diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-qa-research-job.json b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-qa-research-job.json new file mode 100644 index 0000000000000..6e4d8ea954c2c --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/mocks/jest-combined/coverage-summary-qa-research-job.json @@ -0,0 +1,28 @@ +{ + "/var/lib/jenkins/workspace/elastic+kibana+qa-research/kibana/x-pack/plugins/reporting/server/browsers/extract/unzip.js": { + "lines": { + "total": 4, + "covered": 4, + "skipped": 0, + "pct": 100 + }, + "functions": { + "total": 1, + "covered": 1, + "skipped": 0, + "pct": 100 + }, + "statements": { + "total": 4, + "covered": 4, + "skipped": 0, + "pct": 100 + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 100 + } + } +} diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js b/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js new file mode 100644 index 0000000000000..c666581ddb08c --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js @@ -0,0 +1,58 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { resolve } from 'path'; +import execa from 'execa'; +import expect from '@kbn/expect'; +import shell from 'shelljs'; + +const ROOT_DIR = resolve(__dirname, '../../../../..'); +const MOCKS_DIR = resolve(__dirname, './mocks'); + +describe('Team Assignment', () => { + const teamAssignmentsPath = + 'src/dev/code_coverage/ingest_coverage/team_assignment/team_assignments.txt'; + const mockCodeOwners = 'CODEOWNERS'; + const resolved = resolve(MOCKS_DIR, mockCodeOwners); + + beforeAll(async () => { + const params = [ + 'scripts/generate_team_assignments.js', + '--src', + resolved, + '--dest', + teamAssignmentsPath, + ]; + await execa(process.execPath, params, { cwd: ROOT_DIR }); + }); + + afterAll(() => { + shell.rm(teamAssignmentsPath); + }); + + describe(`when the codeowners file contains #CC#`, () => { + it(`should strip the prefix and still drill down through the fs`, async () => { + const { stdout } = await execa('grep', ['tre', teamAssignmentsPath], { cwd: ROOT_DIR }); + expect(stdout).to.be(`x-pack/plugins/code/server/config.ts kibana-tre +x-pack/plugins/code/server/index.ts kibana-tre +x-pack/plugins/code/server/plugin.test.ts kibana-tre +x-pack/plugins/code/server/plugin.ts kibana-tre`); + }); + }); +}); diff --git a/src/dev/code_coverage/ingest_coverage/process.js b/src/dev/code_coverage/ingest_coverage/process.js index 85a42cfffa6e2..28a7c9ccd41b0 100644 --- a/src/dev/code_coverage/ingest_coverage/process.js +++ b/src/dev/code_coverage/ingest_coverage/process.js @@ -18,7 +18,7 @@ */ import { fromEventPattern, of, fromEvent } from 'rxjs'; -import { concatMap, delay, map, takeUntil } from 'rxjs/operators'; +import { concatMap, delay, map, mergeMap, takeUntil } from 'rxjs/operators'; import jsonStream from './json_stream'; import { pipe, noop, green, always } from './utils'; import { ingest } from './ingest'; @@ -32,6 +32,7 @@ import { coveredFilePath, ciRunUrl, itemizeVcs, + teamAssignment, } from './transforms'; import { resolve } from 'path'; import { createReadStream } from 'fs'; @@ -50,9 +51,10 @@ const addPrePopulatedTimeStamp = addTimeStamp(process.env.TIME_STAMP || formatte const preamble = pipe(statsAndstaticSiteUrl, rootDirAndOrigPath, buildId, addPrePopulatedTimeStamp); const addTestRunnerAndStaticSiteUrl = pipe(testRunner, staticSite(staticSiteUrlBase)); -const transform = (jsonSummaryPath) => (log) => (vcsInfo) => { +const transform = (jsonSummaryPath) => (log) => (vcsInfo) => (teamAssignmentsPath) => { const objStream = jsonStream(jsonSummaryPath).on('done', noop); const itemizeVcsInfo = itemizeVcs(vcsInfo); + const assignTeams = teamAssignment(teamAssignmentsPath)(log); const jsonSummary$ = (_) => objStream.on('node', '!.*', _); @@ -64,6 +66,7 @@ const transform = (jsonSummaryPath) => (log) => (vcsInfo) => { map(ciRunUrl), map(addJsonSummaryPath(jsonSummaryPath)), map(addTestRunnerAndStaticSiteUrl), + mergeMap(assignTeams), concatMap((x) => of(x).pipe(delay(ms))) ) .subscribe(ingest(log)); @@ -83,7 +86,7 @@ const vcsInfoLines$ = (vcsInfoFilePath) => { return fromEvent(rl, 'line').pipe(takeUntil(fromEvent(rl, 'close'))); }; -export const prok = ({ jsonSummaryPath, vcsInfoFilePath }, log) => { +export const prok = ({ jsonSummaryPath, vcsInfoFilePath, teamAssignmentsPath }, log) => { validateRoot(COVERAGE_INGESTION_KIBANA_ROOT, log); logAll(jsonSummaryPath, log); @@ -93,7 +96,7 @@ export const prok = ({ jsonSummaryPath, vcsInfoFilePath }, log) => { vcsInfoLines$(vcsInfoFilePath).subscribe( mutateVcsInfo(vcsInfo), (err) => log.error(err), - always(xformWithPath(vcsInfo)) + always(xformWithPath(vcsInfo)(teamAssignmentsPath)) ); }; diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/enumerate_patterns.js b/src/dev/code_coverage/ingest_coverage/team_assignment/enumerate_patterns.js new file mode 100644 index 0000000000000..dcdb32c91b8f8 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/enumerate_patterns.js @@ -0,0 +1,78 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { readdirSync, statSync } from 'fs'; +import { join } from 'path'; +import { + push, + prokGlob, + trim, + isRejectedDir, + isFileAllowed, + isDir, + tryPath, + dropEmpty, + notFound, +} from './enumeration_helpers'; +import { stripLeading } from '../transforms'; + +export const enumeratePatterns = (rootPath) => (log) => (patterns) => { + const res = []; + const resPush = push(res); + const logNotFound = notFound(log); + + for (const entry of patterns) { + const [pathPattern, team] = entry; + const cleaned = stripLeading(pathPattern); + const existsWithOwner = pathExists(team); + + const collect = (x) => existsWithOwner(x).forEach(resPush); + tryPath(cleaned).fold(logNotFound, collect); + } + + return res; + + function pathExists(owner) { + const creeper = (x) => creepFsSync(x, [], rootPath, owner); + return function creepAllAsGlobs(pathPattern) { + return prokGlob(pathPattern).map(creeper).filter(dropEmpty); + }; + } +}; + +function creepFsSync(aPath, xs, rootPath, owner) { + xs = xs || []; + + const joinRoot = join.bind(null, rootPath); + const trimRoot = trim(rootPath); + const joined = joinRoot(aPath); + const isADir = isDir(joined); + + (isADir ? readdirSync(joined) : [aPath]).forEach(maybeRecurse); + + return xs; + + function maybeRecurse(entry) { + const full = isADir ? join(aPath, entry) : entry; + const fullIsDir = statSync(full).isDirectory(); + + if (fullIsDir && !isRejectedDir(full)) xs = creepFsSync(full, xs, rootPath, owner); + else if (isFileAllowed(full)) xs.push(`${trimRoot(full)} ${owner}`); + } +} diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/enumeration_helpers.js b/src/dev/code_coverage/ingest_coverage/team_assignment/enumeration_helpers.js new file mode 100644 index 0000000000000..b06141965d2b6 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/enumeration_helpers.js @@ -0,0 +1,46 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { statSync } from 'fs'; +import isGlob from 'is-glob'; +import glob from 'glob'; +import { left, right, tryCatch } from '../either'; + +export const push = (xs) => (x) => xs.push(x); +export const pathExists = (x) => tryCatch(() => statSync(x)).fold(left, right); +export const isDir = (x) => statSync(x).isDirectory(); +export const prokGlob = (x) => glob.sync(x, { nonull: true }); +export const trim = (ROOT) => (x) => x.replace(`${ROOT}/`, ''); +export const isFileAllowed = (x) => { + const isJsOrTsOrTsxOrJsx = /.(j|t)(s|sx)$/gm; + return isJsOrTsOrTsxOrJsx.test(x); +}; +export const isRejectedDir = (x) => + /node_modules|__tests__|__fixture__|__fixtures__|build\//gm.test(x); +const isGlobFound = (x) => (xs) => (x === xs[0] ? false : true); +export const globExpands = (x) => isGlobFound(x)(prokGlob(x)); +export const tryPath = (x) => { + const isAGlob = isGlob(x); + + if (isAGlob) return globExpands(x) ? right(x) : left(x); + + if (!isAGlob) return pathExists(x).isRight() ? right(x) : left(x); +}; +export const dropEmpty = (x) => x.length > 0; +export const notFound = (log) => (err) => log.error(`\n!!! Not Found: \n${err}`); diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/flush.js b/src/dev/code_coverage/ingest_coverage/team_assignment/flush.js new file mode 100644 index 0000000000000..5150ac2e655f2 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/flush.js @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { writeFileSync } from 'fs'; +import shell from 'shelljs'; +import { tryCatch } from '../either'; +import { id } from '../utils'; + +const encoding = 'utf8'; +const appendUtf8 = { flag: 'a', encoding }; + +export const flush = (dest) => (log) => (assignments) => { + log.verbose(`\n### Flushing assignments to: \n\t${dest}`); + + const writeToFile = writeFileSync.bind(null, dest); + + writeToFile('', { encoding }); + + for (const xs of assignments) xs.forEach((x) => writeToFile(`${x}\n`, appendUtf8)); + + tryCatch(() => maybeShowSize(dest)).fold(id, (x) => { + log.verbose(`\n### Flushed [${x}] lines`); + }); +}; +function maybeShowSize(x) { + const { output } = shell.exec(`wc -l ${x}`, { silent: true }); + return output.match(/\s*\d*\s*/)[0].trim(); +} diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/index.js b/src/dev/code_coverage/ingest_coverage/team_assignment/index.js index 11f9748708283..30112df3b6ba4 100644 --- a/src/dev/code_coverage/ingest_coverage/team_assignment/index.js +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/index.js @@ -17,42 +17,55 @@ * under the License. */ -import { run } from '@kbn/dev-utils'; -import { TEAM_ASSIGNMENT_PIPELINE_NAME } from '../constants'; -import { fetch } from './get_data'; -import { update } from './update_ingest_pipeline'; +import { run, createFlagError, REPO_ROOT } from '@kbn/dev-utils'; +import { parse } from './parse_owners'; +import { flush } from './flush'; +import { enumeratePatterns } from './enumerate_patterns'; +import { pipe } from '../utils'; +import { reduce } from 'rxjs/operators'; -const updatePipeline = update(TEAM_ASSIGNMENT_PIPELINE_NAME); - -const execute = ({ flags, log }) => { - if (flags.verbose) log.verbose(`### Verbose logging enabled`); - - const logLeft = handleErr(log); - const updateAndLog = updatePipeline(log); - - const { path } = flags; - - fetch(path).fold(logLeft, updateAndLog); +const flags = { + string: ['src', 'dest'], + help: ` +--src Required, path to CODEOWNERS file. +--dest Required, destination path of the assignments. + `, }; -function handleErr(log) { - return (msg) => log.error(msg); -} +export const generateTeamAssignments = () => { + run( + ({ flags, log }) => { + if (flags.src === '') throw createFlagError('please provide a single --src flag'); + if (flags.dest === '') throw createFlagError('please provide a single --dest flag'); -const description = ` + const logCreepAndFlush = pipe( + logSuccess(flags.src, log), + enumeratePatterns(REPO_ROOT)(log), + flush(flags.dest)(log) + ); -Upload the latest team assignment pipeline def from src, -to the cluster. + parse(flags.src).pipe(reduce(toMap, new Map())).subscribe(logCreepAndFlush); + }, + { + description: ` - `; +Create a file defining the team assignments, + parsed from .github/CODEOWNERS -const flags = { - string: ['path', 'verbose'], - help: ` ---path Required, path to painless definition for team assignment. - `, + `, + flags, + } + ); }; -const usage = 'node scripts/load_team_assignment.js --verbose --path PATH_TO_PAINLESS_SCRIPT.json'; +function toMap(acc, x) { + acc.set(x[0], x[1][0]); + return acc; +} -export const uploadTeamAssignmentJson = () => run(execute, { description, flags, usage }); +function logSuccess(src, log) { + return (dataObj) => { + log.verbose(`\n### Parsing [${src}] Complete`); + return dataObj; + }; +} diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/ingestion_pipeline_painless.json b/src/dev/code_coverage/ingest_coverage/team_assignment/ingestion_pipeline_painless.json deleted file mode 100644 index 017d208133cdc..0000000000000 --- a/src/dev/code_coverage/ingest_coverage/team_assignment/ingestion_pipeline_painless.json +++ /dev/null @@ -1 +0,0 @@ -{"description":"Kibana code coverage team assignments","processors":[{"script":{"lang":"painless","source":"\n String path = ctx.coveredFilePath; \n if (path.indexOf('src/legacy/core_plugins/kibana/') == 0) {\n\n if (path.indexOf('src/legacy/core_plugins/kibana/common/utils') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/migrations') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/dashboard/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/dev_tools/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/discover/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/home') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/home/np_ready/') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/local_application_service/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/kibana/public/management/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/kibana/server/lib') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/core_plugins/kibana/server/lib/management/saved_objects') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/core_plugins/kibana/server/routes/api/management/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/kibana/server/routes/api/import/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/core_plugins/kibana/server/routes/api/export/') == 0) ctx.team = 'kibana-platform';\n else ctx.team = 'unknown';\n\n } else if (path.indexOf('src/legacy/core_plugins/') == 0) {\n\n if (path.indexOf('src/legacy/core_plugins/apm_oss/') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('src/legacy/core_plugins/console_legacy') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/elasticsearch') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/core_plugins/embeddable_api/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/input_control_vis') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/interpreter/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/kibana_react/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/newsfeed') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/legacy/core_plugins/region_map') == 0) ctx.team = 'maps';\n else if (path.indexOf('src/legacy/core_plugins/status_page/public') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/core_plugins/testbed') == 0) ctx.team = 'kibana-platform';\n // else if (path.indexOf('src/legacy/core_plugins/tests_bundle/') == 0) ctx.team = 'kibana-platform';\n \n else if (path.indexOf('src/legacy/core_plugins/tile_map') == 0) ctx.team = 'maps';\n else if (path.indexOf('src/legacy/core_plugins/timelion') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/ui_metric/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('src/legacy/core_plugins/vis_type_tagcloud') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/vis_type_vega') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/vis_type_vislib/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/core_plugins/visualizations/') == 0) ctx.team = 'kibana-app-arch';\n else ctx.team = 'unknown';\n\n } else if (path.indexOf('src/legacy/server/') == 0) {\n\n if (path.indexOf('src/legacy/server/config/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/server/http/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/server/i18n/') == 0) ctx.team = 'kibana-localization';\n else if (path.indexOf('src/legacy/server/index_patterns/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/server/keystore/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/legacy/server/logging/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/server/pid/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/legacy/server/sample_data/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/server/sass/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/legacy/server/saved_objects/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/server/status/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/server/url_shortening/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/server/utils/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/legacy/server/warnings/') == 0) ctx.team = 'kibana-operations';\n else ctx.team = 'unknown';\n\n } else if (path.indexOf('src/legacy/ui') == 0) {\n\n if (path.indexOf('src/legacy/ui/public/field_editor') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/ui/public/timefilter') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/ui/public/management') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/legacy/ui/public/state_management') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/legacy/ui/public/new_platform') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/plugin_discovery') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/chrome') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/notify') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/documentation_links') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/autoload') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/legacy/ui/public/capabilities') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('src/legacy/ui/public/apm') == 0) ctx.team = 'apm-ui';\n\n } else if (path.indexOf('src/plugins/') == 0) {\n\n if (path.indexOf('src/plugins/advanced_settings/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/apm_oss/') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('src/plugins/bfetch/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/charts/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/charts/public/static/color_maps') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/console/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('src/plugins/dashboard/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/data/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/dev_tools/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('src/plugins/discover/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/embeddable/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/es_ui_shared/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('src/plugins/expressions/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/home/public') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/plugins/home/server/tutorials') == 0) ctx.team = 'observability';\n else if (path.indexOf('src/plugins/home/server/services/') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/plugins/home/') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/plugins/index_pattern_management/public/service') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/index_pattern_management/public') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/input_control_vis/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/inspector/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/kibana_legacy/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/kibana_react/public/code_editor') == 0) ctx.team = 'kibana-canvas';\n else if (path.indexOf('src/plugins/kibana_react/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/kibana_utils/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/management/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/kibana_usage_collection/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('src/plugins/legacy_export/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/plugins/maps_legacy/') == 0) ctx.team = 'maps';\n else if (path.indexOf('src/plugins/region_map/') == 0) ctx.team = 'maps';\n else if (path.indexOf('src/plugins/tile_map/') == 0) ctx.team = 'maps';\n else if (path.indexOf('src/plugins/timelion') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/navigation/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/newsfeed') == 0) ctx.team = 'kibana-core-ui';\n else if (path.indexOf('src/plugins/saved_objects_management/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/plugins/saved_objects/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/share/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/status_page/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/plugins/telemetry') == 0) ctx.team = 'pulse';\n else if (path.indexOf('src/plugins/testbed/server/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/plugins/ui_actions/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/usage_collection/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('src/plugins/vis_default_editor') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/vis_type') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('src/plugins/visualizations/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('src/plugins/visualize/') == 0) ctx.team = 'kibana-app';\n else ctx.team = 'unknown';\n\n } else if (path.indexOf('x-pack/legacy/') == 0) {\n\n if (path.indexOf('x-pack/legacy/plugins/actions/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/legacy/plugins/alerting/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/legacy/plugins/apm/') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('x-pack/legacy/plugins/beats_management/') == 0) ctx.team = 'beats';\n else if (path.indexOf('x-pack/legacy/plugins/canvas/') == 0) ctx.team = 'kibana-canvas';\n else if (path.indexOf('x-pack/legacy/plugins/cross_cluster_replication/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/dashboard_mode/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/legacy/plugins/encrypted_saved_objects/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('x-pack/legacy/plugins/index_management/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/infra/') == 0) ctx.team = 'logs-metrics-ui';\n else if (path.indexOf('x-pack/legacy/plugins/ingest_manager/') == 0) ctx.team = 'ingest-management';\n else if (path.indexOf('x-pack/legacy/plugins/license_management/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/maps/') == 0) ctx.team = 'kibana-gis';\n else if (path.indexOf('x-pack/legacy/plugins/ml/') == 0) ctx.team = 'ml-ui';\n else if (path.indexOf('x-pack/legacy/plugins/monitoring/') == 0) ctx.team = 'stack-monitoring-ui';\n else if (path.indexOf('x-pack/legacy/plugins/reporting') == 0) ctx.team = 'kibana-reporting';\n else if (path.indexOf('x-pack/legacy/plugins/rollup/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/security/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('x-pack/legacy/plugins/siem/') == 0) ctx.team = 'siem';\n else if (path.indexOf('x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules') == 0) ctx.team = 'security-intelligence-analytics';\n else if (path.indexOf('x-pack/legacy/plugins/snapshot_restore/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/task_manager') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/legacy/plugins/triggers_actions_ui/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/legacy/plugins/upgrade_assistant/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/plugins/uptime') == 0) ctx.team = 'uptime';\n else if (path.indexOf('x-pack/legacy/plugins/xpack_main/server/') == 0) ctx.team = 'kibana-platform';\n\n else if (path.indexOf('x-pack/legacy/server/lib/create_router/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/legacy/server/lib/check_license/') == 0) ctx.team = 'es-ui'; \n else if (path.indexOf('x-pack/legacy/server/lib/') == 0) ctx.team = 'kibana-platform'; \n else ctx.team = 'unknown';\n\n } else if (path.indexOf('x-pack/plugins/') == 0) {\n\n if (path.indexOf('x-pack/plugins/actions/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/advanced_ui_actions/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('x-pack/plugins/alerts') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/alerting_builtins') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/apm/') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('x-pack/plugins/beats_management/') == 0) ctx.team = 'beats';\n else if (path.indexOf('x-pack/plugins/canvas/') == 0) ctx.team = 'kibana-canvas';\n else if (path.indexOf('x-pack/plugins/case') == 0) ctx.team = 'siem';\n else if (path.indexOf('x-pack/plugins/cloud/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('x-pack/plugins/code/') == 0) ctx.team = 'code';\n else if (path.indexOf('x-pack/plugins/console_extensions/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/cross_cluster_replication/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/dashboard_enhanced') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/plugins/dashboard_mode') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/plugins/discover_enhanced') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/plugins/embeddable_enhanced') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('x-pack/plugins/data_enhanced/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('x-pack/plugins/drilldowns/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('x-pack/plugins/encrypted_saved_objects/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('x-pack/plugins/endpoint/') == 0) ctx.team = 'endpoint-app-team';\n else if (path.indexOf('x-pack/plugins/es_ui_shared/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/event_log/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/features/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('x-pack/plugins/file_upload') == 0) ctx.team = 'kibana-gis';\n else if (path.indexOf('x-pack/plugins/global_search') == 0) ctx.team = 'kibana-platform';\n \n else if (path.indexOf('x-pack/plugins/graph/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/plugins/grokdebugger/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/index_lifecycle_management/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/index_management/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/infra/') == 0) ctx.team = 'logs-metrics-ui';\n else if (path.indexOf('x-pack/plugins/ingest_manager/') == 0) ctx.team = 'ingest-management';\n else if (path.indexOf('x-pack/plugins/ingest_pipelines/') == 0) ctx.team = 'es-ui';\n \n else if (path.indexOf('x-pack/plugins/lens/') == 0) ctx.team = 'kibana-app';\n else if (path.indexOf('x-pack/plugins/license_management/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/licensing/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('x-pack/plugins/lists/') == 0) ctx.team = 'siem';\n else if (path.indexOf('x-pack/plugins/logstash') == 0) ctx.team = 'logstash';\n else if (path.indexOf('x-pack/plugins/maps/') == 0) ctx.team = 'kibana-gis';\n else if (path.indexOf('x-pack/plugins/maps_legacy_licensing') == 0) ctx.team = 'maps';\n else if (path.indexOf('x-pack/plugins/ml/') == 0) ctx.team = 'ml-ui';\n else if (path.indexOf('x-pack/plugins/monitoring') == 0) ctx.team = 'stack-monitoring-ui';\n else if (path.indexOf('x-pack/plugins/observability/') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('x-pack/plugins/oss_telemetry/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('x-pack/plugins/painless_lab/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/remote_clusters/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/reporting') == 0) ctx.team = 'kibana-reporting';\n else if (path.indexOf('x-pack/plugins/rollup/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/searchprofiler/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/security/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('x-pack/plugins/security_solution/') == 0) ctx.team = 'siem';\n \n else if (path.indexOf('x-pack/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules') == 0) ctx.team = 'security-intelligence-analytics';\n else if (path.indexOf('x-pack/plugins/siem/') == 0) ctx.team = 'siem';\n else if (path.indexOf('x-pack/plugins/snapshot_restore/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/spaces/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('x-pack/plugins/task_manager/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/telemetry_collection_xpack/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('x-pack/plugins/transform/') == 0) ctx.team = 'ml-ui';\n else if (path.indexOf('x-pack/plugins/translations/') == 0) ctx.team = 'kibana-localization';\n else if (path.indexOf('x-pack/plugins/triggers_actions_ui/') == 0) ctx.team = 'kibana-alerting-services';\n else if (path.indexOf('x-pack/plugins/upgrade_assistant/') == 0) ctx.team = 'es-ui';\n else if (path.indexOf('x-pack/plugins/ui_actions_enhanced') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('x-pack/plugins/uptime') == 0) ctx.team = 'uptime';\n \n else if (path.indexOf('x-pack/plugins/watcher/') == 0) ctx.team = 'es-ui';\n else ctx.team = 'unknown';\n\n } else if (path.indexOf('packages') == 0) {\n\n if (path.indexOf('packages/kbn-analytics/') == 0) ctx.team = 'pulse';\n else if (path.indexOf('packages/kbn-babel') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-config-schema/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('packages/elastic-datemath') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('packages/kbn-dev-utils') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-es/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-eslint') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-expect') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-i18n/') == 0) ctx.team = 'kibana-localization';\n else if (path.indexOf('packages/kbn-interpreter/') == 0) ctx.team = 'kibana-app-arch';\n else if (path.indexOf('packages/kbn-optimizer/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-pm/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-test/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-test-subj-selector/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('packages/kbn-ui-framework/') == 0) ctx.team = 'kibana-design';\n else if (path.indexOf('packages/kbn-ui-shared-deps/') == 0) ctx.team = 'kibana-operations';\n else ctx.team = 'unknown';\n\n } else {\n\n if (path.indexOf('config/kibana.yml') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/apm.js') == 0) ctx.team = 'apm-ui';\n else if (path.indexOf('src/core/') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('src/core/public/i18n/') == 0) ctx.team = 'kibana-localization';\n else if (path.indexOf('src/core/server/csp/') == 0) ctx.team = 'kibana-security';\n else if (path.indexOf('src/dev/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/dev/i18n/') == 0) ctx.team = 'kibana-localization';\n else if (path.indexOf('src/dev/run_check_published_api_changes.ts') == 0) ctx.team = 'kibana-platform';\n else if (path.indexOf('packages/kbn-es-archiver/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/optimize/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/setup_node_env/') == 0) ctx.team = 'kibana-operations';\n else if (path.indexOf('src/test_utils/') == 0) ctx.team = 'kibana-operations'; \n else ctx.team = 'unknown';\n }"}}]} diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/update_ingest_pipeline.js b/src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners.js similarity index 58% rename from src/dev/code_coverage/ingest_coverage/team_assignment/update_ingest_pipeline.js rename to src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners.js index 22a9d0a461ebf..a07d556c9b403 100644 --- a/src/dev/code_coverage/ingest_coverage/team_assignment/update_ingest_pipeline.js +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners.js @@ -17,21 +17,19 @@ * under the License. */ -import { createFailError } from '@kbn/dev-utils'; -import { ES_HOST } from '../constants'; -import { pretty, green } from '../utils'; +import { fromEvent } from 'rxjs'; +import { map, filter, takeUntil } from 'rxjs/operators'; +import { lineRead, pathAndTeams, empties, comments, dropCCDelim } from './parse_owners_helpers'; +import { pipe } from '../utils'; -const { Client } = require('@elastic/elasticsearch'); +const cleanAndParse = pipe(dropCCDelim, pathAndTeams); -const node = ES_HOST; -const client = new Client({ node }); +const allLines$ = (lineReader) => + fromEvent(lineReader, 'line').pipe( + filter(empties), + filter(comments), + map(cleanAndParse), + takeUntil(fromEvent(lineReader, 'close')) + ); -export const update = (id) => (log) => async (body) => { - try { - await client.ingest.putPipeline({ id, body }); - log.verbose(`### Ingestion Pipeline ID: ${green(id)}`); - log.verbose(`### Payload Partial: \n${body.slice(0, 600)}...`); - } catch (e) { - throw createFailError(`${pretty(e.meta)}`); - } -}; +export const parse = (codeOwnersPath) => allLines$(lineRead(codeOwnersPath)); diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners_helpers.js b/src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners_helpers.js new file mode 100644 index 0000000000000..454accb00a7b6 --- /dev/null +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/parse_owners_helpers.js @@ -0,0 +1,48 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { always, id, pipe } from '../utils'; +import * as Either from '../either'; +import readline from 'readline'; +import { createReadStream } from 'fs'; +import { pluckIndex } from '../transforms'; + +const coverageDelimRe = /^#CC#\s/; + +export const empties = (x) => x !== ''; +export const comments = (x) => !/^#\s{1,3}/.test(x); +const dropDelim = (x) => () => x.replace(coverageDelimRe, ''); + +export const dropCCDelim = (x) => + Either.fromNullable(coverageDelimRe.test(x)).fold(always(x), id(dropDelim(x))); + +const splitFilter = (splitter) => (x) => x.split(splitter).filter(empties); +const spaceSplit = splitFilter(' '); +const esSplit = splitFilter('@elastic/'); +const getFirst = pluckIndex(0); +const trimEsGrabFirst = pipe(esSplit, getFirst); + +export const pathAndTeams = (x) => { + const [path, ...teamEntries] = spaceSplit(x); + const teams = teamEntries.map(trimEsGrabFirst); + + return [path, teams]; +}; + +export const lineRead = (x) => readline.createInterface({ input: createReadStream(x) }); diff --git a/src/dev/code_coverage/ingest_coverage/team_assignment/get_data.js b/src/dev/code_coverage/ingest_coverage/team_assignment/parsing_helpers.js similarity index 64% rename from src/dev/code_coverage/ingest_coverage/team_assignment/get_data.js rename to src/dev/code_coverage/ingest_coverage/team_assignment/parsing_helpers.js index 34526a2f79302..50dd6f719f34e 100644 --- a/src/dev/code_coverage/ingest_coverage/team_assignment/get_data.js +++ b/src/dev/code_coverage/ingest_coverage/team_assignment/parsing_helpers.js @@ -17,17 +17,14 @@ * under the License. */ -import { readFileSync } from 'fs'; -import { resolve } from 'path'; -import { tryCatch as tc } from '../either'; +import { always } from '../utils'; +import * as Either from '../either'; -const ROOT = resolve(__dirname, '../../../../..'); +const coverageDelimRe = /^#CC#\s/; -const resolveFromRoot = resolve.bind(null, ROOT); +export const empties = (x) => x !== ''; +export const comments = (x) => !/^#\s{1,3}/.test(x); +const dropDelim = (x) => x.replace(coverageDelimRe, ''); -const resolved = (path) => () => resolveFromRoot(path); - -const getContents = (path) => tc(() => readFileSync(path, 'utf8')); - -// fetch :: String -> Left | Right -export const fetch = (path) => tc(resolved(path)).chain(getContents); +export const dropCCDelim = (x) => + Either.fromNullable(coverageDelimRe.test(x)).fold(always(x), always(dropDelim(x))); diff --git a/src/dev/code_coverage/ingest_coverage/transforms.js b/src/dev/code_coverage/ingest_coverage/transforms.js index b8c9acd6fc49d..ff6ffd46462ed 100644 --- a/src/dev/code_coverage/ingest_coverage/transforms.js +++ b/src/dev/code_coverage/ingest_coverage/transforms.js @@ -18,8 +18,12 @@ */ import * as Either from './either'; -import { fromNullable } from './maybe'; -import { always, id, noop } from './utils'; +import * as Maybe from './maybe'; +import { always, id, noop, pink } from './utils'; +import execa from 'execa'; +import { resolve } from 'path'; + +const ROOT_DIR = resolve(__dirname, '../../../..'); const maybeTotal = (x) => (x === 'total' ? Either.left(x) : Either.right(x)); @@ -83,20 +87,60 @@ export const staticSite = (urlBase) => (obj) => { return { ...obj, staticSiteUrl: prokForBoth() }; }; +const leadingSlashRe = /^\//; +export const maybeDropLeadingSlash = (x) => + leadingSlashRe.test(x) ? Either.right(x) : Either.left(x); +export const dropLeadingSlash = (x) => x.replace(leadingSlashRe, ''); +export const stripLeading = (x) => maybeDropLeadingSlash(x).fold(id, dropLeadingSlash); + export const coveredFilePath = (obj) => { const { staticSiteUrl, COVERAGE_INGESTION_KIBANA_ROOT } = obj; const withoutCoveredFilePath = always(obj); - const leadingSlashRe = /^\//; - const maybeDropLeadingSlash = (x) => (leadingSlashRe.test(x) ? Either.right(x) : Either.left(x)); - const dropLeadingSlash = (x) => x.replace(leadingSlashRe, ''); - const dropRoot = (root) => (x) => - maybeDropLeadingSlash(x.replace(root, '')).fold(id, dropLeadingSlash); + const dropRoot = (root) => (x) => stripLeading(x.replace(root, '')); return maybeTotal(staticSiteUrl) .map(dropRoot(COVERAGE_INGESTION_KIBANA_ROOT)) .fold(withoutCoveredFilePath, (coveredFilePath) => ({ ...obj, coveredFilePath })); }; +const findTeam = (x) => x.match(/.+\s{1,3}(.+)$/, 'gm'); +export const pluckIndex = (idx) => (xs) => xs[idx]; +const pluckTeam = pluckIndex(1); + +export const teamAssignment = (teamAssignmentsPath) => (log) => async (obj) => { + const { coveredFilePath } = obj; + const isTotal = Either.fromNullable(obj.isTotal); + + return isTotal.isRight() ? obj : await assignTeam(teamAssignmentsPath, coveredFilePath, log, obj); +}; +export const last = (x) => { + const xs = x.split('\n'); + const len = xs.length; + + return len === 1 ? xs[0] : xs[len - 1]; +}; +async function assignTeam(teamAssignmentsPath, coveredFilePath, log, obj) { + const params = [coveredFilePath, teamAssignmentsPath]; + + let grepResponse; + + try { + const { stdout } = await execa('grep', params, { cwd: ROOT_DIR }); + grepResponse = stdout; + } catch (e) { + log.error(`\n!!! Unknown Team for path: \n\t\t${pink(coveredFilePath)}\n`); + } + + return Either.fromNullable(grepResponse) + .map(last) + .map(findTeam) + .map(pluckTeam) + .fold( + () => ({ team: 'unknown', ...obj }), + (team) => ({ team, ...obj }) + ); +} + export const ciRunUrl = (obj) => Either.fromNullable(process.env.CI_RUN_URL).fold(always(obj), (ciRunUrl) => ({ ...obj, @@ -126,13 +170,12 @@ export const itemizeVcs = (vcsInfo) => (obj) => { }; const mutateVcs = (x) => (vcs.commitMsg = truncateMsg(x)); - fromNullable(commitMsg).map(mutateVcs); + Maybe.fromNullable(commitMsg).map(mutateVcs); const vcsCompareUrl = process.env.FETCHED_PREVIOUS ? `${comparePrefix()}/${process.env.FETCHED_PREVIOUS}...${sha}` : 'PREVIOUS SHA NOT PROVIDED'; - // const withoutPreviousL = always({ ...obj, vcs }); const withPreviousR = () => ({ ...obj, vcs: { diff --git a/src/dev/code_coverage/ingest_coverage/utils.js b/src/dev/code_coverage/ingest_coverage/utils.js index 7d817bdf7a6f3..e854e3d3b7248 100644 --- a/src/dev/code_coverage/ingest_coverage/utils.js +++ b/src/dev/code_coverage/ingest_coverage/utils.js @@ -22,6 +22,10 @@ import chalk from 'chalk'; export const pipe = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args))); export const noop = () => {}; export const green = (x) => chalk.greenBright.bold(x); +export const pink = (x) => chalk.bgMagenta.bold.cyan.bold(x); export const id = (x) => x; -export const always = (x) => () => x; +export const always = (x) => () => x; // Wraps a value in a fn. Eager evaluation if passed a fn. export const pretty = (x) => JSON.stringify(x, null, 2); +export const reThrow = (e) => { + throw e; +}; diff --git a/src/dev/code_coverage/shell_scripts/assign_teams.sh b/src/dev/code_coverage/shell_scripts/assign_teams.sh deleted file mode 100644 index aaa14655a9a26..0000000000000 --- a/src/dev/code_coverage/shell_scripts/assign_teams.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -echo "### Code Coverage Team Assignment" -echo "" - -PIPELINE_NAME=$1 -export PIPELINE_NAME - -ES_HOST="https://${USER_FROM_VAULT}:${PASS_FROM_VAULT}@${HOST_FROM_VAULT}" -export ES_HOST - -node scripts/load_team_assignment.js --verbose --path src/dev/code_coverage/ingest_coverage/team_assignment/ingestion_pipeline_painless.json - -echo "### Code Coverage Team Assignment - Complete" -echo "" diff --git a/src/dev/code_coverage/shell_scripts/ingest_coverage.sh b/src/dev/code_coverage/shell_scripts/generate_team_assignments_and_ingest_coverage.sh similarity index 78% rename from src/dev/code_coverage/shell_scripts/ingest_coverage.sh rename to src/dev/code_coverage/shell_scripts/generate_team_assignments_and_ingest_coverage.sh index 0b67dac307473..62b81929ae79b 100644 --- a/src/dev/code_coverage/shell_scripts/ingest_coverage.sh +++ b/src/dev/code_coverage/shell_scripts/generate_team_assignments_and_ingest_coverage.sh @@ -27,19 +27,24 @@ export STATIC_SITE_URL_BASE DELAY=100 export DELAY +TEAM_ASSIGN_PATH=$5 + +# Build team assignments dat file +node scripts/generate_team_assignments.js --verbose --src .github/CODEOWNERS --dest $TEAM_ASSIGN_PATH + for x in jest functional; do echo "### Ingesting coverage for ${x}" COVERAGE_SUMMARY_FILE=target/kibana-coverage/${x}-combined/coverage-summary.json - node scripts/ingest_coverage.js --verbose --path ${COVERAGE_SUMMARY_FILE} --vcsInfoPath ./VCS_INFO.txt + node scripts/ingest_coverage.js --verbose --path ${COVERAGE_SUMMARY_FILE} --vcsInfoPath ./VCS_INFO.txt --teamAssignmentsPath $TEAM_ASSIGN_PATH done # Need to override COVERAGE_INGESTION_KIBANA_ROOT since mocha json file has original intake worker path COVERAGE_SUMMARY_FILE=target/kibana-coverage/mocha-combined/coverage-summary.json export COVERAGE_INGESTION_KIBANA_ROOT=/dev/shm/workspace/kibana -node scripts/ingest_coverage.js --verbose --path ${COVERAGE_SUMMARY_FILE} --vcsInfoPath ./VCS_INFO.txt +node scripts/ingest_coverage.js --verbose --path ${COVERAGE_SUMMARY_FILE} --vcsInfoPath ./VCS_INFO.txt --teamAssignmentsPath $TEAM_ASSIGN_PATH echo "### Ingesting Code Coverage - Complete" echo "" diff --git a/vars/kibanaCoverage.groovy b/vars/kibanaCoverage.groovy index 66ebe3478fbec..e75ed8fef9875 100644 --- a/vars/kibanaCoverage.groovy +++ b/vars/kibanaCoverage.groovy @@ -169,31 +169,31 @@ def uploadCombinedReports() { ) } -def ingestData(jobName, buildNum, buildUrl, previousSha, title) { +def ingestData(jobName, buildNum, buildUrl, previousSha, teamAssignmentsPath, title) { kibanaPipeline.bash(""" source src/dev/ci_setup/setup_env.sh yarn kbn bootstrap --prefer-offline # Using existing target/kibana-coverage folder - . src/dev/code_coverage/shell_scripts/ingest_coverage.sh '${jobName}' ${buildNum} '${buildUrl}' ${previousSha} + . src/dev/code_coverage/shell_scripts/generate_team_assignments_and_ingest_coverage.sh '${jobName}' ${buildNum} '${buildUrl}' '${previousSha}' '${teamAssignmentsPath}' """, title) } -def ingestWithVault(jobName, buildNum, buildUrl, previousSha, title) { +def ingestWithVault(jobName, buildNum, buildUrl, previousSha, teamAssignmentsPath, title) { def vaultSecret = 'secret/kibana-issues/prod/coverage/elasticsearch' withVaultSecret(secret: vaultSecret, secret_field: 'host', variable_name: 'HOST_FROM_VAULT') { withVaultSecret(secret: vaultSecret, secret_field: 'username', variable_name: 'USER_FROM_VAULT') { withVaultSecret(secret: vaultSecret, secret_field: 'password', variable_name: 'PASS_FROM_VAULT') { - ingestData(jobName, buildNum, buildUrl, previousSha, title) + ingestData(jobName, buildNum, buildUrl, previousSha, teamAssignmentsPath, title) } } } } -def ingest(jobName, buildNumber, buildUrl, timestamp, previousSha, title) { +def ingest(jobName, buildNumber, buildUrl, timestamp, previousSha, teamAssignmentsPath, title) { withEnv([ "TIME_STAMP=${timestamp}", ]) { - ingestWithVault(jobName, buildNumber, buildUrl, previousSha, title) + ingestWithVault(jobName, buildNumber, buildUrl, previousSha, teamAssignmentsPath, title) } } diff --git a/vars/kibanaTeamAssign.groovy b/vars/kibanaTeamAssign.groovy index a3d9c16ef506e..caf1ee36e25a8 100644 --- a/vars/kibanaTeamAssign.groovy +++ b/vars/kibanaTeamAssign.groovy @@ -1,25 +1,13 @@ -def loadIngestionPipeline(ingestionPipelineName, title) { +def generateTeamAssignments(teamAssignmentsPath, title) { kibanaPipeline.bash(""" - source src/dev/ci_setup/setup_env.sh true + source src/dev/ci_setup/setup_env.sh yarn kbn bootstrap --prefer-offline - . src/dev/code_coverage/shell_scripts/assign_teams.sh '${ingestionPipelineName}' - """, title) -} + # Build team assignments dat file + node scripts/generate_team_assignments.js --verbose --dest '${teamAssignmentsPath}' -def loadWithVault(ingestionPipelineName, title) { - def vaultSecret = 'secret/kibana-issues/prod/coverage/elasticsearch' - withVaultSecret(secret: vaultSecret, secret_field: 'host', variable_name: 'HOST_FROM_VAULT') { - withVaultSecret(secret: vaultSecret, secret_field: 'username', variable_name: 'USER_FROM_VAULT') { - withVaultSecret(secret: vaultSecret, secret_field: 'password', variable_name: 'PASS_FROM_VAULT') { - loadIngestionPipeline(ingestionPipelineName, title) - } - } - } -} - -def load(ingestionPipelineName, title) { - loadWithVault(ingestionPipelineName, title) + cat '${teamAssignmentsPath}' + """, title) } return this From 3094ca1409f3511998fd810086c329ade2a0e959 Mon Sep 17 00:00:00 2001 From: Ryan Keairns Date: Mon, 28 Sep 2020 16:27:15 -0500 Subject: [PATCH 029/119] Change progress bar to spinner (#78460) * Change progress bar to spinner * Add progress bar option for full screen mode * Update snapshots for router test * Update snapshots for loading indicator test * Update header snapshot * Change progress bar position to fix full screen --- .../integration_tests/router.test.tsx | 16 +- .../public/application/ui/app_container.tsx | 4 +- .../loading_indicator.test.tsx.snap | 24 +-- .../public/chrome/ui/_loading_indicator.scss | 57 +----- .../header/__snapshots__/header.test.tsx.snap | 187 ++++++++++++------ src/core/public/chrome/ui/header/header.tsx | 4 +- .../public/chrome/ui/loading_indicator.tsx | 34 +++- .../public/components/search_bar.tsx | 2 +- 8 files changed, 182 insertions(+), 146 deletions(-) diff --git a/src/core/public/application/integration_tests/router.test.tsx b/src/core/public/application/integration_tests/router.test.tsx index e3f992990f9f9..d982136422268 100644 --- a/src/core/public/application/integration_tests/router.test.tsx +++ b/src/core/public/application/integration_tests/router.test.tsx @@ -107,7 +107,7 @@ describe('AppRouter', () => { expect(app1.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -119,7 +119,7 @@ describe('AppRouter', () => { expect(app1Unmount).toHaveBeenCalled(); expect(app2.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app2 html:
App 2
" @@ -133,7 +133,7 @@ describe('AppRouter', () => { expect(standardApp.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -145,7 +145,7 @@ describe('AppRouter', () => { expect(standardAppUnmount).toHaveBeenCalled(); expect(chromelessApp.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" @@ -157,7 +157,7 @@ describe('AppRouter', () => { expect(chromelessAppUnmount).toHaveBeenCalled(); expect(standardApp.mounter.mount).toHaveBeenCalledTimes(2); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -171,7 +171,7 @@ describe('AppRouter', () => { expect(chromelessAppA.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" @@ -183,7 +183,7 @@ describe('AppRouter', () => { expect(chromelessAppAUnmount).toHaveBeenCalled(); expect(chromelessAppB.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-b/path html:
Chromeless B
" @@ -195,7 +195,7 @@ describe('AppRouter', () => { expect(chromelessAppBUnmount).toHaveBeenCalled(); expect(chromelessAppA.mounter.mount).toHaveBeenCalledTimes(2); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" diff --git a/src/core/public/application/ui/app_container.tsx b/src/core/public/application/ui/app_container.tsx index 089d1cf3f3ced..9821db5ba2666 100644 --- a/src/core/public/application/ui/app_container.tsx +++ b/src/core/public/application/ui/app_container.tsx @@ -25,7 +25,7 @@ import React, { useState, MutableRefObject, } from 'react'; -import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiLoadingElastic } from '@elastic/eui'; import type { MountPoint } from '../../types'; import { AppLeaveHandler, AppStatus, AppUnmount, Mounter } from '../types'; @@ -120,7 +120,7 @@ export const AppContainer: FunctionComponent = ({ {appNotFound && } {showSpinner && (
- +
)}
diff --git a/src/core/public/chrome/ui/__snapshots__/loading_indicator.test.tsx.snap b/src/core/public/chrome/ui/__snapshots__/loading_indicator.test.tsx.snap index 3007be1e5dfe0..e6bf7e898d8c4 100644 --- a/src/core/public/chrome/ui/__snapshots__/loading_indicator.test.tsx.snap +++ b/src/core/public/chrome/ui/__snapshots__/loading_indicator.test.tsx.snap @@ -1,23 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`kbnLoadingIndicator is hidden by default 1`] = ` -
-
-
+/> `; exports[`kbnLoadingIndicator is visible when loadingCount is > 0 1`] = ` -
-
-
+/> `; diff --git a/src/core/public/chrome/ui/_loading_indicator.scss b/src/core/public/chrome/ui/_loading_indicator.scss index ad934717b4b76..ccf1ecc873fc5 100644 --- a/src/core/public/chrome/ui/_loading_indicator.scss +++ b/src/core/public/chrome/ui/_loading_indicator.scss @@ -1,55 +1,4 @@ -$kbnLoadingIndicatorBackgroundSize: $euiSizeXXL * 10; -$kbnLoadingIndicatorColor1: tint($euiColorAccent, 15%); -$kbnLoadingIndicatorColor2: tint($euiColorAccent, 60%); - -/** - * 1. Position this loader on top of the content. - * 2. Make sure indicator isn't wider than the screen. - */ -.kbnLoadingIndicator { - position: fixed; // 1 - top: 0; // 1 - left: 0; // 1 - right: 0; // 1 - z-index: $euiZLevel2; // 1 - overflow: hidden; // 2 - height: $euiSizeXS / 2; - - &.hidden { - visibility: hidden; - opacity: 0; - transition-delay: 0.25s; - } -} - -.kbnLoadingIndicator__bar { - top: 0; - left: 0; - right: 0; - bottom: 0; - position: absolute; - z-index: $euiZLevel2 + 1; - visibility: visible; - display: block; - animation: kbn-animate-loading-indicator 2s linear infinite; - background-color: $kbnLoadingIndicatorColor2; - background-image: linear-gradient( - to right, - $kbnLoadingIndicatorColor1 0%, - $kbnLoadingIndicatorColor1 50%, - $kbnLoadingIndicatorColor2 50%, - $kbnLoadingIndicatorColor2 100% - ); - background-repeat: repeat-x; - background-size: $kbnLoadingIndicatorBackgroundSize $kbnLoadingIndicatorBackgroundSize; - width: 200%; -} - -@keyframes kbn-animate-loading-indicator { - from { - transform: translateX(0); - } - to { - transform: translateX(-$kbnLoadingIndicatorBackgroundSize); - } +.kbnLoadingIndicator-hidden { + visibility: hidden; + animation-play-state: paused; } diff --git a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap index 1a4d93aee9516..8937ecb4d9b4e 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap @@ -1690,66 +1690,6 @@ exports[`Header renders 1`] = ` } } > - -
-
-
-
, + , ], }, Object { @@ -2971,6 +2963,81 @@ exports[`Header renders 1`] = `
+ +
+ + + + + +
+
; + return ; } const toggleCollapsibleNavRef = createRef(); @@ -97,7 +97,6 @@ export function Header({ return ( <> -
, + , ], borders: 'none', }, diff --git a/src/core/public/chrome/ui/loading_indicator.tsx b/src/core/public/chrome/ui/loading_indicator.tsx index 0209612eae08c..ca3e95f722ec5 100644 --- a/src/core/public/chrome/ui/loading_indicator.tsx +++ b/src/core/public/chrome/ui/loading_indicator.tsx @@ -17,6 +17,8 @@ * under the License. */ +import { EuiLoadingSpinner, EuiProgress } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import React from 'react'; import classNames from 'classnames'; import { Subscription } from 'rxjs'; @@ -25,9 +27,12 @@ import { HttpStart } from '../../http'; export interface LoadingIndicatorProps { loadingCount$: ReturnType; + showAsBar?: boolean; } export class LoadingIndicator extends React.Component { + public static defaultProps = { showAsBar: false }; + private loadingCountSubscription?: Subscription; state = { @@ -50,16 +55,35 @@ export class LoadingIndicator extends React.Component -
-
+ const ariaHidden = this.state.visible ? false : true; + + const ariaLabel = i18n.translate('core.ui.loadingIndicatorAriaLabel', { + defaultMessage: 'Loading content', + }); + + return !this.props.showAsBar ? ( + + ) : ( + ); } } diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx index 54066cee414d8..dc1c111dea006 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx @@ -109,7 +109,7 @@ export function SearchBar({ globalSearch, navigateToUrl }: Props) { complete: () => {}, }); }, - 250, + 350, [searchValue] ); From a740f7d502a247dd33c2fe0a70596c6d288a20f6 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Mon, 28 Sep 2020 17:09:44 -0500 Subject: [PATCH 030/119] Empty prompt and loading spinner for service map (#78382) * Empty prompt for service map To be shown when fetching returns no elements. Match the style of the license prompt. * Add loading spinner --- .../app/ServiceMap/empty_prompt.tsx | 35 +++++++++ .../components/app/ServiceMap/index.test.tsx | 76 +++++++++++++++---- .../components/app/ServiceMap/index.tsx | 72 +++++++++++++----- 3 files changed, 148 insertions(+), 35 deletions(-) create mode 100644 x-pack/plugins/apm/public/components/app/ServiceMap/empty_prompt.tsx diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/empty_prompt.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/empty_prompt.tsx new file mode 100644 index 0000000000000..128b5696b23b8 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/empty_prompt.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiEmptyPrompt } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { SetupInstructionsLink } from '../../shared/Links/SetupInstructionsLink'; + +export function EmptyPrompt() { + return ( + + {i18n.translate('xpack.apm.serviceMap.noServicesPromptTitle', { + defaultMessage: 'No services available', + })} + + } + body={ +

+ {i18n.translate('xpack.apm.serviceMap.noServicesPromptDescription', { + defaultMessage: + 'We can’t find any services to map within the currently selected time range and environment. Please try another range or check the environment selected. If you don’t have any services, please use our setup instructions to get started.', + })} +

+ } + actions={} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx index f504ac1f68ce1..2a5b4ce44ff46 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx @@ -9,16 +9,30 @@ import { CoreStart } from 'kibana/public'; import React, { ReactNode } from 'react'; import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; import { License } from '../../../../../licensing/common/license'; +import { EuiThemeProvider } from '../../../../../observability/public'; +import { FETCH_STATUS } from '../../../../../observability/public/hooks/use_fetcher'; import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; import { LicenseContext } from '../../../context/LicenseContext'; +import * as useFetcherModule from '../../../hooks/useFetcher'; import { ServiceMap } from './'; const KibanaReactContext = createKibanaReactContext({ usageCollection: { reportUiStats: () => {} }, } as Partial); +const activeLicense = new License({ + signature: 'active test signature', + license: { + expiryDateInMillis: 0, + mode: 'platinum', + status: 'active', + type: 'platinum', + uid: '1', + }, +}); + const expiredLicense = new License({ - signature: 'test signature', + signature: 'expired test signature', license: { expiryDateInMillis: 0, mode: 'platinum', @@ -28,26 +42,58 @@ const expiredLicense = new License({ }, }); -function Wrapper({ children }: { children?: ReactNode }) { - return ( - - - {children} - - - ); +function createWrapper(license: License | null) { + return ({ children }: { children?: ReactNode }) => { + return ( + + + + + {children} + + + + + ); + }; } describe('ServiceMap', () => { - describe('with an inactive license', () => { + describe('with no license', () => { + it('renders null', async () => { + expect( + await render(, { + wrapper: createWrapper(null), + }).queryByTestId('ServiceMap') + ).not.toBeInTheDocument(); + }); + }); + + describe('with an expired license', () => { it('renders the license banner', async () => { expect( - ( + await render(, { + wrapper: createWrapper(expiredLicense), + }).findAllByText(/Platinum/) + ).toHaveLength(1); + }); + }); + + describe('with an active license', () => { + describe('with an empty response', () => { + it('renders the empty banner', async () => { + jest.spyOn(useFetcherModule, 'useFetcher').mockReturnValueOnce({ + data: { elements: [] }, + refetch: () => {}, + status: FETCH_STATUS.SUCCESS, + }); + + expect( await render(, { - wrapper: Wrapper, - }).findAllByText(/Platinum/) - ).length - ).toBeGreaterThan(0); + wrapper: createWrapper(activeLicense), + }).findAllByText(/No services available/) + ).toHaveLength(1); + }); }); }); }); diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx index bb450131bdfb8..1d2e4ada43add 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui'; +import React, { ReactNode } from 'react'; import { useTrackPageview } from '../../../../../observability/public'; import { invalidLicenseMessage, isActivePlatinumLicense, } from '../../../../common/service_map'; -import { useFetcher } from '../../../hooks/useFetcher'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; import { useLicense } from '../../../hooks/useLicense'; import { useTheme } from '../../../hooks/useTheme'; import { useUrlParams } from '../../../hooks/useUrlParams'; @@ -21,6 +21,7 @@ import { Controls } from './Controls'; import { Cytoscape } from './Cytoscape'; import { getCytoscapeDivStyle } from './cytoscapeOptions'; import { EmptyBanner } from './EmptyBanner'; +import { EmptyPrompt } from './empty_prompt'; import { Popover } from './Popover'; import { useRefDimensions } from './useRefDimensions'; @@ -28,12 +29,39 @@ interface ServiceMapProps { serviceName?: string; } +function PromptContainer({ children }: { children: ReactNode }) { + return ( + + + {children} + + + ); +} + +function LoadingSpinner() { + return ( + + ); +} + export function ServiceMap({ serviceName }: ServiceMapProps) { const theme = useTheme(); const license = useLicense(); const { urlParams } = useUrlParams(); - const { data = { elements: [] } } = useFetcher(() => { + const { data = { elements: [] }, status } = useFetcher(() => { // When we don't have a license or a valid license, don't make the request. if (!license || !isActivePlatinumLicense(license)) { return; @@ -65,37 +93,41 @@ export function ServiceMap({ serviceName }: ServiceMapProps) { return null; } - return isActivePlatinumLicense(license) ? ( + if (!isActivePlatinumLicense(license)) { + return ( + + + + ); + } + + if (status === FETCH_STATUS.SUCCESS && data.elements.length === 0) { + return ( + + + + ); + } + + return (
{serviceName && } + {status === FETCH_STATUS.LOADING && }
- ) : ( - - - - - ); } From da134f3a8f60931ec478bfeed773cab00be282b0 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Mon, 28 Sep 2020 16:08:22 -0700 Subject: [PATCH 031/119] Aligns several module versions across the repository (#78327) Signed-off-by: Tyler Smalley Co-authored-by: Elastic Machine --- package.json | 20 +- packages/kbn-ace/package.json | 2 +- packages/kbn-config/package.json | 2 +- packages/kbn-dev-utils/package.json | 2 +- packages/kbn-es/package.json | 6 +- .../package.json | 2 +- packages/kbn-i18n/package.json | 2 +- packages/kbn-interpreter/package.json | 6 +- packages/kbn-monaco/package.json | 2 +- packages/kbn-optimizer/package.json | 2 +- packages/kbn-plugin-helpers/package.json | 2 +- packages/kbn-pm/package.json | 8 +- packages/kbn-spec-to-console/package.json | 4 +- packages/kbn-std/package.json | 2 +- packages/kbn-storybook/package.json | 8 +- packages/kbn-test/package.json | 5 +- packages/kbn-ui-framework/package.json | 6 +- x-pack/package.json | 24 +- x-pack/plugins/apm/e2e/package.json | 14 +- .../task_manager_performance/package.json | 2 +- yarn.lock | 306 +++++------------- 21 files changed, 138 insertions(+), 289 deletions(-) diff --git a/package.json b/package.json index 505fac1df935e..9b1735f6f7e5e 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "check-disk-space": "^2.1.0", "chokidar": "3.2.1", "color": "1.0.3", - "commander": "3.0.2", + "commander": "^3.0.2", "core-js": "^3.6.4", "cypress-promise": "^1.1.0", "deep-freeze-strict": "^1.1.1", @@ -184,12 +184,12 @@ "json-stable-stringify": "^1.0.1", "json-stringify-safe": "5.0.1", "lodash": "^4.17.20", - "lru-cache": "4.1.5", + "lru-cache": "^4.1.5", "minimatch": "^3.0.4", "moment": "^2.24.0", "moment-timezone": "^0.5.27", - "mustache": "2.3.2", - "node-fetch": "2.6.1", + "mustache": "^2.3.2", + "node-fetch": "^2.6.1", "node-forge": "^0.10.0", "opn": "^5.5.0", "oppsy": "^2.0.0", @@ -212,7 +212,7 @@ "rison-node": "1.0.2", "rxjs": "^6.5.5", "seedrandom": "^3.0.5", - "semver": "^5.5.0", + "semver": "^5.7.0", "style-it": "^2.1.3", "symbol-observable": "^1.2.0", "tar": "4.4.13", @@ -223,7 +223,7 @@ "uuid": "3.3.2", "vision": "^5.3.3", "whatwg-fetch": "^3.0.0", - "yauzl": "2.10.0" + "yauzl": "^2.10.0" }, "devDependencies": { "@babel/parser": "^7.11.2", @@ -279,7 +279,7 @@ "@types/flot": "^0.0.31", "@types/getopts": "^2.0.1", "@types/getos": "^3.0.0", - "@types/glob": "^7.1.1", + "@types/glob": "^7.1.2", "@types/globby": "^8.0.0", "@types/graphql": "^0.13.2", "@types/h2o2": "^8.1.1", @@ -312,7 +312,7 @@ "@types/normalize-path": "^3.0.0", "@types/opn": "^5.1.0", "@types/pegjs": "^0.10.1", - "@types/pngjs": "^3.3.2", + "@types/pngjs": "^3.4.0", "@types/podium": "^1.0.0", "@types/prop-types": "^15.7.3", "@types/reach__router": "^1.2.6", @@ -393,7 +393,7 @@ "fetch-mock": "^7.3.9", "fp-ts": "^2.3.1", "geckodriver": "^1.20.0", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "grunt": "1.0.4", "grunt-available-tasks": "^0.6.3", "grunt-cli": "^1.2.0", @@ -439,7 +439,7 @@ "multistream": "^2.1.1", "murmurhash3js": "3.0.1", "mutation-observer": "^1.0.3", - "ngreact": "0.5.1", + "ngreact": "^0.5.1", "nock": "12.0.3", "normalize-path": "^3.0.0", "nyc": "^15.0.1", diff --git a/packages/kbn-ace/package.json b/packages/kbn-ace/package.json index cf74d745f4cae..6f1cee764adf1 100644 --- a/packages/kbn-ace/package.json +++ b/packages/kbn-ace/package.json @@ -14,7 +14,7 @@ "devDependencies": { "@kbn/dev-utils": "1.0.0", "@kbn/babel-preset": "1.0.0", - "raw-loader": "3.1.0", + "raw-loader": "^3.1.0", "typescript": "4.0.2" } } diff --git a/packages/kbn-config/package.json b/packages/kbn-config/package.json index 2d9dbc3b7ab8f..062520f47f0f9 100644 --- a/packages/kbn-config/package.json +++ b/packages/kbn-config/package.json @@ -25,6 +25,6 @@ }, "devDependencies": { "typescript": "4.0.2", - "tsd": "^0.7.4" + "tsd": "^0.13.1" } } diff --git a/packages/kbn-dev-utils/package.json b/packages/kbn-dev-utils/package.json index a3fe8178822aa..a85f5924f0ea2 100644 --- a/packages/kbn-dev-utils/package.json +++ b/packages/kbn-dev-utils/package.json @@ -12,7 +12,7 @@ "dependencies": { "@babel/core": "^7.11.1", "@kbn/utils": "1.0.0", - "axios": "^0.19.0", + "axios": "^0.19.2", "chalk": "^4.1.0", "cheerio": "0.22.0", "dedent": "^0.7.0", diff --git a/packages/kbn-es/package.json b/packages/kbn-es/package.json index fc6c888d1d41e..40d34c5d710bb 100644 --- a/packages/kbn-es/package.json +++ b/packages/kbn-es/package.json @@ -11,15 +11,15 @@ "dependencies": { "@elastic/elasticsearch": "7.9.0-rc.1", "@kbn/dev-utils": "1.0.0", - "abort-controller": "^2.0.3", + "abort-controller": "^3.0.0", "chalk": "^4.1.0", "dedent": "^0.7.0", "del": "^5.1.0", "execa": "^4.0.2", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "glob": "^7.1.2", "node-fetch": "^2.6.1", - "simple-git": "^1.91.0", + "simple-git": "1.116.0", "tar-fs": "^2.1.0", "tree-kill": "^1.2.2", "yauzl": "^2.10.0" diff --git a/packages/kbn-eslint-import-resolver-kibana/package.json b/packages/kbn-eslint-import-resolver-kibana/package.json index 332f7e8a20cc2..223c73e97908e 100755 --- a/packages/kbn-eslint-import-resolver-kibana/package.json +++ b/packages/kbn-eslint-import-resolver-kibana/package.json @@ -13,7 +13,7 @@ "debug": "^2.6.9", "eslint-import-resolver-node": "0.3.2", "eslint-import-resolver-webpack": "0.11.1", - "glob-all": "^3.1.0", + "glob-all": "^3.2.1", "lru-cache": "^4.1.5", "resolve": "^1.7.1", "webpack": "^4.41.5" diff --git a/packages/kbn-i18n/package.json b/packages/kbn-i18n/package.json index eccdff9060cbe..9e0ec50fb838e 100644 --- a/packages/kbn-i18n/package.json +++ b/packages/kbn-i18n/package.json @@ -19,7 +19,7 @@ "@types/intl-relativeformat": "^2.1.0", "@types/react-intl": "^2.3.15", "del": "^5.1.0", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "supports-color": "^7.0.0", "typescript": "4.0.2" }, diff --git a/packages/kbn-interpreter/package.json b/packages/kbn-interpreter/package.json index aef63229ebe96..430dac6cb2e00 100644 --- a/packages/kbn-interpreter/package.json +++ b/packages/kbn-interpreter/package.json @@ -11,7 +11,7 @@ "dependencies": { "@babel/runtime": "^7.11.2", "@kbn/i18n": "1.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "uuid": "3.3.2" }, "devDependencies": { @@ -25,12 +25,12 @@ "copy-webpack-plugin": "^6.0.2", "css-loader": "^3.4.2", "del": "^5.1.0", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "pegjs": "0.10.0", "sass-loader": "^8.0.2", "style-loader": "^1.1.3", "supports-color": "^7.0.0", - "url-loader": "2.2.0", + "url-loader": "^2.2.0", "webpack": "^4.41.5", "webpack-cli": "^3.3.10" } diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index ca133010fe230..fcea80c9b7110 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -18,7 +18,7 @@ "babel-loader": "^8.0.6", "css-loader": "^3.4.2", "del": "^5.1.0", - "raw-loader": "3.1.0", + "raw-loader": "^3.1.0", "supports-color": "^7.0.0", "typescript": "4.0.2", "webpack": "^4.41.5", diff --git a/packages/kbn-optimizer/package.json b/packages/kbn-optimizer/package.json index b80d1365659dd..f90fcaec79fe0 100644 --- a/packages/kbn-optimizer/package.json +++ b/packages/kbn-optimizer/package.json @@ -27,7 +27,7 @@ "jest-diff": "^25.5.0", "json-stable-stringify": "^1.0.1", "loader-utils": "^1.2.3", - "node-sass": "^4.13.0", + "node-sass": "^4.13.1", "normalize-path": "^3.0.0", "postcss": "^7.0.32", "postcss-loader": "^3.0.0", diff --git a/packages/kbn-plugin-helpers/package.json b/packages/kbn-plugin-helpers/package.json index f292387c12521..65b44b6965048 100644 --- a/packages/kbn-plugin-helpers/package.json +++ b/packages/kbn-plugin-helpers/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/extract-zip": "^1.6.2", "@types/gulp-zip": "^4.0.1", - "@types/inquirer": "^6.5.0", + "@types/inquirer": "^7.3.1", "extract-zip": "^2.0.1", "typescript": "4.0.2" } diff --git a/packages/kbn-pm/package.json b/packages/kbn-pm/package.json index 1fb94e4c92ce1..c2f9236d9e798 100644 --- a/packages/kbn-pm/package.json +++ b/packages/kbn-pm/package.json @@ -19,8 +19,8 @@ "@types/cpy": "^5.1.0", "@types/dedent": "^0.7.0", "@types/getopts": "^2.0.1", - "@types/glob": "^5.0.35", - "@types/globby": "^6.1.0", + "@types/glob": "^7.1.2", + "@types/globby": "^8.0.0", "@types/has-ansi": "^3.0.0", "@types/lodash": "^4.14.159", "@types/log-symbols": "^2.0.0", @@ -41,12 +41,12 @@ "dedent": "^0.7.0", "del": "^5.1.0", "execa": "^4.0.2", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "glob": "^7.1.2", "globby": "^8.0.1", "has-ansi": "^3.0.0", "is-path-inside": "^3.0.2", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "log-symbols": "^2.2.0", "multimatch": "^4.0.0", "ncp": "^2.0.0", diff --git a/packages/kbn-spec-to-console/package.json b/packages/kbn-spec-to-console/package.json index 63ce93ac54f46..0c80c949c1d11 100644 --- a/packages/kbn-spec-to-console/package.json +++ b/packages/kbn-spec-to-console/package.json @@ -21,7 +21,7 @@ "prettier": "^2.1.1" }, "dependencies": { - "commander": "^3.0.0", + "commander": "^3.0.2", "glob": "^7.1.2" } -} \ No newline at end of file +} diff --git a/packages/kbn-std/package.json b/packages/kbn-std/package.json index 2cc9fd72082be..a931dd3f3154d 100644 --- a/packages/kbn-std/package.json +++ b/packages/kbn-std/package.json @@ -15,6 +15,6 @@ }, "dependencies": { "@kbn/utility-types": "1.0.0", - "lodash": "^4.17.15" + "lodash": "^4.17.20" } } diff --git a/packages/kbn-storybook/package.json b/packages/kbn-storybook/package.json index 5271ddb96d842..30ab0c701b295 100644 --- a/packages/kbn-storybook/package.json +++ b/packages/kbn-storybook/package.json @@ -22,10 +22,10 @@ "jest-specific-snapshot": "2.0.0", "jest-styled-components": "^7.0.2", "mkdirp": "0.5.1", - "mini-css-extract-plugin": "0.7.0", - "normalize-path": "3.0.0", - "react-docgen-typescript-loader": "3.1.0", - "rxjs": "6.5.5", + "mini-css-extract-plugin": "0.8.0", + "normalize-path": "^3.0.0", + "react-docgen-typescript-loader": "^3.1.1", + "rxjs": "^6.5.5", "serve-static": "1.14.1", "styled-components": "^5.1.0", "webpack": "^4.41.5" diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index 8a4ff55dcf68f..c616c836d5ff4 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -26,15 +26,14 @@ "dedent": "^0.7.0", "del": "^5.1.0", "exit-hook": "^2.2.0", - "getopts": "^2.2.4", + "getopts": "^2.2.5", "glob": "^7.1.2", "joi": "^13.5.2", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "parse-link-header": "^1.0.1", "rxjs": "^6.5.5", "strip-ansi": "^5.2.0", "tar-fs": "^2.1.0", - "tmp": "^0.1.0", "xml2js": "^0.4.22", "zlib": "^1.0.5" } diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json index 363f97522a901..1f916c58e2ecd 100644 --- a/packages/kbn-ui-framework/package.json +++ b/packages/kbn-ui-framework/package.json @@ -17,7 +17,7 @@ "dependencies": { "classnames": "2.2.6", "focus-trap-react": "^3.1.1", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "prop-types": "^15.7.2", "react": "^16.12.0", "react-ace": "^5.9.0", @@ -31,7 +31,7 @@ }, "devDependencies": { "@babel/core": "^7.11.1", - "@elastic/eui": "0.0.55", + "@elastic/eui": "29.0.0", "@kbn/babel-preset": "1.0.0", "@kbn/optimizer": "1.0.0", "babel-loader": "^8.0.6", @@ -62,7 +62,7 @@ "react-router": "^3.2.0", "react-router-redux": "^4.0.8", "redux": "3.7.2", - "redux-thunk": "2.2.0", + "redux-thunk": "^2.3.0", "regenerator-runtime": "^0.13.3", "sass-loader": "^8.0.2", "sinon": "^7.4.2", diff --git a/x-pack/package.json b/x-pack/package.json index 984843e5b6360..482e832aea916 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -80,7 +80,7 @@ "@types/geojson": "7946.0.7", "@types/getos": "^3.0.0", "@types/git-url-parse": "^9.0.0", - "@types/glob": "^7.1.1", + "@types/glob": "^7.1.2", "@types/graphql": "^0.13.2", "@types/gulp": "^4.0.6", "@types/hapi__wreck": "^15.0.1", @@ -107,7 +107,7 @@ "@types/nodemailer": "^6.2.1", "@types/object-hash": "^1.3.0", "@types/papaparse": "^5.0.3", - "@types/pngjs": "^3.3.2", + "@types/pngjs": "^3.4.0", "@types/pretty-ms": "^5.0.0", "@types/prop-types": "^15.7.3", "@types/proper-lockfile": "^3.0.1", @@ -139,12 +139,11 @@ "@welldone-software/why-did-you-render": "^4.0.0", "abab": "^1.0.4", "angular": "^1.8.0", - "angular-sanitize": "1.8.0", + "angular-sanitize": "^1.8.0", "apollo-link": "^1.2.3", "apollo-link-error": "^1.1.7", "apollo-link-state": "^0.4.1", "autoprefixer": "^9.7.4", - "axios": "^0.19.0", "babel-jest": "^25.5.1", "babel-loader": "^8.0.6", "babel-plugin-require-context-hook": "npm:babel-plugin-require-context-hook-babel7@1.0.0", @@ -156,7 +155,7 @@ "chalk": "^4.1.0", "chance": "1.0.18", "cheerio": "0.22.0", - "commander": "3.0.2", + "commander": "^3.0.2", "constate": "^1.3.2", "copy-to-clipboard": "^3.0.8", "copy-webpack-plugin": "^6.0.2", @@ -211,7 +210,7 @@ "mocha-junit-reporter": "^1.23.1", "mochawesome": "^4.1.0", "mochawesome-merge": "^4.1.0", - "mustache": "^2.3.0", + "mustache": "^2.3.2", "mutation-observer": "^1.0.3", "null-loader": "^3.0.0", "oboe": "^2.1.4", @@ -257,7 +256,6 @@ "supertest-as-promised": "^4.0.2", "suricata-sid-db": "^1.0.2", "tinycolor2": "1.4.1", - "tmp": "0.1.0", "topojson-client": "3.0.0", "tree-kill": "^1.2.2", "ts-loader": "^6.0.4", @@ -298,8 +296,8 @@ "apollo-link-schema": "^1.1.0", "apollo-server-errors": "^2.0.2", "apollo-server-hapi": "^1.3.6", - "archiver": "3.1.1", - "axios": "^0.19.0", + "archiver": "^3.1.1", + "axios": "^0.19.2", "bluebird": "3.5.5", "boom": "^7.2.0", "chroma-js": "^1.4.1", @@ -328,7 +326,7 @@ "graphql-tools": "^3.0.2", "h2o2": "^8.1.2", "handlebars": "4.7.6", - "history": "4.9.0", + "history": "^4.9.0", "idx": "^2.5.6", "immer": "^1.5.0", "inline-style": "^2.0.0", @@ -356,13 +354,13 @@ "p-retry": "^4.2.0", "papaparse": "^5.2.0", "pdfmake": "^0.1.65", - "pngjs": "3.4.0", + "pngjs": "^3.4.0", "prop-types": "^15.7.2", "proper-lockfile": "^3.2.0", "puid": "1.0.7", "puppeteer-core": "^1.19.0", "query-string": "^6.13.2", - "raw-loader": "3.1.0", + "raw-loader": "^3.1.0", "react": "^16.12.0", "react-datetime": "^2.14.0", "react-dom": "^16.12.0", @@ -377,7 +375,7 @@ "request": "^2.88.0", "rison-node": "0.3.1", "rxjs": "^6.5.5", - "semver": "5.7.0", + "semver": "^5.7.0", "set-value": "^3.0.2", "squel": "^5.13.0", "stats-lite": "^2.2.0", diff --git a/x-pack/plugins/apm/e2e/package.json b/x-pack/plugins/apm/e2e/package.json index 56204b5fb9f9d..649198b7eae11 100644 --- a/x-pack/plugins/apm/e2e/package.json +++ b/x-pack/plugins/apm/e2e/package.json @@ -7,23 +7,21 @@ "cypress:open": "cypress open", "cypress:run": "cypress run --spec **/*.feature" }, - "dependencies": { + "devDependencies": { "@cypress/snapshot": "^2.1.3", "@cypress/webpack-preprocessor": "^5.4.1", + "@types/cypress-cucumber-preprocessor": "^1.14.1", + "@types/node": ">=10.17.17 <10.20.0", "axios": "^0.19.2", - "cypress": "^4.9.0", "cypress-cucumber-preprocessor": "^2.5.2", + "cypress": "^4.9.0", "ora": "^4.0.4", "p-limit": "^3.0.1", "p-retry": "^4.2.0", "ts-loader": "^7.0.5", "typescript": "4.0.2", "wait-on": "^5.0.1", - "webpack": "^4.43.0", - "yargs": "^15.4.0" - }, - "devDependencies": { - "@types/cypress-cucumber-preprocessor": "^1.14.1", - "@types/node": "^14.0.14" + "webpack": "^4.41.5", + "yargs": "^15.4.1" } } diff --git a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json index 542c8358114f4..1eb524e71da19 100644 --- a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json +++ b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "uuid": "3.3.2", - "stats-lite": "2.2.0", + "stats-lite": "^2.2.0", "pretty-ms": "5.0.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 35f3f7797655e..b6516b8bf3b55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1212,28 +1212,6 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@0.0.55": - version "0.0.55" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-0.0.55.tgz#95ff5b70ecb1d333e1a5570a0e4a4079fdf7887b" - integrity sha512-U+YElZOnWEHcLyyfN4hk4LB3znuIR5V6VruPisMXymu/seKrvND2pJmMaB0nP8a1SVa8KufboXrGEDzBWJ4TUg== - dependencies: - classnames "^2.2.5" - core-js "^2.5.1" - focus-trap-react "^3.0.4" - highlight.js "^9.12.0" - html "^1.0.0" - keymirror "^0.1.1" - lodash "^3.10.1" - numeral "^2.0.6" - prop-types "^15.6.0" - react-ace "^5.5.0" - react-color "^2.13.8" - react-datepicker v1.4.1 - react-input-autosize "^2.2.1" - react-virtualized "^9.18.5" - tabbable "^1.1.0" - uuid "^3.1.0" - "@elastic/eui@29.0.0": version "29.0.0" resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-29.0.0.tgz#1c8d822c62ad5e29298a3a36f5b02fd9b32a5550" @@ -3888,7 +3866,7 @@ "@types/glob" "*" "@types/node" "*" -"@types/glob@*", "@types/glob@^5.0.35": +"@types/glob@*": version "5.0.35" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" integrity sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg== @@ -3906,12 +3884,13 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/globby@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/globby/-/globby-6.1.0.tgz#7c25b975512a89effea2a656ca8cf6db7fb29d11" - integrity sha512-j3XSDNoK4LO5T+ZviQD6PqfEjm07QFEacOTbJR3hnLWuWX0ZMLJl9oRPgj1PyrfGbXhfHFkksC9QZ9HFltJyrw== +"@types/glob@^7.1.2": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: - "@types/glob" "*" + "@types/minimatch" "*" + "@types/node" "*" "@types/globby@^8.0.0": version "8.0.0" @@ -4056,14 +4035,6 @@ dependencies: "@types/hapi" "*" -"@types/inquirer@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" - integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== - dependencies: - "@types/through" "*" - rxjs "^6.4.0" - "@types/inquirer@^7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-7.3.1.tgz#1f231224e7df11ccfaf4cf9acbcc3b935fea292d" @@ -4492,10 +4463,10 @@ resolved "https://registry.yarnpkg.com/@types/pegjs/-/pegjs-0.10.1.tgz#9a2f3961dc62430fdb21061eb0ddbd890f9e3b94" integrity sha512-ra8IchO9odGQmYKbm+94K58UyKCEKdZh9y0vxhG4pIpOJOBlC1C+ZtBVr6jLs+/oJ4pl+1p/4t3JtBA8J10Vvw== -"@types/pngjs@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-3.3.2.tgz#8ed3bd655ab3a92ea32ada7a21f618e63b93b1d4" - integrity sha512-/SBsv93rVnjByzcau24rBwb+N7BHFp2LateaXz1e7m7M0Wzck/ymXTNdWVrCtkuMbwTHAnfdc3X/I/5szsTEAA== +"@types/pngjs@^3.4.0": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-3.4.2.tgz#8dc49b45fbcf18a5873179e3664f049388e39ecf" + integrity sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw== dependencies: "@types/node" "*" @@ -5432,13 +5403,6 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abort-controller@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-2.0.3.tgz#b174827a732efadff81227ed4b8d1cc569baf20a" - integrity sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q== - dependencies: - event-target-shim "^5.0.0" - abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -5753,7 +5717,7 @@ angular-route@^1.8.0: resolved "https://registry.yarnpkg.com/angular-route/-/angular-route-1.8.0.tgz#cb8066c5d34284ffd6a15ac7be1b3d51c5ad7bb2" integrity sha512-ORvXAdVfCCA6XFwyjSkVQFFGufj0mNGiCvBR93Qsii8+7t/6Ioy6wheUoCj1x4NWUv7hAq3nYYGCVO6QEKb1BQ== -angular-sanitize@1.8.0, angular-sanitize@^1.8.0: +angular-sanitize@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/angular-sanitize/-/angular-sanitize-1.8.0.tgz#9f80782d3afeec3bcc0bb92b3ca6f1f421cfbca6" integrity sha512-j5GiOPCvfcDWK5svEOVoPb11X3UDVy/mdHPRWuy14Iyw86xaq+Bb+x/em2sAOa5MQQeY5ciLXbF3RRp8iCKcNg== @@ -6244,7 +6208,7 @@ archiver-utils@^2.1.0: normalize-path "^3.0.0" readable-stream "^2.0.0" -archiver@3.1.1, archiver@^3.1.1: +archiver@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== @@ -8667,7 +8631,7 @@ class-utils@^0.3.5: lazy-cache "^2.0.2" static-extend "^0.1.1" -classnames@2.2.6, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: +classnames@2.2.6, classnames@^2.2.5, classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -9172,11 +9136,6 @@ commander@2.17.x, commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - commander@^2.13.0, commander@^2.15.1, commander@^2.16.0, commander@^2.19.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -9192,10 +9151,10 @@ commander@^2.8.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== -commander@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.0.tgz#0641ea00838c7a964627f04cddc336a2deddd60a" - integrity sha512-pl3QrGOBa9RZaslQiqnnKX2J068wcQw7j9AIaBQ9/JEp5RY6je4jKTImg0Bd+rpoONSe7GUFSgkxLeo17m3Pow== +commander@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== commander@^4.0.1, commander@^4.1.1: version "4.1.1" @@ -9588,7 +9547,7 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.1, core-js@^2.5.3, core-js@^2.6.5, core-js@^2.6.9: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.5, core-js@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== @@ -11113,11 +11072,6 @@ dom-converter@~0.2: dependencies: utila "~0.4" -"dom-helpers@^2.4.0 || ^3.0.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" - integrity sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg== - dom-helpers@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821" @@ -13374,7 +13328,7 @@ focus-lock@^0.7.0: resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a" integrity sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw== -focus-trap-react@^3.0.4, focus-trap-react@^3.1.1: +focus-trap-react@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-3.1.2.tgz#4dd021ccd028bbd3321147d132cdf7585d6d1394" integrity sha512-MoQmONoy9gRPyrC5DGezkcOMGgx7MtIOAQDHe098UtL2sA2vmucJwEmQisb+8LRXNYFHxuw5zJ1oLFeKu4Mteg== @@ -13935,11 +13889,6 @@ getobject@~0.1.0: resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= -getopts@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.4.tgz#3137fe8a5fddf304904059a851bdc1c22f0f54fb" - integrity sha512-Rz7DGyomZjrenu9Jx4qmzdlvJgvrEFHXHvjK0FcZtcTC1U5FmES7OdZHUwMuSnEE6QvBvwse1JODKj7TgbSEjQ== - getopts@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -14007,7 +13956,7 @@ gl-matrix@^3.2.1: resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.3.0.tgz#232eef60b1c8b30a28cbbe75b2caf6c48fd6358b" integrity sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA== -glob-all@^3.1.0, glob-all@^3.2.1: +glob-all@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.2.1.tgz#082ca81afd2247cbd3ed2149bb2630f4dc877d95" integrity sha512-x877rVkzB3ipid577QOp+eQCR6M5ZyiwrtaYgrX/z3EThaSPFtLDwBXFHc3sH1cG0R0vFYI5SRYeWMMSEyXkUw== @@ -15385,7 +15334,17 @@ history-extra@^5.0.1: resolved "https://registry.yarnpkg.com/history-extra/-/history-extra-5.0.1.tgz#95a2e59dda526c4241d0ae1b124a77a5e4675ce8" integrity sha512-6XV1L1lHgporVWgppa/Kq+Fnz4lhBew7iMxYCTfzVmoEywsAKJnTjdw1zOd+EGLHGYp0/V8jSVMEgqx4QbHLTw== -history@4.9.0, history@^4.9.0: +history@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" + integrity sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw= + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + query-string "^4.2.2" + warning "^3.0.0" + +history@^4.9.0: version "4.9.0" resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== @@ -15397,16 +15356,6 @@ history@4.9.0, history@^4.9.0: tiny-warning "^1.0.0" value-equal "^0.4.0" -history@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" - integrity sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw= - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - query-string "^4.2.2" - warning "^3.0.0" - hjson@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/hjson/-/hjson-3.2.1.tgz#20de41dc87fc9a10d1557d0230b0e02afb1b09ac" @@ -15541,7 +15490,7 @@ html-webpack-plugin@^4.0.0-beta.2: tapable "^1.1.0" util.promisify "1.0.0" -html@1.0.0, html@^1.0.0: +html@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" integrity sha1-pUT6nqVJK/s6LMqCEKEL57WvH2E= @@ -18359,7 +18308,7 @@ kew@~0.1.7: resolved "https://registry.yarnpkg.com/kew/-/kew-0.1.7.tgz#0a32a817ff1a9b3b12b8c9bacf4bc4d679af8e72" integrity sha1-CjKoF/8amzsSuMm6z0vE1nmvjnI= -keymirror@0.1.1, keymirror@^0.1.1: +keymirror@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35" integrity sha1-kYiJ6hP40KQufFVyUO7nE63JXDU= @@ -19180,11 +19129,6 @@ lodash@4.17.11, lodash@4.17.15, lodash@>4.17.4, lodash@^4, lodash@^4.0.0, lodash resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= - log-ok@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334" @@ -19367,14 +19311,6 @@ lowlight@~1.9.1: dependencies: highlight.js "~9.12.0" -lru-cache@4.1.5, lru-cache@^4.0.1, lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@4.1.x, lru-cache@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" @@ -19383,6 +19319,14 @@ lru-cache@4.1.x, lru-cache@^4.0.0: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.0.1, lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -20044,20 +19988,20 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.5.5" tiny-warning "^1.0.3" -mini-css-extract-plugin@0.7.0, mini-css-extract-plugin@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" - integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== +mini-css-extract-plugin@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" + integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== dependencies: loader-utils "^1.1.0" normalize-url "1.9.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" -mini-css-extract-plugin@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" - integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== +mini-css-extract-plugin@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" + integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== dependencies: loader-utils "^1.1.0" normalize-url "1.9.1" @@ -20485,16 +20429,11 @@ murmurhash3js@3.0.1: resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg= -mustache@2.3.2: +mustache@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5" integrity sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ== -mustache@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.0.tgz#4028f7778b17708a489930a6e52ac3bca0da41d0" - integrity sha1-QCj3d4sXcIpImTCm5SrDvKDaQdA= - mutation-observer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0" @@ -20680,7 +20619,7 @@ next-tick@1: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -ngreact@0.5.1, ngreact@^0.5.1: +ngreact@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/ngreact/-/ngreact-0.5.1.tgz#2dcccc1541771796689d13e51bb8d5010af41c57" integrity sha512-u/jOWS0KF/twS09O+yuBgNNEEytEhrmSfLTewAuglDSfEYru6a4I8tUnU4fs9/WvlRWbvJTk7WEnwbGamM+Kvg== @@ -20748,7 +20687,7 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@2.1.2, node-fetch@2.6.1, node-fetch@^1.0.1, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@2.1.2, node-fetch@^1.0.1, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -20932,7 +20871,7 @@ node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== -node-sass@^4.13.0, node-sass@^4.13.1: +node-sass@^4.13.1: version "4.13.1" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== @@ -21045,11 +20984,6 @@ normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@3.0.0, normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -21057,6 +20991,11 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" @@ -22588,16 +22527,16 @@ png-js@^1.0.0: resolved "https://registry.yarnpkg.com/png-js/-/png-js-1.0.0.tgz#e5484f1e8156996e383aceebb3789fd75df1874d" integrity sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g== -pngjs@3.4.0, pngjs@^3.3.3, pngjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - pngjs@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.1.tgz#8e14e6679ee7424b544334c3b2d21cea6d8c209a" integrity sha512-ggXCTsqHRIsGMkHlCEhbHhUmNTA2r1lpkE0NL4Q9S8spkXbm4vE9TVmPso2AGYn90Gltdz8W5CyzhcIGg2Gejg== +pngjs@^3.3.3, pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + pnp-webpack-plugin@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" @@ -22625,16 +22564,16 @@ polished@^3.3.1: dependencies: "@babel/runtime" "^7.4.5" -popper.js@^1.14.1, popper.js@^1.14.7: - version "1.15.0" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" - integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== - popper.js@^1.14.4: version "1.14.7" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.7.tgz#e31ec06cfac6a97a53280c3e55e4e0c860e7738e" integrity sha512-4q1hNvoUre/8srWsH7hnoSJ5xVmIL4qgz+s4qf2TnJIMyZFUFMGH+9vE7mXynAlHSZ/NdTmmow86muD0myUkVQ== +popper.js@^1.14.7: + version "1.15.0" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== + portfinder@^1.0.26: version "1.0.27" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.27.tgz#a41333c116b5e5f3d380f9745ac2f35084c4c758" @@ -23400,7 +23339,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -raw-loader@3.1.0, raw-loader@^3.1.0: +raw-loader@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-3.1.0.tgz#5e9d399a5a222cc0de18f42c3bc5e49677532b3f" integrity sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA== @@ -23446,16 +23385,6 @@ re2@^1.15.4: nan "^2.14.1" node-gyp "^7.0.0" -react-ace@^5.5.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-5.10.0.tgz#e328b37ac52759f700be5afdb86ada2f5ec84c5e" - integrity sha512-aEK/XZCowP8IXq91e2DYqOtGhabk1bbjt+fyeW0UBcIkzDzP/RX/MeJKeyW7wsZcwElACVwyy9nnwXBTqgky3A== - dependencies: - brace "^0.11.0" - lodash.get "^4.4.2" - lodash.isequal "^4.1.1" - prop-types "^15.5.8" - react-ace@^5.9.0: version "5.9.0" resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-5.9.0.tgz#427a1cc4869b960a6f9748aa7eb169a9269fc336" @@ -23540,16 +23469,6 @@ react-color@^2.17.0: reactcss "^1.2.0" tinycolor2 "^1.4.1" -react-datepicker@v1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-1.4.1.tgz#ee171b71d9853e56f9eece5fc3186402f4648683" - integrity sha512-O/ExTWLS81pyWJWLFg1BRQEr9S/BDd6iMEkGctxQmVrRw2srW8DNdnQm5UgFNu8LoSZGMDvI55OghYZvDpWJhw== - dependencies: - classnames "^2.2.5" - prop-types "^15.6.0" - react-onclickoutside "^6.7.1" - react-popper "^0.9.1" - react-datetime@^2.14.0: version "2.15.0" resolved "https://registry.yarnpkg.com/react-datetime/-/react-datetime-2.15.0.tgz#a8f7da6c58b6b45dbeea32d4e8485db17614e12c" @@ -23591,15 +23510,6 @@ react-dev-utils@^9.0.0: strip-ansi "5.2.0" text-table "0.2.0" -react-docgen-typescript-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.1.0.tgz#09cacf872617c97f946ee920d2239f51d543be41" - integrity sha512-gY+b7RkRPty5ZN4NMQ+jwx9MzTVuIj6LJCwdWRAi1+nrHJfH2gMMytQfxFdzQ7BlgD4COWnSE8Ixtl2L62kCRw== - dependencies: - "@webpack-contrib/schema-utils" "^1.0.0-beta.0" - loader-utils "^1.2.3" - react-docgen-typescript "^1.12.3" - react-docgen-typescript-loader@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.1.1.tgz#c1992538524fb9e45246d6c1314ddcfbf26e9d08" @@ -23742,13 +23652,6 @@ react-hotkeys@2.0.0: dependencies: prop-types "^15.6.1" -react-input-autosize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" - integrity sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA== - dependencies: - prop-types "^15.5.8" - react-input-autosize@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" @@ -23848,11 +23751,6 @@ react-onclickoutside@^6.5.0: resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93" integrity sha512-p84kBqGaMoa7VYT0vZ/aOYRfJB+gw34yjpda1Z5KeLflg70HipZOT+MXQenEhdkPAABuE2Astq4zEPdMqUQxcg== -react-onclickoutside@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.8.0.tgz#9f91b5b3ed59f4d9e43fd71620dc200773a4d569" - integrity sha512-5Q4Rn7QLEoh7WIe66KFvYIpWJ49GeHoygP1/EtJyZjXKgrWH19Tf0Ty3lWyQzrEEDyLOwUvvmBFSE3dcDdvagA== - react-popper-tooltip@^2.10.1, react-popper-tooltip@^2.8.3: version "2.11.1" resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" @@ -23861,14 +23759,6 @@ react-popper-tooltip@^2.10.1, react-popper-tooltip@^2.8.3: "@babel/runtime" "^7.9.2" react-popper "^1.3.7" -react-popper@^0.9.1: - version "0.9.5" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.9.5.tgz#02a24ef3eec33af9e54e8358ab70eb0e331edd05" - integrity sha1-AqJO8+7DOvnlToNYq3DrDjMe3QU= - dependencies: - popper.js "^1.14.1" - prop-types "^15.6.1" - react-popper@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" @@ -24144,18 +24034,6 @@ react-virtualized-auto-sizer@^1.0.2: resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz#a61dd4f756458bbf63bd895a92379f9b70f803bd" integrity sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg== -react-virtualized@^9.18.5: - version "9.20.1" - resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.20.1.tgz#02dc08fe9070386b8c48e2ac56bce7af0208d22d" - integrity sha512-xIWxBsyNAjceqD3hsE0nw5TcDVxKbIepsHhvS2XneHmNz0KlKxdLdGBmGZBM9ZesEmbZ5EO0Sw70TB1MeCmpbQ== - dependencies: - babel-runtime "^6.26.0" - classnames "^2.2.3" - dom-helpers "^2.4.0 || ^3.0.0" - loose-envify "^1.3.0" - prop-types "^15.6.0" - react-lifecycles-compat "^3.0.4" - react-virtualized@^9.21.2: version "9.21.2" resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.21.2.tgz#02e6df65c1e020c8dbf574ec4ce971652afca84e" @@ -24579,11 +24457,6 @@ redux-saga@^1.1.3: dependencies: "@redux-saga/core" "^1.1.3" -redux-thunk@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5" - integrity sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU= - redux-thunk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" @@ -25518,13 +25391,6 @@ rxjs-marbles@^5.0.6: dependencies: fast-equals "^2.0.0" -rxjs@6.5.5, rxjs@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - rxjs@^5.5.2: version "5.5.12" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" @@ -25539,6 +25405,13 @@ rxjs@^6.1.0, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1: dependencies: tslib "^1.9.0" +rxjs@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + rxjs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" @@ -25830,11 +25703,6 @@ semver@5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -26175,13 +26043,6 @@ simple-git@1.116.0: dependencies: debug "^4.0.1" -simple-git@^1.91.0: - version "1.92.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.92.0.tgz#6061468eb7d19f0141078fc742e62457e910f547" - integrity sha1-YGFGjrfRnwFBB4/HQuYkV+kQ9Uc= - dependencies: - debug "^3.1.0" - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -27464,7 +27325,7 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" -tabbable@1.1.3, tabbable@^1.1.0: +tabbable@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-1.1.3.tgz#0e4ee376f3631e42d7977a074dbd2b3827843081" integrity sha512-nOWwx35/JuDI4ONuF0ZTo6lYvI0fY0tZCH1ErzY2EXfu4az50ZyiUX8X073FLiZtmWUVlkRnuXsehjJgCw9tYg== @@ -27999,13 +27860,6 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.1.0, tmp@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - tmp@^0.0.29: version "0.0.29" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" @@ -29074,7 +28928,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.2.0, url-loader@^2.0.1: +url-loader@^2.0.1: version "2.2.0" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.2.0.tgz#af321aece1fd0d683adc8aaeb27829f29c75b46e" integrity sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw== @@ -30954,7 +30808,7 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yauzl@2.10.0, yauzl@^2.10.0: +yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= From 87b25d5a8fec6057837a09cc5709daa89234527a Mon Sep 17 00:00:00 2001 From: MadameSheema Date: Tue, 29 Sep 2020 08:58:20 +0200 Subject: [PATCH 032/119] adds retryability feature (#78611) --- x-pack/plugins/security_solution/cypress/cypress.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/x-pack/plugins/security_solution/cypress/cypress.json b/x-pack/plugins/security_solution/cypress/cypress.json index b097b0432e75d..173514565c8bb 100644 --- a/x-pack/plugins/security_solution/cypress/cypress.json +++ b/x-pack/plugins/security_solution/cypress/cypress.json @@ -1,6 +1,9 @@ { "baseUrl": "http://localhost:5601", "defaultCommandTimeout": 120000, + "retries": { + "runMode": 2 + }, "screenshotsFolder": "../../../target/kibana-security-solution/cypress/screenshots", "trashAssetsBeforeRuns": false, "video": false, From 19a8fa4d101183ad78ccb75be342e0265f6a536a Mon Sep 17 00:00:00 2001 From: MadameSheema Date: Tue, 29 Sep 2020 08:58:40 +0200 Subject: [PATCH 033/119] [Security Solution] Fixes url timeline flaky test (#78556) * fixes url timeline flaky test * fixes type check issue Co-authored-by: Elastic Machine --- .../cypress/integration/url_state.spec.ts | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts b/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts index 2588c580dedd3..906fba28a7721 100644 --- a/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts @@ -14,7 +14,7 @@ import { import { HOSTS_NAMES } from '../screens/hosts/all_hosts'; import { ANOMALIES_TAB } from '../screens/hosts/main'; import { BREADCRUMBS, HOSTS, KQL_INPUT, NETWORK } from '../screens/security_header'; -import { SERVER_SIDE_EVENT_COUNT, TIMELINE_TITLE } from '../screens/timeline'; +import { TIMELINE_TITLE } from '../screens/timeline'; import { loginAndWaitForPage, loginAndWaitForPageWithoutDateRange } from '../tasks/login'; import { @@ -32,16 +32,18 @@ import { waitForIpsTableToBeLoaded } from '../tasks/network/flows'; import { clearSearchBar, kqlSearch, navigateFromHeaderTo } from '../tasks/security_header'; import { openTimelineUsingToggle } from '../tasks/security_main'; import { - addDescriptionToTimeline, addNameToTimeline, closeTimeline, - executeTimelineKQL, + populateTimeline, waitForTimelineChanges, } from '../tasks/timeline'; import { HOSTS_URL } from '../urls/navigation'; import { ABSOLUTE_DATE_RANGE } from '../urls/state'; +import { timeline } from '../objects/timeline'; +import { TIMELINE } from '../screens/create_new_case'; + const ABSOLUTE_DATE = { endTime: '2019-08-01T20:33:29.186Z', endTimeTimeline: '2019-08-02T21:03:29.186Z', @@ -51,8 +53,7 @@ const ABSOLUTE_DATE = { startTimeTimeline: '2019-08-02T20:03:29.186Z', }; -// FLAKY: https://github.com/elastic/kibana/issues/61612 -describe.skip('url state', () => { +describe('url state', () => { it('sets the global start and end dates from the url', () => { loginAndWaitForPageWithoutDateRange(ABSOLUTE_DATE_RANGE.url); cy.get(DATE_PICKER_START_DATE_POPOVER_BUTTON).should( @@ -222,23 +223,12 @@ describe.skip('url state', () => { it('sets and reads the url state for timeline by id', () => { loginAndWaitForPage(HOSTS_URL); openTimelineUsingToggle(); - executeTimelineKQL('host.name: *'); - - cy.get(SERVER_SIDE_EVENT_COUNT) - .invoke('text') - .then((strCount) => { - const intCount = +strCount; - cy.wrap(intCount).should('be.above', 0); - }); + populateTimeline(); cy.server(); cy.route('PATCH', '**/api/timeline').as('timeline'); - const timelineName = 'Security'; - const timelineDescription = 'This is the best timeline of the world'; - addNameToTimeline(timelineName); - waitForTimelineChanges(); - addDescriptionToTimeline(timelineDescription); + addNameToTimeline(timeline.title); waitForTimelineChanges(); cy.wait('@timeline').then((response) => { @@ -249,9 +239,10 @@ describe.skip('url state', () => { cy.visit('/app/home'); cy.visit(`/app/security/timelines?timeline=(id:'${timelineId}',isOpen:!t)`); cy.get(DATE_PICKER_APPLY_BUTTON_TIMELINE).should('exist'); - cy.get(DATE_PICKER_APPLY_BUTTON_TIMELINE).invoke('text').should('not.equal', 'Updating'); + cy.get(DATE_PICKER_APPLY_BUTTON_TIMELINE).should('not.have.text', 'Updating'); + cy.get(TIMELINE).should('be.visible'); cy.get(TIMELINE_TITLE).should('be.visible'); - cy.get(TIMELINE_TITLE).should('have.attr', 'value', timelineName); + cy.get(TIMELINE_TITLE).should('have.attr', 'value', timeline.title); }); }); }); From d7d96d98646a7c2f99b1e76486ac4573133e36a5 Mon Sep 17 00:00:00 2001 From: Rudolf Meijering Date: Tue, 29 Sep 2020 09:34:54 +0200 Subject: [PATCH 034/119] RFC: Improve saved object migrations (#66056) * RFC: Improve saved object migrations * Added rolling upgrades as alternative * Clarify advantage of re-using index for avoiding max shards open errors * Add more detail about how dry run migrations and invalid document exports will be exposed to users * Add separate section to highlight assumptions and tradeoffs * Apply nits from code review Co-authored-by: Josh Dover * Move 'Single node migrations coordinated through a lease/lock' under alternatives * Fix 5.2.2 document lock algorithm step 3.2 * Minor clarificiations * Minimizing data loss with mixed Kibana versions: move 7.x algorithm into alternatives and clarify 8.x algorithm * Adds impact idempotent restrictions have on upcoming/requested migration features * nit: clarify 4.3.1.2.3 Clarify that if documents already exist, they aren't overwritten. Co-authored-by: Brandon Kobel * Update 4.5.2: we need only one version-specific alias, not separate read/write aliases * Add 4.0.4 the assumption that a saved object type will only ever be registered by one plugin * Updates 4.3.1.2: Adds mappings compatibility check, adds soft deletes to prevent lost deletes, add note about data loss with mixed plugins on the same kibana version * Don't try to minimize data loss for unsupported configurations, update index mappings during 8.x migration - Move "4.5.2 Minimizing data loss with mixed Kibana versions (9.0)" to alternatives section. Expand this section with a more detailed algorithm as well as enumerating some data loss scenarios that could still occur. - Add the supported upgrade procedure which guarantees no undetected data loss. - Update "4.5.1 Migration algorithm (8.0)" - Added a step to update index mappings - If there's update version mismatch errors, complete all batches before restarting the migration to improve performance. * Flesh out upgrade and rollback procedure with gracefull shutdown * New migration algorithm, upgrade procedure based on index cloning and new ES features * Minor: clarify that index cloning algorithm solves (2.6) but (2.7) is out of scope * Move 'Tag objects as invalid if their transformation fails' to the alternatives section * Don't migrate when there's orphan documents so that rollback is always possible. Updates: 4.2.1.2 Migration algorithm: Cloned index per version & 4.2.1.4 Handling documents that belong to a disabled plugin * Link to new Elasticsearch features required for the implementation * 4.2.1.2 Clarify the purpose of the target index postfix * Add open questions around mappings growing over time. Fix rollback index example * minor: fix formatting * Update assumptions and tradeoffs to match latest algorithm * Review feedback - Remove 4.0.2 since the latest algorithm resolves the tradeoff - 4.2.1.2 should handle v6 `.kibana` indexes * More alternatives for 4.2.1.4 Handling documents that belong to a disabled plugin. Don't introduce breaking changes in 7.x * Handle new ES cluster without any indices. Fix clone API parameters * Update 4.2.1.2: transform outdated documents on every startup, only fail for unknown types in 8.x Co-authored-by: Josh Dover Co-authored-by: Brandon Kobel --- rfcs/text/0013_saved_object_migrations.md | 745 ++++++++++++++++++++++ 1 file changed, 745 insertions(+) create mode 100644 rfcs/text/0013_saved_object_migrations.md diff --git a/rfcs/text/0013_saved_object_migrations.md b/rfcs/text/0013_saved_object_migrations.md new file mode 100644 index 0000000000000..c5069625cb8a6 --- /dev/null +++ b/rfcs/text/0013_saved_object_migrations.md @@ -0,0 +1,745 @@ +- Start Date: 2020-05-11 +- RFC PR: (leave this empty) +- Kibana Issue: (leave this empty) + +--- +- [1. Summary](#1-summary) +- [2. Motivation](#2-motivation) +- [3. Saved Object Migration Errors](#3-saved-object-migration-errors) +- [4. Design](#4-design) + - [4.0 Assumptions and tradeoffs](#40-assumptions-and-tradeoffs) + - [4.1 Discover and remedy potential failures before any downtime](#41-discover-and-remedy-potential-failures-before-any-downtime) + - [4.2 Automatically retry failed migrations until they succeed](#42-automatically-retry-failed-migrations-until-they-succeed) + - [4.2.1 Idempotent migrations performed without coordination](#421-idempotent-migrations-performed-without-coordination) + - [4.2.1.1 Restrictions](#4211-restrictions) + - [4.2.1.2 Migration algorithm: Cloned index per version](#4212-migration-algorithm-cloned-index-per-version) + - [4.2.1.3 Upgrade and rollback procedure](#4213-upgrade-and-rollback-procedure) + - [4.2.1.4 Handling documents that belong to a disabled plugin](#4214-handling-documents-that-belong-to-a-disabled-plugin) +- [5. Alternatives](#5-alternatives) + - [5.1 Rolling upgrades](#51-rolling-upgrades) + - [5.2 Single node migrations coordinated through a lease/lock](#52-single-node-migrations-coordinated-through-a-leaselock) + - [5.2.1 Migration algorithm](#521-migration-algorithm) + - [5.2.2 Document lock algorithm](#522-document-lock-algorithm) + - [5.2.3 Checking for "weak lease" expiry](#523-checking-for-weak-lease-expiry) + - [5.3 Minimize data loss with mixed Kibana versions during 7.x](#53-minimize-data-loss-with-mixed-kibana-versions-during-7x) + - [5.4 In-place migrations that re-use the same index (8.0)](#54-in-place-migrations-that-re-use-the-same-index-80) + - [5.4.1 Migration algorithm (8.0):](#541-migration-algorithm-80) + - [5.4.2 Minimizing data loss with unsupported upgrade configurations (8.0)](#542-minimizing-data-loss-with-unsupported-upgrade-configurations-80) + - [5.5 Tag objects as “invalid” if their transformation fails](#55-tag-objects-as-invalid-if-their-transformation-fails) +- [6. How we teach this](#6-how-we-teach-this) +- [7. Unresolved questions](#7-unresolved-questions) + +# 1. Summary + +Improve the Saved Object migration algorithm to ensure a smooth Kibana upgrade +procedure. + +# 2. Motivation + +Kibana version upgrades should have a minimal operational impact. To achieve +this, users should be able to rely on: + +1. A predictable downtime window. +2. A small downtime window. + 1. (future) provide a small downtime window on indices with 10k or even + a 100k documents. +3. The ability to discover and remedy potential failures before initiating the + downtime window. +4. Quick roll-back in case of failure. +5. Detailed documentation about the impact of downtime on the features they + are using (e.g. actions, task manager, fleet, reporting). +6. Mixed Kibana versions shouldn’t cause data loss. +7. (stretch goal) Maintain read-only functionality during the downtime window. + +The biggest hurdle to achieving the above is Kibana’s Saved Object migrations. +Migrations aren’t resilient and require manual intervention anytime an error +occurs (see [3. Saved Object Migration +Errors](#3-saved-object-migration-errors)). + +It is impossible to discover these failures before initiating downtime. Errors +often force users to roll-back to a previous version of Kibana or cause hours +of downtime. To retry the migration, users are asked to manually delete a +`.kibana_x` index. If done incorrectly this can lead to data loss, making it a +terrifying experience (restoring from a pre-upgrade snapshot is a safer +alternative but not mentioned in the docs or logs). + +Cloud users don’t have access to Kibana logs to be able to identify and remedy +the cause of the migration failure. Apart from blindly retrying migrations by +restoring a previous snapshot, cloud users are unable to remedy a failed +migration and have to escalate to support which can further delay resolution. + +Taken together, version upgrades are a major operational risk and discourage +users from adopting the latest features. + +# 3. Saved Object Migration Errors + +Any of the following classes of errors could result in a Saved Object +migration failure which requires manual intervention to resolve: + +1. A bug in a plugin’s registered document transformation function causes it + to throw an exception on _valid_ data. +2. _Invalid_ data stored in Elasticsearch causes a plugin’s registered + document transformation function to throw an exception . +3. Failures resulting from an unhealthy Elasticsearch cluster: + 1. Maximum shards open + 2. Too many scroll contexts + 3. `circuit_breaking_exception` (insufficient heap memory) + 4. `process_cluster_event_timeout_exception` for index-aliases, create-index, put-mappings + 5. Read-only indices due to low disk space (hitting the flood_stage watermark) + 6. Re-index failed: search rejected due to missing shards + 7. `TooManyRequests` while doing a `count` of documents requiring a migration + 8. Bulk write failed: primary shard is not active +4. The Kibana process is killed while migrations are in progress. + +# 4. Design +## 4.0 Assumptions and tradeoffs +The proposed design makes several important assumptions and tradeoffs. + +**Background:** + +The 7.x upgrade documentation lists taking an Elasticsearch snapshot as a +required step, but we instruct users to retry migrations and perform rollbacks +by deleting the failed `.kibana_n` index and pointing the `.kibana` alias to +`.kibana_n-1`: + - [Handling errors during saved object +migrations.](https://github.com/elastic/kibana/blob/75444a9f1879c5702f9f2b8ad4a70a3a0e75871d/docs/setup/upgrade/upgrade-migrations.asciidoc#handling-errors-during-saved-object-migrations) + - [Rolling back to a previous version of Kibana.](https://github.com/elastic/kibana/blob/75444a9f1879c5702f9f2b8ad4a70a3a0e75871d/docs/setup/upgrade/upgrade-migrations.asciidoc#rolling-back-to-a-previous-version-of-kib) + - Server logs from failed migrations. + +**Assumptions and tradeoffs:** +1. It is critical to maintain a backup index during 7.x to ensure that anyone + following the existing upgrade / rollback procedures don't end up in a + position where they no longer can recover their data. + 1. This excludes us from introducing in-place migrations to support huge + indices during 7.x. +2. The simplicity of idempotent, coordination-free migrations outweighs the + restrictions this will impose on the kinds of migrations we're able to + support in the future. See (4.2.1) +3. A saved object type (and it's associated migrations) will only ever be + owned by one plugin. If pluginA registers saved object type `plugin_a_type` + then pluginB must never register that same type, even if pluginA is + disabled. Although we cannot enforce it on third-party plugins, breaking + this assumption may lead to data loss. + +## 4.1 Discover and remedy potential failures before any downtime + +> Achieves goals: (2.3) +> Mitigates errors: (3.1), (3.2) + +1. Introduce a CLI option to perform a dry run migration to allow + administrators to locate and fix potential migration failures without + taking their existing Kibana node(s) offline. +2. To have the highest chance of surfacing potential failures such as low disk + space, dry run migrations should not be mere simulations. A dry run should + perform a real migration in a way that doesn’t impact the existing Kibana + cluster. +3. The CLI should generate a migration report to make it easy to create a + support request from a failed migration dry run. + 1. The report would be an NDJSON export of all failed objects. + 2. If support receives such a report, we could modify all the objects to + ensure the migration would pass and send this back to the client. + 3. The client can then import the updated objects using the standard Saved + Objects NDJSON import and run another dry run to verify all problems + have been fixed. +4. Make running dry run migrations a required step in the upgrade procedure + documentation. +5. (Optional) Add dry run migrations to the standard cloud upgrade procedure? + +## 4.2 Automatically retry failed migrations until they succeed + +> Achieves goals: (2.2), (2.6) +> Mitigates errors (3.3) and (3.4) + +External conditions such as failures from an unhealthy Elasticsearch cluster +(3.3) can cause the migration to fail. The Kibana cluster should be able to +recover automatically once these external conditions are resolved. There are +two broad approaches to solving this problem based on whether or not +migrations are idempotent: + +| Idempotent migrations |Description | +| --------------------- | --------------------------------------------------------- | +| Yes | Idempotent migrations performed without coordination | +| No | Single node migrations coordinated through a lease / lock | + +Idempotent migrations don't require coordination making the algorithm +significantly less complex and will never require manual intervention to +retry. We, therefore, prefer this solution, even though it introduces +restrictions on migrations (4.2.1.1). For other alternatives that were +considered see section [(5)](#5-alternatives). + +## 4.2.1 Idempotent migrations performed without coordination + +The migration system can be said to be idempotent if the same results are +produced whether the migration was run once or multiple times. This property +should hold even if new (up to date) writes occur in between migration runs +which introduces the following restrictions: + +### 4.2.1.1 Restrictions + +1. All document transforms need to be deterministic, that is a document + transform will always return the same result for the same set of inputs. +2. It should always be possible to construct the exact set of inputs required + for (1) at any point during the migration process (before, during, after). + +Although these restrictions require significant changes, it does not prevent +known upcoming migrations such as [sharing saved-objects in multiple spaces](https://github.com/elastic/kibana/issues/27004) or [splitting a saved +object into multiple child +documents](https://github.com/elastic/kibana/issues/26602). To ensure that +these migrations are idempotent, they will have to generate new saved object +id's deterministically with e.g. UUIDv5. + + +### 4.2.1.2 Migration algorithm: Cloned index per version +Note: +- The description below assumes the migration algorithm is released in 7.10.0. + So < 7.10.0 will use `.kibana` and >= 7.10.0 will use `.kibana_current`. +- We refer to the alias and index that outdated nodes use as the source alias + and source index. +- Every version performs a migration even if mappings or documents aren't outdated. + +1. Locate the source index by fetching aliases (including `.kibana` for + versions prior to v7.10.0) + + ``` + GET '/_alias/.kibana_current,.kibana_7.10.0,.kibana' + ``` + + The source index is: + 1. the index the `.kibana_current` alias points to, or if it doesn’t exist, + 2. the index the `.kibana` alias points to, or if it doesn't exist, + 3. the v6.x `.kibana` index + + If none of the aliases exists, this is a new Elasticsearch cluster and no + migrations are necessary. Create the `.kibana_7.10.0_001` index with the + following aliases: `.kibana_current` and `.kibana_7.10.0`. +2. If `.kibana_current` and `.kibana_7.10.0` both exists and are pointing to the same index this version's migration has already been completed. + 1. Because the same version can have plugins enabled at any point in time, + perform the mappings update in step (6) and migrate outdated documents + with step (7). + 2. Skip to step (9) to start serving traffic. +3. Fail the migration if: + 1. `.kibana_current` is pointing to an index that belongs to a later version of Kibana .e.g. `.kibana_7.12.0_001` + 2. (Only in 8.x) The source index contains documents that belong to an unknown Saved Object type (from a disabled plugin). Log an error explaining that the plugin that created these documents needs to be enabled again or that these objects should be deleted. See section (4.2.1.4). +4. Mark the source index as read-only and wait for all in-flight operations to drain (requires https://github.com/elastic/elasticsearch/pull/58094). This prevents any further writes from outdated nodes. Assuming this API is similar to the existing `//_close` API, we expect to receive `"acknowledged" : true` and `"shards_acknowledged" : true`. If all shards don’t acknowledge within the timeout, retry the operation until it succeeds. +5. Clone the source index into a new target index which has writes enabled. All nodes on the same version will use the same fixed index name e.g. `.kibana_7.10.0_001`. The `001` postfix isn't used by Kibana, but allows for re-indexing an index should this be required by an Elasticsearch upgrade. E.g. re-index `.kibana_7.10.0_001` into `.kibana_7.10.0_002` and point the `.kibana_7.10.0` alias to `.kibana_7.10.0_002`. + 1. `POST /.kibana_n/_clone/.kibana_7.10.0_001?wait_for_active_shards=all {"settings": {"index.blocks.write": false}}`. Ignore errors if the clone already exists. + 2. Wait for the cloning to complete `GET /_cluster/health/.kibana_7.10.0_001?wait_for_status=green&timeout=60s` If cloning doesn’t complete within the 60s timeout, log a warning for visibility and poll again. +6. Update the mappings of the target index + 1. Retrieve the existing mappings including the `migrationMappingPropertyHashes` metadata. + 2. Update the mappings with `PUT /.kibana_7.10.0_001/_mapping`. The API deeply merges any updates so this won't remove the mappings of any plugins that were enabled in a previous version but are now disabled. + 3. Ensure that fields are correctly indexed using the target index's latest mappings `POST /.kibana_7.10.0_001/_update_by_query?conflicts=proceed`. In the future we could optimize this query by only targeting documents: + 1. That belong to a known saved object type. + 2. Which don't have outdated migrationVersion numbers since these will be transformed anyway. + 3. That belong to a type whose mappings were changed by comparing the `migrationMappingPropertyHashes`. (Metadata, unlike the mappings isn't commutative, so there is a small chance that the metadata hashes do not accurately reflect the latest mappings, however, this will just result in an less efficient query). +7. Transform documents by reading batches of outdated documents from the target index then transforming and updating them with optimistic concurrency control. + 1. Ignore any version conflict errors. + 2. If a document transform throws an exception, add the document to a failure list and continue trying to transform all other documents. If any failures occured, log the complete list of documents that failed to transform. Fail the migration. +8. Mark the migration as complete by doing a single atomic operation (requires https://github.com/elastic/elasticsearch/pull/58100) that: + 1. Checks that `.kibana-current` alias is still pointing to the source index + 2. Points the `.kibana-7.10.0` and `.kibana_current` aliases to the target index. + 3. If this fails with a "required alias [.kibana_current] does not exist" error fetch `.kibana_current` again: + 1. If `.kibana_current` is _not_ pointing to our target index fail the migration. + 2. If `.kibana_current` is pointing to our target index the migration has succeeded and we can proceed to step (9). +9. Start serving traffic. + +Together with the limitations, this algorithm ensures that migrations are +idempotent. If two nodes are started simultaneously, both of them will start +transforming documents in that version's target index, but because migrations are idempotent, it doesn’t matter which node’s writes win. + +
+ In the future, this algorithm could enable (2.6) "read-only functionality during the downtime window" but this is outside of the scope of this RFC. + + Although the migration algorithm guarantees there's no data loss while providing read-only access to outdated nodes, this could cause plugins to behave in unexpected ways. If we wish to persue it in the future, enabling read-only functionality during the downtime window will be it's own project and must include an audit of all plugins' behaviours. +
+ +### 4.2.1.3 Upgrade and rollback procedure +When a newer Kibana starts an upgrade, it blocks all writes to the outdated index to prevent data loss. Since Kibana is not designed to gracefully handle a read-only index this could have unintended consequences such as a task executing multiple times but never being able to write that the task was completed successfully. To prevent unintended consequences, the following procedure should be followed when upgrading Kibana: + +1. Gracefully shutdown outdated nodes by sending a `SIGTERM` signal + 1. Node starts returning `503` from it's healthcheck endpoint to signal to + the load balancer that it's no longer accepting new traffic (requires https://github.com/elastic/kibana/issues/46984). + 2. Allows ungoing HTTP requests to complete with a configurable timeout + before forcefully terminating any open connections. + 3. Closes any keep-alive sockets by sending a `connection: close` header. + 4. Shutdown all plugins and Core services. +2. (recommended) Take a snapshot of all Kibana's Saved Objects indices. This simplifies doing a rollback to a simple snapshot restore, but is not required in order to do a rollback if a migration fails. +3. Start the upgraded Kibana nodes. All running Kibana nodes should be on the same version, have the same plugins enabled and use the same configuration. + +To rollback to a previous version of Kibana with a snapshot +1. Shutdown all Kibana nodes. +2. Restore the Saved Object indices and aliases from the snapshot +3. Start the rollback Kibana nodes. All running Kibana nodes should be on the same rollback version, have the same plugins enabled and use the same configuration. + +To rollback to a previous version of Kibana without a snapshot: +(Assumes the migration to 7.11.0 failed) +1. Shutdown all Kibana nodes. +2. Remove the index created by the failed Kibana migration by using the version-specific alias e.g. `DELETE /.kibana_7.11.0` +3. Identify the rollback index: + 1. If rolling back to a Kibana version < 7.10.0 use `.kibana` + 2. If rolling back to a Kibana version >= 7.10.0 use the version alias of the Kibana version you wish to rollback to e.g. `.kibana_7.10.0` +4. Point the `.kibana_current` alias to the rollback index. +5. Remove the write block from the rollback index. +6. Start the rollback Kibana nodes. All running Kibana nodes should be on the same rollback version, have the same plugins enabled and use the same configuration. + +### 4.2.1.4 Handling documents that belong to a disabled plugin +It is possible for a plugin to create documents in one version of Kibana, but then when upgrading Kibana to a newer version, that plugin is disabled. Because the plugin is disabled it cannot register it's Saved Objects type including the mappings or any migration transformation functions. These "orphan" documents could cause future problems: + - A major version introduces breaking mapping changes that cannot be applied to the data in these documents. + - Two majors later migrations will no longer be able to migrate this old schema and could fail unexpectadly when the plugin is suddenly enabled. + +As a concrete example of the above, consider a user taking the following steps: +1. Installs Kibana 7.6.0 with spaces=enabled. The spaces plugin creates a default space saved object. +2. User upgrades to 7.10.0 but uses the OSS download which has spaces=disabled. Although the 7.10.0 spaces plugin includes a migration for space documents, the OSS release cannot migrate the documents or update it's mappings. +3. User realizes they made a mistake and use Kibana 7.10.0 with x-pack and the spaces plugin enabled. At this point we have a completed migration for 7.10.0 but there's outdated spaces documents with migrationVersion=7.6.0 instead of 7.10.0. + +There are several approaches we could take to dealing with these orphan documents: + +1. Start up but refuse to query on types with outdated documents until a user manually triggers a re-migration + + Advantages: + - The impact is limited to a single plugin + + Disadvantages: + - It might be less obvious that a plugin is in a degraded state unless you read the logs (not possible on Cloud) or view the `/status` endpoint. + - If a user doesn't care that the plugin is degraded, orphan documents are carried forward indefinitely. + - Since Kibana has started receiving traffic, users can no longer + downgrade without losing data. They have to re-migrate, but if that + fails they're stuck. + - Introduces a breaking change in the upgrade behaviour + + To perform a re-migration: + - Remove the `.kibana_7.10.0` alias + - Take a snapshot OR set the configuration option `migrations.target_index_postfix: '002'` to create a new target index `.kibana_7.10.0_002` and keep the `.kibana_7.10.0_001` index to be able to perform a rollback. + - Start up Kibana + +2. Refuse to start Kibana until the plugin is enabled or it's data deleted + + Advantages: + - Admin’s are forced to deal with the problem as soon as they disable a plugin + + Disadvantages: + - Cannot temporarily disable a plugin to aid in debugging or to reduce the load a Kibana plugin places on an ES cluster. + - Introduces a breaking change + +3. Refuse to start a migration until the plugin is enabled or it's data deleted + + Advantages: + - We force users to enable a plugin or delete the documents which prevents these documents from creating future problems like a mapping update not being compatible because there are fields which are assumed to have been migrated. + - We keep the index “clean”. + + Disadvantages: + - Since users have to take down outdated nodes before they can start the upgrade, they have to enter the downtime window before they know about this problem. This prolongs the downtime window and in many cases might cause an operations team to have to reschedule their downtime window to give them time to investigate the documents that need to be deleted. Logging an error on every startup could warn users ahead of time to mitigate this. + - We don’t expose Kibana logs on Cloud so this will have to be escalated to support and could take 48hrs to resolve (users can safely rollback, but without visibility into the logs they might not know this). Exposing Kibana logs is on the cloud team’s roadmap. + - It might not be obvious just from the saved object type, which plugin created these objects. + - Introduces a breaking change in the upgrade behaviour + +4. Use a hash of enabled plugins as part of the target index name + Using a migration target index name like + `.kibana_7.10.0_${hash(enabled_plugins)}_001` we can migrate all documents + every time a plugin is enabled / disabled. + + Advantages: + - Outdated documents belonging to disabled plugins will be upgraded as soon + as the plugin is enabled again. + + Disadvantages: + - Disabling / enabling a plugin will cause downtime (breaking change). + - When a plugin is enabled, disabled and enabled again our target index + will be an existing outdated index which needs to be deleted and + re-cloned. Without a way to check if the index is outdated, we cannot + deterministically perform the delete and re-clone operation without + coordination. + +5. Transform outdated documents (step 7) on every startup + Advantages: + - Outdated documents belonging to disabled plugins will be upgraded as soon + as the plugin is enabled again. + + Disadvantages: + - Orphan documents are retained indefinitely so there's still a potential + for future problems. + - Slightly slower startup time since we have to query for outdated + documents every time. + +We prefer option (3) since it provides flexibility for disabling plugins in +the same version while also protecting users' data in all cases during an +upgrade migration. However, because this is a breaking change we will +implement (5) during 7.x and only implement (3) during 8.x. + +# 5. Alternatives +## 5.1 Rolling upgrades +We considered implementing rolling upgrades to provide zero downtime +migrations. However, this would introduce significant complexity for plugins: +they will need to maintain up and down migration transformations and ensure +that queries match both current and outdated documents across all +versions. Although we can afford the once-off complexity of implementing +rolling upgrades, the complexity burden of maintaining plugins that support +rolling-upgrades will slow down all development in Kibana. Since a predictable +downtime window is sufficient for our users, we decided against trying to +achieve zero downtime with rolling upgrades. See "Rolling upgrades" in +https://github.com/elastic/kibana/issues/52202 for more information. + +## 5.2 Single node migrations coordinated through a lease/lock +This alternative is a proposed algorithm for coordinating migrations so that +these only happen on a single node and therefore don't have the restrictions +found in [(4.2.1.1)](#4311-restrictions). We decided against this algorithm +primarily because it is a lot more complex, but also because it could still +require manual intervention to retry from certain unlikely edge cases. + +
+ It's impossible to guarantee that a single node performs the + migration and automatically retry failed migrations. + +Coordination should ensure that only one Kibana node performs the migration at +a given time which can be achived with a distributed lock built on top of +Elasticsearch. For the Kibana cluster to be able to retry a failed migration, +requires a specialized lock which expires after a given amount of inactivity. +We will refer to such expiring locks as a "lease". + +If a Kibana process stalls, it is possible that the process' lease has expired +but the process doesn't yet recognize this and continues the migration. To +prevent this from causing data loss each lease should be accompanied by a +"guard" that prevents all writes after the lease has expired. See +[how to do distributed +locking](https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html) +for an in-depth discussion. + +Elasticsearch doesn't provide any building blocks for constructing such a guard. +
+ +However, we can implement a lock (that never expires) with strong +data-consistency guarantees. Because there’s no expiration, a failure between +obtaining the lock and releasing it will require manual intervention. Instead +of trying to accomplish the entire migration after obtaining a lock, we can +only perform the last step of the migration process, moving the aliases, with +a lock. A permanent failure in only this last step is not impossible, but very +unlikely. + +### 5.2.1 Migration algorithm +1. Obtain a document lock (see [5.2.2 Document lock + algorithm](#522-document-lock-algorithm)). Convert the lock into a "weak + lease" by expiring locks for nodes which aren't active (see [4.2.2.4 + Checking for lease expiry](#4324-checking-for-lease-expiry)). This "weak + lease" doesn't require strict guarantees since it's only used to prevent + multiple Kibana nodes from performing a migration in parallel to reduce the + load on Elasticsearch. +2. Migrate data into a new process specific index (we could use the process + UUID that’s used in the lease document like + `.kibana_3ef25ff1-090a-4335-83a0-307a47712b4e`). +3. Obtain a document lock (see [5.2.2 Document lock + algorithm](#522-document-lock-algorithm)). +4. Finish the migration by pointing `.kibana` → + `.kibana_3ef25ff1-090a-4335-83a0-307a47712b4e`. This automatically releases + the document lock (and any leases) because the new index will contain an + empty `kibana_cluster_state`. + +If a process crashes or is stopped after (3) but before (4) the lock will have +to be manually removed by deleting the `kibana_cluster_state` document from +`.kibana` or restoring from a snapshot. + +### 5.2.2 Document lock algorithm +To improve on the existing Saved Objects migrations lock, a locking algorithm +needs to satisfy the following requirements: +- Must guarantee that only a single node can obtain the lock. Since we can + only provide strong data-consistency guarantees on the document level in + Elasticsearch our locking mechanism needs to be based on a document. +- Manually removing the lock + - shouldn't have any risk of accidentally causing data loss. + - can be done with a single command that's always the same (shouldn’t + require trying to find `n` for removing the correct `.kibana_n` index). +- Must be easy to retrieve the lock/cluster state to aid in debugging or to + provide visibility. + +Algorithm: +1. Node reads `kibana_cluster_state` lease document from `.kibana` +2. It sends a heartbeat every `heartbeat_interval` seconds by sending an + update operation that adds it’s UUID to the `nodes` array and sets the + `lastSeen` value to the current local node time. If the update fails due to + a version conflict the update operation is retried after a random delay by + fetching the document again and attempting the update operation once more. +3. To obtain a lease, a node: + 1. Fetches the `kibana_cluster_state` document + 2. If all the nodes’ `hasLock === false` it sets it’s own `hasLock` to + true and attempts to write the document. If the update fails + (presumably because of another node’s heartbeat update) it restarts the + process to obtain a lease from step (3). + 3. If another nodes’ `hasLock === true` the node failed to acquire a + lock and waits until the active lock has expired before attempting to + obtain a lock again. +4. Once a node is done with its lock, it releases it by fetching and then + updating `hasLock = false`. The fetch + update operations are retried until + this node’s `hasLock === false`. + +Each machine writes a `UUID` to a file, so a single machine may have multiple +processes with the same Kibana `UUID`, so we should rather generate a new UUID +just for the lifetime of this process. + +`KibanaClusterState` document format: +```js + nodes: { + "852bd94e-5121-47f3-a321-e09d9db8d16e": { + version: "7.6.0", + lastSeen: [ 1114793, 555149266 ], // hrtime() big int timestamp + hasLease: true, + hasLock: false, + }, + "8d975c5b-cbf6-4418-9afb-7aa3ea34ac90": { + version: "7.6.0", + lastSeen: [ 1114862, 841295591 ], + hasLease: false, + hasLock: false, + }, + "3ef25ff1-090a-4335-83a0-307a47712b4e": { + version: "7.6.0", + lastSeen: [ 1114877, 611368546 ], + hasLease: false, + hasLock: false, + }, + }, + oplog: [ + {op: 'ACQUIRE_LOCK', node: '852bd94e...', timestamp: '2020-04-20T11:58:56.176Z'} + ] +} +``` + +### 5.2.3 Checking for "weak lease" expiry +The simplest way to check for lease expiry is to inspect the `lastSeen` value. +If `lastSeen + expiry_timeout > now` the lock is considered expired. If there +are clock drift or daylight savings time adjustments, there’s a risk that a +node loses it’s lease before `expiry_timeout` has occurred. Since losing a +lock prematurely will not lead to data loss it’s not critical that the +expiry time is observed under all conditions. + +A slightly safer approach is to use a monotonically increasing clock +(`process.hrtime()`) and relative time to determine expiry. Using a +monotonically increasing clock guarantees that the clock will always increase +even if the system time changes due to daylight savings time, NTP clock syncs, +or manually setting the time. To check for expiry, other nodes poll the +cluster state document. Once they see that the `lastSeen` value has increased, +they capture the current hr time `current_hr_time` and starts waiting until +`process.hrtime() - current_hr_time > expiry_timeout` if at that point +`lastSeen` hasn’t been updated the lease is considered to have expired. This +means other nodes can take up to `2*expiry_timeout` to recognize an expired +lease, but a lease will never expire prematurely. + +Any node that detects an expired lease can release that lease by setting the +expired node’s `hasLease = false`. It can then attempt to acquire its lease. + +## 5.3 Minimize data loss with mixed Kibana versions during 7.x +When multiple versions of Kibana are running at the same time, writes from the +outdated node can end up either in the outdated Kibana index, the newly +migrated index, or both. New documents added (and some updates) into the old +index while a migration is in-progress will be lost. Writes that end up in the +new index will be in an outdated format. This could cause queries on the data +to only return a subset of the results which leads to incorrect results or +silent data loss. + +Minimizing data loss from mixed 7.x versions, introduces two additional steps +to rollback to a previous version without a snapshot: +1. (existing) Point the `.kibana` alias to the previous Kibana index `.kibana_n-1` +2. (existing) Delete `.kibana_n` +3. (new) Enable writes on `.kibana_n-1` +4. (new) Delete the dummy "version lock" document from `.kibana_n-1` + +Since our documentation and server logs have implicitly encouraged users to +rollback without using snapshots, many users might have to rely on these +additional migration steps to perform a rollback. Since even the existing +steps are error prone, introducing more steps will likely introduce more +problems than what it solves. + +1. All future versions of Kibana 7.x will use the `.kibana_saved_objects` + alias to locate the current index. If `.kibana_saved_objects` doesn't + exist, newer versions will fallback to reading `.kibana`. +2. All future versions of Kibana will locate the index that + `.kibana_saved_objects` points to and then read and write directly from + the _index_ instead of the alias. +3. Before starting a migration: + 1. Write a new dummy "version lock" document to the `.kibana` index with a + `migrationVersion` set to the current version of Kibana. If an outdated + node is started up after a migration was started it will detect that + newer documents are present in the index and refuse to start up. + 2. Set the outdated index to read-only. Since `.kibana` is never advanced, + it will be pointing to a read-only index which prevent writes from + 6.8+ releases which are already online. + +## 5.4 In-place migrations that re-use the same index (8.0) +> We considered an algorithm that re-uses the same index for migrations and an approach to minimize data-loss if our upgrade procedures aren't followed. This is no longer our preferred approach because of several downsides: +> - It requires taking snapshots to prevent data loss so we can only release this in 8.x +> - Minimizing data loss with unsupported upgrade configurations adds significant complexity and still doesn't guarantee that data isn't lost. + +### 5.4.1 Migration algorithm (8.0): +1. Exit Kibana with a fatal error if a newer node has started a migration by + checking for: + 1. Documents with a newer `migrationVersion` numbers. +2. If the mappings are out of date, update the mappings to the combination of + the index's current mappings and the expected mappings. +3. If there are outdated documents, migrate these in batches: + 1. Read a batch of outdated documents from the index. + 2. Transform documents by applying the migration transformation functions. + 3. Update the document batch in the same index using optimistic concurrency + control. If a batch fails due to an update version mismatch continue + migrating the other batches. + 4. If a batch fails due other reasons repeat the entire migration process. +4. If any of the batches in step (3.3) failed, repeat the entire migration + process. This ensures that in-progress bulk update operations from an + outdated node won't lead to unmigrated documents still being present after + the migration. +5. Once all documents are up to date, the migration is complete and Kibana can + start serving traffic. + +Advantages: +- Not duplicating all documents into a new index will speed up migrations and + reduce the downtime window. This will be especially important for the future + requirement to support > 10k or > 100k documents. +- We can check the health of an existing index before starting the migration, + but we cannot detect what kind of failures might occur while creating a new + index. Whereas retrying migrations will eventually recover from the errors + in (3.3), re-using an index allows us to detect these problems before trying + and avoid errors like (3.3.1) altogether. +- Single index to backup instead of “index pattern” that matches any + `.kibana_n`. +- Simplifies Kibana system index Elasticsearch plugin since it needs to work + on one index per "tenant". +- By leveraging optimistic concurrency control we can further minimize data + loss for unsupported upgrade configurations in the future. + +Drawbacks: +- Cannot make breaking mapping changes (even though it was possible, we have not + introduced a breaking mapping change during 7.x). +- Rollback is only possible by restoring a snapshot which requires educating + users to ensure that they don't rely on `.kibana_n` indices as backups. + (Apart from the need to educate users, snapshot restores provide many + benefits). +- It narrows the second restriction under (4.2.1) even further: migrations + cannot rely on any state that could change as part of a migration because we + can no longer use the previous index as a snapshot of unmigrated state. +- We can’t automatically perform a rollback from a half-way done migration. +- It’s impossible to provide read-only functionality for outdated nodes which + means we can't achieve goal (2.7). + +### 5.4.2 Minimizing data loss with unsupported upgrade configurations (8.0) +> This alternative can reduce some data loss when our upgrade procedure isn't +> followed with the algorithm in (5.4.1). + +Even if (4.5.2) is the only supported upgrade procedure, we should try to +prevent data loss when these instructions aren't followed. + +To prevent data loss we need to prevent any writes from older nodes. We use +a version-specific alias for this purpose. Each time a migration is started, +all other aliases are removed. However, aliases are stored inside +Elasticsearch's ClusterState and this state could remain inconsistent between +nodes for an unbounded amount of time. In addition, bulk operations that were +accepted before the alias was removed will continue to run even after removing +the alias. + +As a result, Kibana cannot guarantee that there would be no data loss but +instead, aims to minimize it as much as possible by adding the bold sections +to the migration algorithm from (5.4.1) + +1. **Disable `action.auto_create_index` for the Kibana system indices.** +2. Exit Kibana with a fatal error if a newer node has started a migration by + checking for: + 1. **Version-specific aliases on the `.kibana` index with a newer version.** + 2. Documents with newer `migrationVersion` numbers. +3. **Remove all other aliases and create a new version-specific alias for + reading and writing to the `.kibana` index .e.g `.kibana_8.0.1`. During and + after the migration, all saved object reads and writes use this alias + instead of reading or writing directly to the index. By using the atomic + `POST /_aliases` API we minimize the chance that an outdated node creating + new outdated documents can cause data loss.** +4. **Wait for the default bulk operation timeout of 30s. This ensures that any + bulk operations accepted before the removal of the alias have either + completed or returned a timeout error to it's initiator.** +5. If the mappings are out of date, update the mappings **through the alias** + to the combination of the index's current mappings and the expected + mappings. **If this operation fails due to an index missing exception (most + likely because another node removed our version-specific alias) repeat the + entire migration process.** +6. If there are outdated documents, migrate these in batches: + 1. Read a batch of outdated documents from `.kibana_n`. + 2. Transform documents by applying the migration functions. + 3. Update the document batch in the same index using optimistic concurrency + control. If a batch fails due to an update version mismatch continue + migrating the other batches. + 4. If a batch fails due other reasons repeat the entire migration process. +7. If any of the batches in step (6.3) failed, repeat the entire migration + process. This ensures that in-progress bulk update operations from an + outdated node won't lead to unmigrated documents still being present after + the migration. +8. Once all documents are up to date, the migration is complete and Kibana can + start serving traffic. + +Steps (2) and (3) from the migration algorithm in minimize the chances of the +following scenarios occuring but cannot guarantee it. It is therefore useful +to enumarate some scenarios and their worst case impact: +1. An outdated node issued a bulk create to it's version-specific alias. + Because a user doesn't wait for all traffic to drain a newer node starts + it's migration before the bulk create was complete. Since this bulk create + was accepted before the newer node deleted the previous version-specific + aliases, it is possible that the index now contains some outdated documents + that the new node is unaware of and doesn't migrate. Although these outdated + documents can lead to inconsistent query results and data loss, step (4) + ensures that an error will be returned to the node that created these + objects. +2. A 8.1.0 node and a 8.2.0 node starts migrating a 8.0.0 index in parallel. + Even though the 8.2.0 node will remove the 8.1.0 version-specific aliases, + the 8.1.0 node could have sent an bulk update operation that got accepted + before its alias was removed. When the 8.2.0 node tries to migrate these + 8.1.0 documents it gets a version conflict but cannot be sure if this was + because another node of the same version migrated this document (which can + safely be ignored) or interference from a different Kibana version. The + 8.1.0 node will hit the error in step (6.3) and restart the migration but + then ultimately fail at step (2). The 8.2.0 node will repeat the entire + migration process from step (7) thus ensuring that all documents are up to + date. +3. A race condition with another Kibana node on the same version, but with + different enabled plugins caused this node's required mappings to be + overwritten. If this causes a mapper parsing exception in step (6.3) we can + restart the migration. Because updating the mappings is additive and saved + object types are unique to a plugin, restarting the migration will allow + the node to update the mappings to be compatible with node's plugins. Both + nodes will be able to successfully complete the migration of their plugins' + registered saved object types. However, if the migration doesn't trigger a + mapper parsing exception the incompatible mappings would go undetected + which can cause future problems like write failures or inconsistent query + results. + +## 5.5 Tag objects as “invalid” if their transformation fails +> This alternative prevents a failed migration when there's a migration transform function bug or a document with invalid data. Although it seems preferable to not fail the entire migration because of a single saved object type's migration transform bug or a single invalid document this has several pitfalls: +> 1. When an object fails to migrate the data for that saved object type becomes inconsistent. This could load to a critical feature being unavailable to a user leaving them with no choice but to downgrade. +> 2. Because Kibana starts accepting traffic after encountering invalid objects a rollback will lead to data loss leaving users with no clean way to recover. +> As a result we prefer to let an upgrade fail and making it easy for users to rollback until they can resolve the root cause. + +> Achieves goals: (2.2) +> Mitigates Errors (3.1), (3.2) + +1. Tag objects as “invalid” if they cause an exception when being transformed, + but don’t fail the entire migration. +2. Log an error message informing administrators that there are invalid + objects which require inspection. For each invalid object, provide an error + stack trace to aid in debugging. +3. Administrators should be able to generate a migration report (similar to + the one dry run migrations create) which is an NDJSON export of all objects + tagged as “invalid”. + 1. Expose this as an HTTP API first + 2. (later) Notify administrators and allow them to export invalid objects + from the Kibana UI. +4. When an invalid object is read, the Saved Objects repository will throw an + invalid object exception which should include a link to the documentation + to help administrators resolve migration bugs. +5. Educate Kibana developers to no longer simply write back an unmigrated + document if an exception occurred. A migration function should either + successfully transform the object or throw. + +# 6. How we teach this +1. Update documentation and server logs to start educating users to depend on + snapshots for Kibana rollbacks. +2. Update developer documentation and educate developers with best practices + for writing migration functions. + +# 7. Unresolved questions +1. When cloning an index we can only ever add new fields to the mappings. When + a saved object type or specific field is removed, the mappings will remain + until we re-index. Is it sufficient to only re-index every major? How do we + track the field count as it grows over every upgrade? +2. More generally, how do we deal with the growing field count approaching the + default limit of 1000? From 6f2fd54c673d8b0f13c84518058b3d2d6897c012 Mon Sep 17 00:00:00 2001 From: Diana Derevyankina <54894989+DziyanaDzeraviankina@users.noreply.github.com> Date: Tue, 29 Sep 2020 11:07:06 +0300 Subject: [PATCH 035/119] [TSVB] Different field format on different series is ignored (#78138) * [TSVB] Different field format on different series is ignored Closes #74951 * Replace formatter of Y axis with simple value instead of formatter of the first series * Add a condition to Y-axis tickFormatter to display formatted value if there's only one series Co-authored-by: Elastic Machine --- .../application/components/vis_types/timeseries/vis.js | 9 ++------- .../views/timeseries/decorators/area_decorator.js | 2 ++ .../views/timeseries/decorators/bar_decorator.js | 2 ++ .../application/visualizations/views/timeseries/index.js | 3 +++ 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js index c14148d4a020f..2434285bd94c6 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js @@ -163,14 +163,9 @@ export class TimeseriesVisualization extends Component { const mainAxisGroupId = yAxisIdGenerator('main_group'); const seriesModel = model.series.filter((s) => !s.hidden).map((s) => cloneDeep(s)); - const firstSeries = seriesModel.find((s) => s.formatter && !s.separate_axis); const mainAxisScaleType = TimeseriesVisualization.getAxisScaleType(model); const mainAxisDomain = TimeseriesVisualization.getYAxisDomain(model); - const tickFormatter = TimeseriesVisualization.getTickFormatter( - firstSeries, - this.props.getConfig - ); const yAxis = []; let mainDomainAdded = false; @@ -203,7 +198,7 @@ export class TimeseriesVisualization extends Component { series .filter((r) => startsWith(r.id, seriesGroup.id)) .forEach((seriesDataRow) => { - seriesDataRow.tickFormatter = seriesGroupTickFormatter; + seriesDataRow.tickFormat = seriesGroupTickFormatter; seriesDataRow.groupId = groupId; seriesDataRow.yScaleType = yScaleType; seriesDataRow.hideInLegend = Boolean(seriesGroup.hide_in_legend); @@ -224,7 +219,7 @@ export class TimeseriesVisualization extends Component { }); } else if (!mainDomainAdded) { TimeseriesVisualization.addYAxis(yAxis, { - tickFormatter, + tickFormatter: series.length === 1 ? undefined : (val) => val, id: yAxisIdGenerator('main'), groupId: mainAxisGroupId, position: model.axis_position, diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/area_decorator.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/area_decorator.js index 300af551e5020..561c985b3b5c3 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/area_decorator.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/area_decorator.js @@ -42,6 +42,7 @@ export function AreaSeriesDecorator({ sortIndex, y1AccessorFormat, y0AccessorFormat, + tickFormat, }) { const id = seriesId; const groupId = seriesGroupId; @@ -67,6 +68,7 @@ export function AreaSeriesDecorator({ enableHistogramMode, useDefaultGroupDomain, sortIndex, + tickFormat, ...areaSeriesStyle, }; diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/bar_decorator.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/bar_decorator.js index 239f1d4f1838e..2d6c54de41431 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/bar_decorator.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/decorators/bar_decorator.js @@ -41,6 +41,7 @@ export function BarSeriesDecorator({ sortIndex, y1AccessorFormat, y0AccessorFormat, + tickFormat, }) { const id = seriesId; const groupId = seriesGroupId; @@ -66,6 +67,7 @@ export function BarSeriesDecorator({ enableHistogramMode, useDefaultGroupDomain, sortIndex, + tickFormat, ...barSeriesStyle, }; diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js index 5f0cc5188b1fd..1209a105af805 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js @@ -176,6 +176,7 @@ export const TimeSeries = ({ useDefaultGroupDomain, y1AccessorFormat, y0AccessorFormat, + tickFormat, }, sortIndex ) => { @@ -207,6 +208,7 @@ export const TimeSeries = ({ sortIndex={sortIndex} y1AccessorFormat={y1AccessorFormat} y0AccessorFormat={y0AccessorFormat} + tickFormat={tickFormat} /> ); } @@ -233,6 +235,7 @@ export const TimeSeries = ({ sortIndex={sortIndex} y1AccessorFormat={y1AccessorFormat} y0AccessorFormat={y0AccessorFormat} + tickFormat={tickFormat} /> ); } From 728502646ec457a7bd37e4fabe4c40b5e9a14d04 Mon Sep 17 00:00:00 2001 From: MadameSheema Date: Tue, 29 Sep 2020 10:35:06 +0200 Subject: [PATCH 036/119] [Security Solution] Improves detections tests (#77295) * improves 'Creates and activates a new custom rule' test * fixes constant problem * improves 'Creates and activates a new custom rule with override option' test * improves 'Creates and activates a new threshold rule' test * refactor * fixes type check issue * improves assertions * removes unused code * changes variables for constants * improves 'waitForTheRuleToBeExecuted' test * improves readability * fixes jenkins error * refactor * refactor Co-authored-by: Elastic Machine --- .../cypress/integration/alerts.spec.ts | 2 + .../alerts_detection_rules.spec.ts | 3 +- .../alerts_detection_rules_custom.spec.ts | 449 +++++++++--------- .../alerts_detection_rules_eql.spec.ts | 117 +++-- .../alerts_detection_rules_ml.spec.ts | 109 +++-- .../alerts_detection_rules_override.spec.ts | 175 +++---- .../alerts_detection_rules_prebuilt.spec.ts | 43 +- .../alerts_detection_rules_threshold.spec.ts | 154 +++--- .../integration/alerts_timeline.spec.ts | 2 +- .../security_solution/cypress/objects/rule.ts | 60 ++- .../cypress/screens/alerts.ts | 50 +- .../cypress/screens/create_new_rule.ts | 22 +- .../cypress/screens/rule_details.ts | 47 +- .../security_solution/cypress/tasks/alerts.ts | 8 + .../cypress/tasks/create_new_rule.ts | 21 + .../cypress/tasks/security_header.ts | 4 + x-pack/plugins/security_solution/package.json | 2 +- .../components/rules/rule_status/index.tsx | 5 +- .../rules/schedule_item_form/index.tsx | 4 +- 19 files changed, 729 insertions(+), 548 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts index 7f02d41ad1b0c..db841d2a732c4 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts @@ -158,6 +158,7 @@ describe('Alerts', () => { }); }); }); + context('Opening alerts', () => { beforeEach(() => { esArchiverLoad('closed_alerts'); @@ -204,6 +205,7 @@ describe('Alerts', () => { }); }); }); + context('Marking alerts as in-progress', () => { beforeEach(() => { esArchiverLoad('alerts'); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules.spec.ts index 20cf624b3360d..3fa304ab7cf19 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules.spec.ts @@ -43,6 +43,7 @@ describe('Alerts detection rules', () => { waitForAlertsIndexToBeCreated(); goToManageAlertsDetectionRules(); waitForLoadElasticPrebuiltDetectionRulesTableToBeLoaded(); + cy.get(RULE_NAME) .eq(FIFTH_RULE) .invoke('text') @@ -56,7 +57,6 @@ describe('Alerts detection rules', () => { activateRule(SEVENTH_RULE); waitForRuleToBeActivated(); sortByActivatedRules(); - cy.get(RULE_NAME) .eq(FIRST_RULE) .invoke('text') @@ -70,7 +70,6 @@ describe('Alerts detection rules', () => { cy.wrap(expectedRulesNames).should('include', seventhRuleName); }); }); - cy.get(RULE_SWITCH).eq(FIRST_RULE).should('have.attr', 'role', 'switch'); cy.get(RULE_SWITCH).eq(SECOND_RULE).should('have.attr', 'role', 'switch'); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_custom.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_custom.spec.ts index 17ff1dad79960..f999c5cecc392 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_custom.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_custom.spec.ts @@ -4,7 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ -import { newRule, existingRule } from '../objects/rule'; +import { newRule, existingRule, indexPatterns, editedRule } from '../objects/rule'; +import { + ALERT_RULE_METHOD, + ALERT_RULE_NAME, + ALERT_RULE_RISK_SCORE, + ALERT_RULE_SEVERITY, + ALERT_RULE_VERSION, + NUMBER_OF_ALERTS, +} from '../screens/alerts'; import { CUSTOM_RULES_BTN, @@ -12,20 +20,49 @@ import { RULE_NAME, RULES_ROW, RULES_TABLE, + RULE_SWITCH, SEVERITY, SHOWING_RULES_TEXT, } from '../screens/alerts_detection_rules'; import { + ABOUT_CONTINUE_BTN, + ABOUT_EDIT_BUTTON, + ACTIONS_THROTTLE_INPUT, + CUSTOM_QUERY_INPUT, + DEFINE_CONTINUE_BUTTON, + DEFINE_EDIT_BUTTON, + DEFINE_INDEX_INPUT, + RISK_INPUT, + RULE_DESCRIPTION_INPUT, + RULE_NAME_INPUT, + SCHEDULE_INTERVAL_AMOUNT_INPUT, + SCHEDULE_INTERVAL_UNITS_INPUT, + SEVERITY_DROPDOWN, + TAGS_FIELD, +} from '../screens/create_new_rule'; +import { + ADDITIONAL_LOOK_BACK_DETAILS, + ABOUT_DETAILS, ABOUT_INVESTIGATION_NOTES, ABOUT_RULE_DESCRIPTION, + CUSTOM_QUERY_DETAILS, + DEFINITION_DETAILS, + FALSE_POSITIVES_DETAILS, + getDetails, + INDEX_PATTERNS_DETAILS, INVESTIGATION_NOTES_MARKDOWN, INVESTIGATION_NOTES_TOGGLE, + MITRE_ATTACK_DETAILS, + REFERENCE_URLS_DETAILS, + RISK_SCORE_DETAILS, RULE_ABOUT_DETAILS_HEADER_TOGGLE, RULE_NAME_HEADER, - getDescriptionForTitle, - ABOUT_DETAILS, - DEFINITION_DETAILS, + RULE_TYPE_DETAILS, + RUNS_EVERY_DETAILS, SCHEDULE_DETAILS, + SEVERITY_DETAILS, + TAGS_DETAILS, + TIMELINE_TEMPLATE_DETAILS, } from '../screens/rule_details'; import { @@ -37,46 +74,46 @@ import { changeToThreeHundredRowsPerPage, deleteFirstRule, deleteSelectedRules, + editFirstRule, filterByCustomRules, goToCreateNewRule, goToRuleDetails, selectNumberOfRules, waitForLoadElasticPrebuiltDetectionRulesTableToBeLoaded, waitForRulesToBeLoaded, - editFirstRule, } from '../tasks/alerts_detection_rules'; import { createAndActivateRule, + fillAboutRule, fillAboutRuleAndContinue, fillDefineCustomRuleWithImportedQueryAndContinue, + fillScheduleRuleAndContinue, goToAboutStepTab, - goToScheduleStepTab, goToActionsStepTab, - fillAboutRule, + goToScheduleStepTab, + waitForTheRuleToBeExecuted, } from '../tasks/create_new_rule'; +import { saveEditedRule } from '../tasks/edit_rule'; import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; import { loginAndWaitForPageWithoutDateRange } from '../tasks/login'; +import { refreshPage } from '../tasks/security_header'; import { DETECTIONS_URL } from '../urls/navigation'; -import { - ACTIONS_THROTTLE_INPUT, - CUSTOM_QUERY_INPUT, - DEFINE_INDEX_INPUT, - RULE_NAME_INPUT, - RULE_DESCRIPTION_INPUT, - TAGS_FIELD, - SEVERITY_DROPDOWN, - RISK_INPUT, - SCHEDULE_INTERVAL_AMOUNT_INPUT, - SCHEDULE_INTERVAL_UNITS_INPUT, - DEFINE_EDIT_BUTTON, - DEFINE_CONTINUE_BUTTON, - ABOUT_EDIT_BUTTON, - ABOUT_CONTINUE_BTN, -} from '../screens/create_new_rule'; -import { saveEditedRule } from '../tasks/edit_rule'; -describe('Detection rules, custom', () => { +const expectedUrls = newRule.referenceUrls.join(''); +const expectedFalsePositives = newRule.falsePositivesExamples.join(''); +const expectedTags = newRule.tags.join(''); +const expectedMitre = newRule.mitre + .map(function (mitre) { + return mitre.tactic + mitre.techniques.join(''); + }) + .join(''); +const expectedNumberOfRules = 1; +const expectedEditedtags = editedRule.tags.join(''); +const expectedEditedIndexPatterns = + editedRule.index && editedRule.index.length ? editedRule.index : indexPatterns; + +describe('Custom detection rules creation', () => { before(() => { esArchiverLoad('timeline'); }); @@ -85,7 +122,7 @@ describe('Detection rules, custom', () => { esArchiverUnload('timeline'); }); - it('Creates and activates a new custom rule', () => { + it('Creates and activates a new rule', () => { loginAndWaitForPageWithoutDateRange(DETECTIONS_URL); waitForAlertsPanelToBeLoaded(); waitForAlertsIndexToBeCreated(); @@ -94,27 +131,27 @@ describe('Detection rules, custom', () => { goToCreateNewRule(); fillDefineCustomRuleWithImportedQueryAndContinue(newRule); fillAboutRuleAndContinue(newRule); + fillScheduleRuleAndContinue(newRule); // expect define step to repopulate cy.get(DEFINE_EDIT_BUTTON).click(); - cy.get(CUSTOM_QUERY_INPUT).invoke('text').should('eq', newRule.customQuery); + cy.get(CUSTOM_QUERY_INPUT).should('have.text', newRule.customQuery); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); cy.get(DEFINE_CONTINUE_BUTTON).should('not.exist'); // expect about step to populate cy.get(ABOUT_EDIT_BUTTON).click(); - cy.get(RULE_NAME_INPUT).invoke('val').should('eq', newRule.name); + cy.get(RULE_NAME_INPUT).invoke('val').should('eql', newRule.name); cy.get(ABOUT_CONTINUE_BTN).should('exist').click({ force: true }); cy.get(ABOUT_CONTINUE_BTN).should('not.exist'); createAndActivateRule(); - cy.get(CUSTOM_RULES_BTN).invoke('text').should('eql', 'Custom rules (1)'); + cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); - const expectedNumberOfRules = 1; cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRules); }); @@ -124,78 +161,59 @@ describe('Detection rules, custom', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', 1); }); - cy.get(RULE_NAME).invoke('text').should('eql', newRule.name); - cy.get(RISK_SCORE).invoke('text').should('eql', newRule.riskScore); - cy.get(SEVERITY).invoke('text').should('eql', newRule.severity); - cy.get('[data-test-subj="rule-switch"]').should('have.attr', 'aria-checked', 'true'); + cy.get(RULE_NAME).should('have.text', newRule.name); + cy.get(RISK_SCORE).should('have.text', newRule.riskScore); + cy.get(SEVERITY).should('have.text', newRule.severity); + cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); goToRuleDetails(); - let expectedUrls = ''; - newRule.referenceUrls.forEach((url) => { - expectedUrls = expectedUrls + url; - }); - let expectedFalsePositives = ''; - newRule.falsePositivesExamples.forEach((falsePositive) => { - expectedFalsePositives = expectedFalsePositives + falsePositive; - }); - let expectedTags = ''; - newRule.tags.forEach((tag) => { - expectedTags = expectedTags + tag; - }); - let expectedMitre = ''; - newRule.mitre.forEach((mitre) => { - expectedMitre = expectedMitre + mitre.tactic; - mitre.techniques.forEach((technique) => { - expectedMitre = expectedMitre + technique; - }); - }); - const expectedIndexPatterns = [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'winlogbeat-*', - ]; - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${newRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', newRule.description); + cy.get(RULE_NAME_HEADER).should('have.text', `${newRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', newRule.description); cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', newRule.severity); - getDescriptionForTitle('Risk score').invoke('text').should('eql', newRule.riskScore); - getDescriptionForTitle('Reference URLs').invoke('text').should('eql', expectedUrls); - getDescriptionForTitle('False positive examples') - .invoke('text') - .should('eql', expectedFalsePositives); - getDescriptionForTitle('MITRE ATT&CK').invoke('text').should('eql', expectedMitre); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); + getDetails(SEVERITY_DETAILS).should('have.text', newRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', newRule.riskScore); + getDetails(REFERENCE_URLS_DETAILS).should('have.text', expectedUrls); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should('have.text', expectedMitre); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); }); - cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE).eq(INVESTIGATION_NOTES_TOGGLE).click({ force: true }); - cy.get(ABOUT_INVESTIGATION_NOTES).invoke('text').should('eql', INVESTIGATION_NOTES_MARKDOWN); - + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Index patterns') - .invoke('text') - .should('eql', expectedIndexPatterns.join('')); - getDescriptionForTitle('Custom query') - .invoke('text') - .should('eql', `${newRule.customQuery} `); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Query'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); + getDetails(INDEX_PATTERNS_DETAILS).should('have.text', indexPatterns.join('')); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', `${newRule.customQuery} `); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', '5m'); - getDescriptionForTitle('Additional look-back time').invoke('text').should('eql', '1m'); + getDetails(RUNS_EVERY_DETAILS).should( + 'have.text', + `${newRule.runsEvery.interval}${newRule.runsEvery.type}` + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should( + 'have.text', + `${newRule.lookBack.interval}${newRule.lookBack.type}` + ); }); + + refreshPage(); + waitForTheRuleToBeExecuted(); + + cy.get(NUMBER_OF_ALERTS) + .invoke('text') + .then((numberOfAlertsText) => { + cy.wrap(parseInt(numberOfAlertsText, 10)).should('be.above', 0); + }); + cy.get(ALERT_RULE_NAME).first().should('have.text', newRule.name); + cy.get(ALERT_RULE_VERSION).first().should('have.text', '1'); + cy.get(ALERT_RULE_METHOD).first().should('have.text', 'query'); + cy.get(ALERT_RULE_SEVERITY).first().should('have.text', newRule.severity.toLowerCase()); + cy.get(ALERT_RULE_RISK_SCORE).first().should('have.text', newRule.riskScore); }); }); -describe('Deletes custom rules', () => { +describe('Custom detection rules deletion and edition', () => { beforeEach(() => { esArchiverLoad('custom_rules'); loginAndWaitForPageWithoutDateRange(DETECTIONS_URL); @@ -208,143 +226,132 @@ describe('Deletes custom rules', () => { esArchiverUnload('custom_rules'); }); - it('Deletes one rule', () => { - cy.get(RULES_TABLE) - .find(RULES_ROW) - .then((rules) => { - const initialNumberOfRules = rules.length; - const expectedNumberOfRulesAfterDeletion = initialNumberOfRules - 1; - - cy.get(SHOWING_RULES_TEXT) - .invoke('text') - .should('eql', `Showing ${initialNumberOfRules} rules`); - - deleteFirstRule(); - waitForRulesToBeLoaded(); - - cy.get(RULES_TABLE).then(($table) => { - cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterDeletion); - }); - cy.get(SHOWING_RULES_TEXT) - .invoke('text') - .should('eql', `Showing ${expectedNumberOfRulesAfterDeletion} rules`); - cy.get(CUSTOM_RULES_BTN) - .invoke('text') - .should('eql', `Custom rules (${expectedNumberOfRulesAfterDeletion})`); - }); - }); - - it('Deletes more than one rule', () => { - cy.get(RULES_TABLE) - .find(RULES_ROW) - .then((rules) => { - const initialNumberOfRules = rules.length; - const numberOfRulesToBeDeleted = 3; - const expectedNumberOfRulesAfterDeletion = initialNumberOfRules - numberOfRulesToBeDeleted; - - selectNumberOfRules(numberOfRulesToBeDeleted); - deleteSelectedRules(); - waitForRulesToBeLoaded(); - - cy.get(RULES_TABLE).then(($table) => { - cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterDeletion); + context('Deletion', () => { + it('Deletes one rule', () => { + cy.get(RULES_TABLE) + .find(RULES_ROW) + .then((rules) => { + const initialNumberOfRules = rules.length; + const expectedNumberOfRulesAfterDeletion = initialNumberOfRules - 1; + + cy.get(SHOWING_RULES_TEXT).should('have.text', `Showing ${initialNumberOfRules} rules`); + + deleteFirstRule(); + waitForRulesToBeLoaded(); + + cy.get(RULES_TABLE).then(($table) => { + cy.wrap($table.find(RULES_ROW).length).should( + 'eql', + expectedNumberOfRulesAfterDeletion + ); + }); + cy.get(SHOWING_RULES_TEXT).should( + 'have.text', + `Showing ${expectedNumberOfRulesAfterDeletion} rules` + ); + cy.get(CUSTOM_RULES_BTN).should( + 'have.text', + `Custom rules (${expectedNumberOfRulesAfterDeletion})` + ); }); - cy.get(SHOWING_RULES_TEXT) - .invoke('text') - .should('eql', `Showing ${expectedNumberOfRulesAfterDeletion} rule`); - cy.get(CUSTOM_RULES_BTN) - .invoke('text') - .should('eql', `Custom rules (${expectedNumberOfRulesAfterDeletion})`); - }); - }); - - it('Allows a rule to be edited', () => { - editFirstRule(); - - // expect define step to populate - cy.get(CUSTOM_QUERY_INPUT).invoke('text').should('eq', existingRule.customQuery); - if (existingRule.index && existingRule.index.length > 0) { - cy.get(DEFINE_INDEX_INPUT).invoke('text').should('eq', existingRule.index.join('')); - } - - goToAboutStepTab(); - - // expect about step to populate - cy.get(RULE_NAME_INPUT).invoke('val').should('eql', existingRule.name); - cy.get(RULE_DESCRIPTION_INPUT).invoke('text').should('eql', existingRule.description); - cy.get(TAGS_FIELD).invoke('text').should('eql', existingRule.tags.join('')); - - cy.get(SEVERITY_DROPDOWN).invoke('text').should('eql', existingRule.severity); - cy.get(RISK_INPUT).invoke('val').should('eql', existingRule.riskScore); - - goToScheduleStepTab(); - - // expect schedule step to populate - const intervalParts = existingRule.interval && existingRule.interval.match(/[0-9]+|[a-zA-Z]+/g); - if (intervalParts) { - const [amount, unit] = intervalParts; - cy.get(SCHEDULE_INTERVAL_AMOUNT_INPUT).invoke('val').should('eql', amount); - cy.get(SCHEDULE_INTERVAL_UNITS_INPUT).invoke('val').should('eql', unit); - } else { - throw new Error('Cannot assert scheduling info on a rule without an interval'); - } - - goToActionsStepTab(); - - cy.get(ACTIONS_THROTTLE_INPUT).invoke('val').should('eql', 'no_actions'); - - goToAboutStepTab(); - - const editedRule = { - ...existingRule, - severity: 'Medium', - description: 'Edited Rule description', - }; - - fillAboutRule(editedRule); - saveEditedRule(); - - const expectedTags = editedRule.tags.join(''); - const expectedIndexPatterns = - editedRule.index && editedRule.index.length - ? editedRule.index - : [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'winlogbeat-*', - ]; - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${editedRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', editedRule.description); - cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', editedRule.severity); - getDescriptionForTitle('Risk score').invoke('text').should('eql', editedRule.riskScore); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); }); - cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE).eq(INVESTIGATION_NOTES_TOGGLE).click({ force: true }); - cy.get(ABOUT_INVESTIGATION_NOTES).invoke('text').should('eql', editedRule.note); - - cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Index patterns') - .invoke('text') - .should('eql', expectedIndexPatterns.join('')); - getDescriptionForTitle('Custom query') - .invoke('text') - .should('eql', `${editedRule.customQuery} `); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Query'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); + it('Deletes more than one rule', () => { + cy.get(RULES_TABLE) + .find(RULES_ROW) + .then((rules) => { + const initialNumberOfRules = rules.length; + const numberOfRulesToBeDeleted = 3; + const expectedNumberOfRulesAfterDeletion = + initialNumberOfRules - numberOfRulesToBeDeleted; + + selectNumberOfRules(numberOfRulesToBeDeleted); + deleteSelectedRules(); + waitForRulesToBeLoaded(); + + cy.get(RULES_TABLE).then(($table) => { + cy.wrap($table.find(RULES_ROW).length).should( + 'eql', + expectedNumberOfRulesAfterDeletion + ); + }); + cy.get(SHOWING_RULES_TEXT).should( + 'have.text', + `Showing ${expectedNumberOfRulesAfterDeletion} rule` + ); + cy.get(CUSTOM_RULES_BTN).should( + 'have.text', + `Custom rules (${expectedNumberOfRulesAfterDeletion})` + ); + }); }); + }); - if (editedRule.interval) { - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', editedRule.interval); + context('Edition', () => { + it('Allows a rule to be edited', () => { + editFirstRule(); + + // expect define step to populate + cy.get(CUSTOM_QUERY_INPUT).should('have.text', existingRule.customQuery); + if (existingRule.index && existingRule.index.length > 0) { + cy.get(DEFINE_INDEX_INPUT).should('have.text', existingRule.index.join('')); + } + + goToAboutStepTab(); + + // expect about step to populate + cy.get(RULE_NAME_INPUT).invoke('val').should('eql', existingRule.name); + cy.get(RULE_DESCRIPTION_INPUT).should('have.text', existingRule.description); + cy.get(TAGS_FIELD).should('have.text', existingRule.tags.join('')); + cy.get(SEVERITY_DROPDOWN).should('have.text', existingRule.severity); + cy.get(RISK_INPUT).invoke('val').should('eql', existingRule.riskScore); + + goToScheduleStepTab(); + + // expect schedule step to populate + const intervalParts = + existingRule.interval && existingRule.interval.match(/[0-9]+|[a-zA-Z]+/g); + if (intervalParts) { + const [amount, unit] = intervalParts; + cy.get(SCHEDULE_INTERVAL_AMOUNT_INPUT).invoke('val').should('eql', amount); + cy.get(SCHEDULE_INTERVAL_UNITS_INPUT).invoke('val').should('eql', unit); + } else { + throw new Error('Cannot assert scheduling info on a rule without an interval'); + } + + goToActionsStepTab(); + + cy.get(ACTIONS_THROTTLE_INPUT).invoke('val').should('eql', 'no_actions'); + + goToAboutStepTab(); + fillAboutRule(editedRule); + saveEditedRule(); + + cy.get(RULE_NAME_HEADER).should('have.text', `${editedRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', editedRule.description); + cy.get(ABOUT_DETAILS).within(() => { + getDetails(SEVERITY_DETAILS).should('have.text', editedRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', editedRule.riskScore); + getDetails(TAGS_DETAILS).should('have.text', expectedEditedtags); + }); + cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE) + .eq(INVESTIGATION_NOTES_TOGGLE) + .click({ force: true }); + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', editedRule.note); + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(INDEX_PATTERNS_DETAILS).should( + 'have.text', + expectedEditedIndexPatterns.join('') + ); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', `${editedRule.customQuery} `); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); }); - } + if (editedRule.interval) { + cy.get(SCHEDULE_DETAILS).within(() => { + getDetails(RUNS_EVERY_DETAILS).should('have.text', editedRule.interval); + }); + } + }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_eql.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_eql.spec.ts index 76871929fe050..e2ff51dd544a2 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_eql.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_eql.spec.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { eqlRule } from '../objects/rule'; +import { eqlRule, indexPatterns } from '../objects/rule'; import { CUSTOM_RULES_BTN, @@ -12,19 +12,32 @@ import { RULE_NAME, RULES_ROW, RULES_TABLE, + RULE_SWITCH, SEVERITY, } from '../screens/alerts_detection_rules'; import { ABOUT_DETAILS, ABOUT_INVESTIGATION_NOTES, ABOUT_RULE_DESCRIPTION, + ADDITIONAL_LOOK_BACK_DETAILS, + CUSTOM_QUERY_DETAILS, DEFINITION_DETAILS, - getDescriptionForTitle, + FALSE_POSITIVES_DETAILS, + getDetails, + INDEX_PATTERNS_DETAILS, INVESTIGATION_NOTES_MARKDOWN, INVESTIGATION_NOTES_TOGGLE, + MITRE_ATTACK_DETAILS, + REFERENCE_URLS_DETAILS, + RISK_SCORE_DETAILS, RULE_ABOUT_DETAILS_HEADER_TOGGLE, RULE_NAME_HEADER, + RULE_TYPE_DETAILS, + RUNS_EVERY_DETAILS, SCHEDULE_DETAILS, + SEVERITY_DETAILS, + TAGS_DETAILS, + TIMELINE_TEMPLATE_DETAILS, } from '../screens/rule_details'; import { @@ -43,14 +56,25 @@ import { import { createAndActivateRule, fillAboutRuleAndContinue, - selectEqlRuleType, fillDefineEqlRuleAndContinue, + fillScheduleRuleAndContinue, + selectEqlRuleType, } from '../tasks/create_new_rule'; import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; import { loginAndWaitForPageWithoutDateRange } from '../tasks/login'; import { DETECTIONS_URL } from '../urls/navigation'; +const expectedUrls = eqlRule.referenceUrls.join(''); +const expectedFalsePositives = eqlRule.falsePositivesExamples.join(''); +const expectedTags = eqlRule.tags.join(''); +const expectedMitre = eqlRule.mitre + .map(function (mitre) { + return mitre.tactic + mitre.techniques.join(''); + }) + .join(''); +const expectedNumberOfRules = 1; + describe('Detection rules, EQL', () => { before(() => { esArchiverLoad('timeline'); @@ -70,14 +94,14 @@ describe('Detection rules, EQL', () => { selectEqlRuleType(); fillDefineEqlRuleAndContinue(eqlRule); fillAboutRuleAndContinue(eqlRule); + fillScheduleRuleAndContinue(eqlRule); createAndActivateRule(); - cy.get(CUSTOM_RULES_BTN).invoke('text').should('eql', 'Custom rules (1)'); + cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); - const expectedNumberOfRules = 1; cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRules); }); @@ -87,73 +111,40 @@ describe('Detection rules, EQL', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', 1); }); - cy.get(RULE_NAME).invoke('text').should('eql', eqlRule.name); - cy.get(RISK_SCORE).invoke('text').should('eql', eqlRule.riskScore); - cy.get(SEVERITY).invoke('text').should('eql', eqlRule.severity); - cy.get('[data-test-subj="rule-switch"]').should('have.attr', 'aria-checked', 'true'); + cy.get(RULE_NAME).should('have.text', eqlRule.name); + cy.get(RISK_SCORE).should('have.text', eqlRule.riskScore); + cy.get(SEVERITY).should('have.text', eqlRule.severity); + cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); goToRuleDetails(); - let expectedUrls = ''; - eqlRule.referenceUrls.forEach((url) => { - expectedUrls = expectedUrls + url; - }); - let expectedFalsePositives = ''; - eqlRule.falsePositivesExamples.forEach((falsePositive) => { - expectedFalsePositives = expectedFalsePositives + falsePositive; - }); - let expectedTags = ''; - eqlRule.tags.forEach((tag) => { - expectedTags = expectedTags + tag; - }); - let expectedMitre = ''; - eqlRule.mitre.forEach((mitre) => { - expectedMitre = expectedMitre + mitre.tactic; - mitre.techniques.forEach((technique) => { - expectedMitre = expectedMitre + technique; - }); - }); - const expectedIndexPatterns = [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'winlogbeat-*', - ]; - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${eqlRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', eqlRule.description); + cy.get(RULE_NAME_HEADER).should('have.text', `${eqlRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', eqlRule.description); cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', eqlRule.severity); - getDescriptionForTitle('Risk score').invoke('text').should('eql', eqlRule.riskScore); - getDescriptionForTitle('Reference URLs').invoke('text').should('eql', expectedUrls); - getDescriptionForTitle('False positive examples') - .invoke('text') - .should('eql', expectedFalsePositives); - getDescriptionForTitle('MITRE ATT&CK').invoke('text').should('eql', expectedMitre); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); + getDetails(SEVERITY_DETAILS).should('have.text', eqlRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', eqlRule.riskScore); + getDetails(REFERENCE_URLS_DETAILS).should('have.text', expectedUrls); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should('have.text', expectedMitre); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); }); - cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE).eq(INVESTIGATION_NOTES_TOGGLE).click({ force: true }); - cy.get(ABOUT_INVESTIGATION_NOTES).invoke('text').should('eql', INVESTIGATION_NOTES_MARKDOWN); - + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Index patterns') - .invoke('text') - .should('eql', expectedIndexPatterns.join('')); - getDescriptionForTitle('Custom query') - .invoke('text') - .should('eql', `${eqlRule.customQuery} `); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Event Correlation'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); + getDetails(INDEX_PATTERNS_DETAILS).should('have.text', indexPatterns.join('')); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', `${eqlRule.customQuery} `); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Event Correlation'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', '5m'); - getDescriptionForTitle('Additional look-back time').invoke('text').should('eql', '1m'); + getDetails(RUNS_EVERY_DETAILS).should( + 'have.text', + `${eqlRule.runsEvery.interval}${eqlRule.runsEvery.type}` + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should( + 'have.text', + `${eqlRule.lookBack.interval}${eqlRule.lookBack.type}` + ); }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_ml.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_ml.spec.ts index 47e49d48e2aec..49ec6381cbc89 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_ml.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_ml.spec.ts @@ -16,14 +16,25 @@ import { SEVERITY, } from '../screens/alerts_detection_rules'; import { + ABOUT_DETAILS, ABOUT_RULE_DESCRIPTION, + ADDITIONAL_LOOK_BACK_DETAILS, + ANOMALY_SCORE_DETAILS, + DEFINITION_DETAILS, + FALSE_POSITIVES_DETAILS, + getDetails, MACHINE_LEARNING_JOB_ID, MACHINE_LEARNING_JOB_STATUS, + MITRE_ATTACK_DETAILS, + REFERENCE_URLS_DETAILS, + RISK_SCORE_DETAILS, RULE_NAME_HEADER, - getDescriptionForTitle, - ABOUT_DETAILS, - DEFINITION_DETAILS, + RULE_TYPE_DETAILS, + RUNS_EVERY_DETAILS, SCHEDULE_DETAILS, + SEVERITY_DETAILS, + TAGS_DETAILS, + TIMELINE_TEMPLATE_DETAILS, } from '../screens/rule_details'; import { @@ -43,6 +54,7 @@ import { createAndActivateRule, fillAboutRuleAndContinue, fillDefineMachineLearningRuleAndContinue, + fillScheduleRuleAndContinue, selectMachineLearningRuleType, } from '../tasks/create_new_rule'; import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; @@ -50,6 +62,16 @@ import { loginAndWaitForPageWithoutDateRange } from '../tasks/login'; import { DETECTIONS_URL } from '../urls/navigation'; +const expectedUrls = machineLearningRule.referenceUrls.join(''); +const expectedFalsePositives = machineLearningRule.falsePositivesExamples.join(''); +const expectedTags = machineLearningRule.tags.join(''); +const expectedMitre = machineLearningRule.mitre + .map(function (mitre) { + return mitre.tactic + mitre.techniques.join(''); + }) + .join(''); +const expectedNumberOfRules = totalNumberOfPrebuiltRulesInEsArchive + 1; + describe('Detection rules, machine learning', () => { before(() => { esArchiverLoad('prebuilt_rules_loaded'); @@ -69,6 +91,7 @@ describe('Detection rules, machine learning', () => { selectMachineLearningRuleType(); fillDefineMachineLearningRuleAndContinue(machineLearningRule); fillAboutRuleAndContinue(machineLearningRule); + fillScheduleRuleAndContinue(machineLearningRule); createAndActivateRule(); cy.get(CUSTOM_RULES_BTN).invoke('text').should('eql', 'Custom rules (1)'); @@ -76,7 +99,6 @@ describe('Detection rules, machine learning', () => { changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); - const expectedNumberOfRules = totalNumberOfPrebuiltRulesInEsArchive + 1; cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRules); }); @@ -86,67 +108,42 @@ describe('Detection rules, machine learning', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', 1); }); - cy.get(RULE_NAME).invoke('text').should('eql', machineLearningRule.name); - cy.get(RISK_SCORE).invoke('text').should('eql', machineLearningRule.riskScore); - cy.get(SEVERITY).invoke('text').should('eql', machineLearningRule.severity); + cy.get(RULE_NAME).should('have.text', machineLearningRule.name); + cy.get(RISK_SCORE).should('have.text', machineLearningRule.riskScore); + cy.get(SEVERITY).should('have.text', machineLearningRule.severity); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); goToRuleDetails(); - let expectedUrls = ''; - machineLearningRule.referenceUrls.forEach((url) => { - expectedUrls = expectedUrls + url; - }); - let expectedFalsePositives = ''; - machineLearningRule.falsePositivesExamples.forEach((falsePositive) => { - expectedFalsePositives = expectedFalsePositives + falsePositive; - }); - let expectedTags = ''; - machineLearningRule.tags.forEach((tag) => { - expectedTags = expectedTags + tag; - }); - let expectedMitre = ''; - machineLearningRule.mitre.forEach((mitre) => { - expectedMitre = expectedMitre + mitre.tactic; - mitre.techniques.forEach((technique) => { - expectedMitre = expectedMitre + technique; - }); - }); - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${machineLearningRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', machineLearningRule.description); + cy.get(RULE_NAME_HEADER).should('have.text', `${machineLearningRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', machineLearningRule.description); cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', machineLearningRule.severity); - getDescriptionForTitle('Risk score') - .invoke('text') - .should('eql', machineLearningRule.riskScore); - getDescriptionForTitle('Reference URLs').invoke('text').should('eql', expectedUrls); - getDescriptionForTitle('False positive examples') - .invoke('text') - .should('eql', expectedFalsePositives); - getDescriptionForTitle('MITRE ATT&CK').invoke('text').should('eql', expectedMitre); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); + getDetails(SEVERITY_DETAILS).should('have.text', machineLearningRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', machineLearningRule.riskScore); + getDetails(REFERENCE_URLS_DETAILS).should('have.text', expectedUrls); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should('have.text', expectedMitre); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); }); - cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Anomaly score') - .invoke('text') - .should('eql', machineLearningRule.anomalyScoreThreshold); - getDescriptionForTitle('Anomaly score') - .invoke('text') - .should('eql', machineLearningRule.anomalyScoreThreshold); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Machine Learning'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); - cy.get(MACHINE_LEARNING_JOB_STATUS).invoke('text').should('eql', 'Stopped'); - cy.get(MACHINE_LEARNING_JOB_ID) - .invoke('text') - .should('eql', machineLearningRule.machineLearningJob); + getDetails(ANOMALY_SCORE_DETAILS).should( + 'have.text', + machineLearningRule.anomalyScoreThreshold + ); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Machine Learning'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); + cy.get(MACHINE_LEARNING_JOB_STATUS).should('have.text', 'Stopped'); + cy.get(MACHINE_LEARNING_JOB_ID).should('have.text', machineLearningRule.machineLearningJob); }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', '5m'); - getDescriptionForTitle('Additional look-back time').invoke('text').should('eql', '1m'); + getDetails(RUNS_EVERY_DETAILS).should( + 'have.text', + `${machineLearningRule.runsEvery.interval}${machineLearningRule.runsEvery.type}` + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should( + 'have.text', + `${machineLearningRule.lookBack.interval}${machineLearningRule.lookBack.type}` + ); }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_override.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_override.spec.ts index 4edf5e1866087..090012de72534 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_override.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_override.spec.ts @@ -4,33 +4,58 @@ * you may not use this file except in compliance with the Elastic License. */ -import { newOverrideRule } from '../objects/rule'; +import { indexPatterns, newOverrideRule, severitiesOverride } from '../objects/rule'; +import { + NUMBER_OF_ALERTS, + ALERT_RULE_NAME, + ALERT_RULE_METHOD, + ALERT_RULE_RISK_SCORE, + ALERT_RULE_SEVERITY, + ALERT_RULE_VERSION, +} from '../screens/alerts'; import { CUSTOM_RULES_BTN, RISK_SCORE, RULE_NAME, + RULE_SWITCH, RULES_ROW, RULES_TABLE, SEVERITY, } from '../screens/alerts_detection_rules'; import { ABOUT_INVESTIGATION_NOTES, + ABOUT_DETAILS, ABOUT_RULE_DESCRIPTION, + ADDITIONAL_LOOK_BACK_DETAILS, + CUSTOM_QUERY_DETAILS, + DEFINITION_DETAILS, + DETAILS_DESCRIPTION, + DETAILS_TITLE, + FALSE_POSITIVES_DETAILS, + getDetails, + INDEX_PATTERNS_DETAILS, INVESTIGATION_NOTES_MARKDOWN, INVESTIGATION_NOTES_TOGGLE, + MITRE_ATTACK_DETAILS, + REFERENCE_URLS_DETAILS, + RISK_SCORE_DETAILS, + RISK_SCORE_OVERRIDE_DETAILS, RULE_ABOUT_DETAILS_HEADER_TOGGLE, RULE_NAME_HEADER, - ABOUT_DETAILS, - getDescriptionForTitle, - DEFINITION_DETAILS, + RULE_NAME_OVERRIDE_DETAILS, + RULE_TYPE_DETAILS, + RUNS_EVERY_DETAILS, SCHEDULE_DETAILS, - DETAILS_TITLE, - DETAILS_DESCRIPTION, + SEVERITY_DETAILS, + TAGS_DETAILS, + TIMELINE_TEMPLATE_DETAILS, + TIMESTAMP_OVERRIDE_DETAILS, } from '../screens/rule_details'; import { goToManageAlertsDetectionRules, + sortRiskScore, waitForAlertsIndexToBeCreated, waitForAlertsPanelToBeLoaded, } from '../tasks/alerts'; @@ -46,12 +71,24 @@ import { createAndActivateRule, fillAboutRuleWithOverrideAndContinue, fillDefineCustomRuleWithImportedQueryAndContinue, + fillScheduleRuleAndContinue, + waitForTheRuleToBeExecuted, } from '../tasks/create_new_rule'; import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; import { loginAndWaitForPageWithoutDateRange } from '../tasks/login'; +import { refreshPage } from '../tasks/security_header'; import { DETECTIONS_URL } from '../urls/navigation'; +const expectedUrls = newOverrideRule.referenceUrls.join(''); +const expectedFalsePositives = newOverrideRule.falsePositivesExamples.join(''); +const expectedTags = newOverrideRule.tags.join(''); +const expectedMitre = newOverrideRule.mitre + .map(function (mitre) { + return mitre.tactic + mitre.techniques.join(''); + }) + .join(''); + describe('Detection rules, override', () => { before(() => { esArchiverLoad('timeline'); @@ -70,9 +107,10 @@ describe('Detection rules, override', () => { goToCreateNewRule(); fillDefineCustomRuleWithImportedQueryAndContinue(newOverrideRule); fillAboutRuleWithOverrideAndContinue(newOverrideRule); + fillScheduleRuleAndContinue(newOverrideRule); createAndActivateRule(); - cy.get(CUSTOM_RULES_BTN).invoke('text').should('eql', 'Custom rules (1)'); + cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); @@ -87,98 +125,75 @@ describe('Detection rules, override', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', 1); }); - cy.get(RULE_NAME).invoke('text').should('eql', newOverrideRule.name); - cy.get(RISK_SCORE).invoke('text').should('eql', newOverrideRule.riskScore); - cy.get(SEVERITY).invoke('text').should('eql', newOverrideRule.severity); - cy.get('[data-test-subj="rule-switch"]').should('have.attr', 'aria-checked', 'true'); + cy.get(RULE_NAME).should('have.text', newOverrideRule.name); + cy.get(RISK_SCORE).should('have.text', newOverrideRule.riskScore); + cy.get(SEVERITY).should('have.text', newOverrideRule.severity); + cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); goToRuleDetails(); - let expectedUrls = ''; - newOverrideRule.referenceUrls.forEach((url) => { - expectedUrls = expectedUrls + url; - }); - let expectedFalsePositives = ''; - newOverrideRule.falsePositivesExamples.forEach((falsePositive) => { - expectedFalsePositives = expectedFalsePositives + falsePositive; - }); - let expectedTags = ''; - newOverrideRule.tags.forEach((tag) => { - expectedTags = expectedTags + tag; - }); - let expectedMitre = ''; - newOverrideRule.mitre.forEach((mitre) => { - expectedMitre = expectedMitre + mitre.tactic; - mitre.techniques.forEach((technique) => { - expectedMitre = expectedMitre + technique; - }); - }); - const expectedIndexPatterns = [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'winlogbeat-*', - ]; - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${newOverrideRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', newOverrideRule.description); - - const expectedOverrideSeverities = ['Low', 'Medium', 'High', 'Critical']; - + cy.get(RULE_NAME_HEADER).should('have.text', `${newOverrideRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', newOverrideRule.description); cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', newOverrideRule.severity); - getDescriptionForTitle('Risk score').invoke('text').should('eql', newOverrideRule.riskScore); - getDescriptionForTitle('Risk score override') - .invoke('text') - .should('eql', `${newOverrideRule.riskOverride}signal.rule.risk_score`); - getDescriptionForTitle('Rule name override') - .invoke('text') - .should('eql', newOverrideRule.nameOverride); - getDescriptionForTitle('Reference URLs').invoke('text').should('eql', expectedUrls); - getDescriptionForTitle('False positive examples') - .invoke('text') - .should('eql', expectedFalsePositives); - getDescriptionForTitle('MITRE ATT&CK').invoke('text').should('eql', expectedMitre); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); - getDescriptionForTitle('Timestamp override') - .invoke('text') - .should('eql', newOverrideRule.timestampOverride); + getDetails(SEVERITY_DETAILS).should('have.text', newOverrideRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', newOverrideRule.riskScore); + getDetails(RISK_SCORE_OVERRIDE_DETAILS).should( + 'have.text', + `${newOverrideRule.riskOverride}signal.rule.risk_score` + ); + getDetails(RULE_NAME_OVERRIDE_DETAILS).should('have.text', newOverrideRule.nameOverride); + getDetails(REFERENCE_URLS_DETAILS).should('have.text', expectedUrls); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should('have.text', expectedMitre); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); + getDetails(TIMESTAMP_OVERRIDE_DETAILS).should('have.text', newOverrideRule.timestampOverride); cy.contains(DETAILS_TITLE, 'Severity override') .invoke('index', DETAILS_TITLE) // get index relative to other titles, not all siblings .then((severityOverrideIndex) => { newOverrideRule.severityOverride.forEach((severity, i) => { cy.get(DETAILS_DESCRIPTION) .eq(severityOverrideIndex + i) - .invoke('text') .should( - 'eql', - `${severity.sourceField}:${severity.sourceValue}${expectedOverrideSeverities[i]}` + 'have.text', + `${severity.sourceField}:${severity.sourceValue}${severitiesOverride[i]}` ); }); }); }); - cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE).eq(INVESTIGATION_NOTES_TOGGLE).click({ force: true }); - cy.get(ABOUT_INVESTIGATION_NOTES).invoke('text').should('eql', INVESTIGATION_NOTES_MARKDOWN); - + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Index patterns') - .invoke('text') - .should('eql', expectedIndexPatterns.join('')); - getDescriptionForTitle('Custom query') - .invoke('text') - .should('eql', `${newOverrideRule.customQuery} `); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Query'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); + getDetails(INDEX_PATTERNS_DETAILS).should('have.text', indexPatterns.join('')); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', `${newOverrideRule.customQuery} `); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', '5m'); - getDescriptionForTitle('Additional look-back time').invoke('text').should('eql', '1m'); + getDetails(RUNS_EVERY_DETAILS).should( + 'have.text', + `${newOverrideRule.runsEvery.interval}${newOverrideRule.runsEvery.type}` + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should( + 'have.text', + `${newOverrideRule.lookBack.interval}${newOverrideRule.lookBack.type}` + ); }); + + refreshPage(); + waitForTheRuleToBeExecuted(); + + cy.get(NUMBER_OF_ALERTS) + .invoke('text') + .then((numberOfAlertsText) => { + cy.wrap(parseInt(numberOfAlertsText, 10)).should('be.above', 0); + }); + cy.get(ALERT_RULE_NAME).first().should('have.text', 'auditbeat'); + cy.get(ALERT_RULE_VERSION).first().should('have.text', '1'); + cy.get(ALERT_RULE_METHOD).first().should('have.text', 'query'); + cy.get(ALERT_RULE_SEVERITY).first().should('have.text', 'critical'); + + sortRiskScore(); + + cy.get(ALERT_RULE_RISK_SCORE).first().should('have.text', '80'); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_prebuilt.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_prebuilt.spec.ts index 986a7c7177a79..6088a9dedbd06 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_prebuilt.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_prebuilt.spec.ts @@ -56,7 +56,7 @@ describe('Alerts rules, prebuilt rules', () => { loadPrebuiltDetectionRules(); waitForPrebuiltDetectionRulesToBeLoaded(); - cy.get(ELASTIC_RULES_BTN).invoke('text').should('eql', expectedElasticRulesBtnText); + cy.get(ELASTIC_RULES_BTN).should('have.text', expectedElasticRulesBtnText); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); @@ -81,7 +81,7 @@ describe('Deleting prebuilt rules', () => { loadPrebuiltDetectionRules(); waitForPrebuiltDetectionRulesToBeLoaded(); - cy.get(ELASTIC_RULES_BTN).invoke('text').should('eql', expectedElasticRulesBtnText); + cy.get(ELASTIC_RULES_BTN).should('have.text', expectedElasticRulesBtnText); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); @@ -113,16 +113,15 @@ describe('Deleting prebuilt rules', () => { changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); - cy.get(ELASTIC_RULES_BTN) - .invoke('text') - .should('eql', `Elastic rules (${expectedNumberOfRulesAfterDeletion})`); + cy.get(ELASTIC_RULES_BTN).should( + 'have.text', + `Elastic rules (${expectedNumberOfRulesAfterDeletion})` + ); cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterDeletion); }); cy.get(RELOAD_PREBUILT_RULES_BTN).should('exist'); - cy.get(RELOAD_PREBUILT_RULES_BTN) - .invoke('text') - .should('eql', 'Install 1 Elastic prebuilt rule '); + cy.get(RELOAD_PREBUILT_RULES_BTN).should('have.text', 'Install 1 Elastic prebuilt rule '); reloadDeletedRules(); @@ -135,9 +134,10 @@ describe('Deleting prebuilt rules', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterRecovering); }); - cy.get(ELASTIC_RULES_BTN) - .invoke('text') - .should('eql', `Elastic rules (${expectedNumberOfRulesAfterRecovering})`); + cy.get(ELASTIC_RULES_BTN).should( + 'have.text', + `Elastic rules (${expectedNumberOfRulesAfterRecovering})` + ); }); it('Deletes and recovers more than one rule', () => { @@ -152,12 +152,14 @@ describe('Deleting prebuilt rules', () => { waitForRulesToBeLoaded(); cy.get(RELOAD_PREBUILT_RULES_BTN).should('exist'); - cy.get(RELOAD_PREBUILT_RULES_BTN) - .invoke('text') - .should('eql', `Install ${numberOfRulesToBeSelected} Elastic prebuilt rules `); - cy.get(ELASTIC_RULES_BTN) - .invoke('text') - .should('eql', `Elastic rules (${expectedNumberOfRulesAfterDeletion})`); + cy.get(RELOAD_PREBUILT_RULES_BTN).should( + 'have.text', + `Install ${numberOfRulesToBeSelected} Elastic prebuilt rules ` + ); + cy.get(ELASTIC_RULES_BTN).should( + 'have.text', + `Elastic rules (${expectedNumberOfRulesAfterDeletion})` + ); cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterDeletion); }); @@ -173,8 +175,9 @@ describe('Deleting prebuilt rules', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', expectedNumberOfRulesAfterRecovering); }); - cy.get(ELASTIC_RULES_BTN) - .invoke('text') - .should('eql', `Elastic rules (${expectedNumberOfRulesAfterRecovering})`); + cy.get(ELASTIC_RULES_BTN).should( + 'have.text', + `Elastic rules (${expectedNumberOfRulesAfterRecovering})` + ); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_threshold.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_threshold.spec.ts index 00175ed3baeb8..5ee7e69e877e3 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_threshold.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_detection_rules_threshold.spec.ts @@ -4,27 +4,49 @@ * you may not use this file except in compliance with the Elastic License. */ -import { newThresholdRule } from '../objects/rule'; +import { indexPatterns, newThresholdRule } from '../objects/rule'; +import { + ALERT_RULE_METHOD, + ALERT_RULE_NAME, + ALERT_RULE_RISK_SCORE, + ALERT_RULE_SEVERITY, + ALERT_RULE_VERSION, + NUMBER_OF_ALERTS, +} from '../screens/alerts'; import { CUSTOM_RULES_BTN, RISK_SCORE, RULE_NAME, + RULE_SWITCH, RULES_ROW, RULES_TABLE, SEVERITY, } from '../screens/alerts_detection_rules'; import { + ABOUT_DETAILS, ABOUT_INVESTIGATION_NOTES, ABOUT_RULE_DESCRIPTION, + ADDITIONAL_LOOK_BACK_DETAILS, + CUSTOM_QUERY_DETAILS, + FALSE_POSITIVES_DETAILS, + DEFINITION_DETAILS, + getDetails, + INDEX_PATTERNS_DETAILS, INVESTIGATION_NOTES_MARKDOWN, INVESTIGATION_NOTES_TOGGLE, + MITRE_ATTACK_DETAILS, + REFERENCE_URLS_DETAILS, + RISK_SCORE_DETAILS, RULE_ABOUT_DETAILS_HEADER_TOGGLE, RULE_NAME_HEADER, - getDescriptionForTitle, - ABOUT_DETAILS, - DEFINITION_DETAILS, + RULE_TYPE_DETAILS, + RUNS_EVERY_DETAILS, SCHEDULE_DETAILS, + SEVERITY_DETAILS, + TAGS_DETAILS, + THRESHOLD_DETAILS, + TIMELINE_TEMPLATE_DETAILS, } from '../screens/rule_details'; import { @@ -44,13 +66,25 @@ import { createAndActivateRule, fillAboutRuleAndContinue, fillDefineThresholdRuleAndContinue, + fillScheduleRuleAndContinue, selectThresholdRuleType, + waitForTheRuleToBeExecuted, } from '../tasks/create_new_rule'; import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; import { loginAndWaitForPageWithoutDateRange } from '../tasks/login'; +import { refreshPage } from '../tasks/security_header'; import { DETECTIONS_URL } from '../urls/navigation'; +const expectedUrls = newThresholdRule.referenceUrls.join(''); +const expectedFalsePositives = newThresholdRule.falsePositivesExamples.join(''); +const expectedTags = newThresholdRule.tags.join(''); +const expectedMitre = newThresholdRule.mitre + .map(function (mitre) { + return mitre.tactic + mitre.techniques.join(''); + }) + .join(''); + describe('Detection rules, threshold', () => { before(() => { esArchiverLoad('timeline'); @@ -70,9 +104,10 @@ describe('Detection rules, threshold', () => { selectThresholdRuleType(); fillDefineThresholdRuleAndContinue(newThresholdRule); fillAboutRuleAndContinue(newThresholdRule); + fillScheduleRuleAndContinue(newThresholdRule); createAndActivateRule(); - cy.get(CUSTOM_RULES_BTN).invoke('text').should('eql', 'Custom rules (1)'); + cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); changeToThreeHundredRowsPerPage(); waitForRulesToBeLoaded(); @@ -87,79 +122,60 @@ describe('Detection rules, threshold', () => { cy.get(RULES_TABLE).then(($table) => { cy.wrap($table.find(RULES_ROW).length).should('eql', 1); }); - cy.get(RULE_NAME).invoke('text').should('eql', newThresholdRule.name); - cy.get(RISK_SCORE).invoke('text').should('eql', newThresholdRule.riskScore); - cy.get(SEVERITY).invoke('text').should('eql', newThresholdRule.severity); - cy.get('[data-test-subj="rule-switch"]').should('have.attr', 'aria-checked', 'true'); + cy.get(RULE_NAME).should('have.text', newThresholdRule.name); + cy.get(RISK_SCORE).should('have.text', newThresholdRule.riskScore); + cy.get(SEVERITY).should('have.text', newThresholdRule.severity); + cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); goToRuleDetails(); - let expectedUrls = ''; - newThresholdRule.referenceUrls.forEach((url) => { - expectedUrls = expectedUrls + url; - }); - let expectedFalsePositives = ''; - newThresholdRule.falsePositivesExamples.forEach((falsePositive) => { - expectedFalsePositives = expectedFalsePositives + falsePositive; - }); - let expectedTags = ''; - newThresholdRule.tags.forEach((tag) => { - expectedTags = expectedTags + tag; - }); - let expectedMitre = ''; - newThresholdRule.mitre.forEach((mitre) => { - expectedMitre = expectedMitre + mitre.tactic; - mitre.techniques.forEach((technique) => { - expectedMitre = expectedMitre + technique; - }); - }); - const expectedIndexPatterns = [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'winlogbeat-*', - ]; - - cy.get(RULE_NAME_HEADER).invoke('text').should('eql', `${newThresholdRule.name} Beta`); - - cy.get(ABOUT_RULE_DESCRIPTION).invoke('text').should('eql', newThresholdRule.description); + cy.get(RULE_NAME_HEADER).should('have.text', `${newThresholdRule.name} Beta`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', newThresholdRule.description); cy.get(ABOUT_DETAILS).within(() => { - getDescriptionForTitle('Severity').invoke('text').should('eql', newThresholdRule.severity); - getDescriptionForTitle('Risk score').invoke('text').should('eql', newThresholdRule.riskScore); - getDescriptionForTitle('Reference URLs').invoke('text').should('eql', expectedUrls); - getDescriptionForTitle('False positive examples') - .invoke('text') - .should('eql', expectedFalsePositives); - getDescriptionForTitle('MITRE ATT&CK').invoke('text').should('eql', expectedMitre); - getDescriptionForTitle('Tags').invoke('text').should('eql', expectedTags); + getDetails(SEVERITY_DETAILS).should('have.text', newThresholdRule.severity); + getDetails(RISK_SCORE_DETAILS).should('have.text', newThresholdRule.riskScore); + getDetails(REFERENCE_URLS_DETAILS).should('have.text', expectedUrls); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should('have.text', expectedMitre); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); }); - cy.get(RULE_ABOUT_DETAILS_HEADER_TOGGLE).eq(INVESTIGATION_NOTES_TOGGLE).click({ force: true }); - cy.get(ABOUT_INVESTIGATION_NOTES).invoke('text').should('eql', INVESTIGATION_NOTES_MARKDOWN); - + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); cy.get(DEFINITION_DETAILS).within(() => { - getDescriptionForTitle('Index patterns') - .invoke('text') - .should('eql', expectedIndexPatterns.join('')); - getDescriptionForTitle('Custom query') - .invoke('text') - .should('eql', `${newThresholdRule.customQuery} `); - getDescriptionForTitle('Rule type').invoke('text').should('eql', 'Threshold'); - getDescriptionForTitle('Timeline template').invoke('text').should('eql', 'None'); - getDescriptionForTitle('Threshold') - .invoke('text') - .should( - 'eql', - `Results aggregated by ${newThresholdRule.thresholdField} >= ${newThresholdRule.threshold}` - ); + getDetails(INDEX_PATTERNS_DETAILS).should('have.text', indexPatterns.join('')); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', `${newThresholdRule.customQuery} `); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Threshold'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); + getDetails(THRESHOLD_DETAILS).should( + 'have.text', + `Results aggregated by ${newThresholdRule.thresholdField} >= ${newThresholdRule.threshold}` + ); }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDescriptionForTitle('Runs every').invoke('text').should('eql', '5m'); - getDescriptionForTitle('Additional look-back time').invoke('text').should('eql', '1m'); + getDetails(RUNS_EVERY_DETAILS).should( + 'have.text', + `${newThresholdRule.runsEvery.interval}${newThresholdRule.runsEvery.type}` + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should( + 'have.text', + `${newThresholdRule.lookBack.interval}${newThresholdRule.lookBack.type}` + ); }); + + refreshPage(); + waitForTheRuleToBeExecuted(); + + cy.get(NUMBER_OF_ALERTS) + .invoke('text') + .then((numberOfAlertsText) => { + cy.wrap(parseInt(numberOfAlertsText, 10)).should('be.below', 100); + }); + cy.get(ALERT_RULE_NAME).first().should('have.text', newThresholdRule.name); + cy.get(ALERT_RULE_VERSION).first().should('have.text', '1'); + cy.get(ALERT_RULE_METHOD).first().should('have.text', 'threshold'); + cy.get(ALERT_RULE_SEVERITY) + .first() + .should('have.text', newThresholdRule.severity.toLowerCase()); + cy.get(ALERT_RULE_RISK_SCORE).first().should('have.text', newThresholdRule.riskScore); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts_timeline.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts_timeline.spec.ts index 2fed23755963b..31d8e4666d91d 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts_timeline.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts_timeline.spec.ts @@ -35,7 +35,7 @@ describe('Alerts timeline', () => { .invoke('text') .then((eventId) => { investigateFirstAlertInTimeline(); - cy.get(PROVIDER_BADGE).invoke('text').should('eql', `_id: "${eventId}"`); + cy.get(PROVIDER_BADGE).should('have.text', `_id: "${eventId}"`); }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/objects/rule.ts b/x-pack/plugins/security_solution/cypress/objects/rule.ts index 2a5c60815f450..e84e2b7b1669f 100644 --- a/x-pack/plugins/security_solution/cypress/objects/rule.ts +++ b/x-pack/plugins/security_solution/cypress/objects/rule.ts @@ -23,6 +23,12 @@ interface SeverityOverride { sourceValue: string; } +interface Interval { + interval: string; + timeType: string; + type: string; +} + export interface CustomRule { customQuery: string; name: string; @@ -38,6 +44,8 @@ export interface CustomRule { mitre: Mitre[]; note: string; timelineId: string; + runsEvery: Interval; + lookBack: Interval; } export interface ThresholdRule extends CustomRule { @@ -65,6 +73,8 @@ export interface MachineLearningRule { falsePositivesExamples: string[]; mitre: Mitre[]; note: string; + runsEvery: Interval; + lookBack: Interval; } const mitre1: Mitre = { @@ -83,8 +93,8 @@ const severityOverride1: SeverityOverride = { }; const severityOverride2: SeverityOverride = { - sourceField: 'agent.type', - sourceValue: 'endpoint', + sourceField: '@timestamp', + sourceValue: '10/02/2020', }; const severityOverride3: SeverityOverride = { @@ -93,8 +103,20 @@ const severityOverride3: SeverityOverride = { }; const severityOverride4: SeverityOverride = { - sourceField: '@timestamp', - sourceValue: '10/02/2020', + sourceField: 'agent.type', + sourceValue: 'auditbeat', +}; + +const runsEvery: Interval = { + interval: '1', + timeType: 'Seconds', + type: 's', +}; + +const lookBack: Interval = { + interval: '17520', + timeType: 'Hours', + type: 'h', }; export const newRule: CustomRule = { @@ -109,6 +131,8 @@ export const newRule: CustomRule = { mitre: [mitre1, mitre2], note: '# test markdown', timelineId: '0162c130-78be-11ea-9718-118a926974a4', + runsEvery, + lookBack, }; export const existingRule: CustomRule = { @@ -132,6 +156,8 @@ export const existingRule: CustomRule = { mitre: [], note: 'This is my note', timelineId: '', + runsEvery, + lookBack, }; export const newOverrideRule: OverrideRule = { @@ -150,6 +176,8 @@ export const newOverrideRule: OverrideRule = { riskOverride: 'destination.port', nameOverride: 'agent.type', timestampOverride: '@timestamp', + runsEvery, + lookBack, }; export const newThresholdRule: ThresholdRule = { @@ -166,6 +194,8 @@ export const newThresholdRule: ThresholdRule = { timelineId: '0162c130-78be-11ea-9718-118a926974a4', thresholdField: 'host.name', threshold: '10', + runsEvery, + lookBack, }; export const machineLearningRule: MachineLearningRule = { @@ -180,6 +210,8 @@ export const machineLearningRule: MachineLearningRule = { falsePositivesExamples: ['False1'], mitre: [mitre1], note: '# test markdown', + runsEvery, + lookBack, }; export const eqlRule: CustomRule = { @@ -194,4 +226,24 @@ export const eqlRule: CustomRule = { mitre: [mitre1, mitre2], note: '# test markdown', timelineId: '0162c130-78be-11ea-9718-118a926974a4', + runsEvery, + lookBack, +}; + +export const indexPatterns = [ + 'apm-*-transaction*', + 'auditbeat-*', + 'endgame-*', + 'filebeat-*', + 'logs-*', + 'packetbeat-*', + 'winlogbeat-*', +]; + +export const severitiesOverride = ['Low', 'Medium', 'High', 'Critical']; + +export const editedRule = { + ...existingRule, + severity: 'Medium', + description: 'Edited Rule description', }; diff --git a/x-pack/plugins/security_solution/cypress/screens/alerts.ts b/x-pack/plugins/security_solution/cypress/screens/alerts.ts index fb7e7e73986b9..ed05874bd4c4d 100644 --- a/x-pack/plugins/security_solution/cypress/screens/alerts.ts +++ b/x-pack/plugins/security_solution/cypress/screens/alerts.ts @@ -4,45 +4,57 @@ * you may not use this file except in compliance with the Elastic License. */ -export const EXPAND_ALERT_BTN = '[data-test-subj="expand-event"]'; +export const ALERTS = '[data-test-subj="event"]'; -export const LOADING_ALERTS_PANEL = '[data-test-subj="loading-alerts-panel"]'; +export const ALERT_CHECKBOX = '[data-test-subj="select-event-container"] .euiCheckbox__input'; -export const MANAGE_ALERT_DETECTION_RULES_BTN = '[data-test-subj="manage-alert-detection-rules"]'; +export const ALERT_ID = '[data-test-subj="draggable-content-_id"]'; -export const NUMBER_OF_ALERTS = '[data-test-subj="server-side-event-count"] .euiBadge__text'; +export const ALERT_RISK_SCORE_HEADER = '[data-test-subj="header-text-signal.rule.risk_score"]'; -export const OPENED_ALERTS_FILTER_BTN = '[data-test-subj="openAlerts"]'; +export const ALERT_RULE_METHOD = '[data-test-subj="draggable-content-signal.rule.type"]'; -export const CLOSED_ALERTS_FILTER_BTN = '[data-test-subj="closedAlerts"]'; +export const ALERT_RULE_NAME = '[data-test-subj="draggable-content-signal.rule.name"]'; -export const IN_PROGRESS_ALERTS_FILTER_BTN = '[data-test-subj="inProgressAlerts"]'; +export const ALERT_RULE_RISK_SCORE = '[data-test-subj="draggable-content-signal.rule.risk_score"]'; -export const SELECTED_ALERTS = '[data-test-subj="selectedAlerts"]'; +export const ALERT_RULE_SEVERITY = '[data-test-subj="draggable-content-signal.rule.severity"]'; -export const SEND_ALERT_TO_TIMELINE_BTN = '[data-test-subj="send-alert-to-timeline-button"]'; +export const ALERT_RULE_VERSION = '[data-test-subj="draggable-content-signal.rule.version"]'; -export const SHOWING_ALERTS = '[data-test-subj="showingAlerts"]'; +export const CLOSE_ALERT_BTN = '[data-test-subj="close-alert-status"]'; -export const ALERTS = '[data-test-subj="event"]'; +export const CLOSE_SELECTED_ALERTS_BTN = '[data-test-subj="closeSelectedAlertsButton"]'; -export const ALERT_ID = '[data-test-subj="draggable-content-_id"]'; +export const CLOSED_ALERTS_FILTER_BTN = '[data-test-subj="closedAlerts"]'; -export const ALERT_CHECKBOX = '[data-test-subj="select-event-container"] .euiCheckbox__input'; +export const EXPAND_ALERT_BTN = '[data-test-subj="expand-event"]'; -export const TAKE_ACTION_POPOVER_BTN = '[data-test-subj="alertActionPopover"] button'; +export const IN_PROGRESS_ALERTS_FILTER_BTN = '[data-test-subj="inProgressAlerts"]'; -export const TIMELINE_CONTEXT_MENU_BTN = '[data-test-subj="timeline-context-menu-button"]'; +export const LOADING_ALERTS_PANEL = '[data-test-subj="loading-alerts-panel"]'; -export const OPEN_SELECTED_ALERTS_BTN = '[data-test-subj="openSelectedAlertsButton"]'; +export const MANAGE_ALERT_DETECTION_RULES_BTN = '[data-test-subj="manage-alert-detection-rules"]'; -export const CLOSE_SELECTED_ALERTS_BTN = '[data-test-subj="closeSelectedAlertsButton"]'; +export const MARK_ALERT_IN_PROGRESS_BTN = '[data-test-subj="in-progress-alert-status"]'; export const MARK_SELECTED_ALERTS_IN_PROGRESS_BTN = '[data-test-subj="markSelectedAlertsInProgressButton"]'; +export const NUMBER_OF_ALERTS = '[data-test-subj="server-side-event-count"] .euiBadge__text'; + export const OPEN_ALERT_BTN = '[data-test-subj="open-alert-status"]'; -export const CLOSE_ALERT_BTN = '[data-test-subj="close-alert-status"]'; +export const OPEN_SELECTED_ALERTS_BTN = '[data-test-subj="openSelectedAlertsButton"]'; -export const MARK_ALERT_IN_PROGRESS_BTN = '[data-test-subj="in-progress-alert-status"]'; +export const OPENED_ALERTS_FILTER_BTN = '[data-test-subj="openAlerts"]'; + +export const SELECTED_ALERTS = '[data-test-subj="selectedAlerts"]'; + +export const SEND_ALERT_TO_TIMELINE_BTN = '[data-test-subj="send-alert-to-timeline-button"]'; + +export const SHOWING_ALERTS = '[data-test-subj="showingAlerts"]'; + +export const TAKE_ACTION_POPOVER_BTN = '[data-test-subj="alertActionPopover"] button'; + +export const TIMELINE_CONTEXT_MENU_BTN = '[data-test-subj="timeline-context-menu-button"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts index dda371126d5aa..e1ab5ff30572f 100644 --- a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts @@ -57,6 +57,12 @@ export const INVESTIGATION_NOTES_TEXTAREA = export const FALSE_POSITIVES_INPUT = '[data-test-subj="detectionEngineStepAboutRuleFalsePositives"] input'; +export const LOOK_BACK_INTERVAL = + '[data-test-subj="detectionEngineStepScheduleRuleFrom"] [data-test-subj="interval"]'; + +export const LOOK_BACK_TIME_TYPE = + '[data-test-subj="detectionEngineStepScheduleRuleFrom"] [data-test-subj="timeType"]'; + export const MACHINE_LEARNING_DROPDOWN = '[data-test-subj="mlJobSelect"] button'; export const MACHINE_LEARNING_LIST = '.euiContextMenuItem__text'; @@ -73,6 +79,8 @@ export const MITRE_TECHNIQUES_INPUT = export const REFERENCE_URLS_INPUT = '[data-test-subj="detectionEngineStepAboutRuleReferenceUrls"] input'; +export const REFRESH_BUTTON = '[data-test-subj="refreshButton"]'; + export const RISK_INPUT = '.euiRangeInput'; export const RISK_MAPPING_OVERRIDE_OPTION = '#risk_score-mapping-override'; @@ -88,21 +96,29 @@ export const RULE_NAME_INPUT = export const RULE_NAME_OVERRIDE = '[data-test-subj="detectionEngineStepAboutRuleRuleNameOverride"]'; +export const RULE_STATUS = '[data-test-subj="ruleStatus"]'; + export const RULE_TIMESTAMP_OVERRIDE = '[data-test-subj="detectionEngineStepAboutRuleTimestampOverride"]'; +export const RUNS_EVERY_INTERVAL = + '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="interval"]'; + +export const RUNS_EVERY_TIME_TYPE = + '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="timeType"]'; + export const SCHEDULE_CONTINUE_BUTTON = '[data-test-subj="schedule-continue"]'; export const SCHEDULE_EDIT_TAB = '[data-test-subj="edit-rule-schedule-tab"]'; export const SCHEDULE_INTERVAL_AMOUNT_INPUT = - '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="schedule-amount-input"]'; + '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="interval"]'; export const SCHEDULE_INTERVAL_UNITS_INPUT = - '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="schedule-units-input"]'; + '[data-test-subj="detectionEngineStepScheduleRuleInterval"] [data-test-subj="timeType"]'; export const SCHEDULE_LOOKBACK_AMOUNT_INPUT = - '[data-test-subj="detectionEngineStepScheduleRuleFrom"] [data-test-subj="schedule-amount-input"]'; + '[data-test-subj="detectionEngineStepScheduleRuleFrom"] [data-test-subj="timeType"]'; export const SCHEDULE_LOOKBACK_UNITS_INPUT = '[data-test-subj="detectionEngineStepScheduleRuleFrom"] [data-test-subj="schedule-units-input"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts index 98fc7b06a9908..5a376e95e38dd 100644 --- a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts +++ b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts @@ -4,12 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -export const getDescriptionForTitle = (title: string) => - cy.get(DETAILS_TITLE).contains(title).next(DETAILS_DESCRIPTION); - -export const DETAILS_DESCRIPTION = '.euiDescriptionList__description'; -export const DETAILS_TITLE = '.euiDescriptionList__title'; - export const ABOUT_INVESTIGATION_NOTES = '[data-test-subj="stepAboutDetailsNoteContent"]'; export const ABOUT_RULE_DESCRIPTION = '[data-test-subj=stepAboutRuleDetailsToggleDescriptionText]'; @@ -17,9 +11,23 @@ export const ABOUT_RULE_DESCRIPTION = '[data-test-subj=stepAboutRuleDetailsToggl export const ABOUT_DETAILS = '[data-test-subj="aboutRule"] [data-test-subj="listItemColumnStepRuleDescription"]'; +export const ADDITIONAL_LOOK_BACK_DETAILS = 'Additional look-back time'; + +export const ANOMALY_SCORE_DETAILS = 'Anomaly score'; + +export const CUSTOM_QUERY_DETAILS = 'Custom query'; + export const DEFINITION_DETAILS = '[data-test-subj=definitionRule] [data-test-subj="listItemColumnStepRuleDescription"]'; +export const DETAILS_DESCRIPTION = '.euiDescriptionList__description'; + +export const DETAILS_TITLE = '.euiDescriptionList__title'; + +export const FALSE_POSITIVES_DETAILS = 'False positive examples'; + +export const INDEX_PATTERNS_DETAILS = 'Index patterns'; + export const INVESTIGATION_NOTES_MARKDOWN = 'test markdown'; export const INVESTIGATION_NOTES_TOGGLE = 1; @@ -28,11 +36,38 @@ export const MACHINE_LEARNING_JOB_ID = '[data-test-subj="machineLearningJobId"]' export const MACHINE_LEARNING_JOB_STATUS = '[data-test-subj="machineLearningJobStatus"]'; +export const MITRE_ATTACK_DETAILS = 'MITRE ATT&CK'; + export const RULE_ABOUT_DETAILS_HEADER_TOGGLE = '[data-test-subj="stepAboutDetailsToggle"]'; export const RULE_NAME_HEADER = '[data-test-subj="header-page-title"]'; +export const RULE_NAME_OVERRIDE_DETAILS = 'Rule name override'; + +export const RISK_SCORE_DETAILS = 'Risk score'; + +export const RISK_SCORE_OVERRIDE_DETAILS = 'Risk score override'; + +export const REFERENCE_URLS_DETAILS = 'Reference URLs'; + +export const RULE_TYPE_DETAILS = 'Rule type'; + +export const RUNS_EVERY_DETAILS = 'Runs every'; + export const SCHEDULE_DETAILS = '[data-test-subj=schedule] [data-test-subj="listItemColumnStepRuleDescription"]'; export const SCHEDULE_STEP = '[data-test-subj="schedule"] .euiDescriptionList__description'; + +export const SEVERITY_DETAILS = 'Severity'; + +export const TAGS_DETAILS = 'Tags'; + +export const THRESHOLD_DETAILS = 'Threshold'; + +export const TIMELINE_TEMPLATE_DETAILS = 'Timeline template'; + +export const TIMESTAMP_OVERRIDE_DETAILS = 'Timestamp override'; + +export const getDetails = (title: string) => + cy.get(DETAILS_TITLE).contains(title).next(DETAILS_DESCRIPTION); diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts index f7ef5a904de99..c846ced2febfd 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts @@ -22,8 +22,10 @@ import { OPEN_SELECTED_ALERTS_BTN, MARK_ALERT_IN_PROGRESS_BTN, MARK_SELECTED_ALERTS_IN_PROGRESS_BTN, + ALERT_RISK_SCORE_HEADER, } from '../screens/alerts'; import { REFRESH_BUTTON } from '../screens/security_header'; +import { TIMELINE_COLUMN_SPINNER } from '../screens/timeline'; export const closeFirstAlert = () => { cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click({ force: true }); @@ -81,6 +83,12 @@ export const selectNumberOfAlerts = (numberOfAlerts: number) => { } }; +export const sortRiskScore = () => { + cy.get(ALERT_RISK_SCORE_HEADER).click(); + cy.get(TIMELINE_COLUMN_SPINNER).should('exist'); + cy.get(TIMELINE_COLUMN_SPINNER).should('not.exist'); +}; + export const investigateFirstAlertInTimeline = () => { cy.get(SEND_ALERT_TO_TIMELINE_BTN).first().click({ force: true }); }; diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index dc89a39d082bc..914566a13a9a9 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -28,6 +28,8 @@ import { IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK, INPUT, INVESTIGATION_NOTES_TEXTAREA, + LOOK_BACK_INTERVAL, + LOOK_BACK_TIME_TYPE, MACHINE_LEARNING_DROPDOWN, MACHINE_LEARNING_LIST, MACHINE_LEARNING_TYPE, @@ -36,13 +38,17 @@ import { MITRE_TACTIC_DROPDOWN, MITRE_TECHNIQUES_INPUT, REFERENCE_URLS_INPUT, + REFRESH_BUTTON, RISK_INPUT, RISK_MAPPING_OVERRIDE_OPTION, RISK_OVERRIDE, RULE_DESCRIPTION_INPUT, RULE_NAME_INPUT, RULE_NAME_OVERRIDE, + RULE_STATUS, RULE_TIMESTAMP_OVERRIDE, + RUNS_EVERY_INTERVAL, + RUNS_EVERY_TIME_TYPE, SCHEDULE_CONTINUE_BUTTON, SCHEDULE_EDIT_TAB, SEVERITY_DROPDOWN, @@ -190,6 +196,13 @@ export const fillDefineCustomRuleWithImportedQueryAndContinue = ( cy.get(CUSTOM_QUERY_INPUT).should('not.exist'); }; +export const fillScheduleRuleAndContinue = (rule: CustomRule | MachineLearningRule) => { + cy.get(RUNS_EVERY_INTERVAL).clear().type(rule.runsEvery.interval); + cy.get(RUNS_EVERY_TIME_TYPE).select(rule.runsEvery.timeType); + cy.get(LOOK_BACK_INTERVAL).clear().type(rule.lookBack.interval); + cy.get(LOOK_BACK_TIME_TYPE).select(rule.lookBack.timeType); +}; + export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { const thresholdField = 0; const threshold = 1; @@ -251,6 +264,14 @@ export const selectThresholdRuleType = () => { cy.get(THRESHOLD_TYPE).click({ force: true }); }; +export const waitForTheRuleToBeExecuted = async () => { + let status = ''; + while (status !== 'succeeded') { + cy.get(REFRESH_BUTTON).click(); + status = await cy.get(RULE_STATUS).invoke('text').promisify(); + } +}; + export const selectEqlRuleType = () => { cy.get(EQL_TYPE).click({ force: true }); }; diff --git a/x-pack/plugins/security_solution/cypress/tasks/security_header.ts b/x-pack/plugins/security_solution/cypress/tasks/security_header.ts index 7427104a9d889..28efc47120d32 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/security_header.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/security_header.ts @@ -21,3 +21,7 @@ export const navigateFromHeaderTo = (page: string) => { export const refreshPage = () => { cy.get(REFRESH_BUTTON).click({ force: true }).invoke('text').should('not.equal', 'Updating'); }; + +export const waitForThePageToBeUpdated = () => { + cy.get(REFRESH_BUTTON).should('not.equal', 'Updating'); +}; diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json index 6d79557fdaa28..4c9e3bc06037e 100644 --- a/x-pack/plugins/security_solution/package.json +++ b/x-pack/plugins/security_solution/package.json @@ -11,7 +11,7 @@ "cypress:open": "cypress open --config-file ./cypress/cypress.json", "cypress:open-as-ci": "node ../../../scripts/functional_tests --config ../../test/security_solution_cypress/visual_config.ts", "cypress:run": "cypress run --browser chrome --headless --spec ./cypress/integration/**/*.spec.ts --config-file ./cypress/cypress.json --reporter ../../node_modules/cypress-multi-reporters --reporter-options configFile=./cypress/reporter_config.json; status=$?; ../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json; ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results; mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/ && exit $status;", - "cypress:run-as-ci": "node ../../../scripts/functional_tests --config ../../test/security_solution_cypress/cli_config.ts", + "cypress:run-as-ci": "node --max-old-space-size=2048 ../../../scripts/functional_tests --config ../../test/security_solution_cypress/cli_config.ts", "test:generate": "node scripts/endpoint/resolver_generator" }, "devDependencies": { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_status/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_status/index.tsx index 0ddf4d06fb0fc..366bd156e0c1b 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_status/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_status/index.tsx @@ -69,7 +69,9 @@ const RuleStatusComponent: React.FC = ({ ruleId, ruleEnabled }) <> - {currentStatus?.status ?? getEmptyTagValue()} + + {currentStatus?.status ?? getEmptyTagValue()} + {currentStatus?.status_date != null && currentStatus?.status != null && ( @@ -84,6 +86,7 @@ const RuleStatusComponent: React.FC = ({ ruleId, ruleEnabled }) )} } > From 119da5903cddf8e795b5ab39c57622e685134735 Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Tue, 29 Sep 2020 10:57:24 +0200 Subject: [PATCH 037/119] Make Field a React.lazy export (#78483) * Make Field a React.lazy export * Fix broken types Co-authored-by: Elastic Machine --- src/plugins/advanced_settings/public/index.ts | 10 +- .../management_app/components/field/index.ts | 3 + ...telemetry_management_section.test.tsx.snap | 203 +----------------- .../telemetry_management_section.test.tsx | 35 ++- .../telemetry_management_section.tsx | 4 +- 5 files changed, 39 insertions(+), 216 deletions(-) diff --git a/src/plugins/advanced_settings/public/index.ts b/src/plugins/advanced_settings/public/index.ts index db478fa1579e6..0e621e7cd7d1a 100644 --- a/src/plugins/advanced_settings/public/index.ts +++ b/src/plugins/advanced_settings/public/index.ts @@ -17,11 +17,19 @@ * under the License. */ +import React from 'react'; import { PluginInitializerContext } from 'kibana/public'; import { AdvancedSettingsPlugin } from './plugin'; export { AdvancedSettingsSetup, AdvancedSettingsStart } from './types'; export { ComponentRegistry } from './component_registry'; -export { Field } from './management_app/components/field'; + +/** + * Exports the field component as a React.lazy component. We're explicitly naming it lazy here + * so any plugin that would import that can clearly see it's lazy loaded and can only be used + * inside a suspense context. + */ +const LazyField = React.lazy(() => import('./management_app/components/field')); +export { LazyField }; export function plugin(initializerContext: PluginInitializerContext) { return new AdvancedSettingsPlugin(); diff --git a/src/plugins/advanced_settings/public/management_app/components/field/index.ts b/src/plugins/advanced_settings/public/management_app/components/field/index.ts index d1b9b34515532..c486dc96bfc33 100644 --- a/src/plugins/advanced_settings/public/management_app/components/field/index.ts +++ b/src/plugins/advanced_settings/public/management_app/components/field/index.ts @@ -18,3 +18,6 @@ */ export { Field, getEditableValue } from './field'; + +// eslint-disable-next-line import/no-default-export +export { Field as default } from './field'; diff --git a/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap b/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap index ab29656c557c2..bed1bbeabb044 100644 --- a/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap +++ b/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap @@ -49,7 +49,7 @@ exports[`TelemetryManagementSectionComponent renders as expected 1`] = ` - `; -exports[`TelemetryManagementSectionComponent renders null because query does not match the SEARCH_TERMS 1`] = ` - -`; - exports[`TelemetryManagementSectionComponent test the wrapper (for coverage purposes) 1`] = `null`; diff --git a/src/plugins/telemetry_management_section/public/components/telemetry_management_section.test.tsx b/src/plugins/telemetry_management_section/public/components/telemetry_management_section.test.tsx index c13f639f31447..0e2855f055540 100644 --- a/src/plugins/telemetry_management_section/public/components/telemetry_management_section.test.tsx +++ b/src/plugins/telemetry_management_section/public/components/telemetry_management_section.test.tsx @@ -21,6 +21,7 @@ import { mountWithIntl, shallowWithIntl } from 'test_utils/enzyme_helpers'; import TelemetryManagementSection from './telemetry_management_section'; import { TelemetryService } from '../../../telemetry/public/services'; import { coreMock } from '../../../../core/public/mocks'; +import { render } from '@testing-library/react'; describe('TelemetryManagementSectionComponent', () => { const coreStart = coreMock.createStart(); @@ -73,19 +74,31 @@ describe('TelemetryManagementSectionComponent', () => { http: coreSetup.http, }); - const component = mountWithIntl( - + const component = render( + Fallback}> + + ); + try { - expect( - component.setProps({ ...component.props(), query: { text: 'asssdasdsad' } }) - ).toMatchSnapshot(); + component.rerender( + Fallback}> + + + ); expect(onQueryMatchChange).toHaveBeenCalledWith(false); expect(onQueryMatchChange).toHaveBeenCalledTimes(1); } finally { diff --git a/src/plugins/telemetry_management_section/public/components/telemetry_management_section.tsx b/src/plugins/telemetry_management_section/public/components/telemetry_management_section.tsx index db104e9c7baab..9ae0a3d12fbb5 100644 --- a/src/plugins/telemetry_management_section/public/components/telemetry_management_section.tsx +++ b/src/plugins/telemetry_management_section/public/components/telemetry_management_section.tsx @@ -34,7 +34,7 @@ import { i18n } from '@kbn/i18n'; import { TelemetryPluginSetup } from 'src/plugins/telemetry/public'; import { PRIVACY_STATEMENT_URL } from '../../../telemetry/common/constants'; import { OptInExampleFlyout } from './opt_in_example_flyout'; -import { Field } from '../../../advanced_settings/public'; +import { LazyField } from '../../../advanced_settings/public'; import { ToastsStart } from '../../../../core/public'; type TelemetryService = TelemetryPluginSetup['telemetryService']; @@ -119,7 +119,7 @@ export class TelemetryManagementSection extends Component { {this.maybeGetAppliesSettingMessage()} - Date: Tue, 29 Sep 2020 11:01:02 +0200 Subject: [PATCH 038/119] fix lodahs imports in app-arch code (#78582) Co-authored-by: Elastic Machine --- .../connected_flyout_manage_drilldowns.tsx | 4 +--- .../public/drilldowns/url_drilldown/url_drilldown_scope.ts | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx index e048eeed9534a..272ec3edc9d29 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx @@ -7,9 +7,7 @@ import React, { useEffect, useState, useMemo } from 'react'; import { ToastsStart } from 'kibana/public'; import useMountedState from 'react-use/lib/useMountedState'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import intersection from 'lodash/intersection'; +import { intersection } from 'lodash'; import { DrilldownWizardConfig, FlyoutDrilldownWizard } from '../flyout_drilldown_wizard'; import { FlyoutListManageDrilldowns } from '../flyout_list_manage_drilldowns'; import { IStorageWrapper } from '../../../../../../../src/plugins/kibana_utils/public'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_drilldown_scope.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_drilldown_scope.ts index 4a6de4e26e8a7..74940c4b07077 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_drilldown_scope.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_drilldown_scope.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import partition from 'lodash/partition'; +import { partition } from 'lodash'; import { getFlattenedObject } from '@kbn/std'; import { UrlDrilldownGlobalScope, UrlDrilldownScope } from './types'; From bddf8ed64af6dc6f2230cb4546518cc1e990d304 Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Tue, 29 Sep 2020 11:42:21 +0200 Subject: [PATCH 039/119] making expression debug info serializable (#78727) --- src/plugins/expressions/common/ast/types.ts | 5 ++--- src/plugins/expressions/common/execution/execution.test.ts | 4 ++-- src/plugins/expressions/common/execution/execution.ts | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/plugins/expressions/common/ast/types.ts b/src/plugins/expressions/common/ast/types.ts index d5039d0adb318..09fb4fae3f201 100644 --- a/src/plugins/expressions/common/ast/types.ts +++ b/src/plugins/expressions/common/ast/types.ts @@ -18,7 +18,6 @@ */ import { ExpressionValue, ExpressionValueError } from '../expression_types'; -import { ExpressionFunction } from '../../common'; export type ExpressionAstNode = | ExpressionAstExpression @@ -48,9 +47,9 @@ export interface ExpressionAstFunctionDebug { success: boolean; /** - * Reference to the expression function this AST node represents. + * Id of expression function. */ - fn: ExpressionFunction; + fn: string; /** * Input that expression function received as its first argument. diff --git a/src/plugins/expressions/common/execution/execution.test.ts b/src/plugins/expressions/common/execution/execution.test.ts index 2b8aa4b5e68f0..ff331d7c5ddaf 100644 --- a/src/plugins/expressions/common/execution/execution.test.ts +++ b/src/plugins/expressions/common/execution/execution.test.ts @@ -491,7 +491,7 @@ describe('Execution', () => { await execution.result; for (const node of execution.state.get().ast.chain) { - expect(node.debug?.fn.name).toBe('add'); + expect(node.debug?.fn).toBe('add'); } }); @@ -667,7 +667,7 @@ describe('Execution', () => { expect(node2.debug).toMatchObject({ success: false, - fn: expect.any(Object), + fn: 'throws', input: expect.any(Object), args: expect.any(Object), error: expect.any(Object), diff --git a/src/plugins/expressions/common/execution/execution.ts b/src/plugins/expressions/common/execution/execution.ts index 3533500a2fbc5..d4c9b0a25d45b 100644 --- a/src/plugins/expressions/common/execution/execution.ts +++ b/src/plugins/expressions/common/execution/execution.ts @@ -235,7 +235,7 @@ export class Execution< const timeEnd: number = now(); (link as ExpressionAstFunction).debug = { success: true, - fn, + fn: fn.name, input, args: resolvedArgs, output, @@ -253,7 +253,7 @@ export class Execution< if (this.params.debug) { (link as ExpressionAstFunction).debug = { success: false, - fn, + fn: fn.name, input, args, error, From 61aac716b3f0d3483fb53ad3f64f9356b304a59d Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Tue, 29 Sep 2020 11:57:53 +0200 Subject: [PATCH 040/119] [ML] Limit exposing shared static code through ml/public/index.ts. (#77745) - Clean up lodash imports. - Import types only where applicable. - Reduce page load bundle size by fetching more code asynchronously. --- x-pack/plugins/ml/common/index.ts | 1 + x-pack/plugins/ml/common/util/job_utils.ts | 13 +--- .../annotations_table/annotations_table.js | 4 +- .../anomalies_table/anomalies_table.js | 4 +- .../anomalies_table_columns.js | 4 +- .../anomalies_table/anomaly_details.js | 7 +-- .../anomalies_table/influencers_cell.js | 4 +- .../components/anomalies_table/links_menu.js | 4 +- .../revert_model_snapshot_flyout.tsx | 1 - .../action_clone/clone_action_name.tsx | 2 +- .../analytics_list/use_table_settings.ts | 7 +-- .../components/combined_fields/geo_point.tsx | 4 +- .../components/combined_fields/utils.ts | 4 +- .../explorer_charts_container_service.js | 19 +----- .../explorer_charts_container_service.test.js | 4 +- .../explorer/explorer_swimlane.tsx | 10 +-- .../application/explorer/explorer_utils.js | 24 +++---- .../components/jobs_list/jobs_list.js | 4 +- .../ml/public/application/management/index.ts | 34 +++++----- .../application/overview/overview_page.tsx | 4 ++ .../application/routing/routes/overview.tsx | 12 ++-- .../application/services/forecast_service.js | 10 +-- .../application/services/job_service.js | 16 +---- .../application/services/mapping_service.js | 4 +- .../results_service/result_service_rx.ts | 7 +-- .../results_service/results_service.js | 7 +-- .../forecasting_modal/forecasting_modal.js | 4 +- .../timeseries_chart/timeseries_chart.js | 13 +--- .../timeseries_search_service.ts | 15 +---- .../timeseriesexplorer_utils.js | 10 +-- .../application/util/chart_config_builder.js | 4 +- .../application/util/dependency_cache.ts | 12 ++-- .../public/application/util/time_buckets.js | 16 +---- .../anomaly_swimlane_embeddable.tsx | 28 +++++---- .../anomaly_swimlane_embeddable_factory.ts | 8 +-- .../embeddable_swim_lane_container.tsx | 4 ++ .../embeddable_swim_lane_container_lazy.tsx} | 6 +- x-pack/plugins/ml/public/embeddables/index.ts | 4 +- x-pack/plugins/ml/public/embeddables/types.ts | 24 ++++--- x-pack/plugins/ml/public/index.ts | 32 +++++++++- .../anomaly_detection_urls_generator.ts | 6 +- .../ml/public/ml_url_generator/common.ts | 4 +- .../ml_url_generator/ml_url_generator.ts | 8 +-- x-pack/plugins/ml/public/plugin.ts | 63 ++++++++++--------- x-pack/plugins/ml/public/register_helper.ts | 15 +++++ x-pack/plugins/ml/server/index.ts | 2 +- .../ml/server/lib/telemetry/telemetry.ts | 2 +- .../models/annotation_service/annotation.ts | 3 +- .../bucket_span_estimator.js | 6 +- .../polled_data_checker.js | 2 +- .../models/data_visualizer/data_visualizer.ts | 5 +- .../validate_cardinality.test.ts | 2 +- .../validate_time_range.test.ts | 2 +- .../build_anomaly_table_items.js | 3 +- .../models/results_service/results_service.ts | 4 +- x-pack/plugins/ml/server/shared.ts | 2 +- .../transform/common/shared_imports.ts | 1 + x-pack/plugins/transform/kibana.json | 4 +- .../public/__mocks__/shared_imports.ts | 14 +---- .../public/app/__mocks__/app_dependencies.tsx | 7 ++- .../public/app/__mocks__/shared_context.ts | 13 ++++ .../transform/public/app/app_dependencies.tsx | 3 + .../public/app/common/aggregations.ts | 2 +- .../public/app/hooks/use_delete_transform.tsx | 14 +++-- .../public/app/hooks/use_index_data.test.tsx | 45 +++++++++---- .../public/app/hooks/use_index_data.ts | 26 ++++---- .../public/app/hooks/use_pivot_data.ts | 23 ++++--- .../public/app/mount_management_section.ts | 2 + .../advanced_pivot_editor.tsx | 4 +- .../aggregation_list/popover_form.tsx | 4 +- .../apply_transform_config_to_define_state.ts | 4 +- .../components/filter_term_form.tsx | 4 +- .../step_define/step_define_form.test.tsx | 9 ++- .../step_define/step_define_form.tsx | 7 ++- .../step_define/step_define_summary.test.tsx | 9 ++- .../step_define/step_define_summary.tsx | 7 ++- .../use_edit_transform_flyout.ts | 8 +-- .../transform_list/expanded_row.test.tsx | 16 +++-- .../transform_list/expanded_row.tsx | 5 +- .../expanded_row_preview_pane.tsx | 6 +- .../transform_list/use_table_settings.ts | 8 +-- .../transform/public/shared_imports.ts | 17 +---- 82 files changed, 366 insertions(+), 419 deletions(-) rename x-pack/plugins/ml/public/{application/overview/index.ts => embeddables/anomaly_swimlane/embeddable_swim_lane_container_lazy.tsx} (63%) create mode 100644 x-pack/plugins/ml/public/register_helper.ts create mode 100644 x-pack/plugins/transform/public/app/__mocks__/shared_context.ts diff --git a/x-pack/plugins/ml/common/index.ts b/x-pack/plugins/ml/common/index.ts index 9a415ac0718b3..d808e4277f075 100644 --- a/x-pack/plugins/ml/common/index.ts +++ b/x-pack/plugins/ml/common/index.ts @@ -7,3 +7,4 @@ export { SearchResponse7 } from './types/es_client'; export { ANOMALY_SEVERITY, ANOMALY_THRESHOLD } from './constants/anomalies'; export { getSeverityColor, getSeverityType } from './util/anomaly_utils'; +export { composeValidators, patternValidator } from './util/validators'; diff --git a/x-pack/plugins/ml/common/util/job_utils.ts b/x-pack/plugins/ml/common/util/job_utils.ts index 04a460251cb6f..878f5a2c71cb9 100644 --- a/x-pack/plugins/ml/common/util/job_utils.ts +++ b/x-pack/plugins/ml/common/util/job_utils.ts @@ -4,18 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEmpty from 'lodash/isEmpty'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import pick from 'lodash/pick'; +import { isEmpty, isEqual, each, pick } from 'lodash'; import semver from 'semver'; import moment, { Duration } from 'moment'; diff --git a/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js b/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js index 67db378fb7951..0527b8f6d9f60 100644 --- a/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js +++ b/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js @@ -10,9 +10,7 @@ * getting the annotations via props (used in Anomaly Explorer and Single Series Viewer). */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import uniq from 'lodash/uniq'; +import { uniq } from 'lodash'; import PropTypes from 'prop-types'; import React, { Component, Fragment } from 'react'; diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table.js b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table.js index d6eb0afed753d..0a2c67a3b0dcb 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table.js @@ -9,9 +9,7 @@ */ import PropTypes from 'prop-types'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { get } from 'lodash'; import React, { Component } from 'react'; diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js index 299173fc4436d..1f8c8633afa47 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js @@ -7,9 +7,7 @@ import { EuiButtonIcon, EuiLink, EuiScreenReaderOnly } from '@elastic/eui'; import React from 'react'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { get } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/anomaly_details.js b/x-pack/plugins/ml/public/application/components/anomalies_table/anomaly_details.js index e0b20ab731749..cd3875f8cbd2a 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/anomaly_details.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/anomaly_details.js @@ -11,12 +11,7 @@ import PropTypes from 'prop-types'; import React, { Component, Fragment } from 'react'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import pick from 'lodash/pick'; +import { get, pick } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/influencers_cell.js b/x-pack/plugins/ml/public/application/components/anomalies_table/influencers_cell.js index 505ccf46c5a62..a1ca22eb292ce 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/influencers_cell.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/influencers_cell.js @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; +import { each } from 'lodash'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.js b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.js index 114dc463fa3a6..d898734f34c93 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.js @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash'; import moment from 'moment'; import rison from 'rison-node'; import PropTypes from 'prop-types'; diff --git a/x-pack/plugins/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/revert_model_snapshot_flyout.tsx b/x-pack/plugins/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/revert_model_snapshot_flyout.tsx index ad5915b39d521..e37efe60f8018 100644 --- a/x-pack/plugins/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/revert_model_snapshot_flyout.tsx +++ b/x-pack/plugins/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/revert_model_snapshot_flyout.tsx @@ -12,7 +12,6 @@ import React, { FC, useState, useCallback, useMemo, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; -import {} from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiFlyout, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx index ce24892c9de45..b4efca39e200c 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx @@ -6,7 +6,7 @@ import { EuiToolTip } from '@elastic/eui'; import React, { FC } from 'react'; -import { isEqual, cloneDeep } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash'; import { i18n } from '@kbn/i18n'; import { IIndexPattern } from 'src/plugins/data/common'; import { DeepReadonly } from '../../../../../../../common/types/common'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts index 71e503998ed47..c2018463fdf49 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts @@ -6,12 +6,7 @@ import { useState } from 'react'; import { Direction, EuiBasicTableProps, EuiTableSortingType } from '@elastic/eui'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import sortBy from 'lodash/sortBy'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { sortBy, get } from 'lodash'; const PAGE_SIZE = 10; const PAGE_SIZE_OPTIONS = [10, 25, 50]; diff --git a/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/geo_point.tsx b/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/geo_point.tsx index 0f6ffe44cc9f8..78bf07435053d 100644 --- a/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/geo_point.tsx +++ b/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/geo_point.tsx @@ -5,9 +5,7 @@ */ import { i18n } from '@kbn/i18n'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import debounce from 'lodash/debounce'; +import { debounce } from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { ChangeEvent, Component, Fragment } from 'react'; diff --git a/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/utils.ts b/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/utils.ts index 5e7de14f451c2..1cc513e778b2f 100644 --- a/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/utils.ts +++ b/x-pack/plugins/ml/public/application/datavisualizer/file_based/components/combined_fields/utils.ts @@ -5,7 +5,7 @@ */ import { i18n } from '@kbn/i18n'; -import _ from 'lodash'; +import { cloneDeep } from 'lodash'; import uuid from 'uuid/v4'; import { CombinedField } from './types'; import { @@ -54,7 +54,7 @@ export function addCombinedFieldsToPipeline( pipeline: IngestPipeline, combinedFields: CombinedField[] ) { - const updatedPipeline = _.cloneDeep(pipeline); + const updatedPipeline = cloneDeep(pipeline); combinedFields.forEach((combinedField) => { updatedPipeline.processors.push({ set: { diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js index 9ca1d935c6e1e..bf6b48fa18b47 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js @@ -11,24 +11,7 @@ * and manages the layout of the charts in the containing div. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import find from 'lodash/find'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import sortBy from 'lodash/sortBy'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import map from 'lodash/map'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import reduce from 'lodash/reduce'; +import { get, each, find, sortBy, map, reduce } from 'lodash'; import { buildConfig } from './explorer_chart_config_builder'; import { chartLimits, getChartType } from '../../util/chart_utils'; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.test.js b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.test.js index 8e9e8a03929c3..5e6901408422b 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.test.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.test.js @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash'; import mockAnomalyChartRecords from './__mocks__/mock_anomaly_chart_records.json'; import mockDetectorsByJob from './__mocks__/mock_detectors_by_job.json'; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_swimlane.tsx b/x-pack/plugins/ml/public/application/explorer/explorer_swimlane.tsx index f464eaf362c3a..359dc11ca08d1 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_swimlane.tsx +++ b/x-pack/plugins/ml/public/application/explorer/explorer_swimlane.tsx @@ -10,15 +10,7 @@ import React from 'react'; import './_explorer.scss'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import uniq from 'lodash/uniq'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { isEqual, uniq, get } from 'lodash'; import d3 from 'd3'; import moment from 'moment'; import DragSelect from 'dragselect'; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_utils.js b/x-pack/plugins/ml/public/application/explorer/explorer_utils.js index 08830decc9449..c309e1f4ef8e8 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_utils.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_utils.js @@ -8,7 +8,7 @@ * utils for Anomaly Explorer. */ -import { chain, get, union, uniq } from 'lodash'; +import { get, union, sortBy, uniq } from 'lodash'; import moment from 'moment-timezone'; import { @@ -279,17 +279,17 @@ export function getViewBySwimlaneOptions({ const selectedJobIds = selectedJobs.map((d) => d.id); // Unique influencers for the selected job(s). - const viewByOptions = chain( - mlJobService.jobs.reduce((reducedViewByOptions, job) => { - if (selectedJobIds.some((jobId) => jobId === job.job_id)) { - return reducedViewByOptions.concat(job.analysis_config.influencers || []); - } - return reducedViewByOptions; - }, []) - ) - .uniq() - .sortBy((fieldName) => fieldName.toLowerCase()) - .value(); + const viewByOptions = sortBy( + uniq( + mlJobService.jobs.reduce((reducedViewByOptions, job) => { + if (selectedJobIds.some((jobId) => jobId === job.job_id)) { + return reducedViewByOptions.concat(job.analysis_config.influencers || []); + } + return reducedViewByOptions; + }, []) + ), + (fieldName) => fieldName.toLowerCase() + ); viewByOptions.push(VIEW_BY_JOB_LABEL); let viewBySwimlaneOptions = viewByOptions; diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/jobs_list/jobs_list.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/jobs_list/jobs_list.js index 558fe4c73c597..fb64d4767eac0 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/jobs_list/jobs_list.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/jobs_list/jobs_list.js @@ -7,9 +7,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import sortBy from 'lodash/sortBy'; +import { sortBy } from 'lodash'; import moment from 'moment'; import { toLocaleString } from '../../../../util/string_utils'; diff --git a/x-pack/plugins/ml/public/application/management/index.ts b/x-pack/plugins/ml/public/application/management/index.ts index 72073dfd26a97..e633aef59297e 100644 --- a/x-pack/plugins/ml/public/application/management/index.ts +++ b/x-pack/plugins/ml/public/application/management/index.ts @@ -12,27 +12,25 @@ import { i18n } from '@kbn/i18n'; -import { CoreSetup } from 'kibana/public'; -import { ManagementSetup } from 'src/plugins/management/public'; -import { MlStartDependencies } from '../../plugin'; +import type { CoreSetup } from 'kibana/public'; +import type { ManagementSetup } from 'src/plugins/management/public'; +import type { MlStartDependencies } from '../../plugin'; -import { ManagementAppMountParams } from '../../../../../../src/plugins/management/public'; +import type { ManagementAppMountParams } from '../../../../../../src/plugins/management/public'; export function registerManagementSection( - management: ManagementSetup | undefined, + management: ManagementSetup, core: CoreSetup ) { - if (management !== undefined) { - return management.sections.section.insightsAndAlerting.registerApp({ - id: 'jobsListLink', - title: i18n.translate('xpack.ml.management.jobsListTitle', { - defaultMessage: 'Machine Learning Jobs', - }), - order: 2, - async mount(params: ManagementAppMountParams) { - const { mountApp } = await import('./jobs_list'); - return mountApp(core, params); - }, - }); - } + return management.sections.section.insightsAndAlerting.registerApp({ + id: 'jobsListLink', + title: i18n.translate('xpack.ml.management.jobsListTitle', { + defaultMessage: 'Machine Learning Jobs', + }), + order: 2, + async mount(params: ManagementAppMountParams) { + const { mountApp } = await import('./jobs_list'); + return mountApp(core, params); + }, + }); } diff --git a/x-pack/plugins/ml/public/application/overview/overview_page.tsx b/x-pack/plugins/ml/public/application/overview/overview_page.tsx index 9a852c491ee27..8219ba8731bd3 100644 --- a/x-pack/plugins/ml/public/application/overview/overview_page.tsx +++ b/x-pack/plugins/ml/public/application/overview/overview_page.tsx @@ -40,3 +40,7 @@ export const OverviewPage: FC = () => { ); }; + +// required for dynamic import using React.lazy() +// eslint-disable-next-line import/no-default-export +export default OverviewPage; diff --git a/x-pack/plugins/ml/public/application/routing/routes/overview.tsx b/x-pack/plugins/ml/public/application/routing/routes/overview.tsx index 0e07b0edfbe56..8ce51f4f5dea9 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/overview.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/overview.tsx @@ -4,16 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { FC } from 'react'; +import React, { FC, Suspense } from 'react'; import { i18n } from '@kbn/i18n'; import { Redirect } from 'react-router-dom'; -import { NavigateToPath } from '../../contexts/kibana'; +import type { NavigateToPath } from '../../contexts/kibana'; import { MlRoute, PageLoader, PageProps } from '../router'; import { useResolver } from '../use_resolver'; -import { OverviewPage } from '../../overview'; import { checkFullLicense } from '../../license'; import { checkGetJobsCapabilitiesResolver } from '../../capabilities/check_capabilities'; @@ -22,6 +21,8 @@ import { loadMlServerInfo } from '../../services/ml_server_info'; import { useTimefilter } from '../../contexts/kibana'; import { breadcrumbOnClickFactory, getBreadcrumbWithUrlForApp } from '../breadcrumbs'; +const OverviewPage = React.lazy(() => import('../../overview/overview_page')); + export const overviewRouteFactory = ( navigateToPath: NavigateToPath, basePath: string @@ -52,7 +53,10 @@ const PageWrapper: FC = ({ deps }) => { return ( - + {/* No fallback yet, we don't show a loading spinner on an outer level until context is available either. */} + + + ); }; diff --git a/x-pack/plugins/ml/public/application/services/forecast_service.js b/x-pack/plugins/ml/public/application/services/forecast_service.js index a99c82015df4d..a36d57424eeb0 100644 --- a/x-pack/plugins/ml/public/application/services/forecast_service.js +++ b/x-pack/plugins/ml/public/application/services/forecast_service.js @@ -6,15 +6,7 @@ // Service for carrying out requests to run ML forecasts and to obtain // data on forecasts that have been performed. -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import find from 'lodash/find'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; +import { get, find, each } from 'lodash'; import { map } from 'rxjs/operators'; import { ml } from './ml_api_service'; diff --git a/x-pack/plugins/ml/public/application/services/job_service.js b/x-pack/plugins/ml/public/application/services/job_service.js index eef760fb5d017..939ad34e77a39 100644 --- a/x-pack/plugins/ml/public/application/services/job_service.js +++ b/x-pack/plugins/ml/public/application/services/job_service.js @@ -4,21 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import cloneDeep from 'lodash/cloneDeep'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import find from 'lodash/find'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isNumber from 'lodash/isNumber'; +import { cloneDeep, each, find, get, isNumber } from 'lodash'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; diff --git a/x-pack/plugins/ml/public/application/services/mapping_service.js b/x-pack/plugins/ml/public/application/services/mapping_service.js index 76ed494995477..b14456c4b229c 100644 --- a/x-pack/plugins/ml/public/application/services/mapping_service.js +++ b/x-pack/plugins/ml/public/application/services/mapping_service.js @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; +import { each } from 'lodash'; import { ml } from './ml_api_service'; diff --git a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts index 8ba71ba948b15..fd7055477a875 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts +++ b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts @@ -13,12 +13,7 @@ // Returned response contains a results property containing the requested aggregation. import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { each, get } from 'lodash'; import { Dictionary } from '../../../../common/types/common'; import { ML_MEDIAN_PERCENTS } from '../../../../common/util/job_utils'; import { JobId } from '../../../../common/types/anomaly_detection_jobs'; diff --git a/x-pack/plugins/ml/public/application/services/results_service/results_service.js b/x-pack/plugins/ml/public/application/services/results_service/results_service.js index fac1ee1480172..4e55b092de5ad 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/results_service.js +++ b/x-pack/plugins/ml/public/application/services/results_service/results_service.js @@ -4,12 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { each, get } from 'lodash'; import { ML_MEDIAN_PERCENTS } from '../../../../common/util/job_utils'; import { escapeForElasticsearchQuery } from '../../util/string_utils'; diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js index 9f18eb1f4fed6..bf99320fdfd4a 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js @@ -9,9 +9,7 @@ */ import PropTypes from 'prop-types'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { get } from 'lodash'; import React, { Component } from 'react'; diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/timeseries_chart/timeseries_chart.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/timeseries_chart/timeseries_chart.js index 78583fc4872b2..1d166b7be9bc1 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/timeseries_chart/timeseries_chart.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/timeseries_chart/timeseries_chart.js @@ -12,18 +12,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import useObservable from 'react-use/lib/useObservable'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import reduce from 'lodash/reduce'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { isEqual, reduce, each, get } from 'lodash'; import d3 from 'd3'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseries_search_service.ts b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseries_search_service.ts index b8f5f08822766..e43ba8c87083a 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseries_search_service.ts +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseries_search_service.ts @@ -4,18 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import find from 'lodash/find'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import filter from 'lodash/filter'; +import { each, find, get, filter } from 'lodash'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -29,7 +18,7 @@ import { buildConfigFromDetector } from '../util/chart_config_builder'; import { mlResultsService } from '../services/results_service'; import { ModelPlotOutput } from '../services/results_service/result_service_rx'; import { Job } from '../../../common/types/anomaly_detection_jobs'; -import { EntityField } from '../..'; +import { EntityField } from '../../../common/util/anomaly_utils'; function getMetricData( job: Job, diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer_utils/timeseriesexplorer_utils.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer_utils/timeseriesexplorer_utils.js index c8c1c98e758b8..d24794382128d 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer_utils/timeseriesexplorer_utils.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer_utils/timeseriesexplorer_utils.js @@ -10,15 +10,7 @@ * Viewer dashboard. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import each from 'lodash/each'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import find from 'lodash/find'; +import { each, get, find } from 'lodash'; import moment from 'moment-timezone'; import { isTimeSeriesViewJob } from '../../../../common/util/job_utils'; diff --git a/x-pack/plugins/ml/public/application/util/chart_config_builder.js b/x-pack/plugins/ml/public/application/util/chart_config_builder.js index 0c4aa4f717dbe..62e64b3d4092e 100644 --- a/x-pack/plugins/ml/public/application/util/chart_config_builder.js +++ b/x-pack/plugins/ml/public/application/util/chart_config_builder.js @@ -9,9 +9,7 @@ * in the source metric data. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { get } from 'lodash'; import { mlFunctionToESAggregation } from '../../../common/util/job_utils'; diff --git a/x-pack/plugins/ml/public/application/util/dependency_cache.ts b/x-pack/plugins/ml/public/application/util/dependency_cache.ts index 2586dfe45345e..341f3a877dd86 100644 --- a/x-pack/plugins/ml/public/application/util/dependency_cache.ts +++ b/x-pack/plugins/ml/public/application/util/dependency_cache.ts @@ -4,25 +4,23 @@ * you may not use this file except in compliance with the Elastic License. */ -import { DataPublicPluginSetup } from 'src/plugins/data/public'; -import { +import type { DataPublicPluginSetup } from 'src/plugins/data/public'; +import type { IUiSettingsClient, ChromeStart, SavedObjectsClientContract, ApplicationStart, HttpStart, I18nStart, -} from 'kibana/public'; -import { IndexPatternsContract, DataPublicPluginStart } from 'src/plugins/data/public'; -import { DocLinksStart, ToastsStart, OverlayStart, ChromeRecentlyAccessed, IBasePath, } from 'kibana/public'; -import { SharePluginStart } from 'src/plugins/share/public'; -import { SecurityPluginSetup } from '../../../../security/public'; +import type { IndexPatternsContract, DataPublicPluginStart } from 'src/plugins/data/public'; +import type { SharePluginStart } from 'src/plugins/share/public'; +import type { SecurityPluginSetup } from '../../../../security/public'; export interface DependencyCache { timefilter: DataPublicPluginSetup['query']['timefilter'] | null; diff --git a/x-pack/plugins/ml/public/application/util/time_buckets.js b/x-pack/plugins/ml/public/application/util/time_buckets.js index f859b465f5de1..bfc7c8c84001a 100644 --- a/x-pack/plugins/ml/public/application/util/time_buckets.js +++ b/x-pack/plugins/ml/public/application/util/time_buckets.js @@ -4,21 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isPlainObject from 'lodash/isPlainObject'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isString from 'lodash/isString'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import ary from 'lodash/ary'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import sortBy from 'lodash/sortBy'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import assign from 'lodash/assign'; +import { isPlainObject, isString, ary, sortBy, assign } from 'lodash'; import moment from 'moment'; import dateMath from '@elastic/datemath'; diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx index e837cabf0b494..6e67ff1aef03d 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx @@ -4,15 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { Suspense } from 'react'; import ReactDOM from 'react-dom'; import { CoreStart } from 'kibana/public'; import { i18n } from '@kbn/i18n'; import { Subject } from 'rxjs'; import { Embeddable, IContainer } from '../../../../../../src/plugins/embeddable/public'; -import { EmbeddableSwimLaneContainer } from './embeddable_swim_lane_container'; -import { JobId } from '../../../common/types/anomaly_detection_jobs'; -import { MlDependencies } from '../../application/app'; +import { EmbeddableSwimLaneContainer } from './embeddable_swim_lane_container_lazy'; +import type { JobId } from '../../../common/types/anomaly_detection_jobs'; +import type { MlDependencies } from '../../application/app'; import { SWIM_LANE_SELECTION_TRIGGER } from '../../ui_actions'; import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, @@ -59,15 +59,17 @@ export class AnomalySwimlaneEmbeddable extends Embeddable< ReactDOM.render( - + + + , node ); diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.ts b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.ts index 9d2fd07e11be5..8a977ed5820c1 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.ts +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.ts @@ -6,15 +6,15 @@ import { i18n } from '@kbn/i18n'; -import { StartServicesAccessor } from 'kibana/public'; +import type { StartServicesAccessor } from 'kibana/public'; -import { +import type { EmbeddableFactoryDefinition, IContainer, } from '../../../../../../src/plugins/embeddable/public'; import { HttpService } from '../../application/services/http_service'; -import { MlPluginStart, MlStartDependencies } from '../../plugin'; -import { MlDependencies } from '../../application/app'; +import type { MlPluginStart, MlStartDependencies } from '../../plugin'; +import type { MlDependencies } from '../../application/app'; import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, AnomalySwimlaneEmbeddableInput, diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx index 60681446ac7aa..0291fa1564a2d 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx @@ -145,3 +145,7 @@ export const EmbeddableSwimLaneContainer: FC = (
); }; + +// required for dynamic import using React.lazy() +// eslint-disable-next-line import/no-default-export +export default EmbeddableSwimLaneContainer; diff --git a/x-pack/plugins/ml/public/application/overview/index.ts b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container_lazy.tsx similarity index 63% rename from x-pack/plugins/ml/public/application/overview/index.ts rename to x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container_lazy.tsx index 7d99bb1094015..faeb9cbb3c8f2 100644 --- a/x-pack/plugins/ml/public/application/overview/index.ts +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container_lazy.tsx @@ -4,4 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -export { OverviewPage } from './overview_page'; +import React from 'react'; + +export const EmbeddableSwimLaneContainer = React.lazy( + () => import('./embeddable_swim_lane_container') +); diff --git a/x-pack/plugins/ml/public/embeddables/index.ts b/x-pack/plugins/ml/public/embeddables/index.ts index cc4bec0b67836..06cb5afa71cff 100644 --- a/x-pack/plugins/ml/public/embeddables/index.ts +++ b/x-pack/plugins/ml/public/embeddables/index.ts @@ -5,8 +5,8 @@ */ import { AnomalySwimlaneEmbeddableFactory } from './anomaly_swimlane'; -import { MlCoreSetup } from '../plugin'; -import { EmbeddableSetup } from '../../../../../src/plugins/embeddable/public'; +import type { MlCoreSetup } from '../plugin'; +import type { EmbeddableSetup } from '../../../../../src/plugins/embeddable/public'; export * from './constants'; export * from './types'; diff --git a/x-pack/plugins/ml/public/embeddables/types.ts b/x-pack/plugins/ml/public/embeddables/types.ts index 93ec79d9b8310..b2979e44d0927 100644 --- a/x-pack/plugins/ml/public/embeddables/types.ts +++ b/x-pack/plugins/ml/public/embeddables/types.ts @@ -4,20 +4,24 @@ * you may not use this file except in compliance with the Elastic License. */ -import { CoreStart } from 'kibana/public'; -import { JobId } from '../../common/types/anomaly_detection_jobs'; -import { SwimlaneType } from '../application/explorer/explorer_constants'; -import { Filter } from '../../../../../src/plugins/data/common/es_query/filters'; -import { Query, RefreshInterval, TimeRange } from '../../../../../src/plugins/data/common/query'; -import { +import type { CoreStart } from 'kibana/public'; +import type { JobId } from '../../common/types/anomaly_detection_jobs'; +import type { SwimlaneType } from '../application/explorer/explorer_constants'; +import type { Filter } from '../../../../../src/plugins/data/common/es_query/filters'; +import type { + Query, + RefreshInterval, + TimeRange, +} from '../../../../../src/plugins/data/common/query'; +import type { EmbeddableInput, EmbeddableOutput, IEmbeddable, } from '../../../../../src/plugins/embeddable/public'; -import { AnomalyDetectorService } from '../application/services/anomaly_detector_service'; -import { AnomalyTimelineService } from '../application/services/anomaly_timeline_service'; -import { MlDependencies } from '../application/app'; -import { AppStateSelectedCells } from '../application/explorer/explorer_utils'; +import type { AnomalyDetectorService } from '../application/services/anomaly_detector_service'; +import type { AnomalyTimelineService } from '../application/services/anomaly_timeline_service'; +import type { MlDependencies } from '../application/app'; +import type { AppStateSelectedCells } from '../application/explorer/explorer_utils'; export interface AnomalySwimlaneEmbeddableCustomInput { jobIds: JobId[]; diff --git a/x-pack/plugins/ml/public/index.ts b/x-pack/plugins/ml/public/index.ts index 80308977735d2..c43df1e1a3d2c 100755 --- a/x-pack/plugins/ml/public/index.ts +++ b/x-pack/plugins/ml/public/index.ts @@ -4,6 +4,10 @@ * you may not use this file except in compliance with the Elastic License. */ +// Be careful adding exports to this file, it may increase the bundle size of +// the ML plugin's page load bundle. You should either just export types or +// use `getMlSharedImports()` to export static code. + import { PluginInitializer, PluginInitializerContext } from 'kibana/public'; import { MlPlugin, @@ -20,5 +24,29 @@ export const plugin: PluginInitializer< MlStartDependencies > = (initializerContext: PluginInitializerContext) => new MlPlugin(initializerContext); -export { MlPluginSetup, MlPluginStart }; -export * from './shared'; +export type { MlPluginSetup, MlPluginStart }; +export type { + AnomaliesTableRecord, + DataRecognizerConfigResponse, + Influencer, + JobExistResult, + JobStat, + MlCapabilitiesResponse, + MlSummaryJob, + UseIndexDataReturnType, + EsSorting, + RenderCellValue, +} from './shared'; + +// Static exports +export { getSeverityColor, getSeverityType } from '../common/util/anomaly_utils'; +export { ANOMALY_SEVERITY } from '../common'; + +// Bundled shared exports +// Exported this way so the code doesn't end up in ML's page load bundle +export const getMlSharedImports = async () => { + return await import('./shared'); +}; +// Helper to get Type returned by getMlSharedImports. +type AwaitReturnType = T extends PromiseLike ? U : T; +export type GetMlSharedImportsReturnType = AwaitReturnType>; diff --git a/x-pack/plugins/ml/public/ml_url_generator/anomaly_detection_urls_generator.ts b/x-pack/plugins/ml/public/ml_url_generator/anomaly_detection_urls_generator.ts index 97ee083bedaa6..9a900c456d516 100644 --- a/x-pack/plugins/ml/public/ml_url_generator/anomaly_detection_urls_generator.ts +++ b/x-pack/plugins/ml/public/ml_url_generator/anomaly_detection_urls_generator.ts @@ -4,10 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEmpty from 'lodash/isEmpty'; -import { +import { isEmpty } from 'lodash'; +import type { AnomalyDetectionQueryState, AnomalyDetectionUrlState, ExplorerAppState, diff --git a/x-pack/plugins/ml/public/ml_url_generator/common.ts b/x-pack/plugins/ml/public/ml_url_generator/common.ts index 59dddeed29888..a03497092d3b3 100644 --- a/x-pack/plugins/ml/public/ml_url_generator/common.ts +++ b/x-pack/plugins/ml/public/ml_url_generator/common.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEmpty from 'lodash/isEmpty'; +import { isEmpty } from 'lodash'; import { MlGenericUrlState } from '../../common/types/ml_url_generator'; import { setStateToKbnUrl } from '../../../../../src/plugins/kibana_utils/public'; diff --git a/x-pack/plugins/ml/public/ml_url_generator/ml_url_generator.ts b/x-pack/plugins/ml/public/ml_url_generator/ml_url_generator.ts index abec5cc2b7d1e..704135f5546b1 100644 --- a/x-pack/plugins/ml/public/ml_url_generator/ml_url_generator.ts +++ b/x-pack/plugins/ml/public/ml_url_generator/ml_url_generator.ts @@ -4,15 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ -import { CoreSetup } from 'kibana/public'; -import { +import type { CoreSetup } from 'kibana/public'; +import type { SharePluginSetup, UrlGeneratorsDefinition, UrlGeneratorState, } from '../../../../../src/plugins/share/public'; -import { MlStartDependencies } from '../plugin'; +import type { MlStartDependencies } from '../plugin'; import { ML_PAGES, ML_APP_URL_GENERATOR } from '../../common/constants/ml_url_generator'; -import { MlUrlGeneratorState } from '../../common/types/ml_url_generator'; +import type { MlUrlGeneratorState } from '../../common/types/ml_url_generator'; import { createAnomalyDetectionJobManagementUrl, createAnomalyDetectionCreateJobSelectType, diff --git a/x-pack/plugins/ml/public/plugin.ts b/x-pack/plugins/ml/public/plugin.ts index 8feef489fdde1..034ed090e2212 100644 --- a/x-pack/plugins/ml/public/plugin.ts +++ b/x-pack/plugins/ml/public/plugin.ts @@ -5,7 +5,7 @@ */ import { i18n } from '@kbn/i18n'; -import { +import type { AppMountParameters, CoreSetup, CoreStart, @@ -14,29 +14,26 @@ import { } from 'kibana/public'; import { BehaviorSubject } from 'rxjs'; import { take } from 'rxjs/operators'; -import { ManagementSetup } from 'src/plugins/management/public'; -import { SharePluginSetup, SharePluginStart } from 'src/plugins/share/public'; -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; - -import { DataPublicPluginStart } from 'src/plugins/data/public'; -import { HomePublicPluginSetup } from 'src/plugins/home/public'; -import { IndexPatternManagementSetup } from 'src/plugins/index_pattern_management/public'; -import { EmbeddableSetup } from 'src/plugins/embeddable/public'; + +import type { ManagementSetup } from 'src/plugins/management/public'; +import type { SharePluginSetup, SharePluginStart } from 'src/plugins/share/public'; +import type { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; +import type { DataPublicPluginStart } from 'src/plugins/data/public'; +import type { HomePublicPluginSetup } from 'src/plugins/home/public'; +import type { IndexPatternManagementSetup } from 'src/plugins/index_pattern_management/public'; +import type { EmbeddableSetup } from 'src/plugins/embeddable/public'; + import { AppStatus, AppUpdater, DEFAULT_APP_CATEGORIES } from '../../../../src/core/public'; -import { MlCardState } from '../../../../src/plugins/index_pattern_management/public'; -import { SecurityPluginSetup } from '../../security/public'; -import { LicensingPluginSetup } from '../../licensing/public'; -import { registerManagementSection } from './application/management'; -import { LicenseManagementUIPluginSetup } from '../../license_management/public'; -import { setDependencyCache } from './application/util/dependency_cache'; +import type { UiActionsSetup, UiActionsStart } from '../../../../src/plugins/ui_actions/public'; +import type { KibanaLegacyStart } from '../../../../src/plugins/kibana_legacy/public'; + +import type { LicenseManagementUIPluginSetup } from '../../license_management/public'; +import type { LicensingPluginSetup } from '../../licensing/public'; +import type { SecurityPluginSetup } from '../../security/public'; + import { PLUGIN_ICON_SOLUTION, PLUGIN_ID } from '../common/constants/app'; -import { registerFeature } from './register_feature'; -import { UiActionsSetup, UiActionsStart } from '../../../../src/plugins/ui_actions/public'; -import { registerMlUiActions } from './ui_actions'; -import { KibanaLegacyStart } from '../../../../src/plugins/kibana_legacy/public'; -import { registerUrlGenerator } from './ml_url_generator'; -import { isFullLicense, isMlEnabled } from '../common/license'; -import { registerEmbeddables } from './embeddables'; + +import { setDependencyCache } from './application/util/dependency_cache'; export interface MlStartDependencies { data: DataPublicPluginStart; @@ -101,12 +98,21 @@ export class MlPlugin implements Plugin { }, }); - const managementApp = registerManagementSection(pluginsSetup.management, core); - const licensing = pluginsSetup.licensing.license$.pipe(take(1)); licensing.subscribe(async (license) => { const [coreStart] = await core.getStartServices(); + const { + isFullLicense, + isMlEnabled, + registerEmbeddables, + registerFeature, + registerManagementSection, + registerMlUiActions, + registerUrlGenerator, + MlCardState, + } = await import('./register_helper'); + if (isMlEnabled(license)) { // add ML to home page if (pluginsSetup.home) { @@ -129,22 +135,17 @@ export class MlPlugin implements Plugin { // register various ML plugin features which require a full license if (isFullLicense(license)) { - if (canManageMLJobs && managementApp) { - managementApp.enable(); + if (canManageMLJobs && pluginsSetup.management !== undefined) { + registerManagementSection(pluginsSetup.management, core).enable(); } registerEmbeddables(pluginsSetup.embeddable, core); registerMlUiActions(pluginsSetup.uiActions, core); - } else if (managementApp) { - managementApp.disable(); } } else { // if ml is disabled in elasticsearch, disable ML in kibana this.appUpdater.next(() => ({ status: AppStatus.inaccessible, })); - if (managementApp) { - managementApp.disable(); - } } }); diff --git a/x-pack/plugins/ml/public/register_helper.ts b/x-pack/plugins/ml/public/register_helper.ts new file mode 100644 index 0000000000000..97574e296d1eb --- /dev/null +++ b/x-pack/plugins/ml/public/register_helper.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export { MlCardState } from '../../../../src/plugins/index_pattern_management/public'; + +export { isFullLicense, isMlEnabled } from '../common/license'; + +export { registerEmbeddables } from './embeddables'; +export { registerFeature } from './register_feature'; +export { registerManagementSection } from './application/management'; +export { registerMlUiActions } from './ui_actions'; +export { registerUrlGenerator } from './ml_url_generator'; diff --git a/x-pack/plugins/ml/server/index.ts b/x-pack/plugins/ml/server/index.ts index 4c27854ec719b..af77468fa57d7 100644 --- a/x-pack/plugins/ml/server/index.ts +++ b/x-pack/plugins/ml/server/index.ts @@ -6,7 +6,7 @@ import { PluginInitializerContext } from 'kibana/server'; import { MlServerPlugin } from './plugin'; -export { MlPluginSetup, MlPluginStart } from './plugin'; +export type { MlPluginSetup, MlPluginStart } from './plugin'; export * from './shared'; export const plugin = (ctx: PluginInitializerContext) => new MlServerPlugin(ctx); diff --git a/x-pack/plugins/ml/server/lib/telemetry/telemetry.ts b/x-pack/plugins/ml/server/lib/telemetry/telemetry.ts index d9ebccd554733..06577d6937101 100644 --- a/x-pack/plugins/ml/server/lib/telemetry/telemetry.ts +++ b/x-pack/plugins/ml/server/lib/telemetry/telemetry.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import isEmpty from 'lodash/isEmpty'; +import { isEmpty } from 'lodash'; import { ISavedObjectsRepository } from 'kibana/server'; import { getInternalRepository } from './internal_repository'; diff --git a/x-pack/plugins/ml/server/models/annotation_service/annotation.ts b/x-pack/plugins/ml/server/models/annotation_service/annotation.ts index 24f1d6951c940..d45532e956f42 100644 --- a/x-pack/plugins/ml/server/models/annotation_service/annotation.ts +++ b/x-pack/plugins/ml/server/models/annotation_service/annotation.ts @@ -5,8 +5,7 @@ */ import Boom from 'boom'; -import each from 'lodash/each'; -import get from 'lodash/get'; +import { each, get } from 'lodash'; import { IScopedClusterClient } from 'kibana/server'; import { ANNOTATION_EVENT_USER, ANNOTATION_TYPE } from '../../../common/constants/annotations'; diff --git a/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.js b/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.js index 1d59db8fa564f..3edc675c06c0e 100644 --- a/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.js +++ b/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.js @@ -4,11 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import cloneDeep from 'lodash/cloneDeep'; -import each from 'lodash/each'; -import remove from 'lodash/remove'; -import sortBy from 'lodash/sortBy'; -import get from 'lodash/get'; +import { cloneDeep, each, remove, sortBy, get } from 'lodash'; import { mlLog } from '../../client/log'; diff --git a/x-pack/plugins/ml/server/models/bucket_span_estimator/polled_data_checker.js b/x-pack/plugins/ml/server/models/bucket_span_estimator/polled_data_checker.js index 981ffe9618d9f..5ff71b61bec54 100644 --- a/x-pack/plugins/ml/server/models/bucket_span_estimator/polled_data_checker.js +++ b/x-pack/plugins/ml/server/models/bucket_span_estimator/polled_data_checker.js @@ -10,7 +10,7 @@ * And a minimum bucket span */ -import get from 'lodash/get'; +import { get } from 'lodash'; export function polledDataCheckerFactory({ asCurrentUser }) { class PolledDataChecker { diff --git a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts index 95c4e79150059..7ff25c22f4896 100644 --- a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts +++ b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts @@ -5,10 +5,7 @@ */ import { IScopedClusterClient } from 'kibana/server'; -import get from 'lodash/get'; -import each from 'lodash/each'; -import last from 'lodash/last'; -import find from 'lodash/find'; +import { get, each, last, find } from 'lodash'; import { KBN_FIELD_TYPES } from '../../../../../../src/plugins/data/server'; import { ML_JOB_FIELD_TYPES } from '../../../common/constants/field_types'; import { getSafeAggregationName } from '../../../common/util/job_utils'; diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts index 1be0751e15f22..2e2a9e21aa959 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash'; import { IScopedClusterClient } from 'kibana/server'; diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts index 12458af0521a9..ddf73166e1858 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash'; import { IScopedClusterClient } from 'kibana/server'; diff --git a/x-pack/plugins/ml/server/models/results_service/build_anomaly_table_items.js b/x-pack/plugins/ml/server/models/results_service/build_anomaly_table_items.js index 588e0e10a8d63..65820b5281338 100644 --- a/x-pack/plugins/ml/server/models/results_service/build_anomaly_table_items.js +++ b/x-pack/plugins/ml/server/models/results_service/build_anomaly_table_items.js @@ -4,8 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import sortBy from 'lodash/sortBy'; -import each from 'lodash/each'; +import { sortBy, each } from 'lodash'; import moment from 'moment-timezone'; import { diff --git a/x-pack/plugins/ml/server/models/results_service/results_service.ts b/x-pack/plugins/ml/server/models/results_service/results_service.ts index 190b5d99309d7..4c6f9eb405802 100644 --- a/x-pack/plugins/ml/server/models/results_service/results_service.ts +++ b/x-pack/plugins/ml/server/models/results_service/results_service.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import sortBy from 'lodash/sortBy'; -import slice from 'lodash/slice'; -import get from 'lodash/get'; +import { sortBy, slice, get } from 'lodash'; import moment from 'moment'; import { SearchResponse } from 'elasticsearch'; import { IScopedClusterClient } from 'kibana/server'; diff --git a/x-pack/plugins/ml/server/shared.ts b/x-pack/plugins/ml/server/shared.ts index 100433b23f7d1..68ee489a3b5ce 100644 --- a/x-pack/plugins/ml/server/shared.ts +++ b/x-pack/plugins/ml/server/shared.ts @@ -7,5 +7,5 @@ export * from '../common/types/anomalies'; export * from '../common/types/anomaly_detection_jobs'; export * from './lib/capabilities/errors'; -export { ModuleSetupPayload } from './shared_services/providers/modules'; +export type { ModuleSetupPayload } from './shared_services/providers/modules'; export { getHistogramsForFields } from './models/data_visualizer/'; diff --git a/x-pack/plugins/transform/common/shared_imports.ts b/x-pack/plugins/transform/common/shared_imports.ts index 8681204755c36..889d23c5e213d 100644 --- a/x-pack/plugins/transform/common/shared_imports.ts +++ b/x-pack/plugins/transform/common/shared_imports.ts @@ -5,3 +5,4 @@ */ export type { SearchResponse7 } from '../../ml/common'; +export { composeValidators, patternValidator } from '../../ml/common'; diff --git a/x-pack/plugins/transform/kibana.json b/x-pack/plugins/transform/kibana.json index 2efe0bb25bc68..4ec12a27e1b15 100644 --- a/x-pack/plugins/transform/kibana.json +++ b/x-pack/plugins/transform/kibana.json @@ -16,11 +16,11 @@ ], "configPath": ["xpack", "transform"], "requiredBundles": [ - "ml", "esUiShared", "discover", "kibanaUtils", "kibanaReact", - "savedObjects" + "savedObjects", + "ml" ] } diff --git a/x-pack/plugins/transform/public/__mocks__/shared_imports.ts b/x-pack/plugins/transform/public/__mocks__/shared_imports.ts index 470c42d5de7fa..8b2fcdc716080 100644 --- a/x-pack/plugins/transform/public/__mocks__/shared_imports.ts +++ b/x-pack/plugins/transform/public/__mocks__/shared_imports.ts @@ -14,16 +14,4 @@ export const useRequest = jest.fn(() => ({ })); // just passing through the reimports -export { - getDataGridSchemaFromKibanaFieldType, - getFieldsFromKibanaIndexPattern, - multiColumnSortFactory, - useDataGrid, - useRenderCellValue, - DataGrid, - EsSorting, - RenderCellValue, - UseDataGridReturnType, - UseIndexDataReturnType, - INDEX_STATUS, -} from '../../../ml/public'; +export { getMlSharedImports } from '../../../ml/public'; diff --git a/x-pack/plugins/transform/public/app/__mocks__/app_dependencies.tsx b/x-pack/plugins/transform/public/app/__mocks__/app_dependencies.tsx index 75fefc99b5458..b4de5ff145a59 100644 --- a/x-pack/plugins/transform/public/app/__mocks__/app_dependencies.tsx +++ b/x-pack/plugins/transform/public/app/__mocks__/app_dependencies.tsx @@ -4,10 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ +import { useContext } from 'react'; + import { coreMock } from '../../../../../../src/core/public/mocks'; import { dataPluginMock } from '../../../../../../src/plugins/data/public/mocks'; import { Storage } from '../../../../../../src/plugins/kibana_utils/public'; +import { MlSharedContext } from './shared_context'; + const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); const dataStart = dataPluginMock.createStartContract(); @@ -26,7 +30,8 @@ const appDependencies = { }; export const useAppDependencies = () => { - return appDependencies; + const ml = useContext(MlSharedContext); + return { ...appDependencies, ml }; }; export const useToastNotifications = () => { diff --git a/x-pack/plugins/transform/public/app/__mocks__/shared_context.ts b/x-pack/plugins/transform/public/app/__mocks__/shared_context.ts new file mode 100644 index 0000000000000..5afe0b26f3502 --- /dev/null +++ b/x-pack/plugins/transform/public/app/__mocks__/shared_context.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createContext } from 'react'; + +import { GetMlSharedImportsReturnType } from '../../shared_imports'; + +// This code is a workaround to provide dependencies that are +// loaded dynamically during runtime. +export const MlSharedContext = createContext({} as GetMlSharedImportsReturnType); diff --git a/x-pack/plugins/transform/public/app/app_dependencies.tsx b/x-pack/plugins/transform/public/app/app_dependencies.tsx index 704875330fdd2..a23465495aceb 100644 --- a/x-pack/plugins/transform/public/app/app_dependencies.tsx +++ b/x-pack/plugins/transform/public/app/app_dependencies.tsx @@ -11,6 +11,8 @@ import { ScopedHistory } from 'kibana/public'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; import { Storage } from '../../../../../src/plugins/kibana_utils/public'; +import type { GetMlSharedImportsReturnType } from '../shared_imports'; + export interface AppDependencies { chrome: CoreStart['chrome']; data: DataPublicPluginStart; @@ -23,6 +25,7 @@ export interface AppDependencies { storage: Storage; overlays: CoreStart['overlays']; history: ScopedHistory; + ml: GetMlSharedImportsReturnType; } export const useAppDependencies = () => { diff --git a/x-pack/plugins/transform/public/app/common/aggregations.ts b/x-pack/plugins/transform/public/app/common/aggregations.ts index 507579d374353..b154e1a562114 100644 --- a/x-pack/plugins/transform/public/app/common/aggregations.ts +++ b/x-pack/plugins/transform/public/app/common/aggregations.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { composeValidators, patternValidator } from '../../../../ml/public'; +import { composeValidators, patternValidator } from '../../../common/shared_imports'; import { AggName } from '../../../common/types/aggregations'; diff --git a/x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx b/x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx index 1a97ba7806fef..3b70521427c67 100644 --- a/x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx +++ b/x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx @@ -12,7 +12,6 @@ import type { DeleteTransformsRequestSchema, } from '../../../common/api_schemas/delete_transforms'; import { isDeleteTransformsResponseSchema } from '../../../common/api_schemas/type_guards'; -import { extractErrorMessage } from '../../shared_imports'; import { getErrorMessage } from '../../../common/utils/errors'; import { useAppDependencies, useToastNotifications } from '../app_dependencies'; import { REFRESH_TRANSFORM_LIST_STATE, refreshTransformList$, TransformListRow } from '../common'; @@ -21,7 +20,11 @@ import { useApi } from './use_api'; import { indexService } from '../services/es_index_service'; export const useDeleteIndexAndTargetIndex = (items: TransformListRow[]) => { - const { http, savedObjects } = useAppDependencies(); + const { + http, + savedObjects, + ml: { extractErrorMessage }, + } = useAppDependencies(); const toastNotifications = useToastNotifications(); const [deleteDestIndex, setDeleteDestIndex] = useState(true); @@ -56,7 +59,7 @@ export const useDeleteIndexAndTargetIndex = (items: TransformListRow[]) => { ); } }, - [savedObjects.client, toastNotifications] + [savedObjects.client, toastNotifications, extractErrorMessage] ); const checkUserIndexPermission = useCallback(async () => { @@ -105,7 +108,10 @@ export const useDeleteIndexAndTargetIndex = (items: TransformListRow[]) => { type SuccessCountField = keyof Omit; export const useDeleteTransforms = () => { - const { overlays } = useAppDependencies(); + const { + overlays, + ml: { extractErrorMessage }, + } = useAppDependencies(); const toastNotifications = useToastNotifications(); const api = useApi(); diff --git a/x-pack/plugins/transform/public/app/hooks/use_index_data.test.tsx b/x-pack/plugins/transform/public/app/hooks/use_index_data.test.tsx index db9ac1e93633f..4d752ee65fbfd 100644 --- a/x-pack/plugins/transform/public/app/hooks/use_index_data.test.tsx +++ b/x-pack/plugins/transform/public/app/hooks/use_index_data.test.tsx @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { FC } from 'react'; import { render, wait } from '@testing-library/react'; import { renderHook } from '@testing-library/react-hooks'; import { CoreSetup } from 'src/core/public'; -import { DataGrid, UseIndexDataReturnType, INDEX_STATUS } from '../../shared_imports'; +import { getMlSharedImports, UseIndexDataReturnType } from '../../shared_imports'; import { SimpleQuery } from '../common'; @@ -22,6 +22,9 @@ jest.mock('../../shared_imports'); jest.mock('../app_dependencies'); jest.mock('./use_api'); +import { useAppDependencies } from '../__mocks__/app_dependencies'; +import { MlSharedContext } from '../__mocks__/shared_context'; + const query: SimpleQuery = { query_string: { query: '*', @@ -31,22 +34,29 @@ const query: SimpleQuery = { describe('Transform: useIndexData()', () => { test('indexPattern set triggers loading', async (done) => { - const { result, waitForNextUpdate } = renderHook(() => - useIndexData( - ({ - id: 'the-id', - title: 'the-title', - fields: [], - } as unknown) as SearchItems['indexPattern'], - query - ) + const mlShared = await getMlSharedImports(); + const wrapper: FC = ({ children }) => ( + {children} + ); + + const { result, waitForNextUpdate } = renderHook( + () => + useIndexData( + ({ + id: 'the-id', + title: 'the-title', + fields: [], + } as unknown) as SearchItems['indexPattern'], + query + ), + { wrapper } ); const IndexObj: UseIndexDataReturnType = result.current; await waitForNextUpdate(); expect(IndexObj.errorMessage).toBe(''); - expect(IndexObj.status).toBe(INDEX_STATUS.LOADING); + expect(IndexObj.status).toBe(1); expect(IndexObj.tableItems).toEqual([]); done(); }); @@ -61,7 +71,12 @@ describe('Transform: with useIndexData()', () => { fields: [] as any[], } as SearchItems['indexPattern']; + const mlSharedImports = await getMlSharedImports(); + const Wrapper = () => { + const { + ml: { DataGrid }, + } = useAppDependencies(); const props = { ...useIndexData(indexPattern, { match_all: {} }), copyToClipboard: 'the-copy-to-clipboard-code', @@ -73,7 +88,11 @@ describe('Transform: with useIndexData()', () => { return ; }; - const { getByText } = render(); + const { getByText } = render( + + + + ); // Act // Assert diff --git a/x-pack/plugins/transform/public/app/hooks/use_index_data.ts b/x-pack/plugins/transform/public/app/hooks/use_index_data.ts index ce233d0cf7caa..6f24017b2274f 100644 --- a/x-pack/plugins/transform/public/app/hooks/use_index_data.ts +++ b/x-pack/plugins/transform/public/app/hooks/use_index_data.ts @@ -13,25 +13,16 @@ import { isFieldHistogramsResponseSchema, } from '../../../common/api_schemas/type_guards'; -import { - getFieldType, - getDataGridSchemaFromKibanaFieldType, - getFieldsFromKibanaIndexPattern, - showDataGridColumnChartErrorMessageToast, - useDataGrid, - useRenderCellValue, - EsSorting, - UseIndexDataReturnType, - INDEX_STATUS, -} from '../../shared_imports'; import { getErrorMessage } from '../../../common/utils/errors'; +import type { EsSorting, UseIndexDataReturnType } from '../../shared_imports'; + import { isDefaultQuery, matchAllQuery, PivotQuery } from '../common'; import { SearchItems } from './use_search_items'; import { useApi } from './use_api'; -import { useToastNotifications } from '../app_dependencies'; +import { useAppDependencies, useToastNotifications } from '../app_dependencies'; export const useIndexData = ( indexPattern: SearchItems['indexPattern'], @@ -39,6 +30,17 @@ export const useIndexData = ( ): UseIndexDataReturnType => { const api = useApi(); const toastNotifications = useToastNotifications(); + const { + ml: { + getFieldType, + getDataGridSchemaFromKibanaFieldType, + getFieldsFromKibanaIndexPattern, + showDataGridColumnChartErrorMessageToast, + useDataGrid, + useRenderCellValue, + INDEX_STATUS, + }, + } = useAppDependencies(); const indexPatternFields = getFieldsFromKibanaIndexPattern(indexPattern); diff --git a/x-pack/plugins/transform/public/app/hooks/use_pivot_data.ts b/x-pack/plugins/transform/public/app/hooks/use_pivot_data.ts index c51bf7d7e6741..536c1d886e758 100644 --- a/x-pack/plugins/transform/public/app/hooks/use_pivot_data.ts +++ b/x-pack/plugins/transform/public/app/hooks/use_pivot_data.ts @@ -18,16 +18,10 @@ import { isPostTransformsPreviewResponseSchema } from '../../../common/api_schem import { dictionaryToArray } from '../../../common/types/common'; import { getNestedProperty } from '../../../common/utils/object_utils'; -import { - formatHumanReadableDateTimeSeconds, - multiColumnSortFactory, - useDataGrid, - RenderCellValue, - UseIndexDataReturnType, - INDEX_STATUS, -} from '../../shared_imports'; +import { RenderCellValue, UseIndexDataReturnType } from '../../shared_imports'; import { getErrorMessage } from '../../../common/utils/errors'; +import { useAppDependencies } from '../app_dependencies'; import { getPreviewTransformRequestBody, PivotAggsConfigDict, @@ -36,10 +30,10 @@ import { PivotQuery, PivotAggsConfig, } from '../common'; +import { isPivotAggsWithExtendedForm } from '../common/pivot_aggs'; import { SearchItems } from './use_search_items'; import { useApi } from './use_api'; -import { isPivotAggsWithExtendedForm } from '../common/pivot_aggs'; /** * Checks if the aggregations collection is invalid. @@ -79,6 +73,9 @@ export const usePivotData = ( PreviewMappingsProperties >({}); const api = useApi(); + const { + ml: { formatHumanReadableDateTimeSeconds, multiColumnSortFactory, useDataGrid, INDEX_STATUS }, + } = useAppDependencies(); const aggsArr = useMemo(() => dictionaryToArray(aggs), [aggs]); const groupByArr = useMemo(() => dictionaryToArray(groupBy), [groupBy]); @@ -258,7 +255,13 @@ export const usePivotData = ( return cellValue; }; - }, [pageData, pagination.pageIndex, pagination.pageSize, previewMappingsProperties]); + }, [ + pageData, + pagination.pageIndex, + pagination.pageSize, + previewMappingsProperties, + formatHumanReadableDateTimeSeconds, + ]); return { ...dataGrid, diff --git a/x-pack/plugins/transform/public/app/mount_management_section.ts b/x-pack/plugins/transform/public/app/mount_management_section.ts index 0392ecbafa832..17db745652dbf 100644 --- a/x-pack/plugins/transform/public/app/mount_management_section.ts +++ b/x-pack/plugins/transform/public/app/mount_management_section.ts @@ -8,6 +8,7 @@ import { ManagementAppMountParams } from '../../../../../src/plugins/management/ import { Storage } from '../../../../../src/plugins/kibana_utils/public'; import { PluginsDependencies } from '../plugin'; +import { getMlSharedImports } from '../shared_imports'; import { AppDependencies } from './app_dependencies'; import { breadcrumbService } from './services/navigation'; @@ -47,6 +48,7 @@ export async function mountManagementSection( storage: localStorage, uiSettings, history, + ml: await getMlSharedImports(), }; const unmountAppCallback = renderApp(element, appDependencies); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx index afb0f49a8c816..983d36a20e87f 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; +import { isEqual } from 'lodash'; import React, { memo, FC } from 'react'; import { EuiCodeEditor, EuiFormRow } from '@elastic/eui'; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx index 3cfab74f42111..30e8c2b594db7 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx @@ -18,9 +18,7 @@ import { EuiSelectOption, } from '@elastic/eui'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash'; import { useUpdateEffect } from 'react-use'; import { AggName } from '../../../../../../common/types/aggregations'; import { dictionaryToArray } from '../../../../../../common/types/common'; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts index 0235cdcf8b5e4..1523a0d9a89f9 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; +import { isEqual } from 'lodash'; import { Dictionary } from '../../../../../../../common/types/common'; import { PivotSupportedAggs } from '../../../../../../../common/types/pivot_aggs'; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx index 416d34481451e..d59f99192621c 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx @@ -7,9 +7,7 @@ import React, { useCallback, useContext, useEffect, useState } from 'react'; import { EuiComboBox, EuiFormRow } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import debounce from 'lodash/debounce'; +import { debounce } from 'lodash'; import { useUpdateEffect } from 'react-use'; import { i18n } from '@kbn/i18n'; import { isEsSearchResponse } from '../../../../../../../../../common/api_schemas/type_guards'; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx index d6526fd1db05e..cf1bfda6128ef 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx @@ -30,6 +30,9 @@ import { StepDefineForm } from './step_define_form'; jest.mock('../../../../../shared_imports'); jest.mock('../../../../../app/app_dependencies'); +import { MlSharedContext } from '../../../../../app/__mocks__/shared_context'; +import { getMlSharedImports } from '../../../../../shared_imports'; + const createMockWebStorage = () => ({ clear: jest.fn(), getItem: jest.fn(), @@ -51,6 +54,8 @@ describe('Transform: ', () => { // Using the async/await wait()/done() pattern to avoid act() errors. test('Minimal initialization', async (done) => { // Arrange + const mlSharedImports = await getMlSharedImports(); + const searchItems = { indexPattern: { title: 'the-index-pattern-title', @@ -69,7 +74,9 @@ describe('Transform: ', () => { const { getByText } = render( - + + + ); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.tsx index 10f473074b4d7..8f19db6fc827d 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.tsx @@ -25,8 +25,6 @@ import { import { PivotAggDict } from '../../../../../../common/types/pivot_aggs'; import { PivotGroupByDict } from '../../../../../../common/types/pivot_group_by'; -import { DataGrid } from '../../../../../shared_imports'; - import { getIndexDevConsoleStatement, getPivotPreviewDevConsoleStatement, @@ -42,7 +40,7 @@ import { import { useDocumentationLinks } from '../../../../hooks/use_documentation_links'; import { useIndexData } from '../../../../hooks/use_index_data'; import { usePivotData } from '../../../../hooks/use_pivot_data'; -import { useToastNotifications } from '../../../../app_dependencies'; +import { useAppDependencies, useToastNotifications } from '../../../../app_dependencies'; import { SearchItems } from '../../../../hooks/use_search_items'; import { AdvancedPivotEditor } from '../advanced_pivot_editor'; @@ -66,6 +64,9 @@ export const StepDefineForm: FC = React.memo((props) => { const { searchItems } = props; const { indexPattern } = searchItems; + const { + ml: { DataGrid }, + } = useAppDependencies(); const toastNotifications = useToastNotifications(); const stepDefineForm = useStepDefineForm(props); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.test.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.test.tsx index f8a060e0007b8..7aed0568e6efc 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.test.tsx @@ -22,10 +22,15 @@ import { StepDefineSummary } from './step_define_summary'; jest.mock('../../../../../shared_imports'); jest.mock('../../../../../app/app_dependencies'); +import { MlSharedContext } from '../../../../../app/__mocks__/shared_context'; +import { getMlSharedImports } from '../../../../../shared_imports'; + describe('Transform: ', () => { // Using the async/await wait()/done() pattern to avoid act() errors. test('Minimal initialization', async (done) => { // Arrange + const mlSharedImports = await getMlSharedImports(); + const searchItems = { indexPattern: { title: 'the-index-pattern-title', @@ -57,7 +62,9 @@ describe('Transform: ', () => { }; const { getByText } = render( - + + + ); // Act diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx index c4adb9f1f49de..24718ffaa937c 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx @@ -12,9 +12,7 @@ import { EuiCodeBlock, EuiForm, EuiFormRow, EuiSpacer } from '@elastic/eui'; import { dictionaryToArray } from '../../../../../../common/types/common'; -import { DataGrid } from '../../../../../shared_imports'; - -import { useToastNotifications } from '../../../../app_dependencies'; +import { useAppDependencies, useToastNotifications } from '../../../../app_dependencies'; import { getPivotQuery, getPivotPreviewDevConsoleStatement, @@ -39,6 +37,9 @@ export const StepDefineSummary: FC = ({ formState: { searchString, searchQuery, groupByList, aggList }, searchItems, }) => { + const { + ml: { DataGrid }, + } = useAppDependencies(); const toastNotifications = useToastNotifications(); const pivotAggsArr = dictionaryToArray(aggList); const pivotGroupByArr = dictionaryToArray(groupByList); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts index b0e1770c50d53..0b1df3d81aa85 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts @@ -4,12 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isEqual from 'lodash/isEqual'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import merge from 'lodash/merge'; +import { isEqual } from 'lodash'; +import { merge } from 'lodash'; import { useReducer } from 'react'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx index 846d8a8ccd200..6d04c08f8b238 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx @@ -13,9 +13,12 @@ import { ExpandedRow } from './expanded_row'; import transformListRow from '../../../../common/__mocks__/transform_list_row.json'; import { within } from '@testing-library/dom'; -jest.mock('../../../../../shared_imports', () => ({ - formatHumanReadableDateTimeSeconds: jest.fn(), -})); +jest.mock('../../../../../shared_imports'); +jest.mock('../../../../../app/app_dependencies'); + +import { MlSharedContext } from '../../../../../app/__mocks__/shared_context'; +import { getMlSharedImports } from '../../../../../shared_imports'; + describe('Transform: Transform List ', () => { // Set timezone to US/Eastern for consistent test results. beforeEach(() => { @@ -27,9 +30,14 @@ describe('Transform: Transform List ', () => { }); test('Minimal initialization', async () => { + const mlShared = await getMlSharedImports(); const item: TransformListRow = transformListRow; - const { getByText, getByTestId } = render(); + const { getByText, getByTestId } = render( + + + + ); expect(getByText('Details')).toBeInTheDocument(); expect(getByText('Stats')).toBeInTheDocument(); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index 15efa46dfb891..4478edab0dba5 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -11,8 +11,8 @@ import { Optional } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; import moment from 'moment-timezone'; -import { formatHumanReadableDateTimeSeconds } from '../../../../../shared_imports'; import { TransformListRow } from '../../../../common'; +import { useAppDependencies } from '../../../../app_dependencies'; import { ExpandedRowDetailsPane, SectionConfig } from './expanded_row_details_pane'; import { ExpandedRowJsonPane } from './expanded_row_json_pane'; import { ExpandedRowMessagesPane } from './expanded_row_messages_pane'; @@ -38,6 +38,9 @@ interface Props { type StateValues = Optional; export const ExpandedRow: FC = ({ item }) => { + const { + ml: { formatHumanReadableDateTimeSeconds }, + } = useAppDependencies(); const stateValues: StateValues = { ...item.stats }; delete stateValues.stats; delete stateValues.checkpointing; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row_preview_pane.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row_preview_pane.tsx index 87d9a25dababd..84ac646dddc11 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row_preview_pane.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row_preview_pane.tsx @@ -7,9 +7,8 @@ import React, { useMemo, FC } from 'react'; import { TransformPivotConfig } from '../../../../../../common/types/transform'; -import { DataGrid } from '../../../../../shared_imports'; -import { useToastNotifications } from '../../../../app_dependencies'; +import { useAppDependencies, useToastNotifications } from '../../../../app_dependencies'; import { getPivotQuery } from '../../../../common'; import { usePivotData } from '../../../../hooks/use_pivot_data'; import { SearchItems } from '../../../../hooks/use_search_items'; @@ -24,6 +23,9 @@ interface ExpandedRowPreviewPaneProps { } export const ExpandedRowPreviewPane: FC = ({ transformConfig }) => { + const { + ml: { DataGrid }, + } = useAppDependencies(); const toastNotifications = useToastNotifications(); const { aggList, groupByList, searchQuery } = useMemo( diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_table_settings.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_table_settings.ts index b3aafbd187c91..9739fb6be6afb 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_table_settings.ts +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_table_settings.ts @@ -6,12 +6,8 @@ import { useState } from 'react'; import { Direction, EuiBasicTableProps, EuiTableSortingType } from '@elastic/eui'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import sortBy from 'lodash/sortBy'; -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import get from 'lodash/get'; +import { sortBy } from 'lodash'; +import { get } from 'lodash'; const PAGE_SIZE = 10; const PAGE_SIZE_OPTIONS = [10, 25, 50]; diff --git a/x-pack/plugins/transform/public/shared_imports.ts b/x-pack/plugins/transform/public/shared_imports.ts index b977c657b4a5a..4f29ab3708fc8 100644 --- a/x-pack/plugins/transform/public/shared_imports.ts +++ b/x-pack/plugins/transform/public/shared_imports.ts @@ -9,22 +9,11 @@ export { XJsonMode } from '@kbn/ace'; export { UseRequestConfig, useRequest } from '../../../../src/plugins/es_ui_shared/public'; export { - getFieldType, - extractErrorMessage, - formatHumanReadableDateTimeSeconds, - getDataGridSchemaFromKibanaFieldType, - getFieldsFromKibanaIndexPattern, - multiColumnSortFactory, - showDataGridColumnChartErrorMessageToast, - useDataGrid, - useRenderCellValue, - ChartData, - DataGrid, + getMlSharedImports, + GetMlSharedImportsReturnType, + UseIndexDataReturnType, EsSorting, RenderCellValue, - UseDataGridReturnType, - UseIndexDataReturnType, - INDEX_STATUS, } from '../../ml/public'; import { XJson } from '../../../../src/plugins/es_ui_shared/public'; From 2fbf9b947aca826520cdffd023490c354c933bdb Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 29 Sep 2020 12:23:39 +0200 Subject: [PATCH 041/119] [Uptime] Ml anomaly alert edit (#76909) Co-authored-by: Elastic Machine --- .../alerts/uptime_edit_alert_flyout.tsx | 25 ++++++ .../components/monitor/ml/manage_ml_job.tsx | 79 ++++++++++++++----- .../alerts/anomaly_alert/anomaly_alert.tsx | 10 ++- .../lib/alert_types/duration_anomaly.tsx | 2 +- .../uptime/public/state/alerts/alerts.ts | 1 + .../test/functional/apps/uptime/ml_anomaly.ts | 1 - .../functional/services/uptime/ml_anomaly.ts | 4 +- .../apps/uptime/anomaly_alert.ts | 2 +- 8 files changed, 100 insertions(+), 24 deletions(-) create mode 100644 x-pack/plugins/uptime/public/components/common/alerts/uptime_edit_alert_flyout.tsx diff --git a/x-pack/plugins/uptime/public/components/common/alerts/uptime_edit_alert_flyout.tsx b/x-pack/plugins/uptime/public/components/common/alerts/uptime_edit_alert_flyout.tsx new file mode 100644 index 0000000000000..cdc3632545c5c --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/alerts/uptime_edit_alert_flyout.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { Alert, AlertEdit } from '../../../../../../plugins/triggers_actions_ui/public'; + +interface Props { + alertFlyoutVisible: boolean; + initialAlert: Alert; + setAlertFlyoutVisibility: React.Dispatch>; +} + +export const UptimeEditAlertFlyoutComponent = ({ + alertFlyoutVisible, + initialAlert, + setAlertFlyoutVisibility, +}: Props) => { + const onClose = () => { + setAlertFlyoutVisibility(false); + }; + return alertFlyoutVisible ? : null; +}; diff --git a/x-pack/plugins/uptime/public/components/monitor/ml/manage_ml_job.tsx b/x-pack/plugins/uptime/public/components/monitor/ml/manage_ml_job.tsx index 7971c4eb58350..c8260721ff84a 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ml/manage_ml_job.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ml/manage_ml_job.tsx @@ -22,7 +22,12 @@ import { useMonitorId } from '../../../hooks'; import { setAlertFlyoutType, setAlertFlyoutVisible } from '../../../state/actions'; import { useAnomalyAlert } from './use_anomaly_alert'; import { ConfirmAlertDeletion } from './confirm_alert_delete'; -import { deleteAnomalyAlertAction } from '../../../state/alerts/alerts'; +import { + deleteAnomalyAlertAction, + getAnomalyAlertAction, + isAnomalyAlertDeleting, +} from '../../../state/alerts/alerts'; +import { UptimeEditAlertFlyoutComponent } from '../../common/alerts/uptime_edit_alert_flyout'; interface Props { hasMLJob: boolean; @@ -33,11 +38,14 @@ interface Props { export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Props) => { const [isPopOverOpen, setIsPopOverOpen] = useState(false); + const [isFlyoutOpen, setIsFlyoutOpen] = useState(false); + const { basePath } = useContext(UptimeSettingsContext); const canDeleteMLJob = useSelector(canDeleteMLJobSelector); const isMLJobCreating = useSelector(isMLJobCreatingSelector); + const isAlertDeleting = useSelector(isAnomalyAlertDeleting); const { loading: isMLJobLoading } = useSelector(hasMLJobSelector); @@ -54,7 +62,7 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro const deleteAnomalyAlert = () => dispatch(deleteAnomalyAlertAction.get({ alertId: anomalyAlert?.id as string })); - const showLoading = isMLJobCreating || isMLJobLoading; + const showLoading = isMLJobCreating || isMLJobLoading || isAlertDeleting; const btnText = hasMLJob ? labels.ANOMALY_DETECTION : labels.ENABLE_ANOMALY_DETECTION; @@ -63,7 +71,7 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro data-test-subj={hasMLJob ? 'uptimeManageMLJobBtn' : 'uptimeEnableAnomalyBtn'} onClick={hasMLJob ? () => setIsPopOverOpen(true) : onEnableJob} disabled={hasMLJob && !canDeleteMLJob} - isLoading={isMLJobCreating || isMLJobLoading} + isLoading={showLoading} size="s" aria-label={labels.ENABLE_MANAGE_JOB} > @@ -85,21 +93,27 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro dateRange: { from: dateRangeStart, to: dateRangeEnd }, }), }, - { - name: anomalyAlert ? labels.DISABLE_ANOMALY_ALERT : labels.ENABLE_ANOMALY_ALERT, - 'data-test-subj': anomalyAlert - ? 'uptimeDisableAnomalyAlertBtn' - : 'uptimeEnableAnomalyAlertBtn', - icon: , - onClick: () => { - if (anomalyAlert) { - setIsConfirmAlertDeleteOpen(true); - } else { - dispatch(setAlertFlyoutType(CLIENT_ALERT_TYPES.DURATION_ANOMALY)); - dispatch(setAlertFlyoutVisible(true)); - } - }, - }, + ...(anomalyAlert + ? [ + { + name: 'Anomaly alert', + icon: 'bell', + 'data-test-subj': 'uptimeManageAnomalyAlertBtn', + panel: 1, + }, + ] + : [ + { + name: labels.ENABLE_ANOMALY_ALERT, + 'data-test-subj': 'uptimeEnableAnomalyAlertBtn', + icon: 'bell', + onClick: () => { + dispatch(setAlertFlyoutType(CLIENT_ALERT_TYPES.DURATION_ANOMALY)); + dispatch(setAlertFlyoutVisible(true)); + setIsPopOverOpen(false); + }, + }, + ]), { name: labels.DISABLE_ANOMALY_DETECTION, 'data-test-subj': 'uptimeDeleteMLJobBtn', @@ -111,6 +125,27 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro }, ], }, + { + id: 1, + title: 'Anomaly alert', + items: [ + { + name: 'Edit', + 'data-test-subj': 'uptimeEditAnomalyAlertBtn', + onClick: () => { + setIsFlyoutOpen(true); + setIsPopOverOpen(false); + }, + }, + { + name: 'Disable', + 'data-test-subj': 'uptimeDisableAnomalyAlertBtn', + onClick: () => { + setIsConfirmAlertDeleteOpen(true); + }, + }, + ], + }, ]; return ( @@ -138,6 +173,14 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro }} /> )} + { + setIsFlyoutOpen(false); + dispatch(getAnomalyAlertAction.get({ monitorId })); + }} + /> ); }; diff --git a/x-pack/plugins/uptime/public/components/overview/alerts/anomaly_alert/anomaly_alert.tsx b/x-pack/plugins/uptime/public/components/overview/alerts/anomaly_alert/anomaly_alert.tsx index 1428a7f526fc2..dd732f0b7e24b 100644 --- a/x-pack/plugins/uptime/public/components/overview/alerts/anomaly_alert/anomaly_alert.tsx +++ b/x-pack/plugins/uptime/public/components/overview/alerts/anomaly_alert/anomaly_alert.tsx @@ -16,7 +16,7 @@ import { useSelector } from 'react-redux'; import React, { useEffect, useState } from 'react'; import { AnomalyTranslations } from './translations'; import { AlertExpressionPopover } from '../alert_expression_popover'; -import { DEFAULT_SEVERITY, SelectSeverity } from './select_severity'; +import { DEFAULT_SEVERITY, SelectSeverity, SEVERITY_OPTIONS } from './select_severity'; import { monitorIdSelector } from '../../../../state/selectors'; import { getSeverityColor, getSeverityType } from '../../../../../../ml/public'; @@ -40,6 +40,14 @@ export function AnomalyAlertComponent({ setAlertParams, alertParams }: Props) { setAlertParams('severity', severity.val); }, [severity, setAlertParams]); + useEffect(() => { + if (alertParams.severity !== undefined) { + setSeverity(SEVERITY_OPTIONS.find(({ val }) => val === alertParams.severity)!); + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + return ( <> diff --git a/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx b/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx index c1f802c2d0c91..c277e87c1ed74 100644 --- a/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx +++ b/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx @@ -25,5 +25,5 @@ export const initDurationAnomalyAlertType: AlertTypeInitializer = ({ name, validate: () => ({ errors: {} }), defaultActionMessage, - requiresAppContext: false, + requiresAppContext: true, }); diff --git a/x-pack/plugins/uptime/public/state/alerts/alerts.ts b/x-pack/plugins/uptime/public/state/alerts/alerts.ts index 5273a33102565..aeb81bb413aa7 100644 --- a/x-pack/plugins/uptime/public/state/alerts/alerts.ts +++ b/x-pack/plugins/uptime/public/state/alerts/alerts.ts @@ -163,3 +163,4 @@ export const alertsSelector = ({ alerts }: AppState) => alerts.alerts; export const isAlertDeletedSelector = ({ alerts }: AppState) => alerts.alertDeletion; export const anomalyAlertSelector = ({ alerts }: AppState) => alerts.anomalyAlert; +export const isAnomalyAlertDeleting = ({ alerts }: AppState) => alerts.anomalyAlertDeletion.loading; diff --git a/x-pack/test/functional/apps/uptime/ml_anomaly.ts b/x-pack/test/functional/apps/uptime/ml_anomaly.ts index 20491a063caf8..6930996921823 100644 --- a/x-pack/test/functional/apps/uptime/ml_anomaly.ts +++ b/x-pack/test/functional/apps/uptime/ml_anomaly.ts @@ -40,7 +40,6 @@ export default ({ getService }: FtrProviderContext) => { it('can create job successfully', async () => { await uptime.ml.createMLJob(); - // await uptime.navigation.refreshApp(); }); it('can open ML Manage Menu', async () => { diff --git a/x-pack/test/functional/services/uptime/ml_anomaly.ts b/x-pack/test/functional/services/uptime/ml_anomaly.ts index ac9f6ab2b3d14..cdeec2129e459 100644 --- a/x-pack/test/functional/services/uptime/ml_anomaly.ts +++ b/x-pack/test/functional/services/uptime/ml_anomaly.ts @@ -66,8 +66,8 @@ export function UptimeMLAnomalyProvider({ getService }: FtrProviderContext) { return await testSubjects.click('uptimeEnableAnomalyAlertBtn'); }, - async disableAnomalyAlertIsVisible() { - return await testSubjects.exists('uptimeDisableAnomalyAlertBtn'); + async manageAnomalyAlertIsVisible() { + return await testSubjects.exists('uptimeManageAnomalyAlertBtn'); }, async changeAlertThreshold(level: string) { diff --git a/x-pack/test/functional_with_es_ssl/apps/uptime/anomaly_alert.ts b/x-pack/test/functional_with_es_ssl/apps/uptime/anomaly_alert.ts index 03343bff642c3..55ef7e9784ff4 100644 --- a/x-pack/test/functional_with_es_ssl/apps/uptime/anomaly_alert.ts +++ b/x-pack/test/functional_with_es_ssl/apps/uptime/anomaly_alert.ts @@ -111,7 +111,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('change button to disable anomaly alert', async () => { await uptime.ml.openMLManageMenu(); - expect(uptime.ml.disableAnomalyAlertIsVisible()).to.eql(true); + expect(uptime.ml.manageAnomalyAlertIsVisible()).to.eql(true); }); it('can delete job successfully', async () => { From 87ad564b59cc0b115aa8b7d5d06c62a522d078fb Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Tue, 29 Sep 2020 13:00:32 +0200 Subject: [PATCH 042/119] [APM] Use transaction metrics for distribution charts (#78484) Co-authored-by: Elastic Machine --- .../__test__/distribution.test.ts | 7 +- .../TransactionDetails/Distribution/index.tsx | 7 +- .../WaterfallWithSummmary/index.tsx | 4 +- .../hooks/useTransactionDistribution.ts | 10 +- .../__snapshots__/queries.test.ts.snap | 2 +- .../distribution/get_buckets/fetcher.ts | 91 -------- .../distribution/get_buckets/index.ts | 219 ++++++++++++++++-- .../distribution/get_buckets/transform.ts | 42 ---- .../distribution/get_distribution_max.ts | 39 +++- .../lib/transactions/distribution/index.ts | 17 +- .../server/lib/transactions/queries.test.ts | 1 + .../apm/server/routes/transaction_groups.ts | 5 + .../apm_api_integration/basic/tests/index.ts | 1 + .../tests/transaction_groups/distribution.ts | 97 ++++++++ 14 files changed, 354 insertions(+), 188 deletions(-) delete mode 100644 x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/fetcher.ts delete mode 100644 x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts create mode 100644 x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/__test__/distribution.test.ts b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/__test__/distribution.test.ts index d944e3fa6db7c..1586e1f4903a2 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/__test__/distribution.test.ts +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/__test__/distribution.test.ts @@ -5,8 +5,6 @@ */ import { getFormattedBuckets } from '../index'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { IBucket } from '../../../../../../server/lib/transactions/distribution/get_buckets/transform'; describe('Distribution', () => { it('getFormattedBuckets', () => { @@ -20,6 +18,7 @@ describe('Distribution', () => { samples: [ { transactionId: 'someTransactionId', + traceId: 'someTraceId', }, ], }, @@ -29,10 +28,12 @@ describe('Distribution', () => { samples: [ { transactionId: 'anotherTransactionId', + traceId: 'anotherTraceId', }, ], }, - ] as IBucket[]; + ]; + expect(getFormattedBuckets(buckets, 20)).toEqual([ { x: 20, x0: 0, y: 0, style: { cursor: 'default' } }, { x: 40, x0: 20, y: 0, style: { cursor: 'default' } }, diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx index fa5a9956c8287..e18e6b1ed914e 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx @@ -13,7 +13,7 @@ import { ValuesType } from 'utility-types'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { TransactionDistributionAPIResponse } from '../../../../../server/lib/transactions/distribution'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { IBucket } from '../../../../../server/lib/transactions/distribution/get_buckets/transform'; +import { DistributionBucket } from '../../../../../server/lib/transactions/distribution/get_buckets'; import { IUrlParams } from '../../../../context/UrlParamsContext/types'; import { getDurationFormatter } from '../../../../utils/formatters'; // @ts-expect-error @@ -30,7 +30,10 @@ interface IChartPoint { }; } -export function getFormattedBuckets(buckets: IBucket[], bucketSize: number) { +export function getFormattedBuckets( + buckets: DistributionBucket[], + bucketSize: number +) { if (!buckets) { return []; } diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/WaterfallWithSummmary/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionDetails/WaterfallWithSummmary/index.tsx index 0845e2c9b1412..3bb23fd6396ca 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/WaterfallWithSummmary/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/WaterfallWithSummmary/index.tsx @@ -18,7 +18,7 @@ import { Location } from 'history'; import React, { useEffect, useState } from 'react'; import { useHistory } from 'react-router-dom'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { IBucket } from '../../../../../server/lib/transactions/distribution/get_buckets/transform'; +import { DistributionBucket } from '../../../../../server/lib/transactions/distribution/get_buckets'; import { IUrlParams } from '../../../../context/UrlParamsContext/types'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; import { LoadingStatePrompt } from '../../../shared/LoadingStatePrompt'; @@ -34,7 +34,7 @@ interface Props { waterfall: IWaterfall; exceedsMax: boolean; isLoading: boolean; - traceSamples: IBucket['samples']; + traceSamples: DistributionBucket['samples']; } export function WaterfallWithSummmary({ diff --git a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts b/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts index 65482c9d21c16..1143639f10f47 100644 --- a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts +++ b/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { flatten, omit } from 'lodash'; +import { flatten, omit, isEmpty } from 'lodash'; import { useHistory, useParams } from 'react-router-dom'; import { IUrlParams } from '../context/UrlParamsContext/types'; import { useFetcher } from './useFetcher'; @@ -69,10 +69,12 @@ export function useTransactionDistribution(urlParams: IUrlParams) { // selected sample was not found. select a new one: // sorted by total number of requests, but only pick // from buckets that have samples + const bucketsSortedByPreference = response.buckets + .filter((bucket) => !isEmpty(bucket.samples)) + .sort((bucket) => bucket.count); + const preferredSample = maybe( - response.buckets - .filter((bucket) => bucket.samples.length > 0) - .sort((bucket) => bucket.count)[0]?.samples[0] + bucketsSortedByPreference[0]?.samples[0] ); history.push({ diff --git a/x-pack/plugins/apm/server/lib/transactions/__snapshots__/queries.test.ts.snap b/x-pack/plugins/apm/server/lib/transactions/__snapshots__/queries.test.ts.snap index e532265de24ec..c63dfcc0c0ec7 100644 --- a/x-pack/plugins/apm/server/lib/transactions/__snapshots__/queries.test.ts.snap +++ b/x-pack/plugins/apm/server/lib/transactions/__snapshots__/queries.test.ts.snap @@ -639,7 +639,7 @@ Object { "body": Object { "aggs": Object { "stats": Object { - "extended_stats": Object { + "max": Object { "field": "transaction.duration.us", }, }, diff --git a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/fetcher.ts b/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/fetcher.ts deleted file mode 100644 index bfe72bf7c00f9..0000000000000 --- a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/fetcher.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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { ProcessorEvent } from '../../../../../common/processor_event'; -import { - SERVICE_NAME, - TRACE_ID, - TRANSACTION_DURATION, - TRANSACTION_ID, - TRANSACTION_NAME, - TRANSACTION_SAMPLED, - TRANSACTION_TYPE, -} from '../../../../../common/elasticsearch_fieldnames'; -import { rangeFilter } from '../../../../../common/utils/range_filter'; -import { - Setup, - SetupTimeRange, - SetupUIFilters, -} from '../../../helpers/setup_request'; - -export async function bucketFetcher( - serviceName: string, - transactionName: string, - transactionType: string, - transactionId: string, - traceId: string, - distributionMax: number, - bucketSize: number, - setup: Setup & SetupTimeRange & SetupUIFilters -) { - const { start, end, uiFiltersES, apmEventClient } = setup; - - const params = { - apm: { - events: [ProcessorEvent.transaction as const], - }, - body: { - size: 0, - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - { term: { [TRANSACTION_TYPE]: transactionType } }, - { term: { [TRANSACTION_NAME]: transactionName } }, - { range: rangeFilter(start, end) }, - ...uiFiltersES, - ], - should: [ - { term: { [TRACE_ID]: traceId } }, - { term: { [TRANSACTION_ID]: transactionId } }, - ], - }, - }, - aggs: { - distribution: { - histogram: { - field: TRANSACTION_DURATION, - interval: bucketSize, - min_doc_count: 0, - extended_bounds: { - min: 0, - max: distributionMax, - }, - }, - aggs: { - samples: { - filter: { - term: { [TRANSACTION_SAMPLED]: true }, - }, - aggs: { - items: { - top_hits: { - _source: [TRANSACTION_ID, TRACE_ID], - size: 10, - }, - }, - }, - }, - }, - }, - }, - }, - }; - - const response = await apmEventClient.search(params); - - return response; -} diff --git a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/index.ts b/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/index.ts index f3788b5d812a8..6e2fe34a5f5ef 100644 --- a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/index.ts +++ b/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/index.ts @@ -3,35 +3,204 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - +import { ValuesType } from 'utility-types'; +import { PromiseReturnType } from '../../../../../typings/common'; +import { joinByKey } from '../../../../../common/utils/join_by_key'; +import { ProcessorEvent } from '../../../../../common/processor_event'; +import { + SERVICE_NAME, + TRACE_ID, + TRANSACTION_DURATION, + TRANSACTION_ID, + TRANSACTION_NAME, + TRANSACTION_SAMPLED, + TRANSACTION_TYPE, +} from '../../../../../common/elasticsearch_fieldnames'; +import { rangeFilter } from '../../../../../common/utils/range_filter'; import { Setup, SetupTimeRange, SetupUIFilters, } from '../../../helpers/setup_request'; -import { bucketFetcher } from './fetcher'; -import { bucketTransformer } from './transform'; - -export async function getBuckets( - serviceName: string, - transactionName: string, - transactionType: string, - transactionId: string, - traceId: string, - distributionMax: number, - bucketSize: number, - setup: Setup & SetupTimeRange & SetupUIFilters -) { - const response = await bucketFetcher( - serviceName, - transactionName, - transactionType, - transactionId, - traceId, - distributionMax, - bucketSize, - setup - ); +import { + getDocumentTypeFilterForAggregatedTransactions, + getProcessorEventForAggregatedTransactions, + getTransactionDurationFieldForAggregatedTransactions, +} from '../../../helpers/aggregated_transactions'; + +function getHistogramAggOptions({ + bucketSize, + field, + distributionMax, +}: { + bucketSize: number; + field: string; + distributionMax: number; +}) { + return { + field, + interval: bucketSize, + min_doc_count: 0, + extended_bounds: { + min: 0, + max: distributionMax, + }, + }; +} + +export async function getBuckets({ + serviceName, + transactionName, + transactionType, + transactionId, + traceId, + distributionMax, + bucketSize, + setup, + searchAggregatedTransactions, +}: { + serviceName: string; + transactionName: string; + transactionType: string; + transactionId: string; + traceId: string; + distributionMax: number; + bucketSize: number; + setup: Setup & SetupTimeRange & SetupUIFilters; + searchAggregatedTransactions: boolean; +}) { + const { start, end, uiFiltersES, apmEventClient } = setup; + + const commonFilters = [ + { term: { [SERVICE_NAME]: serviceName } }, + { term: { [TRANSACTION_TYPE]: transactionType } }, + { term: { [TRANSACTION_NAME]: transactionName } }, + { range: rangeFilter(start, end) }, + ...uiFiltersES, + ]; - return bucketTransformer(response); + async function getSamplesForDistributionBuckets() { + const response = await apmEventClient.search({ + apm: { + events: [ProcessorEvent.transaction], + }, + body: { + query: { + bool: { + filter: [ + ...commonFilters, + { term: { [TRANSACTION_SAMPLED]: true } }, + ], + should: [ + { term: { [TRACE_ID]: traceId } }, + { term: { [TRANSACTION_ID]: transactionId } }, + ], + }, + }, + aggs: { + distribution: { + histogram: getHistogramAggOptions({ + bucketSize, + field: TRANSACTION_DURATION, + distributionMax, + }), + aggs: { + samples: { + top_hits: { + _source: [TRANSACTION_ID, TRACE_ID], + size: 10, + sort: { + _score: 'desc', + }, + }, + }, + }, + }, + }, + }, + }); + + return ( + response.aggregations?.distribution.buckets.map((bucket) => { + return { + key: bucket.key, + samples: bucket.samples.hits.hits.map((hit) => ({ + traceId: hit._source.trace.id, + transactionId: hit._source.transaction.id, + })), + }; + }) ?? [] + ); + } + + async function getDistributionBuckets() { + const response = await apmEventClient.search({ + apm: { + events: [ + getProcessorEventForAggregatedTransactions( + searchAggregatedTransactions + ), + ], + }, + body: { + query: { + bool: { + filter: [ + ...commonFilters, + ...getDocumentTypeFilterForAggregatedTransactions( + searchAggregatedTransactions + ), + ], + }, + }, + aggs: { + distribution: { + histogram: getHistogramAggOptions({ + field: getTransactionDurationFieldForAggregatedTransactions( + searchAggregatedTransactions + ), + bucketSize, + distributionMax, + }), + }, + }, + }, + }); + + return ( + response.aggregations?.distribution.buckets.map((bucket) => { + return { + key: bucket.key, + count: bucket.doc_count, + }; + }) ?? [] + ); + } + + const [ + samplesForDistributionBuckets, + distributionBuckets, + ] = await Promise.all([ + getSamplesForDistributionBuckets(), + getDistributionBuckets(), + ]); + + const buckets = joinByKey( + [...samplesForDistributionBuckets, ...distributionBuckets], + 'key' + ).map((bucket) => ({ + ...bucket, + samples: bucket.samples ?? [], + count: bucket.count ?? 0, + })); + + return { + noHits: buckets.length === 0, + bucketSize, + buckets, + }; } + +export type DistributionBucket = ValuesType< + PromiseReturnType['buckets'] +>; diff --git a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts b/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts deleted file mode 100644 index aee93e34f93a3..0000000000000 --- a/x-pack/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { PromiseReturnType } from '../../../../../../observability/typings/common'; -import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; -import { bucketFetcher } from './fetcher'; - -type DistributionBucketResponse = PromiseReturnType; - -export type IBucket = ReturnType; - -function getBucket( - bucket: Required< - DistributionBucketResponse - >['aggregations']['distribution']['buckets'][0] -) { - const samples = bucket.samples.items.hits.hits.map( - ({ _source }: { _source: Transaction }) => ({ - traceId: _source.trace.id, - transactionId: _source.transaction.id, - }) - ); - - return { - key: bucket.key, - count: bucket.doc_count, - samples, - }; -} - -export function bucketTransformer(response: DistributionBucketResponse) { - const buckets = - response.aggregations?.distribution.buckets.map(getBucket) || []; - - return { - noHits: response.hits.total.value === 0, - buckets, - }; -} diff --git a/x-pack/plugins/apm/server/lib/transactions/distribution/get_distribution_max.ts b/x-pack/plugins/apm/server/lib/transactions/distribution/get_distribution_max.ts index 139dac3df1171..24ca2a4a07b68 100644 --- a/x-pack/plugins/apm/server/lib/transactions/distribution/get_distribution_max.ts +++ b/x-pack/plugins/apm/server/lib/transactions/distribution/get_distribution_max.ts @@ -4,10 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ProcessorEvent } from '../../../../common/processor_event'; import { SERVICE_NAME, - TRANSACTION_DURATION, TRANSACTION_NAME, TRANSACTION_TYPE, } from '../../../../common/elasticsearch_fieldnames'; @@ -16,18 +14,33 @@ import { SetupTimeRange, SetupUIFilters, } from '../../helpers/setup_request'; +import { + getProcessorEventForAggregatedTransactions, + getTransactionDurationFieldForAggregatedTransactions, +} from '../../helpers/aggregated_transactions'; -export async function getDistributionMax( - serviceName: string, - transactionName: string, - transactionType: string, - setup: Setup & SetupTimeRange & SetupUIFilters -) { +export async function getDistributionMax({ + serviceName, + transactionName, + transactionType, + setup, + searchAggregatedTransactions, +}: { + serviceName: string; + transactionName: string; + transactionType: string; + setup: Setup & SetupTimeRange & SetupUIFilters; + searchAggregatedTransactions: boolean; +}) { const { start, end, uiFiltersES, apmEventClient } = setup; const params = { apm: { - events: [ProcessorEvent.transaction], + events: [ + getProcessorEventForAggregatedTransactions( + searchAggregatedTransactions + ), + ], }, body: { size: 0, @@ -52,8 +65,10 @@ export async function getDistributionMax( }, aggs: { stats: { - extended_stats: { - field: TRANSACTION_DURATION, + max: { + field: getTransactionDurationFieldForAggregatedTransactions( + searchAggregatedTransactions + ), }, }, }, @@ -61,5 +76,5 @@ export async function getDistributionMax( }; const resp = await apmEventClient.search(params); - return resp.aggregations ? resp.aggregations.stats.max : null; + return resp.aggregations?.stats.value ?? null; } diff --git a/x-pack/plugins/apm/server/lib/transactions/distribution/index.ts b/x-pack/plugins/apm/server/lib/transactions/distribution/index.ts index 7c02852f83768..b9ab36fb08d42 100644 --- a/x-pack/plugins/apm/server/lib/transactions/distribution/index.ts +++ b/x-pack/plugins/apm/server/lib/transactions/distribution/index.ts @@ -32,6 +32,7 @@ export async function getTransactionDistribution({ transactionId, traceId, setup, + searchAggregatedTransactions, }: { serviceName: string; transactionName: string; @@ -39,20 +40,23 @@ export async function getTransactionDistribution({ transactionId: string; traceId: string; setup: Setup & SetupTimeRange & SetupUIFilters; + searchAggregatedTransactions: boolean; }) { - const distributionMax = await getDistributionMax( + const distributionMax = await getDistributionMax({ serviceName, transactionName, transactionType, - setup - ); + setup, + searchAggregatedTransactions, + }); if (distributionMax == null) { return { noHits: true, buckets: [], bucketSize: 0 }; } const bucketSize = getBucketSize(distributionMax); - const { buckets, noHits } = await getBuckets( + + const { buckets, noHits } = await getBuckets({ serviceName, transactionName, transactionType, @@ -60,8 +64,9 @@ export async function getTransactionDistribution({ traceId, distributionMax, bucketSize, - setup - ); + setup, + searchAggregatedTransactions, + }); return { noHits, diff --git a/x-pack/plugins/apm/server/lib/transactions/queries.test.ts b/x-pack/plugins/apm/server/lib/transactions/queries.test.ts index 1c1d30c2d4d6d..87b8bc7c4ae90 100644 --- a/x-pack/plugins/apm/server/lib/transactions/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/transactions/queries.test.ts @@ -102,6 +102,7 @@ describe('transaction queries', () => { traceId: 'qux', transactionId: 'quz', setup, + searchAggregatedTransactions: false, }) ); diff --git a/x-pack/plugins/apm/server/routes/transaction_groups.ts b/x-pack/plugins/apm/server/routes/transaction_groups.ts index 10e917f385e71..dd1335fb2c2a1 100644 --- a/x-pack/plugins/apm/server/routes/transaction_groups.ts +++ b/x-pack/plugins/apm/server/routes/transaction_groups.ts @@ -124,6 +124,10 @@ export const transactionGroupsDistributionRoute = createRoute(() => ({ traceId = '', } = context.params.query; + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + return getTransactionDistribution({ serviceName, transactionType, @@ -131,6 +135,7 @@ export const transactionGroupsDistributionRoute = createRoute(() => ({ transactionId, traceId, setup, + searchAggregatedTransactions, }); }, })); diff --git a/x-pack/test/apm_api_integration/basic/tests/index.ts b/x-pack/test/apm_api_integration/basic/tests/index.ts index 9e1cb1f5872f1..19dd82d617bd9 100644 --- a/x-pack/test/apm_api_integration/basic/tests/index.ts +++ b/x-pack/test/apm_api_integration/basic/tests/index.ts @@ -45,6 +45,7 @@ export default function apmApiIntegrationTests({ loadTestFile }: FtrProviderCont loadTestFile(require.resolve('./transaction_groups/transaction_charts')); loadTestFile(require.resolve('./transaction_groups/error_rate')); loadTestFile(require.resolve('./transaction_groups/breakdown')); + loadTestFile(require.resolve('./transaction_groups/distribution')); }); describe('Observability overview', function () { diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts new file mode 100644 index 0000000000000..61dc6ea63c252 --- /dev/null +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import expect from '@kbn/expect'; +import qs from 'querystring'; +import { isEmpty } from 'lodash'; +import archives_metadata from '../../../common/archives_metadata'; +import { expectSnapshot } from '../../../common/match_snapshot'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + + const archiveName = 'apm_8.0.0'; + const metadata = archives_metadata[archiveName]; + + // url parameters + const { start, end } = metadata; + const uiFilters = {}; + + const url = `/api/apm/services/opbeans-java/transaction_groups/distribution?${qs.stringify({ + start, + end, + uiFilters, + transactionName: 'APIRestController#stats', + transactionType: 'request', + })}`; + + describe('Transaction groups distribution', () => { + describe('when data is not loaded ', () => { + it('handles empty state', async () => { + const response = await supertest.get(url); + + expect(response.status).to.be(200); + + expect(response.body.noHits).to.be(true); + expect(response.body.buckets.length).to.be(0); + }); + }); + + describe('when data is loaded', () => { + let response: any; + before(async () => { + await esArchiver.load(archiveName); + response = await supertest.get(url); + }); + after(() => esArchiver.unload(archiveName)); + + it('returns the correct metadata', () => { + expect(response.status).to.be(200); + expect(response.body.noHits).to.be(false); + expect(response.body.buckets.length).to.be.greaterThan(0); + }); + + it('returns groups with some hits', () => { + expect(response.body.buckets.some((bucket: any) => bucket.count > 0)).to.be(true); + }); + + it('returns groups with some samples', () => { + expect(response.body.buckets.some((bucket: any) => !isEmpty(bucket.samples))).to.be(true); + }); + + it('returns the correct number of buckets', () => { + expectSnapshot(response.body.buckets.length).toMatchInline(`19`); + }); + + it('returns the correct bucket size', () => { + expectSnapshot(response.body.bucketSize).toMatchInline(`1000`); + }); + + it('returns the correct buckets', () => { + const bucketWithSamples = response.body.buckets.find( + (bucket: any) => !isEmpty(bucket.samples) + ); + + expectSnapshot(bucketWithSamples.count).toMatchInline(`2`); + + expectSnapshot(bucketWithSamples.samples.sort((sample: any) => sample.traceId)) + .toMatchInline(` + Array [ + Object { + "traceId": "a1333547d1257c636154290cddd38c3a", + "transactionId": "3e656b390989133d", + }, + Object { + "traceId": "c799c34f4ee2b0f9998745ea7354d599", + "transactionId": "69b6251b239abb46", + }, + ] + `); + }); + }); + }); +} From 895eb09c92f4bf7aa10b9d99c275cd7d643b1278 Mon Sep 17 00:00:00 2001 From: Elizabet Oliveira Date: Tue, 29 Sep 2020 12:05:24 +0100 Subject: [PATCH 043/119] [Maps] Add layer type preview icons (#78650) * Added layer type preview icons * Added margin tops --- .../plugins/maps/public/classes/_index.scss | 1 + .../maps/public/classes/layers/_index.scss | 1 + .../maps/public/classes/layers/_layers.scss | 11 ++ .../choropleth_layer_wizard.tsx | 3 +- .../cloropleth_layer_icon.tsx | 35 +++++ .../classes/layers/layer_wizard_registry.ts | 4 +- .../clusters_layer_icon.tsx | 37 +++++ .../clusters_layer_wizard.tsx | 3 +- .../es_geo_grid_source/heatmap_layer_icon.tsx | 33 +++++ .../heatmap_layer_wizard.tsx | 3 +- .../point_2_point_layer_icon.tsx | 129 ++++++++++++++++++ .../point_2_point_layer_wizard.tsx | 3 +- .../es_documents_layer_icon.tsx | 40 ++++++ .../es_documents_layer_wizard.tsx | 3 +- 14 files changed, 299 insertions(+), 7 deletions(-) create mode 100644 x-pack/plugins/maps/public/classes/layers/_index.scss create mode 100644 x-pack/plugins/maps/public/classes/layers/_layers.scss create mode 100644 x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/cloropleth_layer_icon.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_icon.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_icon.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_icon.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_icon.tsx diff --git a/x-pack/plugins/maps/public/classes/_index.scss b/x-pack/plugins/maps/public/classes/_index.scss index 29a5761255278..3fc31b4b2f66a 100644 --- a/x-pack/plugins/maps/public/classes/_index.scss +++ b/x-pack/plugins/maps/public/classes/_index.scss @@ -1 +1,2 @@ @import 'styles/index'; +@import 'layers/index'; diff --git a/x-pack/plugins/maps/public/classes/layers/_index.scss b/x-pack/plugins/maps/public/classes/layers/_index.scss new file mode 100644 index 0000000000000..530ac2734855d --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/_index.scss @@ -0,0 +1 @@ +@import 'layers'; diff --git a/x-pack/plugins/maps/public/classes/layers/_layers.scss b/x-pack/plugins/maps/public/classes/layers/_layers.scss new file mode 100644 index 0000000000000..54ab7d85ef170 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/_layers.scss @@ -0,0 +1,11 @@ +.mapLayersWizardIcon { + margin-top: $euiSizeS; + + &__highlight { + fill: $euiColorFullShade; + } + + &__background { + fill: $euiColorLightShade; + } +} diff --git a/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/choropleth_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/choropleth_layer_wizard.tsx index 6e806f4530df2..d87302a6a9f2e 100644 --- a/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/choropleth_layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/choropleth_layer_wizard.tsx @@ -9,13 +9,14 @@ import { i18n } from '@kbn/i18n'; import { LAYER_WIZARD_CATEGORY } from '../../../../common/constants'; import { LayerWizard, RenderWizardArguments } from '../layer_wizard_registry'; import { LayerTemplate } from './layer_template'; +import { ChoroplethLayerIcon } from './cloropleth_layer_icon'; export const choroplethLayerWizardConfig: LayerWizard = { categories: [LAYER_WIZARD_CATEGORY.ELASTICSEARCH], description: i18n.translate('xpack.maps.choropleth.desc', { defaultMessage: 'Shaded areas to compare statistics across boundaries', }), - icon: 'logoElasticsearch', + icon: ChoroplethLayerIcon, renderWizard: (renderWizardArguments: RenderWizardArguments) => { return ; }, diff --git a/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/cloropleth_layer_icon.tsx b/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/cloropleth_layer_icon.tsx new file mode 100644 index 0000000000000..e0a0d450dfbff --- /dev/null +++ b/x-pack/plugins/maps/public/classes/layers/choropleth_layer_wizard/cloropleth_layer_icon.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +export const ChoroplethLayerIcon: FunctionComponent = () => ( + + + + + + +); diff --git a/x-pack/plugins/maps/public/classes/layers/layer_wizard_registry.ts b/x-pack/plugins/maps/public/classes/layers/layer_wizard_registry.ts index 0eb1d2c3b222c..278a3c0388b01 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer_wizard_registry.ts +++ b/x-pack/plugins/maps/public/classes/layers/layer_wizard_registry.ts @@ -5,7 +5,7 @@ */ /* eslint-disable @typescript-eslint/consistent-type-definitions */ -import { ReactElement } from 'react'; +import { ReactElement, FunctionComponent } from 'react'; import { LayerDescriptor } from '../../../common/descriptor_types'; import { LAYER_WIZARD_CATEGORY } from '../../../common/constants'; @@ -28,7 +28,7 @@ export type LayerWizard = { categories: LAYER_WIZARD_CATEGORY[]; checkVisibility?: () => Promise; description: string; - icon: string; + icon: string | FunctionComponent; prerequisiteSteps?: Array<{ id: string; label: string }>; renderWizard(renderWizardArguments: RenderWizardArguments): ReactElement; title: string; diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_icon.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_icon.tsx new file mode 100644 index 0000000000000..818ff789da19b --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_icon.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +export const ClustersLayerIcon: FunctionComponent = () => ( + + + + + + + + + + + + + + + + + + + + +); diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_wizard.tsx index ee97fdd0a2bf6..5d0a414cd0d18 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/clusters_layer_wizard.tsx @@ -29,13 +29,14 @@ import { STYLE_TYPE, } from '../../../../common/constants'; import { NUMERICAL_COLOR_PALETTES } from '../../styles/color_palettes'; +import { ClustersLayerIcon } from './clusters_layer_icon'; export const clustersLayerWizardConfig: LayerWizard = { categories: [LAYER_WIZARD_CATEGORY.ELASTICSEARCH], description: i18n.translate('xpack.maps.source.esGridClustersDescription', { defaultMessage: 'Geospatial data grouped in grids with metrics for each gridded cell', }), - icon: 'logoElasticsearch', + icon: ClustersLayerIcon, renderWizard: ({ previewLayers }: RenderWizardArguments) => { const onSourceConfigChange = (sourceConfig: Partial) => { if (!sourceConfig) { diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_icon.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_icon.tsx new file mode 100644 index 0000000000000..5f4835e386911 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_icon.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +export const HeatmapLayerIcon: FunctionComponent = () => ( + + + + + +); diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_wizard.tsx index 92a0f1006ea43..652514a3b9d34 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/heatmap_layer_wizard.tsx @@ -15,13 +15,14 @@ import { LayerWizard, RenderWizardArguments } from '../../layers/layer_wizard_re import { HeatmapLayer } from '../../layers/heatmap_layer/heatmap_layer'; import { ESGeoGridSourceDescriptor } from '../../../../common/descriptor_types'; import { LAYER_WIZARD_CATEGORY, RENDER_AS } from '../../../../common/constants'; +import { HeatmapLayerIcon } from './heatmap_layer_icon'; export const heatmapLayerWizardConfig: LayerWizard = { categories: [LAYER_WIZARD_CATEGORY.ELASTICSEARCH], description: i18n.translate('xpack.maps.source.esGridHeatmapDescription', { defaultMessage: 'Geospatial data grouped in grids to show density', }), - icon: 'logoElasticsearch', + icon: HeatmapLayerIcon, renderWizard: ({ previewLayers }: RenderWizardArguments) => { const onSourceConfigChange = (sourceConfig: Partial) => { if (!sourceConfig) { diff --git a/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_icon.tsx b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_icon.tsx new file mode 100644 index 0000000000000..ed5d38bba0fba --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_icon.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +export const Point2PointLayerIcon: FunctionComponent = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_wizard.tsx index fee84d0208978..74e690d4d3204 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/point_2_point_layer_wizard.tsx @@ -23,13 +23,14 @@ import { NUMERICAL_COLOR_PALETTES } from '../../styles/color_palettes'; import { CreateSourceEditor } from './create_source_editor'; import { LayerWizard, RenderWizardArguments } from '../../layers/layer_wizard_registry'; import { ColorDynamicOptions, SizeDynamicOptions } from '../../../../common/descriptor_types'; +import { Point2PointLayerIcon } from './point_2_point_layer_icon'; export const point2PointLayerWizardConfig: LayerWizard = { categories: [LAYER_WIZARD_CATEGORY.ELASTICSEARCH], description: i18n.translate('xpack.maps.source.pewPewDescription', { defaultMessage: 'Aggregated data paths between the source and destination', }), - icon: 'logoElasticsearch', + icon: Point2PointLayerIcon, renderWizard: ({ previewLayers }: RenderWizardArguments) => { const onSourceConfigChange = (sourceConfig: unknown) => { if (!sourceConfig) { diff --git a/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_icon.tsx b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_icon.tsx new file mode 100644 index 0000000000000..dcd4985f44280 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_icon.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +export const EsDocumentsLayerIcon: FunctionComponent = () => ( + + + + + + + + + + + + + + + + + +); diff --git a/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_wizard.tsx index 249b9a2454d7d..af2061d6c541f 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_documents_layer_wizard.tsx @@ -15,6 +15,7 @@ import { BlendedVectorLayer } from '../../layers/blended_vector_layer/blended_ve import { VectorLayer } from '../../layers/vector_layer/vector_layer'; import { LAYER_WIZARD_CATEGORY, SCALING_TYPES } from '../../../../common/constants'; import { TiledVectorLayer } from '../../layers/tiled_vector_layer/tiled_vector_layer'; +import { EsDocumentsLayerIcon } from './es_documents_layer_icon'; export function createDefaultLayerDescriptor(sourceConfig: unknown, mapColors: string[]) { const sourceDescriptor = ESSearchSource.createDescriptor(sourceConfig); @@ -33,7 +34,7 @@ export const esDocumentsLayerWizardConfig: LayerWizard = { description: i18n.translate('xpack.maps.source.esSearchDescription', { defaultMessage: 'Points, lines, and polygons from Elasticsearch', }), - icon: 'logoElasticsearch', + icon: EsDocumentsLayerIcon, renderWizard: ({ previewLayers, mapColors }: RenderWizardArguments) => { const onSourceConfigChange = (sourceConfig: unknown) => { if (!sourceConfig) { From a3b3a4d2f3035d7d2a925994cf69b03608260afa Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Tue, 29 Sep 2020 14:22:55 +0300 Subject: [PATCH 044/119] fix lodash imports (#78456) --- packages/kbn-std/src/merge.ts | 4 +--- .../licensing/public/services/feature_usage_service.ts | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/kbn-std/src/merge.ts b/packages/kbn-std/src/merge.ts index dca8077435657..43878c27b1e19 100644 --- a/packages/kbn-std/src/merge.ts +++ b/packages/kbn-std/src/merge.ts @@ -16,9 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isPlainObject from 'lodash/isPlainObject'; +import { isPlainObject } from 'lodash'; /** * Deeply merges two objects, omitting undefined values, and not deeply merging Arrays. * diff --git a/x-pack/plugins/licensing/public/services/feature_usage_service.ts b/x-pack/plugins/licensing/public/services/feature_usage_service.ts index d8fe892a2f684..461246844a33b 100644 --- a/x-pack/plugins/licensing/public/services/feature_usage_service.ts +++ b/x-pack/plugins/licensing/public/services/feature_usage_service.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// Prefer importing entire lodash library, e.g. import { get } from "lodash" -// eslint-disable-next-line no-restricted-imports -import isDate from 'lodash/isDate'; +import { isDate } from 'lodash'; import type { HttpSetup, HttpStart } from 'src/core/public'; import { LicenseType } from '../../common/types'; From 406c47af46d22afd90a621b4a4c7613c5de5bc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Tue, 29 Sep 2020 12:42:13 +0100 Subject: [PATCH 045/119] [Usage Collection] [schema] Support spreads + `canvas` definition (#78481) --- ...d_schema_defined_with_spreads_collector.ts | 69 ++++++++++ .../extract_collectors.test.ts.snap | 47 +++++++ .../src/tools/extract_collectors.test.ts | 2 +- .../src/tools/ts_parser.test.ts | 7 + .../kbn-telemetry-tools/src/tools/utils.ts | 101 ++++++++------ ...exed_interface_with_not_matching_schema.ts | 3 +- .../schema_defined_with_spreads_collector.ts | 77 +++++++++++ .../server/collectors/usage/schema.ts | 2 +- .../server/collector/collector.ts | 7 +- x-pack/.telemetryrc.json | 1 - .../canvas/server/collectors/collector.ts | 18 ++- .../collectors/custom_element_collector.ts | 15 ++- .../server/collectors/workpad_collector.ts | 40 +++++- .../schema/xpack_plugins.json | 123 ++++++++++++++++++ 14 files changed, 457 insertions(+), 55 deletions(-) create mode 100644 packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_schema_defined_with_spreads_collector.ts create mode 100644 src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_schema_defined_with_spreads_collector.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_schema_defined_with_spreads_collector.ts new file mode 100644 index 0000000000000..833344fa368b0 --- /dev/null +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_schema_defined_with_spreads_collector.ts @@ -0,0 +1,69 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SyntaxKind } from 'typescript'; +import { ParsedUsageCollection } from '../ts_parser'; + +export const parsedSchemaDefinedWithSpreadsCollector: ParsedUsageCollection = [ + 'src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts', + { + collectorName: 'schema_defined_with_spreads', + schema: { + value: { + flat: { + type: 'keyword', + }, + my_str: { + type: 'text', + }, + my_objects: { + total: { + type: 'number', + }, + type: { + type: 'boolean', + }, + }, + }, + }, + fetch: { + typeName: 'Usage', + typeDescriptor: { + flat: { + kind: SyntaxKind.StringKeyword, + type: 'StringKeyword', + }, + my_str: { + kind: SyntaxKind.StringKeyword, + type: 'StringKeyword', + }, + my_objects: { + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + type: { + kind: SyntaxKind.BooleanKeyword, + type: 'BooleanKeyword', + }, + }, + }, + }, + }, +]; diff --git a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap index 206f573b0af78..4725be77533af 100644 --- a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap +++ b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap @@ -142,6 +142,53 @@ Array [ }, }, ], + Array [ + "src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts", + Object { + "collectorName": "schema_defined_with_spreads", + "fetch": Object { + "typeDescriptor": Object { + "flat": Object { + "kind": 146, + "type": "StringKeyword", + }, + "my_objects": Object { + "total": Object { + "kind": 143, + "type": "NumberKeyword", + }, + "type": Object { + "kind": 131, + "type": "BooleanKeyword", + }, + }, + "my_str": Object { + "kind": 146, + "type": "StringKeyword", + }, + }, + "typeName": "Usage", + }, + "schema": Object { + "value": Object { + "flat": Object { + "type": "keyword", + }, + "my_objects": Object { + "total": Object { + "type": "number", + }, + "type": Object { + "type": "boolean", + }, + }, + "my_str": Object { + "type": "text", + }, + }, + }, + }, + ], Array [ "src/fixtures/telemetry_collectors/working_collector.ts", Object { diff --git a/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts b/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts index 0517cb9034d0a..b03db75b219f6 100644 --- a/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts +++ b/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts @@ -34,7 +34,7 @@ describe('extractCollectors', () => { const programPaths = await getProgramPaths(configs[0]); const results = [...extractCollectors(programPaths, tsConfig)]; - expect(results).toHaveLength(7); + expect(results).toHaveLength(8); expect(results).toMatchSnapshot(); }); }); diff --git a/packages/kbn-telemetry-tools/src/tools/ts_parser.test.ts b/packages/kbn-telemetry-tools/src/tools/ts_parser.test.ts index b7ca33a7bcd74..d036b93a7bbf9 100644 --- a/packages/kbn-telemetry-tools/src/tools/ts_parser.test.ts +++ b/packages/kbn-telemetry-tools/src/tools/ts_parser.test.ts @@ -25,6 +25,7 @@ import { parsedNestedCollector } from './__fixture__/parsed_nested_collector'; import { parsedExternallyDefinedCollector } from './__fixture__/parsed_externally_defined_collector'; import { parsedImportedUsageInterface } from './__fixture__/parsed_imported_usage_interface'; import { parsedImportedSchemaCollector } from './__fixture__/parsed_imported_schema'; +import { parsedSchemaDefinedWithSpreadsCollector } from './__fixture__/parsed_schema_defined_with_spreads_collector'; export function loadFixtureProgram(fixtureName: string) { const fixturePath = path.resolve( @@ -62,6 +63,12 @@ describe('parseUsageCollection', () => { expect(result).toEqual([parsedWorkingCollector]); }); + it('parses collector with schema defined as union of spreads', () => { + const { program, sourceFile } = loadFixtureProgram('schema_defined_with_spreads_collector'); + const result = [...parseUsageCollection(sourceFile, program)]; + expect(result).toEqual([parsedSchemaDefinedWithSpreadsCollector]); + }); + it('parses nested collectors', () => { const { program, sourceFile } = loadFixtureProgram('nested_collector'); const result = [...parseUsageCollection(sourceFile, program)]; diff --git a/packages/kbn-telemetry-tools/src/tools/utils.ts b/packages/kbn-telemetry-tools/src/tools/utils.ts index e8e1b3fed1aef..ac6edcb363fb6 100644 --- a/packages/kbn-telemetry-tools/src/tools/utils.ts +++ b/packages/kbn-telemetry-tools/src/tools/utils.ts @@ -100,42 +100,55 @@ export function getIdentifierDeclaration(node: ts.Node) { return getIdentifierDeclarationFromSource(node, source); } -export function getVariableValue(node: ts.Node): string | Record { +export function getVariableValue(node: ts.Node, program: ts.Program): string | Record { if (ts.isStringLiteral(node) || ts.isNumericLiteral(node)) { return node.text; } if (ts.isObjectLiteralExpression(node)) { - return serializeObject(node); + return serializeObject(node, program); } if (ts.isIdentifier(node)) { const declaration = getIdentifierDeclaration(node); if (ts.isVariableDeclaration(declaration) && declaration.initializer) { - return getVariableValue(declaration.initializer); + return getVariableValue(declaration.initializer, program); + } else { + // Go fetch it in another file + return getIdentifierValue(node, node, program, { chaseImport: true }); } - // TODO: If this is another imported value from another file, we'll need to go fetch it like in getPropertyValue } - throw Error(`Unsuppored Node: cannot get value of node (${node.getText()}) of kind ${node.kind}`); + if (ts.isSpreadAssignment(node)) { + return getVariableValue(node.expression, program); + } + + throw Error( + `Unsupported Node: cannot get value of node (${node.getText()}) of kind ${node.kind}` + ); } -export function serializeObject(node: ts.Node) { +export function serializeObject(node: ts.Node, program: ts.Program) { if (!ts.isObjectLiteralExpression(node)) { throw new Error(`Expecting Object literal Expression got ${node.getText()}`); } - const value: Record = {}; + let value: Record = {}; for (const property of node.properties) { const propertyName = property.name?.getText(); + const val = ts.isPropertyAssignment(property) + ? getVariableValue(property.initializer, program) + : getVariableValue(property, program); + if (typeof propertyName === 'undefined') { - throw new Error(`Unable to get property name ${property.getText()}`); - } - const cleanPropertyName = propertyName.replace(/["']/g, ''); - if (ts.isPropertyAssignment(property)) { - value[cleanPropertyName] = getVariableValue(property.initializer); + if (typeof val === 'object') { + value = { ...value, ...val }; + } else { + throw new Error(`Unable to get property name ${property.getText()}`); + } } else { - value[cleanPropertyName] = getVariableValue(property); + const cleanPropertyName = propertyName.replace(/["']/g, ''); + value[cleanPropertyName] = val; } } @@ -155,45 +168,53 @@ export function getResolvedModuleSourceFile( return resolvedModuleSourceFile; } -export function getPropertyValue( +export function getIdentifierValue( node: ts.Node, + initializer: ts.Identifier, program: ts.Program, config: Optional<{ chaseImport: boolean }> = {} ) { const { chaseImport = false } = config; + const identifierName = initializer.getText(); + const declaration = getIdentifierDeclaration(initializer); + if (ts.isImportSpecifier(declaration)) { + if (!chaseImport) { + throw new Error( + `Value of node ${identifierName} is imported from another file. Chasing imports is not allowed.` + ); + } - if (ts.isPropertyAssignment(node)) { - const { initializer } = node; + const importedModuleName = getModuleSpecifier(declaration); - if (ts.isIdentifier(initializer)) { - const identifierName = initializer.getText(); - const declaration = getIdentifierDeclaration(initializer); - if (ts.isImportSpecifier(declaration)) { - if (!chaseImport) { - throw new Error( - `Value of node ${identifierName} is imported from another file. Chasing imports is not allowed.` - ); - } + const source = node.getSourceFile(); + const declarationSource = getResolvedModuleSourceFile(source, program, importedModuleName); + const declarationNode = getIdentifierDeclarationFromSource(initializer, declarationSource); + if (!ts.isVariableDeclaration(declarationNode)) { + throw new Error(`Expected ${identifierName} to be variable declaration.`); + } + if (!declarationNode.initializer) { + throw new Error(`Expected ${identifierName} to be initialized.`); + } + const serializedObject = serializeObject(declarationNode.initializer, program); + return serializedObject; + } - const importedModuleName = getModuleSpecifier(declaration); + return getVariableValue(declaration, program); +} - const source = node.getSourceFile(); - const declarationSource = getResolvedModuleSourceFile(source, program, importedModuleName); - const declarationNode = getIdentifierDeclarationFromSource(initializer, declarationSource); - if (!ts.isVariableDeclaration(declarationNode)) { - throw new Error(`Expected ${identifierName} to be variable declaration.`); - } - if (!declarationNode.initializer) { - throw new Error(`Expected ${identifierName} to be initialized.`); - } - const serializedObject = serializeObject(declarationNode.initializer); - return serializedObject; - } +export function getPropertyValue( + node: ts.Node, + program: ts.Program, + config: Optional<{ chaseImport: boolean }> = {} +) { + if (ts.isPropertyAssignment(node)) { + const { initializer } = node; - return getVariableValue(declaration); + if (ts.isIdentifier(initializer)) { + return getIdentifierValue(node, initializer, program, config); } - return getVariableValue(initializer); + return getVariableValue(initializer, program); } } diff --git a/src/fixtures/telemetry_collectors/indexed_interface_with_not_matching_schema.ts b/src/fixtures/telemetry_collectors/indexed_interface_with_not_matching_schema.ts index 0ec8d2e15c34a..b925696c96563 100644 --- a/src/fixtures/telemetry_collectors/indexed_interface_with_not_matching_schema.ts +++ b/src/fixtures/telemetry_collectors/indexed_interface_with_not_matching_schema.ts @@ -41,8 +41,9 @@ export const myCollector = makeUsageCollector({ return { something: { count_2: 2 } }; }, schema: { + // @ts-expect-error Intentionally missing count_2 something: { - count_1: { type: 'long' }, // Intentionally missing count_2 + count_1: { type: 'long' }, }, }, }); diff --git a/src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts b/src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts new file mode 100644 index 0000000000000..af9fef0bbd297 --- /dev/null +++ b/src/fixtures/telemetry_collectors/schema_defined_with_spreads_collector.ts @@ -0,0 +1,77 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { CollectorSet, MakeSchemaFrom } from '../../plugins/usage_collection/server/collector'; +import { loggerMock } from '../../core/server/logging/logger.mock'; + +const { makeUsageCollector } = new CollectorSet({ + logger: loggerMock.create(), + maximumWaitTimeForAllCollectorsInS: 0, +}); + +interface MyObject { + total: number; + type: boolean; +} + +interface Usage { + flat?: string; + my_str?: string; + my_objects: MyObject; +} + +const SOME_NUMBER: number = 123; + +const someSchema: MakeSchemaFrom> = { + flat: { + type: 'keyword', + }, + my_str: { + type: 'text', + }, +}; + +const someOtherSchema: MakeSchemaFrom> = { + my_objects: { + total: { + type: 'number', + }, + type: { type: 'boolean' }, + }, +}; + +export const myCollector = makeUsageCollector({ + type: 'schema_defined_with_spreads', + isReady: () => true, + fetch() { + const testString = '123'; + + return { + flat: 'hello', + my_str: testString, + my_objects: { + total: SOME_NUMBER, + type: true, + }, + }; + }, + schema: { + ...someSchema, + ...someOtherSchema, + }, +}); diff --git a/src/plugins/telemetry/server/collectors/usage/schema.ts b/src/plugins/telemetry/server/collectors/usage/schema.ts index 8f4d555d75c49..4bfb6f75c7c8f 100644 --- a/src/plugins/telemetry/server/collectors/usage/schema.ts +++ b/src/plugins/telemetry/server/collectors/usage/schema.ts @@ -31,7 +31,7 @@ const licenseSchema: MakeSchemaFrom = { max_resource_units: { type: 'long' }, }; -export const staticTelemetrySchema: MakeSchemaFrom> = { +export const staticTelemetrySchema: MakeSchemaFrom = { ece: { kb_uuid: { type: 'keyword' }, es_uuid: { type: 'keyword' }, diff --git a/src/plugins/usage_collection/server/collector/collector.ts b/src/plugins/usage_collection/server/collector/collector.ts index b0bc18a0cf0eb..8491bdb0c957c 100644 --- a/src/plugins/usage_collection/server/collector/collector.ts +++ b/src/plugins/usage_collection/server/collector/collector.ts @@ -38,16 +38,17 @@ export type RecursiveMakeSchemaFrom = U extends object ? MakeSchemaFrom : { type: AllowedSchemaTypes }; +// Using Required to enforce all optional keys in the object export type MakeSchemaFrom = { - [Key in keyof Base]: Base[Key] extends Array + [Key in keyof Required]: Required[Key] extends Array ? { type: 'array'; items: RecursiveMakeSchemaFrom } - : RecursiveMakeSchemaFrom; + : RecursiveMakeSchemaFrom[Key]>; }; export interface CollectorOptions { type: string; init?: Function; - schema?: MakeSchemaFrom>; // Using Required to enforce all optional keys in the object + schema?: MakeSchemaFrom; fetch: (callCluster: LegacyAPICaller, esClient?: ElasticsearchClient) => Promise | T; /* * A hook for allowing the fetched data payload to be organized into a typed diff --git a/x-pack/.telemetryrc.json b/x-pack/.telemetryrc.json index 30b2178259d68..a7aa408ba68ef 100644 --- a/x-pack/.telemetryrc.json +++ b/x-pack/.telemetryrc.json @@ -5,7 +5,6 @@ "plugins/actions/server/usage/actions_usage_collector.ts", "plugins/alerts/server/usage/alerts_usage_collector.ts", "plugins/apm/server/lib/apm_telemetry/index.ts", - "plugins/canvas/server/collectors/collector.ts", "plugins/infra/server/usage/usage_collector.ts", "plugins/reporting/server/usage/reporting_usage_collector.ts", "plugins/maps/server/maps_telemetry/collectors/register.ts" diff --git a/x-pack/plugins/canvas/server/collectors/collector.ts b/x-pack/plugins/canvas/server/collectors/collector.ts index eb650ca5ad152..39a8262a5deec 100644 --- a/x-pack/plugins/canvas/server/collectors/collector.ts +++ b/x-pack/plugins/canvas/server/collectors/collector.ts @@ -5,11 +5,16 @@ */ import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; -import { LegacyAPICaller } from 'kibana/server'; import { TelemetryCollector } from '../../types'; -import { workpadCollector } from './workpad_collector'; -import { customElementCollector } from './custom_element_collector'; +import { workpadCollector, workpadSchema, WorkpadTelemetry } from './workpad_collector'; +import { + customElementCollector, + CustomElementTelemetry, + customElementSchema, +} from './custom_element_collector'; + +type CanvasUsage = WorkpadTelemetry & CustomElementTelemetry; const collectors: TelemetryCollector[] = [workpadCollector, customElementCollector]; @@ -29,18 +34,19 @@ export function registerCanvasUsageCollector( return; } - const canvasCollector = usageCollection.makeUsageCollector({ + const canvasCollector = usageCollection.makeUsageCollector({ type: 'canvas', isReady: () => true, - fetch: async (callCluster: LegacyAPICaller) => { + fetch: async (callCluster) => { const collectorResults = await Promise.all( collectors.map((collector) => collector(kibanaIndex, callCluster)) ); return collectorResults.reduce((reduction, usage) => { return { ...reduction, ...usage }; - }, {}); + }, {}) as CanvasUsage; // We need the casting because `TelemetryCollector` claims it returns `Record` }, + schema: { ...workpadSchema, ...customElementSchema }, }); usageCollection.registerCollector(canvasCollector); diff --git a/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts b/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts index 7b39e8b83b045..d3ed1e17785ee 100644 --- a/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts +++ b/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts @@ -6,6 +6,7 @@ import { SearchParams } from 'elasticsearch'; import { get } from 'lodash'; +import { MakeSchemaFrom } from 'src/plugins/usage_collection/server'; import { collectFns } from './collector_helpers'; import { TelemetryCollector, @@ -19,7 +20,7 @@ interface CustomElementSearch { [CUSTOM_ELEMENT_TYPE]: TelemetryCustomElementDocument; } -interface CustomElementTelemetry { +export interface CustomElementTelemetry { custom_elements?: { count: number; elements: { @@ -31,6 +32,18 @@ interface CustomElementTelemetry { }; } +export const customElementSchema: MakeSchemaFrom = { + custom_elements: { + count: { type: 'long' }, + elements: { + min: { type: 'long' }, + max: { type: 'long' }, + avg: { type: 'float' }, + }, + functions_in_use: { type: 'array', items: { type: 'keyword' } }, + }, +}; + function isCustomElement(maybeCustomElement: any): maybeCustomElement is TelemetryCustomElement { return ( maybeCustomElement !== null && diff --git a/x-pack/plugins/canvas/server/collectors/workpad_collector.ts b/x-pack/plugins/canvas/server/collectors/workpad_collector.ts index 9fa39c580962d..0479411528802 100644 --- a/x-pack/plugins/canvas/server/collectors/workpad_collector.ts +++ b/x-pack/plugins/canvas/server/collectors/workpad_collector.ts @@ -6,6 +6,7 @@ import { SearchParams } from 'elasticsearch'; import { sum as arraySum, min as arrayMin, max as arrayMax, get } from 'lodash'; +import { MakeSchemaFrom } from 'src/plugins/usage_collection/server'; import { CANVAS_TYPE } from '../../common/lib/constants'; import { collectFns } from './collector_helpers'; import { TelemetryCollector, CanvasWorkpad } from '../../types'; @@ -15,7 +16,7 @@ interface WorkpadSearch { [CANVAS_TYPE]: CanvasWorkpad; } -interface WorkpadTelemetry { +export interface WorkpadTelemetry { workpads?: { total: number; }; @@ -54,6 +55,43 @@ interface WorkpadTelemetry { }; } +export const workpadSchema: MakeSchemaFrom = { + workpads: { total: { type: 'long' } }, + pages: { + total: { type: 'long' }, + per_workpad: { + avg: { type: 'float' }, + min: { type: 'long' }, + max: { type: 'long' }, + }, + }, + elements: { + total: { type: 'long' }, + per_page: { + avg: { type: 'float' }, + min: { type: 'long' }, + max: { type: 'long' }, + }, + }, + functions: { + total: { type: 'long' }, + in_use: { type: 'array', items: { type: 'keyword' } }, + per_element: { + avg: { type: 'float' }, + min: { type: 'long' }, + max: { type: 'long' }, + }, + }, + variables: { + total: { type: 'long' }, + per_workpad: { + avg: { type: 'float' }, + min: { type: 'long' }, + max: { type: 'long' }, + }, + }, +}; + /** Gather statistic about the given workpads @param workpadDocs a collection of workpad documents diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index bc89d9e0c812d..09d4bf8a03c6b 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -1,5 +1,128 @@ { "properties": { + "canvas": { + "properties": { + "workpads": { + "properties": { + "total": { + "type": "long" + } + } + }, + "pages": { + "properties": { + "total": { + "type": "long" + }, + "per_workpad": { + "properties": { + "avg": { + "type": "float" + }, + "min": { + "type": "long" + }, + "max": { + "type": "long" + } + } + } + } + }, + "elements": { + "properties": { + "total": { + "type": "long" + }, + "per_page": { + "properties": { + "avg": { + "type": "float" + }, + "min": { + "type": "long" + }, + "max": { + "type": "long" + } + } + } + } + }, + "functions": { + "properties": { + "total": { + "type": "long" + }, + "in_use": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "per_element": { + "properties": { + "avg": { + "type": "float" + }, + "min": { + "type": "long" + }, + "max": { + "type": "long" + } + } + } + } + }, + "variables": { + "properties": { + "total": { + "type": "long" + }, + "per_workpad": { + "properties": { + "avg": { + "type": "float" + }, + "min": { + "type": "long" + }, + "max": { + "type": "long" + } + } + } + } + }, + "custom_elements": { + "properties": { + "count": { + "type": "long" + }, + "elements": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } + } + }, + "functions_in_use": { + "type": "array", + "items": { + "type": "keyword" + } + } + } + } + } + }, "cloud": { "properties": { "isCloudEnabled": { From fdee5e59a7a4129c494bd76d28f95557bd8cedf0 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 29 Sep 2020 13:54:43 +0200 Subject: [PATCH 046/119] [CSM] Fix core vital legend background (#78273) Co-authored-by: Elastic Machine --- .../RumDashboard/CoreVitals/CoreVitalItem.tsx | 10 ++-- .../CoreVitals/PaletteLegends.tsx | 47 +++++++++++++++++-- .../app/RumDashboard/CoreVitals/index.tsx | 5 +- .../RumDashboard/CoreVitals/translations.ts | 27 +++++++++-- .../app/RumDashboard/UXMetrics/index.tsx | 47 +++++++++++++++++-- .../lib/rum_client/get_long_task_metrics.ts | 1 + .../lib/rum_client/get_web_core_vitals.ts | 9 ++-- .../trial/tests/csm/web_core_vitals.ts | 4 +- 8 files changed, 126 insertions(+), 24 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/CoreVitalItem.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/CoreVitalItem.tsx index 22d50ca0d5c41..6107a8e764adb 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/CoreVitalItem.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/CoreVitalItem.tsx @@ -15,11 +15,11 @@ import { i18n } from '@kbn/i18n'; import { PaletteLegends } from './PaletteLegends'; import { ColorPaletteFlexItem } from './ColorPaletteFlexItem'; import { - AVERAGE_LABEL, - GOOD_LABEL, + CV_AVERAGE_LABEL, + CV_GOOD_LABEL, LESS_LABEL, MORE_LABEL, - POOR_LABEL, + CV_POOR_LABEL, } from './translations'; export interface Thresholds { @@ -51,7 +51,7 @@ export function getCoreVitalTooltipMessage( values: { percentage, title: title?.toLowerCase(), - exp: good ? GOOD_LABEL : bad ? POOR_LABEL : AVERAGE_LABEL, + exp: good ? CV_GOOD_LABEL : bad ? CV_POOR_LABEL : CV_AVERAGE_LABEL, moreOrLess: bad || average ? MORE_LABEL : LESS_LABEL, value: good || average ? thresholds.good : thresholds.bad, averageMessage: average @@ -90,7 +90,7 @@ export function CoreVitalItem({ {palette.map((hexCode, ind) => ( diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx index 84cc5f1ddb230..43eb468b88317 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx @@ -10,16 +10,36 @@ import { EuiFlexItem, EuiHealth, euiPaletteForStatus, + EuiText, EuiToolTip, } from '@elastic/eui'; import styled from 'styled-components'; +import { FormattedMessage } from '@kbn/i18n/react'; +import euiLightVars from '@elastic/eui/dist/eui_theme_light.json'; +import euiDarkVars from '@elastic/eui/dist/eui_theme_dark.json'; import { getCoreVitalTooltipMessage, Thresholds } from './CoreVitalItem'; +import { useUiSetting$ } from '../../../../../../../../src/plugins/kibana_react/public'; +import { + LEGEND_NEEDS_IMPROVEMENT_LABEL, + LEGEND_GOOD_LABEL, + LEGEND_POOR_LABEL, +} from './translations'; const PaletteLegend = styled(EuiHealth)` &:hover { cursor: pointer; text-decoration: underline; - background-color: #e7f0f7; + } +`; + +const StyledSpan = styled.span<{ + darkMode: boolean; +}>` + &:hover { + background-color: ${(props) => + props.darkMode + ? euiDarkVars.euiColorLightestShade + : euiLightVars.euiColorLightestShade}; } `; @@ -36,10 +56,17 @@ export function PaletteLegends({ onItemHover, thresholds, }: Props) { + const [darkMode] = useUiSetting$('theme:darkMode'); + const palette = euiPaletteForStatus(3); + const labels = [ + LEGEND_GOOD_LABEL, + LEGEND_NEEDS_IMPROVEMENT_LABEL, + LEGEND_POOR_LABEL, + ]; return ( - + {palette.map((color, ind) => ( - {ranks?.[ind]}% + + + + {labels[ind]} ({ranks?.[ind]}%) + + + + ))} diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/index.tsx index 0135f0b369537..cd7fd0af6d683 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/index.tsx @@ -8,6 +8,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { CLS_LABEL, FID_LABEL, LCP_LABEL } from './translations'; import { CoreVitalItem } from './CoreVitalItem'; import { UXMetrics } from '../UXMetrics'; +import { formatToSec } from '../UXMetrics/KeyUXMetrics'; const CoreVitalsThresholds = { LCP: { good: '2.5s', bad: '4.0s' }, @@ -28,7 +29,7 @@ export function CoreVitals({ data, loading }: Props) { setIsPopoverOpen(false); + return ( @@ -72,7 +81,37 @@ export function UXMetrics() { -

{I18LABELS.coreWebVitals}

+

+ {I18LABELS.coreWebVitals} + setIsPopoverOpen(true)} + color={'text'} + iconType={'questionInCircle'} + /> + } + closePopover={closePopover} + > +
+ + + + {' '} + {I18LABELS.coreWebVitals} + + +
+
+

diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_long_task_metrics.ts b/x-pack/plugins/apm/server/lib/rum_client/get_long_task_metrics.ts index 812cf9865bda8..bd4bdb9ca3536 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_long_task_metrics.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_long_task_metrics.ts @@ -81,6 +81,7 @@ export async function getLongTaskMetrics({ } } }); + return { noOfLongTasks, sumOfLongTasks, diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts b/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts index fa34c2e25fecd..0828d7ab65190 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts @@ -124,13 +124,12 @@ export async function getWebCoreVitals({ { value: 0, key: 0 }, ]; - // Divide by 1000 to convert ms into seconds return { cls: String(cls?.values['50.0']?.toFixed(2) || 0), - fid: ((fid?.values['50.0'] || 0) / 1000).toFixed(2), - lcp: ((lcp?.values['50.0'] || 0) / 1000).toFixed(2), - tbt: tbt?.values['50.0'] || 0, - fcp: fcp?.values['50.0'] || 0, + fid: fid?.values['50.0'] ?? 0, + lcp: lcp?.values['50.0'] ?? 0, + tbt: tbt?.values['50.0'] ?? 0, + fcp: fcp?.values['50.0'] ?? 0, lcpRanks: getRanksPercentages(lcpRanks?.values ?? defaultRanks), fidRanks: getRanksPercentages(fidRanks?.values ?? defaultRanks), diff --git a/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts b/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts index 6364a79a12f04..5825c8fc49a6b 100644 --- a/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts +++ b/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts @@ -59,13 +59,13 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) 0, ], "fcp": 1072, - "fid": "1.35", + "fid": 1352.13, "fidRanks": Array [ 0, 0, 100, ], - "lcp": "1.27", + "lcp": 1270.5, "lcpRanks": Array [ 100, 0, From 6f3301232cae6e2c238870233718fbd3f6f03c24 Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Tue, 29 Sep 2020 09:29:07 -0400 Subject: [PATCH 047/119] [Ingest pipelines] Add ability to stop pipeline simulation (#78183) --- .../__jest__/test_pipeline.helpers.tsx | 38 +++ .../__jest__/test_pipeline.test.tsx | 108 ++++++-- .../processor_form/edit_processor_form.tsx | 4 +- .../test_pipeline/add_documents_button.tsx | 2 +- .../documents_dropdown/documents_dropdown.tsx | 50 ++-- .../test_pipeline/test_output_button.tsx | 2 +- .../test_pipeline/test_pipeline_actions.tsx | 6 +- .../test_pipeline_flyout.container.tsx | 19 +- .../test_pipeline/test_pipeline_flyout.tsx | 10 +- .../documents_schema.tsx | 111 -------- .../tab_documents.tsx | 134 ---------- .../index.ts | 0 .../tab_documents}/add_document_form.tsx | 6 +- .../add_documents_accordion.scss | 0 .../add_documents_accordion.tsx | 15 +- .../add_documents_accordion/index.ts | 0 .../test_pipeline_tabs/tab_documents/index.ts | 7 + .../tab_documents/reset_documents_modal.tsx | 61 +++++ .../tab_documents/tab_documents.scss | 11 + .../tab_documents/tab_documents.tsx | 251 ++++++++++++++++++ .../tab_output.tsx | 0 .../test_pipeline_tabs.tsx | 0 .../context/test_pipeline_context.tsx | 13 +- 23 files changed, 526 insertions(+), 322 deletions(-) delete mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/documents_schema.tsx delete mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_documents.tsx rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs}/index.ts (100%) rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs/tab_documents}/add_document_form.tsx (97%) rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs/tab_documents}/add_documents_accordion/add_documents_accordion.scss (100%) rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs/tab_documents}/add_documents_accordion/add_documents_accordion.tsx (88%) rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs/tab_documents}/add_documents_accordion/index.ts (100%) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs}/tab_output.tsx (100%) rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/{test_pipeline_flyout_tabs => test_pipeline_tabs}/test_pipeline_tabs.tsx (100%) diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx index 215ef63d9782e..7f1b203869c70 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx @@ -179,6 +179,41 @@ const createActions = (testBed: TestBed) => { }); }, + clickDocumentsDropdown() { + act(() => { + find('documentsDropdown.documentsButton').simulate('click'); + }); + component.update(); + }, + + clickEditDocumentsButton() { + act(() => { + find('editDocumentsButton').simulate('click'); + }); + component.update(); + }, + + clickClearAllButton() { + act(() => { + find('clearAllDocumentsButton').simulate('click'); + }); + component.update(); + }, + + async clickConfirmResetButton() { + const modal = document.body.querySelector( + '[data-test-subj="resetDocumentsConfirmationModal"]' + ); + const confirmButton: HTMLButtonElement | null = modal!.querySelector( + '[data-test-subj="confirmModalConfirmButton"]' + ); + + await act(async () => { + confirmButton!.click(); + }); + component.update(); + }, + async clickProcessor(processorSelector: string) { await act(async () => { find(`${processorSelector}.manageItemButton`).simulate('click'); @@ -230,6 +265,7 @@ type TestSubject = | 'addDocumentsButton' | 'testPipelineFlyout' | 'documentsDropdown' + | 'documentsDropdown.documentsButton' | 'outputTab' | 'documentsEditor' | 'runPipelineButton' @@ -248,6 +284,8 @@ type TestSubject = | 'configurationTab' | 'outputTab' | 'processorOutputTabContent' + | 'editDocumentsButton' + | 'clearAllDocumentsButton' | 'addDocumentsAccordion' | 'addDocumentButton' | 'addDocumentError' diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.test.tsx index 47f05602799e4..69a1b7c2c126d 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.test.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.test.tsx @@ -22,6 +22,27 @@ describe('Test pipeline', () => { const { server, httpRequestsMockHelpers } = setupEnvironment(); + // This is a hack + // We need to provide the processor id in the mocked output; + // this is generated dynamically + // As a workaround, the value is added as a data attribute in the UI + // and we retrieve it to generate the mocked output. + const addProcessorTagtoMockOutput = (output: VerboseTestOutput) => { + const { find } = testBed; + + const docs = output.docs.map((doc) => { + const results = doc.processor_results.map((result, index) => { + const tag = find(`processors>${index}`).props()['data-processor-id']; + return { + ...result, + tag, + }; + }); + return { processor_results: results }; + }); + return { docs }; + }; + beforeAll(() => { jest.useFakeTimers(); }); @@ -236,30 +257,77 @@ describe('Test pipeline', () => { expect(find('addDocumentError').text()).toContain(error.message); }); }); - }); - describe('Processors', () => { - // This is a hack - // We need to provide the processor id in the mocked output; - // this is generated dynamically and not something we can stub. - // As a workaround, the value is added as a data attribute in the UI - // and we retrieve it to generate the mocked output. - const addProcessorTagtoMockOutput = (output: VerboseTestOutput) => { - const { find } = testBed; + describe('Documents dropdown', () => { + beforeEach(async () => { + const { actions } = testBed; - const docs = output.docs.map((doc) => { - const results = doc.processor_results.map((result, index) => { - const tag = find(`processors>${index}`).props()['data-processor-id']; - return { - ...result, - tag, - }; - }); - return { processor_results: results }; + httpRequestsMockHelpers.setSimulatePipelineResponse( + addProcessorTagtoMockOutput(SIMULATE_RESPONSE) + ); + + // Open flyout + actions.clickAddDocumentsButton(); + // Add sample documents and click run + actions.addDocumentsJson(JSON.stringify(DOCUMENTS)); + await actions.clickRunPipelineButton(); + // Close flyout + actions.closeTestPipelineFlyout(); }); - return { docs }; - }; + it('should open flyout to edit documents', () => { + const { exists, actions } = testBed; + + // Dropdown should be visible + expect(exists('documentsDropdown')).toBe(true); + + // Open dropdown and edit documents + actions.clickDocumentsDropdown(); + actions.clickEditDocumentsButton(); + + // Flyout should be visible with "Documents" tab enabled + expect(exists('testPipelineFlyout')).toBe(true); + expect(exists('documentsTabContent')).toBe(true); + }); + + it('should clear all documents and stop pipeline simulation', async () => { + const { exists, actions, find } = testBed; + + // Dropdown should be visible and processor status should equal "success" + expect(exists('documentsDropdown')).toBe(true); + const initialProcessorStatusLabel = find('processors>0.processorStatusIcon').props()[ + 'aria-label' + ]; + expect(initialProcessorStatusLabel).toEqual('Success'); + + // Open flyout and click clear all button + actions.clickDocumentsDropdown(); + actions.clickEditDocumentsButton(); + actions.clickClearAllButton(); + + // Verify modal + const modal = document.body.querySelector( + '[data-test-subj="resetDocumentsConfirmationModal"]' + ); + + expect(modal).not.toBe(null); + expect(modal!.textContent).toContain('Clear documents'); + + // Confirm reset and close modal + await actions.clickConfirmResetButton(); + + // Verify documents and processors were reset + expect(exists('documentsDropdown')).toBe(false); + expect(exists('addDocumentsButton')).toBe(true); + const resetProcessorStatusIconLabel = find('processors>0.processorStatusIcon').props()[ + 'aria-label' + ]; + expect(resetProcessorStatusIconLabel).toEqual('Not run'); + }); + }); + }); + + describe('Processors', () => { it('should show "inactive" processor status by default', async () => { const { find } = testBed; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/edit_processor_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/edit_processor_form.tsx index d9feaaffa5aec..3df73b54b8cce 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/edit_processor_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/edit_processor_form.tsx @@ -102,7 +102,7 @@ export const EditProcessorForm: FunctionComponent = ({ handleSubmit, resetProcessors, }) => { - const { testPipelineData, setCurrentTestPipelineData } = useTestPipelineContext(); + const { testPipelineData, testPipelineDataDispatch } = useTestPipelineContext(); const { testOutputPerProcessor, config: { selectedDocumentIndex, documents }, @@ -117,7 +117,7 @@ export const EditProcessorForm: FunctionComponent = ({ testOutputPerProcessor[selectedDocumentIndex][processor.id]; const updateSelectedDocument = (index: number) => { - setCurrentTestPipelineData({ + testPipelineDataDispatch({ type: 'updateActiveDocument', payload: { config: { diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/add_documents_button.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/add_documents_button.tsx index 26492454cbcf5..1a8f1258404e7 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/add_documents_button.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/add_documents_button.tsx @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import React, { FunctionComponent } from 'react'; import { EuiButtonEmpty } from '@elastic/eui'; -import { TestPipelineFlyoutTab } from './test_pipeline_flyout_tabs'; +import { TestPipelineFlyoutTab } from './test_pipeline_tabs'; const i18nTexts = { buttonLabel: i18n.translate('xpack.ingestPipelines.pipelineEditor.testPipeline.buttonLabel', { diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx index 269a697a33c17..9c8d6c8bdb289 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx @@ -8,18 +8,15 @@ import React, { FunctionComponent, useState } from 'react'; import { EuiButton, EuiPopover, + EuiPopoverFooter, EuiButtonEmpty, EuiPopoverTitle, EuiSelectable, - EuiHorizontalRule, - EuiFlexGroup, - EuiFlexItem, - EuiSpacer, } from '@elastic/eui'; import { Document } from '../../../types'; -import { TestPipelineFlyoutTab } from '../test_pipeline_flyout_tabs'; +import { TestPipelineFlyoutTab } from '../test_pipeline_tabs'; import './documents_dropdown.scss'; @@ -31,9 +28,9 @@ const i18nTexts = { } ), addDocumentsButtonLabel: i18n.translate( - 'xpack.ingestPipelines.pipelineEditor.testPipeline.documentsDropdown.buttonLabel', + 'xpack.ingestPipelines.pipelineEditor.testPipeline.documentsDropdown.editDocumentsButtonLabel', { - defaultMessage: 'Add documents', + defaultMessage: 'Edit documents', } ), popoverTitle: i18n.translate( @@ -88,8 +85,10 @@ export const DocumentsDropdown: FunctionComponent = ({ > ({ key: index.toString(), + 'data-test-subj': 'documentListItem', checked: selectedDocumentIndex === index ? 'on' : undefined, label: i18n.translate('xpack.ingestPipelines.pipelineEditor.testPipeline.documentLabel', { defaultMessage: 'Document {documentNumber}', @@ -107,32 +106,27 @@ export const DocumentsDropdown: FunctionComponent = ({ setShowPopover(false); }} > - {(list, search) => ( -
+ {(list) => ( + <> {i18nTexts.popoverTitle} {list} -
+ )}
- - - - - { - openFlyout('documents'); - setShowPopover(false); - }} - data-test-subj="addDocumentsButton" - > - {i18nTexts.addDocumentsButtonLabel} - - - - - + + { + openFlyout('documents'); + setShowPopover(false); + }} + data-test-subj="editDocumentsButton" + > + {i18nTexts.addDocumentsButtonLabel} + + ); }; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_output_button.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_output_button.tsx index 9018042229590..d2fc9c51be699 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_output_button.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_output_button.tsx @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import React, { FunctionComponent } from 'react'; import { EuiButton } from '@elastic/eui'; -import { TestPipelineFlyoutTab } from './test_pipeline_flyout_tabs'; +import { TestPipelineFlyoutTab } from './test_pipeline_tabs'; const i18nTexts = { buttonLabel: i18n.translate( diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_actions.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_actions.tsx index cec02db26729d..83a9303859d2a 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_actions.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_actions.tsx @@ -9,7 +9,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { useTestPipelineContext, usePipelineProcessorsContext } from '../../context'; import { DocumentsDropdown } from './documents_dropdown'; -import { TestPipelineFlyoutTab } from './test_pipeline_flyout_tabs'; +import { TestPipelineFlyoutTab } from './test_pipeline_tabs'; import { AddDocumentsButton } from './add_documents_button'; import { TestOutputButton } from './test_output_button'; import { TestPipelineFlyout } from './test_pipeline_flyout.container'; @@ -24,7 +24,7 @@ const i18nTexts = { }; export const TestPipelineActions: FunctionComponent = () => { - const { testPipelineData, setCurrentTestPipelineData } = useTestPipelineContext(); + const { testPipelineData, testPipelineDataDispatch } = useTestPipelineContext(); const { state: { processors }, @@ -39,7 +39,7 @@ export const TestPipelineActions: FunctionComponent = () => { const [activeFlyoutTab, setActiveFlyoutTab] = useState('documents'); const updateSelectedDocument = (index: number) => { - setCurrentTestPipelineData({ + testPipelineDataDispatch({ type: 'updateActiveDocument', payload: { config: { diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout.container.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout.container.tsx index 23dda55db41f8..e7ccb9d17f2b1 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout.container.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout.container.tsx @@ -15,8 +15,7 @@ import { Document } from '../../types'; import { useIsMounted } from '../../use_is_mounted'; import { TestPipelineFlyout as ViewComponent } from './test_pipeline_flyout'; -import { TestPipelineFlyoutTab } from './test_pipeline_flyout_tabs'; -import { documentsSchema } from './test_pipeline_flyout_tabs/documents_schema'; +import { TestPipelineFlyoutTab } from './test_pipeline_tabs'; export interface Props { activeTab: TestPipelineFlyoutTab; @@ -39,7 +38,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ const { testPipelineData, - setCurrentTestPipelineData, + testPipelineDataDispatch, updateTestOutputPerProcessor, } = useTestPipelineContext(); @@ -48,7 +47,6 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ } = testPipelineData; const { form } = useForm({ - schema: documentsSchema, defaultValue: { documents: cachedDocuments || '', }, @@ -88,7 +86,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ // reset the per-processor output // this is needed in the scenario where the pipeline has already executed, // but you modified the sample documents and there was an error on re-execution - setCurrentTestPipelineData({ + testPipelineDataDispatch({ type: 'updateOutputPerProcessor', payload: { isExecutingPipeline: false, @@ -99,7 +97,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ return { isSuccessful: false }; } - setCurrentTestPipelineData({ + testPipelineDataDispatch({ type: 'updateConfig', payload: { config: { @@ -133,7 +131,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ processors, services.api, services.notifications.toasts, - setCurrentTestPipelineData, + testPipelineDataDispatch, updateTestOutputPerProcessor, ] ); @@ -157,6 +155,12 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ } }; + const resetTestOutput = () => { + testPipelineDataDispatch({ + type: 'reset', + }); + }; + useEffect(() => { if (cachedDocuments && activeTab === 'output') { handleTestPipeline({ documents: cachedDocuments, verbose: cachedVerbose }, true); @@ -169,6 +173,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ return ( void; handleTestPipeline: ( @@ -31,11 +30,14 @@ export interface Props { cachedVerbose?: boolean; cachedDocuments?: Document[]; testOutput?: any; - form: FormHook; + form: FormHook<{ + documents: string | Document[]; + }>; validateAndTestPipeline: () => Promise; selectedTab: TestPipelineFlyoutTab; setSelectedTab: (selectedTa: TestPipelineFlyoutTab) => void; testingError: any; + resetTestOutput: () => void; } export interface TestPipelineConfig { @@ -45,6 +47,7 @@ export interface TestPipelineConfig { export const TestPipelineFlyout: React.FunctionComponent = ({ handleTestPipeline, + resetTestOutput, isRunningTest, cachedVerbose, cachedDocuments, @@ -75,6 +78,7 @@ export const TestPipelineFlyout: React.FunctionComponent = ({ form={form} validateAndTestPipeline={validateAndTestPipeline} isRunningTest={isRunningTest} + resetTestOutput={resetTestOutput} /> ); } diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/documents_schema.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/documents_schema.tsx deleted file mode 100644 index d0e0596375cb2..0000000000000 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/documents_schema.tsx +++ /dev/null @@ -1,111 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React from 'react'; - -import { FormattedMessage } from '@kbn/i18n/react'; -import { i18n } from '@kbn/i18n'; -import { EuiCode } from '@elastic/eui'; - -import { FormSchema, fieldValidators, ValidationFuncArg } from '../../../../../../shared_imports'; -import { parseJson, stringifyJson } from '../../../../../lib'; - -const { emptyField, isJsonField } = fieldValidators; - -export const documentsSchema: FormSchema = { - documents: { - label: i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.documentsFieldLabel', - { - defaultMessage: 'Documents', - } - ), - helpText: ( - - {JSON.stringify([ - { - _index: 'index', - _id: 'id', - _source: { - foo: 'bar', - }, - }, - ])} - - ), - }} - /> - ), - serializer: parseJson, - deserializer: stringifyJson, - validations: [ - { - validator: emptyField( - i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.noDocumentsError', - { - defaultMessage: 'Documents are required.', - } - ) - ), - }, - { - validator: isJsonField( - i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.documentsJsonError', - { - defaultMessage: 'The documents JSON is not valid.', - } - ) - ), - }, - { - validator: ({ value }: ValidationFuncArg) => { - const parsedJSON = JSON.parse(value); - - if (!parsedJSON.length) { - return { - message: i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.oneDocumentRequiredError', - { - defaultMessage: 'At least one document is required.', - } - ), - }; - } - }, - }, - { - validator: ({ value }: ValidationFuncArg) => { - const parsedJSON = JSON.parse(value); - - const isMissingSourceField = parsedJSON.find((document: { _source?: object }) => { - if (!document._source) { - return true; - } - - return false; - }); - - if (isMissingSourceField) { - return { - message: i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.sourceFieldRequiredError', - { - defaultMessage: 'Documents require a _source field.', - } - ), - }; - } - }, - }, - ], - }, -}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_documents.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_documents.tsx deleted file mode 100644 index 6fd340054d2a4..0000000000000 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_documents.tsx +++ /dev/null @@ -1,134 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { FunctionComponent, useCallback } from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { i18n } from '@kbn/i18n'; - -import { EuiSpacer, EuiText, EuiButton, EuiLink } from '@elastic/eui'; - -import { - getUseField, - Field, - JsonEditorField, - useKibana, - useFormData, - FormHook, - Form, -} from '../../../../../../shared_imports'; - -import { AddDocumentsAccordion } from './add_documents_accordion'; - -const UseField = getUseField({ component: Field }); - -interface Props { - validateAndTestPipeline: () => Promise; - isRunningTest: boolean; - form: FormHook; -} - -export const DocumentsTab: FunctionComponent = ({ - validateAndTestPipeline, - isRunningTest, - form, -}) => { - const { services } = useKibana(); - - const [, formatData] = useFormData({ form }); - - const onAddDocumentHandler = useCallback( - (document) => { - const { documents: existingDocuments = [] } = formatData(); - - form.reset({ defaultValue: { documents: [...existingDocuments, document] } }); - }, - [form, formatData] - ); - - return ( -
-
- -

- - {i18n.translate( - 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.simulateDocumentionLink', - { - defaultMessage: 'Learn more.', - } - )} - - ), - }} - /> -

-
- - - - - - - - {/* Documents editor */} - - - - - - {isRunningTest ? ( - - ) : ( - - )} - -
-
- ); -}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/index.ts rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_document_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx similarity index 97% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_document_form.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx index 340cf1af92300..7bb860facfeb2 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_document_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx @@ -25,9 +25,9 @@ import { TextField, fieldValidators, FieldConfig, -} from '../../../../../../shared_imports'; -import { useIsMounted } from '../../../use_is_mounted'; -import { Document } from '../../../types'; +} from '../../../../../../../shared_imports'; +import { useIsMounted } from '../../../../use_is_mounted'; +import { Document } from '../../../../types'; const UseField = getUseField({ component: Field }); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/add_documents_accordion.scss b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/add_documents_accordion.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/add_documents_accordion.scss rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/add_documents_accordion.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/add_documents_accordion.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/add_documents_accordion.tsx similarity index 88% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/add_documents_accordion.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/add_documents_accordion.tsx index 88ced6e9e94dd..c425a41fe6ee9 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/add_documents_accordion.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/add_documents_accordion.tsx @@ -11,8 +11,8 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { EuiAccordion, EuiText, EuiSpacer, EuiLink } from '@elastic/eui'; import { UrlGeneratorsDefinition } from 'src/plugins/share/public'; -import { useKibana } from '../../../../../../../shared_imports'; -import { useIsMounted } from '../../../../use_is_mounted'; +import { useKibana } from '../../../../../../../../shared_imports'; +import { useIsMounted } from '../../../../../use_is_mounted'; import { AddDocumentForm } from '../add_document_form'; import './add_documents_accordion.scss'; @@ -26,6 +26,12 @@ const i18nTexts = { defaultMessage: 'Add documents from index', } ), + addDocumentsDescription: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.addDocumentsAccordion.contentDescriptionText', + { + defaultMessage: 'Provide the index name and document ID of the indexed document to test.', + } + ), }; interface Props { @@ -79,10 +85,7 @@ export const AddDocumentsAccordion: FunctionComponent = ({ onAddDocuments

- + {i18nTexts.addDocumentsDescription} {discoverLink && ( <> {' '} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/add_documents_accordion/index.ts rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_documents_accordion/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts new file mode 100644 index 0000000000000..1c3b6df577f4d --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { DocumentsTab } from './tab_documents'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx new file mode 100644 index 0000000000000..d3f969c5ebb23 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; +import React, { FunctionComponent } from 'react'; +import { EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; + +interface Props { + confirmResetTestOutput: () => void; + closeModal: () => void; +} + +const i18nTexts = { + modalTitle: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.testPipeline.resetDocumentsModal.title', + { + defaultMessage: 'Clear documents', + } + ), + modalDescription: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.testPipeline.resetDocumentsModal.description', + { + defaultMessage: 'This will stop pipeline simulation.', + } + ), + cancelButtonLabel: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.testPipeline.resetDocumentsModal.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } + ), + resetButtonLabel: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.testPipeline.resetDocumentsModal.resetButtonLabel', + { + defaultMessage: 'Clear documents', + } + ), +}; + +export const ResetDocumentsModal: FunctionComponent = ({ + confirmResetTestOutput, + closeModal, +}) => { + return ( + + +

{i18nTexts.modalDescription}

+ + + ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss new file mode 100644 index 0000000000000..c07f58d280e2a --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss @@ -0,0 +1,11 @@ +.documentsTab { + &__documentField { + position: relative; + + &__button { + position: absolute; + right: 0; + top: 0; + } + } +} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx new file mode 100644 index 0000000000000..ae784472ebbd9 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx @@ -0,0 +1,251 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent, useCallback, useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { EuiSpacer, EuiText, EuiButton, EuiLink, EuiCode, EuiButtonEmpty } from '@elastic/eui'; + +import { parseJson, stringifyJson } from '../../../../../../lib'; +import { + getUseField, + Field, + JsonEditorField, + useKibana, + FieldConfig, + fieldValidators, + ValidationFuncArg, + FormHook, + Form, + useFormData, +} from '../../../../../../../shared_imports'; +import { Document } from '../../../../types'; +import { AddDocumentsAccordion } from './add_documents_accordion'; +import { ResetDocumentsModal } from './reset_documents_modal'; + +import './tab_documents.scss'; + +const UseField = getUseField({ component: Field }); + +const { emptyField, isJsonField } = fieldValidators; + +interface Props { + validateAndTestPipeline: () => Promise; + resetTestOutput: () => void; + isRunningTest: boolean; + form: FormHook<{ + documents: string | Document[]; + }>; +} + +const i18nTexts = { + learnMoreLink: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.simulateDocumentionLink', + { + defaultMessage: 'Learn more.', + } + ), + documentsEditorAriaLabel: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.editorFieldAriaLabel', + { + defaultMessage: 'Documents JSON editor', + } + ), + documentsEditorClearAllButton: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.editorFieldClearAllButtonLabel', + { + defaultMessage: 'Clear all', + } + ), + runButton: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.runButtonLabel', + { + defaultMessage: 'Run the pipeline', + } + ), + runningButton: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsTab.runningButtonLabel', + { + defaultMessage: 'Running', + } + ), +}; + +const documentFieldConfig: FieldConfig = { + label: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.documentsFieldLabel', + { + defaultMessage: 'Documents', + } + ), + helpText: ( + + {JSON.stringify([ + { + _index: 'index', + _id: 'id', + _source: { + foo: 'bar', + }, + }, + ])} + + ), + }} + /> + ), + serializer: parseJson, + deserializer: stringifyJson, + validations: [ + { + validator: emptyField( + i18n.translate('xpack.ingestPipelines.testPipelineFlyout.documentsForm.noDocumentsError', { + defaultMessage: 'Documents are required.', + }) + ), + }, + { + validator: isJsonField( + i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.documentsJsonError', + { + defaultMessage: 'The documents JSON is not valid.', + } + ) + ), + }, + { + validator: ({ value }: ValidationFuncArg) => { + const parsedJSON = JSON.parse(value); + + if (!parsedJSON.length) { + return { + message: i18n.translate( + 'xpack.ingestPipelines.testPipelineFlyout.documentsForm.oneDocumentRequiredError', + { + defaultMessage: 'At least one document is required.', + } + ), + }; + } + }, + }, + ], +}; + +export const DocumentsTab: FunctionComponent = ({ + validateAndTestPipeline, + isRunningTest, + form, + resetTestOutput, +}) => { + const { services } = useKibana(); + + const [, formatData] = useFormData({ form }); + + const onAddDocumentHandler = useCallback( + (document) => { + const { documents: existingDocuments = [] } = formatData(); + + form.reset({ defaultValue: { documents: [...existingDocuments, document] } }); + }, + [form, formatData] + ); + + const [showResetModal, setShowResetModal] = useState(false); + + return ( +
+
+ +

+ + {i18nTexts.learnMoreLink} + + ), + }} + /> +

+
+ + + + + + + + {/* Documents editor */} + + {(field) => ( +
+ setShowResetModal(true)} + data-test-subj="clearAllDocumentsButton" + className="documentsTab__documentField__button" + > + {i18nTexts.documentsEditorClearAllButton} + + +
+ )} +
+ + + + + {isRunningTest ? i18nTexts.runningButton : i18nTexts.runButton} + + + {showResetModal && ( + { + resetTestOutput(); + form.reset({ defaultValue: { documents: [] } }); + setShowResetModal(false); + }} + closeModal={() => setShowResetModal(false)} + /> + )} +
+
+ ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_output.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/tab_output.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/test_pipeline_tabs.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_flyout_tabs/test_pipeline_tabs.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context/test_pipeline_context.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context/test_pipeline_context.tsx index 314964f808e44..a20cde5b1fb72 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context/test_pipeline_context.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context/test_pipeline_context.tsx @@ -51,11 +51,14 @@ type Action = | { type: 'updateIsExecutingPipeline'; payload: Pick; + } + | { + type: 'reset'; }; export interface TestPipelineContext { testPipelineData: TestPipelineData; - setCurrentTestPipelineData: (data: Action) => void; + testPipelineDataDispatch: (data: Action) => void; updateTestOutputPerProcessor: ( documents: Document[] | undefined, processors: DeserializeResult @@ -69,7 +72,7 @@ const DEFAULT_TEST_PIPELINE_CONTEXT = { }, isExecutingPipeline: false, }, - setCurrentTestPipelineData: () => {}, + testPipelineDataDispatch: () => {}, updateTestOutputPerProcessor: () => {}, }; @@ -122,6 +125,10 @@ export const reducer: Reducer = (state, action) => { }; } + if (action.type === 'reset') { + return DEFAULT_TEST_PIPELINE_CONTEXT.testPipelineData; + } + return state; }; @@ -193,7 +200,7 @@ export const TestPipelineContextProvider = ({ children }: { children: React.Reac From cd8d512617b08e119ca87e893e84d42cfe8af80b Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Tue, 29 Sep 2020 16:00:38 +0200 Subject: [PATCH 048/119] [APM] Review feedback from distribution + transaction metrics (#78752) --- .../apm/public/hooks/useTransactionDistribution.ts | 6 ++---- .../basic/tests/transaction_groups/distribution.ts | 10 +++------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts b/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts index 1143639f10f47..cd3e02d155602 100644 --- a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts +++ b/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts @@ -69,13 +69,11 @@ export function useTransactionDistribution(urlParams: IUrlParams) { // selected sample was not found. select a new one: // sorted by total number of requests, but only pick // from buckets that have samples - const bucketsSortedByPreference = response.buckets + const bucketsSortedByCount = response.buckets .filter((bucket) => !isEmpty(bucket.samples)) .sort((bucket) => bucket.count); - const preferredSample = maybe( - bucketsSortedByPreference[0]?.samples[0] - ); + const preferredSample = maybe(bucketsSortedByCount[0]?.samples[0]); history.push({ ...history.location, diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts index 61dc6ea63c252..6ea050d2eea3c 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts @@ -17,14 +17,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { const archiveName = 'apm_8.0.0'; const metadata = archives_metadata[archiveName]; - // url parameters - const { start, end } = metadata; - const uiFilters = {}; - const url = `/api/apm/services/opbeans-java/transaction_groups/distribution?${qs.stringify({ - start, - end, - uiFilters, + start: metadata.start, + end: metadata.end, + uiFilters: {}, transactionName: 'APIRestController#stats', transactionType: 'request', })}`; From cfa50747e7acac468366d5954fab7487eb96a87a Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 29 Sep 2020 10:06:20 -0400 Subject: [PATCH 049/119] [Fleet] Rename Ingest Manager => Fleet, Fleet => Agents in the UI (#78685) --- .../ingest_manager/hooks/use_breadcrumbs.tsx | 27 ++++++------------- .../ingest_manager/layouts/default.tsx | 4 +-- .../managed_instructions.tsx | 6 ++--- .../sections/fleet/components/list_layout.tsx | 4 +-- .../overview/components/agent_section.tsx | 4 +-- .../sections/overview/index.tsx | 2 +- .../plugins/ingest_manager/public/plugin.ts | 2 +- .../translations/translations/ja-JP.json | 8 ------ .../translations/translations/zh-CN.json | 8 ------ 9 files changed, 19 insertions(+), 46 deletions(-) diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_breadcrumbs.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_breadcrumbs.tsx index 1d80495d2b347..b263f46b90a25 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_breadcrumbs.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_breadcrumbs.tsx @@ -11,7 +11,7 @@ import { useCore } from './use_core'; const BASE_BREADCRUMB: ChromeBreadcrumb = { href: pagePathGetters.overview(), text: i18n.translate('xpack.ingestManager.breadcrumbs.appTitle', { - defaultMessage: 'Ingest Manager', + defaultMessage: 'Fleet', }), }; @@ -155,21 +155,15 @@ const breadcrumbGetters: { fleet: () => [ BASE_BREADCRUMB, { - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetPageTitle', { - defaultMessage: 'Fleet', + text: i18n.translate('xpack.ingestManager.breadcrumbs.agentsPageTitle', { + defaultMessage: 'Agents', }), }, ], fleet_agent_list: () => [ BASE_BREADCRUMB, { - href: pagePathGetters.fleet(), - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetPageTitle', { - defaultMessage: 'Fleet', - }), - }, - { - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetAgentsPageTitle', { + text: i18n.translate('xpack.ingestManager.breadcrumbs.agentsPageTitle', { defaultMessage: 'Agents', }), }, @@ -178,12 +172,7 @@ const breadcrumbGetters: { BASE_BREADCRUMB, { href: pagePathGetters.fleet(), - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetPageTitle', { - defaultMessage: 'Fleet', - }), - }, - { - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetAgentsPageTitle', { + text: i18n.translate('xpack.ingestManager.breadcrumbs.agentsPageTitle', { defaultMessage: 'Agents', }), }, @@ -193,12 +182,12 @@ const breadcrumbGetters: { BASE_BREADCRUMB, { href: pagePathGetters.fleet(), - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetPageTitle', { - defaultMessage: 'Fleet', + text: i18n.translate('xpack.ingestManager.breadcrumbs.agentsPageTitle', { + defaultMessage: 'Agents', }), }, { - text: i18n.translate('xpack.ingestManager.breadcrumbs.fleetEnrollmentTokensPageTitle', { + text: i18n.translate('xpack.ingestManager.breadcrumbs.enrollmentTokensPageTitle', { defaultMessage: 'Enrollment tokens', }), }, diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/layouts/default.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/layouts/default.tsx index 7da8330740532..5de47ee4f410b 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/layouts/default.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/layouts/default.tsx @@ -83,8 +83,8 @@ export const DefaultLayout: React.FunctionComponent = ({ disabled={!fleet?.enabled} > diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/managed_instructions.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/managed_instructions.tsx index 04fef7f4b3f21..c840b487a3970 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/managed_instructions.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_enrollment_flyout/managed_instructions.tsx @@ -74,14 +74,14 @@ export const ManagedInstructions = React.memo(({ agentPolicies }) => { ) : ( <> ), diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/list_layout.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/list_layout.tsx index b01dbbd57c16f..278beb5dfe35f 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/list_layout.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/list_layout.tsx @@ -126,7 +126,7 @@ export const ListLayout: React.FunctionComponent<{}> = ({ children }) => {

- +

@@ -134,7 +134,7 @@ export const ListLayout: React.FunctionComponent<{}> = ({ children }) => {

diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_section.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_section.tsx index d7b08bf5ffa3a..482105cdea300 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_section.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/overview/components/agent_section.tsx @@ -25,8 +25,8 @@ export const OverviewAgentSection = () => { return ( {

diff --git a/x-pack/plugins/ingest_manager/public/plugin.ts b/x-pack/plugins/ingest_manager/public/plugin.ts index 5f7bfe865e892..59741ce79dd8b 100644 --- a/x-pack/plugins/ingest_manager/public/plugin.ts +++ b/x-pack/plugins/ingest_manager/public/plugin.ts @@ -78,7 +78,7 @@ export class IngestManagerPlugin core.application.register({ id: PLUGIN_ID, category: DEFAULT_APP_CATEGORIES.management, - title: i18n.translate('xpack.ingestManager.appTitle', { defaultMessage: 'Ingest Manager' }), + title: i18n.translate('xpack.ingestManager.appTitle', { defaultMessage: 'Fleet' }), order: 9020, euiIconType: 'logoElastic', async mount(params: AppMountParameters) { diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 7dd6d478f82b0..79d86a199e906 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -8986,7 +8986,6 @@ "xpack.ingestManager.agentEnrollment.downloadLink": "elastic.co/downloadsに移動", "xpack.ingestManager.agentEnrollment.enrollFleetTabLabel": "フリートに登録", "xpack.ingestManager.agentEnrollment.enrollStandaloneTabLabel": "スタンドアロンモード", - "xpack.ingestManager.agentEnrollment.fleetNotInitializedText": "エージェントを登録する前に、フリートを設定する必要があります。{link}", "xpack.ingestManager.agentEnrollment.flyoutTitle": "エージェントの追加", "xpack.ingestManager.agentEnrollment.managedDescription": "必要なエージェントの数に関係なく、Fleetでは、簡単に一元的に更新を管理し、エージェントにデプロイすることができます。次の手順に従い、Elasticエージェントをダウンロードし、Fleetに登録してください。", "xpack.ingestManager.agentEnrollment.standaloneDescription": "スタンドアロンモードで実行中のエージェントは、構成を変更したい場合には、手動で更新する必要があります。次の手順に従い、スタンドアロンモードでElasticエージェントをダウンロードし、セットアップしてください。", @@ -9068,7 +9067,6 @@ "xpack.ingestManager.alphaMessging.closeFlyoutLabel": "閉じる", "xpack.ingestManager.appNavigation.dataStreamsLinkText": "データセット", "xpack.ingestManager.appNavigation.epmLinkText": "統合", - "xpack.ingestManager.appNavigation.fleetLinkText": "フリート", "xpack.ingestManager.appNavigation.overviewLinkText": "概要", "xpack.ingestManager.appNavigation.sendFeedbackButton": "フィードバックを送信", "xpack.ingestManager.appNavigation.settingsButton": "設定", @@ -9078,9 +9076,6 @@ "xpack.ingestManager.breadcrumbs.allIntegrationsPageTitle": "すべて", "xpack.ingestManager.breadcrumbs.appTitle": "Ingest Manager", "xpack.ingestManager.breadcrumbs.datastreamsPageTitle": "データセット", - "xpack.ingestManager.breadcrumbs.fleetAgentsPageTitle": "エージェント", - "xpack.ingestManager.breadcrumbs.fleetEnrollmentTokensPageTitle": "登録トークン", - "xpack.ingestManager.breadcrumbs.fleetPageTitle": "フリート", "xpack.ingestManager.breadcrumbs.installedIntegrationsPageTitle": "インストール済み", "xpack.ingestManager.breadcrumbs.integrationsPageTitle": "統合", "xpack.ingestManager.breadcrumbs.overviewPageTitle": "概要", @@ -9149,8 +9144,6 @@ "xpack.ingestManager.epmList.noPackagesFoundPlaceholder": "パッケージが見つかりません", "xpack.ingestManager.epmList.searchPackagesPlaceholder": "統合を検索", "xpack.ingestManager.epmList.updatesAvailableFilterLinkText": "更新が可能です", - "xpack.ingestManager.fleet.pageSubtitle": "構成の更新を管理し、任意のサイズのエージェントのグループにデプロイします。", - "xpack.ingestManager.fleet.pageTitle": "フリート", "xpack.ingestManager.genericActionsMenuText": "開く", "xpack.ingestManager.homeIntegration.tutorialDirectory.dismissNoticeButtonText": "メッセージを消去", "xpack.ingestManager.homeIntegration.tutorialDirectory.ingestManagerAppButtonText": "Ingest Managerベータを試す", @@ -9229,7 +9222,6 @@ "xpack.ingestManager.overviewPageDataStreamsPanelTooltip": "エージェントが収集するデータはさまざまなデータセットに整理されます。", "xpack.ingestManager.overviewPageEnrollAgentButton": "エージェントの追加", "xpack.ingestManager.overviewPageFleetPanelAction": "エージェントを表示", - "xpack.ingestManager.overviewPageFleetPanelTitle": "フリート", "xpack.ingestManager.overviewPageFleetPanelTooltip": "Fleetを使用して、中央の場所からエージェントを登録し、構成を管理します。", "xpack.ingestManager.overviewPageIntegrationsPanelAction": "統合を表示", "xpack.ingestManager.overviewPageIntegrationsPanelTitle": "統合", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 9ba587e718a08..3e45418e28a28 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8992,7 +8992,6 @@ "xpack.ingestManager.agentEnrollment.downloadLink": "前往 elastic.co/downloads", "xpack.ingestManager.agentEnrollment.enrollFleetTabLabel": "注册到 Fleet", "xpack.ingestManager.agentEnrollment.enrollStandaloneTabLabel": "独立模式", - "xpack.ingestManager.agentEnrollment.fleetNotInitializedText": "注册代理前需要设置 Fleet。{link}", "xpack.ingestManager.agentEnrollment.flyoutTitle": "添加代理", "xpack.ingestManager.agentEnrollment.managedDescription": "无论是需要一个代理还是需要数以千计的代理,Fleet 允许您轻松地集中管理并部署代理的更新。按照下面的说明下载 Elastic 代理并将代理注册到 Fleet。", "xpack.ingestManager.agentEnrollment.standaloneDescription": "如果希望对以独立模式运行的代理进行配置更改,则需要手动更新。按照下面的说明下载并设置独立模式的 Elastic 代理。", @@ -9074,7 +9073,6 @@ "xpack.ingestManager.alphaMessging.closeFlyoutLabel": "关闭", "xpack.ingestManager.appNavigation.dataStreamsLinkText": "数据集", "xpack.ingestManager.appNavigation.epmLinkText": "集成", - "xpack.ingestManager.appNavigation.fleetLinkText": "Fleet", "xpack.ingestManager.appNavigation.overviewLinkText": "概览", "xpack.ingestManager.appNavigation.sendFeedbackButton": "发送反馈", "xpack.ingestManager.appNavigation.settingsButton": "设置", @@ -9084,9 +9082,6 @@ "xpack.ingestManager.breadcrumbs.allIntegrationsPageTitle": "全部", "xpack.ingestManager.breadcrumbs.appTitle": "采集管理器", "xpack.ingestManager.breadcrumbs.datastreamsPageTitle": "数据集", - "xpack.ingestManager.breadcrumbs.fleetAgentsPageTitle": "代理", - "xpack.ingestManager.breadcrumbs.fleetEnrollmentTokensPageTitle": "注册令牌", - "xpack.ingestManager.breadcrumbs.fleetPageTitle": "Fleet", "xpack.ingestManager.breadcrumbs.installedIntegrationsPageTitle": "已安装", "xpack.ingestManager.breadcrumbs.integrationsPageTitle": "集成", "xpack.ingestManager.breadcrumbs.overviewPageTitle": "概览", @@ -9155,8 +9150,6 @@ "xpack.ingestManager.epmList.noPackagesFoundPlaceholder": "未找到任何软件包", "xpack.ingestManager.epmList.searchPackagesPlaceholder": "搜索集成", "xpack.ingestManager.epmList.updatesAvailableFilterLinkText": "有可用更新", - "xpack.ingestManager.fleet.pageSubtitle": "管理配置更新并将其部署到一组任意大小的代理。", - "xpack.ingestManager.fleet.pageTitle": "Fleet", "xpack.ingestManager.genericActionsMenuText": "打开", "xpack.ingestManager.homeIntegration.tutorialDirectory.dismissNoticeButtonText": "关闭消息", "xpack.ingestManager.homeIntegration.tutorialDirectory.ingestManagerAppButtonText": "试用采集管理器公测版", @@ -9235,7 +9228,6 @@ "xpack.ingestManager.overviewPageDataStreamsPanelTooltip": "您的代理收集的数据组织到各种数据集中。", "xpack.ingestManager.overviewPageEnrollAgentButton": "添加代理", "xpack.ingestManager.overviewPageFleetPanelAction": "查看代理", - "xpack.ingestManager.overviewPageFleetPanelTitle": "Fleet", "xpack.ingestManager.overviewPageFleetPanelTooltip": "使用 Fleet 注册代理并从集中位置管理其配置。", "xpack.ingestManager.overviewPageIntegrationsPanelAction": "查看集成", "xpack.ingestManager.overviewPageIntegrationsPanelTitle": "集成", From e66d8ff35d2f3953f9894e4f186ba62198bd30d2 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Tue, 29 Sep 2020 10:24:21 -0400 Subject: [PATCH 050/119] [Discover] Make _source field not clickable (#78698) --- .../sidebar/discover_field.test.tsx | 67 ++++++++++++++----- .../components/sidebar/discover_field.tsx | 15 ++++- .../public/field_button/field_button.tsx | 59 ++++++++-------- 3 files changed, 92 insertions(+), 49 deletions(-) diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field.test.tsx b/src/plugins/discover/public/application/components/sidebar/discover_field.test.tsx index 6211d302e7d20..8ab296bf1af4f 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_field.test.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_field.test.tsx @@ -51,7 +51,17 @@ jest.mock('../../../kibana_services', () => ({ }), })); -function getComponent(selected = false, showDetails = false, useShortDots = false) { +function getComponent({ + selected = false, + showDetails = false, + useShortDots = false, + field, +}: { + selected?: boolean; + showDetails?: boolean; + useShortDots?: boolean; + field?: IndexPatternField; +}) { const indexPattern = getStubIndexPattern( 'logstash-*', (cfg: any) => cfg, @@ -60,23 +70,25 @@ function getComponent(selected = false, showDetails = false, useShortDots = fals coreMock.createSetup() ); - const field = new IndexPatternField( - { - name: 'bytes', - type: 'number', - esTypes: ['long'], - count: 10, - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - 'bytes' - ); + const finalField = + field ?? + new IndexPatternField( + { + name: 'bytes', + type: 'number', + esTypes: ['long'], + count: 10, + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + 'bytes' + ); const props = { indexPattern, - field, + field: finalField, getDetails: jest.fn(() => ({ buckets: [], error: '', exists: 1, total: true, columns: [] })), onAddFilter: jest.fn(), onAddField: jest.fn(), @@ -91,18 +103,37 @@ function getComponent(selected = false, showDetails = false, useShortDots = fals describe('discover sidebar field', function () { it('should allow selecting fields', function () { - const { comp, props } = getComponent(); + const { comp, props } = getComponent({}); findTestSubject(comp, 'fieldToggle-bytes').simulate('click'); expect(props.onAddField).toHaveBeenCalledWith('bytes'); }); it('should allow deselecting fields', function () { - const { comp, props } = getComponent(true); + const { comp, props } = getComponent({ selected: true }); findTestSubject(comp, 'fieldToggle-bytes').simulate('click'); expect(props.onRemoveField).toHaveBeenCalledWith('bytes'); }); it('should trigger getDetails', function () { - const { comp, props } = getComponent(true); + const { comp, props } = getComponent({ selected: true }); findTestSubject(comp, 'field-bytes-showDetails').simulate('click'); expect(props.getDetails).toHaveBeenCalledWith(props.field); }); + it('should not allow clicking on _source', function () { + const field = new IndexPatternField( + { + name: '_source', + type: '_source', + esTypes: ['_source'], + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + '_source' + ); + const { comp, props } = getComponent({ + selected: true, + field, + }); + findTestSubject(comp, 'field-_source-showDetails').simulate('click'); + expect(props.getDetails).not.toHaveBeenCalled(); + }); }); diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field.tsx b/src/plugins/discover/public/application/components/sidebar/discover_field.tsx index bb330cba68e2e..8ff603884239e 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_field.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_field.tsx @@ -172,6 +172,19 @@ export function DiscoverField({ ); } + if (field.type === '_source') { + return ( + + ); + } + return ( { togglePopover(); }} - buttonProps={{ 'data-test-subj': `field-${field.name}-showDetails` }} + dataTestSubj={`field-${field.name}-showDetails`} fieldIcon={dscFieldIcon} fieldAction={actionButton} fieldName={fieldName} diff --git a/src/plugins/kibana_react/public/field_button/field_button.tsx b/src/plugins/kibana_react/public/field_button/field_button.tsx index 26e6453e4c48b..97d1b32746120 100644 --- a/src/plugins/kibana_react/public/field_button/field_button.tsx +++ b/src/plugins/kibana_react/public/field_button/field_button.tsx @@ -19,8 +19,7 @@ import './field_button.scss'; import classNames from 'classnames'; -import React, { ReactNode, HTMLAttributes, ButtonHTMLAttributes } from 'react'; -import { CommonProps } from '@elastic/eui'; +import React, { ReactNode, HTMLAttributes } from 'react'; export interface FieldButtonProps extends HTMLAttributes { /** @@ -54,13 +53,10 @@ export interface FieldButtonProps extends HTMLAttributes { size?: ButtonSize; className?: string; /** - * The component always renders a ` +
+ {onClick ? ( + + ) : ( +
+ {fieldIcon && {fieldIcon}} + {fieldName && {fieldName}} + {fieldInfoIcon &&
{fieldInfoIcon}
} +
+ )} + {fieldAction &&
{fieldAction}
}
); From f73bc48b3bbbb5ad2042c1aa267aea2150b7b742 Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 29 Sep 2020 08:29:22 -0600 Subject: [PATCH 051/119] [QA][Code Coverage] Upload the coverage static site before ingestion (#78695) --- .ci/Jenkinsfile_coverage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/Jenkinsfile_coverage b/.ci/Jenkinsfile_coverage index db19a0a5b249d..1c1d21024ce91 100644 --- a/.ci/Jenkinsfile_coverage +++ b/.ci/Jenkinsfile_coverage @@ -34,8 +34,8 @@ def handleIngestion(timestamp) { kibanaCoverage.collectVcsInfo("### Collect VCS Info") kibanaCoverage.generateReports("### Merge coverage reports") kibanaCoverage.uploadCombinedReports() - kibanaCoverage.ingest(env.JOB_NAME, BUILD_NUMBER, BUILD_URL, timestamp, previousSha, teamAssignmentsPath(), '### Generate Team Assignments && Ingest') kibanaCoverage.uploadCoverageStaticSite(timestamp) + kibanaCoverage.ingest(env.JOB_NAME, BUILD_NUMBER, BUILD_URL, timestamp, previousSha, teamAssignmentsPath(), '### Generate Team Assignments && Ingest') } def handlePreviousSha() { From 9e9a48be62c633d97a00d3de33aa8b875e2eb86a Mon Sep 17 00:00:00 2001 From: nnamdifrankie <56440728+nnamdifrankie@users.noreply.github.com> Date: Tue, 29 Sep 2020 10:30:04 -0400 Subject: [PATCH 052/119] 78024: move transform out of dataset (#78216) * 78024: move transform out of dataset * Change index prefix * 78024: fix tests, remove vestiges * 78024: remove index defined in the transform when transform is removed. * 78024: clean up * 78024: fix build * 78024: add comment * 78024: remove test I added * 78024: more removal, will add in next PR Co-authored-by: Elastic Machine --- .../epm/elasticsearch/transform/install.ts | 78 +++-------- .../epm/elasticsearch/transform/remove.ts | 22 +++ .../elasticsearch/transform/transform.test.ts | 125 ++++++++++++++---- .../server/services/epm/packages/install.ts | 4 +- .../common/endpoint/constants.ts | 4 +- .../endpoint/routes/metadata/metadata.test.ts | 3 +- .../apis/epm/install_remove_assets.ts | 4 +- .../transform/test}/default.json | 0 .../apps/endpoint/endpoint_list.ts | 14 +- .../apis/data_stream_helper.ts | 4 - .../apis/metadata.ts | 3 - 11 files changed, 154 insertions(+), 107 deletions(-) rename x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/{dataset/test_logs/elasticsearch/transform => elasticsearch/transform/test}/default.json (100%) diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/install.ts index dfa03ec9d527d..d8aff10492595 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/install.ts @@ -9,7 +9,6 @@ import { SavedObjectsClientContract } from 'kibana/server'; import { saveInstalledEsRefs } from '../../packages/install'; import * as Registry from '../../registry'; import { - Dataset, ElasticsearchAssetType, EsAssetReference, RegistryPackage, @@ -24,12 +23,7 @@ interface TransformInstallation { content: string; } -interface TransformPathDataset { - path: string; - dataset: Dataset; -} - -export const installTransformForDataset = async ( +export const installTransform = async ( registryPackage: RegistryPackage, paths: string[], callCluster: CallESAsCurrentUser, @@ -51,53 +45,32 @@ export const installTransformForDataset = async ( callCluster, previousInstalledTransformEsAssets.map((asset) => asset.id) ); - // install the latest dataset - const datasets = registryPackage.datasets; - if (!datasets?.length) return []; - const installNameSuffix = `${registryPackage.version}`; + const installNameSuffix = `${registryPackage.version}`; const transformPaths = paths.filter((path) => isTransform(path)); let installedTransforms: EsAssetReference[] = []; if (transformPaths.length > 0) { - const transformPathDatasets = datasets.reduce((acc, dataset) => { - transformPaths.forEach((path) => { - if (isDatasetTransform(path, dataset.path)) { - acc.push({ path, dataset }); - } + const transformRefs = transformPaths.reduce((acc, path) => { + acc.push({ + id: getTransformNameForInstallation(registryPackage, path, installNameSuffix), + type: ElasticsearchAssetType.transform, }); + return acc; }, []); - const transformRefs = transformPathDatasets.reduce( - (acc, transformPathDataset) => { - if (transformPathDataset) { - acc.push({ - id: getTransformNameForInstallation(transformPathDataset, installNameSuffix), - type: ElasticsearchAssetType.transform, - }); - } - return acc; - }, - [] - ); - // get and save transform refs before installing transforms await saveInstalledEsRefs(savedObjectsClient, registryPackage.name, transformRefs); - const transforms: TransformInstallation[] = transformPathDatasets.map( - (transformPathDataset: TransformPathDataset) => { - return { - installationName: getTransformNameForInstallation( - transformPathDataset, - installNameSuffix - ), - content: getAsset(transformPathDataset.path).toString('utf-8'), - }; - } - ); + const transforms: TransformInstallation[] = transformPaths.map((path: string) => { + return { + installationName: getTransformNameForInstallation(registryPackage, path, installNameSuffix), + content: getAsset(path).toString('utf-8'), + }; + }); const installationPromises = transforms.map(async (transform) => { - return installTransform({ callCluster, transform }); + return handleTransformInstall({ callCluster, transform }); }); installedTransforms = await Promise.all(installationPromises).then((results) => results.flat()); @@ -123,20 +96,10 @@ export const installTransformForDataset = async ( const isTransform = (path: string) => { const pathParts = Registry.pathParts(path); - return pathParts.type === ElasticsearchAssetType.transform; + return !path.endsWith('/') && pathParts.type === ElasticsearchAssetType.transform; }; -const isDatasetTransform = (path: string, datasetName: string) => { - const pathParts = Registry.pathParts(path); - return ( - !path.endsWith('/') && - pathParts.type === ElasticsearchAssetType.transform && - pathParts.dataset !== undefined && - datasetName === pathParts.dataset - ); -}; - -async function installTransform({ +async function handleTransformInstall({ callCluster, transform, }: { @@ -160,9 +123,12 @@ async function installTransform({ } const getTransformNameForInstallation = ( - transformDataset: TransformPathDataset, + registryPackage: RegistryPackage, + path: string, suffix: string ) => { - const filename = transformDataset?.path.split('/')?.pop()?.split('.')[0]; - return `${transformDataset.dataset.type}-${transformDataset.dataset.name}-${filename}-${suffix}`; + const pathPaths = path.split('/'); + const filename = pathPaths?.pop()?.split('.')[0]; + const folderName = pathPaths?.pop(); + return `${registryPackage.name}.${folderName}-${filename}-${suffix}`; }; diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/remove.ts b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/remove.ts index a527d05f1c49b..02d5dfc64d07d 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/remove.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/remove.ts @@ -25,6 +25,19 @@ export const deleteTransforms = async ( ) => { await Promise.all( transformIds.map(async (transformId) => { + // get the index the transform + const transformResponse: { + count: number; + transforms: Array<{ + dest: { + index: string; + }; + }>; + } = await callCluster('transport.request', { + method: 'GET', + path: `/_transform/${transformId}`, + }); + await stopTransforms([transformId], callCluster); await callCluster('transport.request', { method: 'DELETE', @@ -32,6 +45,15 @@ export const deleteTransforms = async ( path: `/_transform/${transformId}`, ignore: [404], }); + + // expect this to be 1 + for (const transform of transformResponse.transforms) { + await callCluster('transport.request', { + method: 'DELETE', + path: `/${transform?.dest?.index}`, + ignore: [404], + }); + } }) ); }; diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/transform.test.ts b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/transform.test.ts index c43a33df2db61..7cb507d15679e 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/transform.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/transform/transform.test.ts @@ -14,7 +14,7 @@ jest.mock('./common', () => { }; }); -import { installTransformForDataset } from './install'; +import { installTransform } from './install'; import { ILegacyScopedClusterClient, SavedObject, SavedObjectsClientContract } from 'kibana/server'; import { ElasticsearchAssetType, Installation, RegistryPackage } from '../../../../types'; import { getInstallation, getInstallationObject } from '../../packages'; @@ -47,7 +47,7 @@ describe('test transform install', () => { type: ElasticsearchAssetType.ingestPipeline, }, { - id: 'metrics-endpoint.metadata_current-default-0.15.0-dev.0', + id: 'endpoint.metadata_current-default-0.15.0-dev.0', type: ElasticsearchAssetType.transform, }, ], @@ -60,15 +60,15 @@ describe('test transform install', () => { type: ElasticsearchAssetType.ingestPipeline, }, { - id: 'metrics-endpoint.metadata_current-default-0.15.0-dev.0', + id: 'endpoint.metadata_current-default-0.15.0-dev.0', type: ElasticsearchAssetType.transform, }, { - id: 'metrics-endpoint.metadata_current-default-0.16.0-dev.0', + id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: ElasticsearchAssetType.transform, }, { - id: 'metrics-endpoint.metadata-default-0.16.0-dev.0', + id: 'endpoint.metadata-default-0.16.0-dev.0', type: ElasticsearchAssetType.transform, }, ], @@ -91,7 +91,26 @@ describe('test transform install', () => { } as unknown) as SavedObject) ); - await installTransformForDataset( + legacyScopedClusterClient.callAsCurrentUser.mockReturnValueOnce( + Promise.resolve({ + count: 1, + transforms: [ + { + dest: { + index: 'index', + }, + }, + ], + } as { + count: number; + transforms: Array<{ + dest: { + index: string; + }; + }>; + }) + ); + await installTransform( ({ name: 'endpoint', version: '0.16.0-dev.0', @@ -128,18 +147,26 @@ describe('test transform install', () => { } as unknown) as RegistryPackage, [ 'endpoint-0.16.0-dev.0/dataset/policy/elasticsearch/ingest_pipeline/default.json', - 'endpoint-0.16.0-dev.0/dataset/metadata/elasticsearch/transform/default.json', - 'endpoint-0.16.0-dev.0/dataset/metadata_current/elasticsearch/transform/default.json', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata/default.json', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', ], legacyScopedClusterClient.callAsCurrentUser, savedObjectsClient ); + expect(legacyScopedClusterClient.callAsCurrentUser.mock.calls).toEqual([ + [ + 'transport.request', + { + method: 'GET', + path: '/_transform/endpoint.metadata_current-default-0.15.0-dev.0', + }, + ], [ 'transport.request', { method: 'POST', - path: '/_transform/metrics-endpoint.metadata_current-default-0.15.0-dev.0/_stop', + path: '/_transform/endpoint.metadata_current-default-0.15.0-dev.0/_stop', query: 'force=true', ignore: [404], }, @@ -149,7 +176,15 @@ describe('test transform install', () => { { method: 'DELETE', query: 'force=true', - path: '/_transform/metrics-endpoint.metadata_current-default-0.15.0-dev.0', + path: '/_transform/endpoint.metadata_current-default-0.15.0-dev.0', + ignore: [404], + }, + ], + [ + 'transport.request', + { + method: 'DELETE', + path: '/index', ignore: [404], }, ], @@ -157,7 +192,7 @@ describe('test transform install', () => { 'transport.request', { method: 'PUT', - path: '/_transform/metrics-endpoint.metadata-default-0.16.0-dev.0', + path: '/_transform/endpoint.metadata-default-0.16.0-dev.0', query: 'defer_validation=true', body: '{"content": "data"}', }, @@ -166,7 +201,7 @@ describe('test transform install', () => { 'transport.request', { method: 'PUT', - path: '/_transform/metrics-endpoint.metadata_current-default-0.16.0-dev.0', + path: '/_transform/endpoint.metadata_current-default-0.16.0-dev.0', query: 'defer_validation=true', body: '{"content": "data"}', }, @@ -175,14 +210,14 @@ describe('test transform install', () => { 'transport.request', { method: 'POST', - path: '/_transform/metrics-endpoint.metadata-default-0.16.0-dev.0/_start', + path: '/_transform/endpoint.metadata-default-0.16.0-dev.0/_start', }, ], [ 'transport.request', { method: 'POST', - path: '/_transform/metrics-endpoint.metadata_current-default-0.16.0-dev.0/_start', + path: '/_transform/endpoint.metadata_current-default-0.16.0-dev.0/_start', }, ], ]); @@ -198,15 +233,15 @@ describe('test transform install', () => { type: 'ingest_pipeline', }, { - id: 'metrics-endpoint.metadata_current-default-0.15.0-dev.0', + id: 'endpoint.metadata_current-default-0.15.0-dev.0', type: 'transform', }, { - id: 'metrics-endpoint.metadata-default-0.16.0-dev.0', + id: 'endpoint.metadata-default-0.16.0-dev.0', type: 'transform', }, { - id: 'metrics-endpoint.metadata_current-default-0.16.0-dev.0', + id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform', }, ], @@ -222,11 +257,11 @@ describe('test transform install', () => { type: 'ingest_pipeline', }, { - id: 'metrics-endpoint.metadata_current-default-0.16.0-dev.0', + id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform', }, { - id: 'metrics-endpoint.metadata-default-0.16.0-dev.0', + id: 'endpoint.metadata-default-0.16.0-dev.0', type: 'transform', }, ], @@ -263,7 +298,7 @@ describe('test transform install', () => { >) ); legacyScopedClusterClient.callAsCurrentUser = jest.fn(); - await installTransformForDataset( + await installTransform( ({ name: 'endpoint', version: '0.16.0-dev.0', @@ -284,7 +319,7 @@ describe('test transform install', () => { }, ], } as unknown) as RegistryPackage, - ['endpoint-0.16.0-dev.0/dataset/metadata_current/elasticsearch/transform/default.json'], + ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], legacyScopedClusterClient.callAsCurrentUser, savedObjectsClient ); @@ -294,7 +329,7 @@ describe('test transform install', () => { 'transport.request', { method: 'PUT', - path: '/_transform/metrics-endpoint.metadata_current-default-0.16.0-dev.0', + path: '/_transform/endpoint.metadata_current-default-0.16.0-dev.0', query: 'defer_validation=true', body: '{"content": "data"}', }, @@ -303,7 +338,7 @@ describe('test transform install', () => { 'transport.request', { method: 'POST', - path: '/_transform/metrics-endpoint.metadata_current-default-0.16.0-dev.0/_start', + path: '/_transform/endpoint.metadata_current-default-0.16.0-dev.0/_start', }, ], ]); @@ -313,7 +348,7 @@ describe('test transform install', () => { 'endpoint', { installed_es: [ - { id: 'metrics-endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform' }, + { id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform' }, ], }, ], @@ -324,7 +359,7 @@ describe('test transform install', () => { const previousInstallation: Installation = ({ installed_es: [ { - id: 'metrics-endpoint.metadata-current-default-0.15.0-dev.0', + id: 'endpoint.metadata-current-default-0.15.0-dev.0', type: ElasticsearchAssetType.transform, }, ], @@ -346,7 +381,26 @@ describe('test transform install', () => { } as unknown) as SavedObject) ); - await installTransformForDataset( + legacyScopedClusterClient.callAsCurrentUser.mockReturnValueOnce( + Promise.resolve({ + count: 1, + transforms: [ + { + dest: { + index: 'index', + }, + }, + ], + } as { + count: number; + transforms: Array<{ + dest: { + index: string; + }; + }>; + }) + ); + await installTransform( ({ name: 'endpoint', version: '0.16.0-dev.0', @@ -387,11 +441,18 @@ describe('test transform install', () => { ); expect(legacyScopedClusterClient.callAsCurrentUser.mock.calls).toEqual([ + [ + 'transport.request', + { + method: 'GET', + path: '/_transform/endpoint.metadata-current-default-0.15.0-dev.0', + }, + ], [ 'transport.request', { method: 'POST', - path: '/_transform/metrics-endpoint.metadata-current-default-0.15.0-dev.0/_stop', + path: '/_transform/endpoint.metadata-current-default-0.15.0-dev.0/_stop', query: 'force=true', ignore: [404], }, @@ -401,7 +462,15 @@ describe('test transform install', () => { { method: 'DELETE', query: 'force=true', - path: '/_transform/metrics-endpoint.metadata-current-default-0.15.0-dev.0', + path: '/_transform/endpoint.metadata-current-default-0.15.0-dev.0', + ignore: [404], + }, + ], + [ + 'transport.request', + { + method: 'DELETE', + path: '/index', ignore: [404], }, ], diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts index 6187f683a3a80..d501b05d96c1c 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/install.ts @@ -44,7 +44,7 @@ import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; import { deleteKibanaSavedObjectsAssets, removeInstallation } from './remove'; import { IngestManagerError, PackageOutdatedError } from '../../../errors'; import { getPackageSavedObjects } from './get'; -import { installTransformForDataset } from '../elasticsearch/transform/install'; +import { installTransform } from '../elasticsearch/transform/install'; import { appContextService } from '../../app_context'; export async function installLatestPackage(options: { @@ -325,7 +325,7 @@ export async function installPackage({ // update current backing indices of each data stream await updateCurrentWriteIndices(callCluster, installedTemplates); - const installedTransforms = await installTransformForDataset( + const installedTransforms = await installTransform( registryPackageInfo, paths, callCluster, diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/plugins/security_solution/common/endpoint/constants.ts index 74ccf9105ba6b..4cfa9347b2b58 100644 --- a/x-pack/plugins/security_solution/common/endpoint/constants.ts +++ b/x-pack/plugins/security_solution/common/endpoint/constants.ts @@ -7,8 +7,8 @@ export const eventsIndexPattern = 'logs-endpoint.events.*'; export const alertsIndexPattern = 'logs-endpoint.alerts-*'; export const metadataIndexPattern = 'metrics-endpoint.metadata-*'; -export const metadataCurrentIndexPattern = 'metrics-endpoint.metadata_current-*'; -export const metadataTransformPrefix = 'metrics-endpoint.metadata-current-default'; +export const metadataCurrentIndexPattern = 'metrics-endpoint.metadata_current_*'; +export const metadataTransformPrefix = 'endpoint.metadata_current-default'; export const policyIndexPattern = 'metrics-endpoint.policy-*'; export const telemetryIndexPattern = 'metrics-endpoint.telemetry-*'; export const LIMITED_CONCURRENCY_ENDPOINT_ROUTE_TAG = 'endpoint:limited-concurrency'; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts index 299939eb92444..227a3e6fd9657 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts @@ -42,6 +42,7 @@ import { } from '../../../../../ingest_manager/common/types/models'; import { createV1SearchResponse, createV2SearchResponse } from './support/test_support'; import { PackageService } from '../../../../../ingest_manager/server/services'; +import { metadataTransformPrefix } from '../../../../common/endpoint/constants'; describe('test endpoint route', () => { let routerMock: jest.Mocked; @@ -175,7 +176,7 @@ describe('test endpoint route', () => { type: ElasticsearchAssetType.indexTemplate, }, { - id: 'metrics-endpoint.metadata-current-default-0.16.0-dev.0', + id: `${metadataTransformPrefix}-0.16.0-dev.0`, type: ElasticsearchAssetType.transform, }, ]) diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/install_remove_assets.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/install_remove_assets.ts index 492af399d5e30..a067501766873 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/epm/install_remove_assets.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/install_remove_assets.ts @@ -88,7 +88,7 @@ export default function (providerContext: FtrProviderContext) { it('should have installed the transform components', async function () { const res = await es.transport.request({ method: 'GET', - path: `/_transform/${logsTemplateName}-default-${pkgVersion}`, + path: `/_transform/${pkgName}-test-default-${pkgVersion}`, }); expect(res.statusCode).equal(200); }); @@ -253,7 +253,7 @@ export default function (providerContext: FtrProviderContext) { const res = await es.transport.request( { method: 'GET', - path: `/_transform/${logsTemplateName}-default-${pkgVersion}`, + path: `/_transform/${pkgName}-test-default-${pkgVersion}`, }, { ignore: [404], diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/elasticsearch/transform/default.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/transform/test/default.json similarity index 100% rename from x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/elasticsearch/transform/default.json rename to x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/transform/test/default.json diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts index c9d2b7a21d0da..569378df5930a 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts @@ -8,7 +8,6 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; import { - deleteMetadataCurrentStream, deleteMetadataStream, deleteAllDocsFromMetadataCurrentIndex, } from '../../../security_solution_endpoint_api_int/apis/data_stream_helper'; @@ -73,13 +72,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('when initially navigating to page', () => { before(async () => { await deleteMetadataStream(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); await pageObjects.endpoint.navigateToEndpointList(); }); after(async () => { await deleteMetadataStream(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); }); @@ -88,8 +85,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); it('finds data after load and polling', async () => { - await esArchiver.load('endpoint/metadata/destination_index', { useCreate: true }); - await pageObjects.endpoint.waitForTableToHaveData('endpointListTable', 1100); + await esArchiver.load('endpoint/metadata/api_feature', { useCreate: true }); + await pageObjects.endpoint.waitForTableToHaveData('endpointListTable', 100000); const tableData = await pageObjects.endpointPageUtils.tableData('endpointListTable'); expect(tableData).to.eql(expectedData); }); @@ -97,12 +94,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('when there is data,', () => { before(async () => { - await esArchiver.load('endpoint/metadata/destination_index', { useCreate: true }); + await esArchiver.load('endpoint/metadata/api_feature', { useCreate: true }); + await sleep(100000); await pageObjects.endpoint.navigateToEndpointList(); }); after(async () => { await deleteMetadataStream(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); }); @@ -215,12 +212,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('displays the correct table data for the kql queries', () => { before(async () => { - await esArchiver.load('endpoint/metadata/destination_index', { useCreate: true }); + await esArchiver.load('endpoint/metadata/api_feature', { useCreate: true }); await pageObjects.endpoint.navigateToEndpointList(); }); after(async () => { await deleteMetadataStream(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); }); it('for the kql query: na, table shows an empty list', async () => { diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/data_stream_helper.ts b/x-pack/test/security_solution_endpoint_api_int/apis/data_stream_helper.ts index f1c05b2fc8f20..8e5f8c71068a8 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/data_stream_helper.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/data_stream_helper.ts @@ -51,10 +51,6 @@ export async function deleteMetadataStream(getService: (serviceName: 'es') => Cl await deleteDataStream(getService, metadataIndexPattern); } -export async function deleteMetadataCurrentStream(getService: (serviceName: 'es') => Client) { - await deleteDataStream(getService, metadataCurrentIndexPattern); -} - export async function deleteAllDocsFromMetadataIndex(getService: (serviceName: 'es') => Client) { await deleteAllDocsFromIndex(getService, metadataIndexPattern); } diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts b/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts index 2ab12e1ff3aae..ad0cbd765f1fc 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts @@ -7,7 +7,6 @@ import expect from '@kbn/expect/expect.js'; import { FtrProviderContext } from '../ftr_provider_context'; import { deleteAllDocsFromMetadataCurrentIndex, - deleteMetadataCurrentStream, deleteAllDocsFromMetadataIndex, deleteMetadataStream, } from './data_stream_helper'; @@ -29,7 +28,6 @@ export default function ({ getService }: FtrProviderContext) { it('metadata api should return empty result when index is empty', async () => { await deleteMetadataStream(getService); await deleteAllDocsFromMetadataIndex(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); const { body } = await supertest .post(`${METADATA_REQUEST_ROUTE}`) @@ -54,7 +52,6 @@ export default function ({ getService }: FtrProviderContext) { after(async () => { await deleteMetadataStream(getService); await deleteAllDocsFromMetadataIndex(getService); - await deleteMetadataCurrentStream(getService); await deleteAllDocsFromMetadataCurrentIndex(getService); }); it('metadata api should return one entry for each host with default paging', async () => { From 9ea4984016f59d5d2116040789f3be523b88d1ce Mon Sep 17 00:00:00 2001 From: Andrew Wilkins Date: Tue, 29 Sep 2020 22:38:31 +0800 Subject: [PATCH 053/119] update apm index pattern (#78732) --- src/plugins/apm_oss/server/tutorial/index_pattern.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/apm_oss/server/tutorial/index_pattern.json b/src/plugins/apm_oss/server/tutorial/index_pattern.json index bb42b223c85ed..dbceaacfb4a27 100644 --- a/src/plugins/apm_oss/server/tutorial/index_pattern.json +++ b/src/plugins/apm_oss/server/tutorial/index_pattern.json @@ -1,11 +1,11 @@ { "attributes": { - "fieldFormatMap": "{\"client.bytes\":{\"id\":\"bytes\"},\"client.nat.port\":{\"id\":\"string\"},\"client.port\":{\"id\":\"string\"},\"destination.bytes\":{\"id\":\"bytes\"},\"destination.nat.port\":{\"id\":\"string\"},\"destination.port\":{\"id\":\"string\"},\"event.duration\":{\"id\":\"duration\",\"params\":{\"inputFormat\":\"nanoseconds\",\"outputFormat\":\"asMilliseconds\",\"outputPrecision\":1}},\"event.sequence\":{\"id\":\"string\"},\"event.severity\":{\"id\":\"string\"},\"http.request.body.bytes\":{\"id\":\"bytes\"},\"http.request.bytes\":{\"id\":\"bytes\"},\"http.response.body.bytes\":{\"id\":\"bytes\"},\"http.response.bytes\":{\"id\":\"bytes\"},\"http.response.status_code\":{\"id\":\"string\"},\"log.syslog.facility.code\":{\"id\":\"string\"},\"log.syslog.priority\":{\"id\":\"string\"},\"network.bytes\":{\"id\":\"bytes\"},\"package.size\":{\"id\":\"string\"},\"process.parent.pgid\":{\"id\":\"string\"},\"process.parent.pid\":{\"id\":\"string\"},\"process.parent.ppid\":{\"id\":\"string\"},\"process.parent.thread.id\":{\"id\":\"string\"},\"process.pgid\":{\"id\":\"string\"},\"process.pid\":{\"id\":\"string\"},\"process.ppid\":{\"id\":\"string\"},\"process.thread.id\":{\"id\":\"string\"},\"server.bytes\":{\"id\":\"bytes\"},\"server.nat.port\":{\"id\":\"string\"},\"server.port\":{\"id\":\"string\"},\"source.bytes\":{\"id\":\"bytes\"},\"source.nat.port\":{\"id\":\"string\"},\"source.port\":{\"id\":\"string\"},\"system.cpu.total.norm.pct\":{\"id\":\"percent\"},\"system.memory.actual.free\":{\"id\":\"bytes\"},\"system.memory.total\":{\"id\":\"bytes\"},\"system.process.cgroup.memory.mem.limit.bytes\":{\"id\":\"bytes\"},\"system.process.cgroup.memory.mem.usage.bytes\":{\"id\":\"bytes\"},\"system.process.cgroup.memory.stats.inactive_file.bytes\":{\"id\":\"bytes\"},\"system.process.cpu.total.norm.pct\":{\"id\":\"percent\"},\"system.process.memory.rss.bytes\":{\"id\":\"bytes\"},\"system.process.memory.size\":{\"id\":\"bytes\"},\"url.port\":{\"id\":\"string\"},\"view spans\":{\"id\":\"url\",\"params\":{\"labelTemplate\":\"View Spans\"}}}", - "fields": "[{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"@timestamp\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tags\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.ephemeral_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.account.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.availability_zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.instance.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.instance.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.machine.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.provider\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.region\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.image.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.image.tag\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.runtime\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.class\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.data\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.ttl\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.header_flags\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.op_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.class\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.subdomain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.resolved_ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.response_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"ecs.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":4,\"doc_values\":true,\"indexed\":true,\"name\":\"error.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.stack_trace\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.stack_trace.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.action\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.created\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.dataset\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.duration\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.end\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.ingested\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.kind\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.module\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.outcome\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.provider\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.risk_score\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.risk_score_norm\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.sequence\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.severity\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.timezone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.url\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.accessed\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.attributes\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.created\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.ctime\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.device\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.drive_letter\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.extension\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.gid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.group\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.inode\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mime_type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mode\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mtime\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.owner\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.path.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.target_path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.target_path.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.uid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.content\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.content.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.method\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.referrer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.content\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.content.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.status_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.level\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.logger\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.file.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.file.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.facility.code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.facility.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.priority\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.severity.code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.severity.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.application\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.community_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.direction\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.forwarded_ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.iana_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.transport\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.vendor\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.build_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.checksum\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.install_scope\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.installed\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.license\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.args\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.args_count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.command_line\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.command_line.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.entity_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.executable\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.executable.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.exit_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.args\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.args_count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.command_line\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.command_line.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.entity_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.executable\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.executable.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.exit_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pgid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.ppid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.thread.id\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.thread.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.title\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.title.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.working_directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.working_directory.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pgid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.ppid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.thread.id\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.thread.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.title\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.title.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.working_directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.working_directory.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.strings\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.hive\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.key\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.value\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.user\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.author\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.license\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.ruleset\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.uuid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.ephemeral_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.node.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.state\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.framework\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.cipher\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.certificate\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.certificate_chain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.issuer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.ja3\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.server_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.subject\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.supported_ciphers\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.established\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.next_protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.resumed\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.certificate\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.certificate_chain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.issuer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.ja3s\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.subject\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.version_protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tracing.trace.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tracing.transaction.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.extension\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.fragment\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.original.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.password\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.query\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.scheme\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.username\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.device.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.original.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.classification\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.description.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.enumeration\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.report_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.scanner.vendor\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.base\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.environmental\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.temporal\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.severity\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"fields\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"timeseries.instance\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.project.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.image.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"docker.container.labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.containerized\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.build\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.codename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.pod.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.pod.uid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.namespace\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.node.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.labels.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.annotations.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.replicaset.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.deployment.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.statefulset.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.container.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.container.image\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"processor.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"processor.event\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"timestamp.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"enabled\":false,\"indexed\":false,\"name\":\"http.request.headers\",\"scripted\":false,\"searchable\":false},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.finished\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"enabled\":false,\"indexed\":false,\"name\":\"http.response.headers\",\"scripted\":false,\"searchable\":false},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.environment\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.language.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.language.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.runtime.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.runtime.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.framework.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.framework.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.sampled\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.self_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.self_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.breakdown.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.subtype\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.self_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.self_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"trace.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"parent.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.listening\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.version_major\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"experimental\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.account.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.project.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.culprit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.grouping_key\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.module\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":4,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.handled\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.level\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.logger_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.param_message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.cpu.total.norm.pct\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.memory.total\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.memory.actual.free\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cpu.total.norm.pct\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.memory.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.memory.rss.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cgroup.memory.mem.limit.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cgroup.memory.mem.usage.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cgroup.memory.stats.inactive_file.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.root\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.duration\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.cpu.ns\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.samples.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.alloc_objects.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.alloc_space.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.inuse_objects.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.inuse_space.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.filename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.filename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.service.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.bundle_filepath\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"view spans\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"child.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.action\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.start.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.duration.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.sync\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.db.link\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.db.rows_affected\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.resource\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.message.queue.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.message.age.ms\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.result\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.marks\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.marks.*.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.cls\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.fid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.tbt\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.span_count.dropped\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.message.queue.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.message.age.ms\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.histogram\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"metricset.period\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.response_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.response_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_id\",\"scripted\":false,\"searchable\":false,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_index\",\"scripted\":false,\"searchable\":false,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_score\",\"scripted\":false,\"searchable\":false,\"type\":\"number\"}]", + "fieldFormatMap": "{\"client.bytes\":{\"id\":\"bytes\"},\"client.nat.port\":{\"id\":\"string\"},\"client.port\":{\"id\":\"string\"},\"destination.bytes\":{\"id\":\"bytes\"},\"destination.nat.port\":{\"id\":\"string\"},\"destination.port\":{\"id\":\"string\"},\"event.duration\":{\"id\":\"duration\",\"params\":{\"inputFormat\":\"nanoseconds\",\"outputFormat\":\"asMilliseconds\",\"outputPrecision\":1}},\"event.sequence\":{\"id\":\"string\"},\"event.severity\":{\"id\":\"string\"},\"http.request.body.bytes\":{\"id\":\"bytes\"},\"http.request.bytes\":{\"id\":\"bytes\"},\"http.response.body.bytes\":{\"id\":\"bytes\"},\"http.response.bytes\":{\"id\":\"bytes\"},\"http.response.status_code\":{\"id\":\"string\"},\"log.syslog.facility.code\":{\"id\":\"string\"},\"log.syslog.priority\":{\"id\":\"string\"},\"network.bytes\":{\"id\":\"bytes\"},\"package.size\":{\"id\":\"string\"},\"process.parent.pgid\":{\"id\":\"string\"},\"process.parent.pid\":{\"id\":\"string\"},\"process.parent.ppid\":{\"id\":\"string\"},\"process.parent.thread.id\":{\"id\":\"string\"},\"process.pgid\":{\"id\":\"string\"},\"process.pid\":{\"id\":\"string\"},\"process.ppid\":{\"id\":\"string\"},\"process.thread.id\":{\"id\":\"string\"},\"server.bytes\":{\"id\":\"bytes\"},\"server.nat.port\":{\"id\":\"string\"},\"server.port\":{\"id\":\"string\"},\"source.bytes\":{\"id\":\"bytes\"},\"source.nat.port\":{\"id\":\"string\"},\"source.port\":{\"id\":\"string\"},\"system.cpu.total.norm.pct\":{\"id\":\"percent\"},\"system.memory.actual.free\":{\"id\":\"bytes\"},\"system.memory.total\":{\"id\":\"bytes\"},\"system.process.cgroup.memory.mem.limit.bytes\":{\"id\":\"bytes\"},\"system.process.cgroup.memory.mem.usage.bytes\":{\"id\":\"bytes\"},\"system.process.cpu.total.norm.pct\":{\"id\":\"percent\"},\"system.process.memory.rss.bytes\":{\"id\":\"bytes\"},\"system.process.memory.size\":{\"id\":\"bytes\"},\"url.port\":{\"id\":\"string\"},\"view spans\":{\"id\":\"url\",\"params\":{\"labelTemplate\":\"View Spans\"}}}", + "fields": "[{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"@timestamp\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tags\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.build.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.ephemeral_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"client.user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.account.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.account.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.availability_zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.instance.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.instance.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.machine.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.project.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.project.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.provider\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.region\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.image.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.image.tag\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"container.runtime\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"destination.user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.imphash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dll.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.class\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.data\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.ttl\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.answers.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.header_flags\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.op_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.class\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.subdomain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.question.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.resolved_ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.response_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"dns.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"ecs.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":4,\"doc_values\":true,\"indexed\":true,\"name\":\"error.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"error.stack_trace\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"error.stack_trace.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.action\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.created\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.dataset\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.duration\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.end\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.ingested\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.kind\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.module\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"event.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.outcome\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.provider\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.reason\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.risk_score\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.risk_score_norm\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.sequence\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.severity\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.timezone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"event.url\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.accessed\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.attributes\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.created\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.ctime\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.device\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.drive_letter\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.extension\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.gid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.group\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.inode\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mime_type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mode\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.mtime\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.owner\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.path.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.imphash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.target_path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.target_path.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.uid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.alternative_names\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.issuer.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.public_key_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.public_key_curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"file.x509.public_key_exponent\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.public_key_size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.signature_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.subject.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"file.x509.version_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.content\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.body.content.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.method\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.request.referrer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.content\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.body.content.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.status_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.file.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.level\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.logger\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.file.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.file.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.origin.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"log.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.facility.code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.facility.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.priority\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.severity.code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"log.syslog.severity.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.application\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.community_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.direction\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.forwarded_ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.iana_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.inner.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.transport\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"network.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.egress.zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.alias\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.interface.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ingress.zone\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.vendor\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.build_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.checksum\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.install_scope\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.installed\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.license\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"package.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.imphash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.args\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.args_count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.command_line\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.command_line.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.entity_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.executable\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.executable.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.exit_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.args\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.args_count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.exists\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.status\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.subject_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.trusted\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.code_signature.valid\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.command_line\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.command_line.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.entity_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.executable\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.executable.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.exit_code\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.hash.sha512\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.imphash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pgid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.pid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.ppid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.thread.id\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.thread.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.title\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.title.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.working_directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.parent.working_directory.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.architecture\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.company\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.file_version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.imphash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.original_file_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pe.product\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pgid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.pid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.ppid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.start\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.thread.id\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.thread.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.title\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.title.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.uptime\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.working_directory\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"process.working_directory.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.strings\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.data.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.hive\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.key\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"registry.value\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.hosts\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"related.user\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.author\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.license\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.ruleset\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.uuid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"rule.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"server.user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.ephemeral_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.node.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.state\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.address\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.number\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.organization.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.as.organization.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.city_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.continent_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.country_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.country_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.location\",\"scripted\":false,\"searchable\":true,\"type\":\"geo_point\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.region_iso_code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.geo.region_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.mac\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.nat.ip\",\"scripted\":false,\"searchable\":true,\"type\":\"ip\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.nat.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.packets\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"source.user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.framework\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.tactic.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"threat.technique.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.cipher\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.certificate\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.certificate_chain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.issuer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.ja3\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.server_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.subject\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.supported_ciphers\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.alternative_names\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.issuer.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.public_key_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.public_key_curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"tls.client.x509.public_key_exponent\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.public_key_size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.signature_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.subject.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.client.x509.version_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.established\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.next_protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.resumed\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.certificate\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.certificate_chain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.md5\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.sha1\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.hash.sha256\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.issuer\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.ja3s\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.subject\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.alternative_names\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.issuer.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.public_key_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.public_key_curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"tls.server.x509.public_key_exponent\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.public_key_size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.signature_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.subject.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.server.x509.version_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tls.version_protocol\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tracing.span.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tracing.trace.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"tracing.transaction.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.extension\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.fragment\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.original.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.password\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.path\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.port\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.query\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.registered_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.scheme\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.top_level_domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"url.username\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.email\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.full_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.full_name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.domain\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.group.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.hash\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user.roles\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.device.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.original\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.original.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.family\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.full\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.full.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.kernel\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.platform\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.os.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"user_agent.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vlan.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vlan.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.category\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.classification\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.description\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.description.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.enumeration\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.reference\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.report_id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.scanner.vendor\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.base\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.environmental\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.temporal\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.score.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"vulnerability.severity\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.alternative_names\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.issuer.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.not_after\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.not_before\",\"scripted\":false,\"searchable\":true,\"type\":\"date\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.public_key_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.public_key_curve\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":false,\"name\":\"x509.public_key_exponent\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.public_key_size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.serial_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.signature_algorithm\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.common_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.country\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.distinguished_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.locality\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.organization\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.organizational_unit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.subject.state_or_province\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"x509.version_number\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"agent.hostname\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"fields\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"timeseries.instance\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"cloud.image.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"docker.container.labels\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.containerized\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.build\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"host.os.codename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.pod.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.pod.uid\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.namespace\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.node.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.labels.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.annotations.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.replicaset.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.deployment.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.statefulset.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.container.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"kubernetes.container.image\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"processor.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"processor.event\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"timestamp.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"enabled\":false,\"indexed\":false,\"name\":\"http.request.headers\",\"scripted\":false,\"searchable\":false},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"http.response.finished\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"enabled\":false,\"indexed\":false,\"name\":\"http.response.headers\",\"scripted\":false,\"searchable\":false},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.environment\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.language.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.language.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.runtime.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.runtime.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.framework.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"service.framework.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.sampled\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.name.text\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.self_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.self_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.breakdown.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.subtype\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.self_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.self_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"trace.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"parent.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.listening\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"observer.version_major\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"experimental\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.culprit\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.grouping_key\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.code\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.module\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":4,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.exception.handled\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.level\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.logger_name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":2,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"error.log.param_message\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.cpu.total.norm.pct\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.memory.total\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.memory.actual.free\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cpu.total.norm.pct\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.memory.size\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.memory.rss.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cgroup.memory.mem.limit.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"system.process.cgroup.memory.mem.usage.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.root\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.duration\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.cpu.ns\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.samples.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.alloc_objects.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.alloc_space.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.inuse_objects.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.inuse_space.bytes\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.filename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.top.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.function\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.filename\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"profile.stack.line\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.service.version\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"sourcemap.bundle_filepath\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"view spans\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"child.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.id\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.action\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.start.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":1,\"doc_values\":true,\"indexed\":true,\"name\":\"span.duration.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.sync\",\"scripted\":false,\"searchable\":true,\"type\":\"boolean\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.db.link\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.db.rows_affected\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.resource\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.message.queue.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.message.age.ms\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.result\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.marks\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.marks.*.*\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.cls\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.fid\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.tbt\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.longtask.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.longtask.sum\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.experience.longtask.max\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.span_count.dropped\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.message.queue.name\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.message.age.ms\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"transaction.duration.histogram\",\"scripted\":false,\"searchable\":true},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"metricset.period\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.response_time.count\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":true,\"indexed\":true,\"name\":\"span.destination.service.response_time.sum.us\",\"scripted\":false,\"searchable\":true,\"type\":\"number\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_id\",\"scripted\":false,\"searchable\":false,\"type\":\"string\"},{\"aggregatable\":true,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_type\",\"scripted\":false,\"searchable\":true,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_index\",\"scripted\":false,\"searchable\":false,\"type\":\"string\"},{\"aggregatable\":false,\"analyzed\":false,\"count\":0,\"doc_values\":false,\"indexed\":false,\"name\":\"_score\",\"scripted\":false,\"searchable\":false,\"type\":\"number\"}]", "sourceFilters": "[{\"value\":\"sourcemap.sourcemap\"}]", "timeFieldName": "@timestamp" }, "id": "apm-*", "type": "index-pattern", "version": "1" -} +} \ No newline at end of file From 8375c02465a4fc95bd6f61c85eb96c3db83a0a57 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 29 Sep 2020 16:55:09 +0200 Subject: [PATCH 054/119] [UX]Remove duplicate legend string (#78763) --- .../components/app/RumDashboard/CoreVitals/PaletteLegends.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx index 43eb468b88317..d27581c97de23 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/CoreVitals/PaletteLegends.tsx @@ -90,7 +90,6 @@ export function PaletteLegends({ - {labels[ind]} ({ranks?.[ind]}%) Date: Tue, 29 Sep 2020 11:11:55 -0400 Subject: [PATCH 055/119] [Security Solution][Resolver]Add test subj to crumb (#78683) * [Security Solution][Resolver]Add test subj to crumb * J Buttner review: camel case name Co-authored-by: Elastic Machine --- .../public/resolver/view/panels/breadcrumbs.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx index ed39198009364..bcb750893eaa6 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import { EuiBreadcrumb, EuiBetaBadge } from '@elastic/eui'; -import React, { memo } from 'react'; +import React, { memo, useMemo } from 'react'; import { BetaHeader, ThemedBreadcrumbs } from './styles'; import { useColors } from '../use_colors'; @@ -16,6 +16,15 @@ import { useColors } from '../use_colors'; * Breadcrumb menu */ export const Breadcrumbs = memo(function ({ breadcrumbs }: { breadcrumbs: EuiBreadcrumb[] }) { + // Just tagging the last crumb with `data-test-subj` for testing + const crumbsWithLastSubject: EuiBreadcrumb[] = useMemo(() => { + const lastcrumb = breadcrumbs.slice(-1).map((crumb) => { + crumb['data-test-subj'] = 'resolver:breadcrumbs:last'; + return crumb; + }); + return [...breadcrumbs.slice(0, -1), ...lastcrumb]; + }, [breadcrumbs]); + const { resolverBreadcrumbBackground, resolverEdgeText } = useColors(); return ( <> @@ -32,7 +41,7 @@ export const Breadcrumbs = memo(function ({ breadcrumbs }: { breadcrumbs: EuiBre From 66ad3b4ad2ae48de3759567ff2772517c2df24a5 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 29 Sep 2020 08:14:20 -0700 Subject: [PATCH 056/119] [dev/watching] upgrade chokidar and remove missing source dirs (#78723) Co-authored-by: spalger --- package.json | 2 +- packages/kbn-pm/dist/index.js | 2005 +++++++----------------- packages/kbn-ui-framework/package.json | 2 +- src/cli/cluster/cluster_manager.ts | 5 - yarn.lock | 32 +- 5 files changed, 571 insertions(+), 1475 deletions(-) diff --git a/package.json b/package.json index 9b1735f6f7e5e..85af66d98a6ba 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "boom": "^7.2.0", "chalk": "^2.4.2", "check-disk-space": "^2.1.0", - "chokidar": "3.2.1", + "chokidar": "^3.4.2", "color": "1.0.3", "commander": "^3.0.2", "core-js": "^3.6.4", diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 902cc8839ac09..97f3ed602f357 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -58086,10 +58086,10 @@ const os = __webpack_require__(120); const pAll = __webpack_require__(507); const arrify = __webpack_require__(509); const globby = __webpack_require__(510); -const isGlob = __webpack_require__(720); -const cpFile = __webpack_require__(721); -const junk = __webpack_require__(733); -const CpyError = __webpack_require__(734); +const isGlob = __webpack_require__(708); +const cpFile = __webpack_require__(709); +const junk = __webpack_require__(721); +const CpyError = __webpack_require__(722); const defaultOptions = { ignoreJunk: true @@ -58339,8 +58339,8 @@ const fs = __webpack_require__(133); const arrayUnion = __webpack_require__(511); const glob = __webpack_require__(146); const fastGlob = __webpack_require__(513); -const dirGlob = __webpack_require__(713); -const gitignore = __webpack_require__(716); +const dirGlob = __webpack_require__(701); +const gitignore = __webpack_require__(704); const DEFAULT_FILTER = () => false; @@ -58591,11 +58591,11 @@ module.exports.generateTasks = pkg.generateTasks; Object.defineProperty(exports, "__esModule", { value: true }); var optionsManager = __webpack_require__(515); var taskManager = __webpack_require__(516); -var reader_async_1 = __webpack_require__(684); -var reader_stream_1 = __webpack_require__(708); -var reader_sync_1 = __webpack_require__(709); -var arrayUtils = __webpack_require__(711); -var streamUtils = __webpack_require__(712); +var reader_async_1 = __webpack_require__(672); +var reader_stream_1 = __webpack_require__(696); +var reader_sync_1 = __webpack_require__(697); +var arrayUtils = __webpack_require__(699); +var streamUtils = __webpack_require__(700); /** * Synchronous API. */ @@ -59227,17 +59227,17 @@ module.exports = function isGlob(str, options) { var util = __webpack_require__(111); var braces = __webpack_require__(523); -var toRegex = __webpack_require__(636); -var extend = __webpack_require__(644); +var toRegex = __webpack_require__(625); +var extend = __webpack_require__(633); /** * Local dependencies */ -var compilers = __webpack_require__(647); -var parsers = __webpack_require__(680); -var cache = __webpack_require__(681); -var utils = __webpack_require__(682); +var compilers = __webpack_require__(636); +var parsers = __webpack_require__(668); +var cache = __webpack_require__(669); +var utils = __webpack_require__(670); var MAX_LENGTH = 1024 * 64; /** @@ -60110,17 +60110,17 @@ module.exports = micromatch; */ var toRegex = __webpack_require__(524); -var unique = __webpack_require__(538); +var unique = __webpack_require__(536); var extend = __webpack_require__(533); /** * Local dependencies */ -var compilers = __webpack_require__(539); -var parsers = __webpack_require__(556); -var Braces = __webpack_require__(566); -var utils = __webpack_require__(540); +var compilers = __webpack_require__(537); +var parsers = __webpack_require__(552); +var Braces = __webpack_require__(562); +var utils = __webpack_require__(538); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -61274,7 +61274,7 @@ module.exports = function isExtendable(val) { "use strict"; -var extend = __webpack_require__(536); +var extend = __webpack_require__(533); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -61344,66 +61344,6 @@ module.exports = toRegex; /* 536 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - -var isObject = __webpack_require__(537); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - - -/***/ }), -/* 537 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; - - -/***/ }), -/* 538 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; /*! * array-unique @@ -61451,13 +61391,13 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 539 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(540); +var utils = __webpack_require__(538); module.exports = function(braces, options) { braces.compiler @@ -61740,13 +61680,13 @@ function hasQueue(node) { /***/ }), -/* 540 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(541); +var splitString = __webpack_require__(539); var utils = module.exports; /** @@ -61754,11 +61694,11 @@ var utils = module.exports; */ utils.extend = __webpack_require__(533); -utils.flatten = __webpack_require__(547); -utils.isObject = __webpack_require__(545); -utils.fillRange = __webpack_require__(548); -utils.repeat = __webpack_require__(555); -utils.unique = __webpack_require__(538); +utils.flatten = __webpack_require__(545); +utils.isObject = __webpack_require__(543); +utils.fillRange = __webpack_require__(546); +utils.repeat = __webpack_require__(551); +utils.unique = __webpack_require__(536); utils.define = function(obj, key, val) { Object.defineProperty(obj, key, { @@ -62090,7 +62030,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 541 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62103,7 +62043,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(542); +var extend = __webpack_require__(540); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -62268,14 +62208,14 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 542 */ +/* 540 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(543); -var assignSymbols = __webpack_require__(546); +var isExtendable = __webpack_require__(541); +var assignSymbols = __webpack_require__(544); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -62335,7 +62275,7 @@ function isEnum(obj, key) { /***/ }), -/* 543 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62348,7 +62288,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(542); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -62356,7 +62296,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 544 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62369,7 +62309,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(545); +var isObject = __webpack_require__(543); function isObjectObject(o) { return isObject(o) === true @@ -62400,7 +62340,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 545 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62419,7 +62359,7 @@ module.exports = function isObject(val) { /***/ }), -/* 546 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62466,7 +62406,7 @@ module.exports = function(receiver, objects) { /***/ }), -/* 547 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62495,7 +62435,7 @@ function flat(arr, res) { /***/ }), -/* 548 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62509,10 +62449,10 @@ function flat(arr, res) { var util = __webpack_require__(111); -var isNumber = __webpack_require__(549); -var extend = __webpack_require__(551); -var repeat = __webpack_require__(553); -var toRegex = __webpack_require__(554); +var isNumber = __webpack_require__(547); +var extend = __webpack_require__(533); +var repeat = __webpack_require__(549); +var toRegex = __webpack_require__(550); /** * Return a range of numbers or letters. @@ -62710,7 +62650,7 @@ module.exports = fillRange; /***/ }), -/* 549 */ +/* 547 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62723,7 +62663,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(550); +var typeOf = __webpack_require__(548); module.exports = function isNumber(num) { var type = typeOf(num); @@ -62739,7 +62679,7 @@ module.exports = function isNumber(num) { /***/ }), -/* 550 */ +/* 548 */ /***/ (function(module, exports, __webpack_require__) { var isBuffer = __webpack_require__(530); @@ -62861,67 +62801,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 551 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isObject = __webpack_require__(552); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - - -/***/ }), -/* 552 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; - - -/***/ }), -/* 553 */ +/* 549 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62998,7 +62878,7 @@ function repeat(str, num) { /***/ }), -/* 554 */ +/* 550 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63011,8 +62891,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(553); -var isNumber = __webpack_require__(549); +var repeat = __webpack_require__(549); +var isNumber = __webpack_require__(547); var cache = {}; function toRegexRange(min, max, options) { @@ -63299,7 +63179,7 @@ module.exports = toRegexRange; /***/ }), -/* 555 */ +/* 551 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63324,14 +63204,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 556 */ +/* 552 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(557); -var utils = __webpack_require__(540); +var Node = __webpack_require__(553); +var utils = __webpack_require__(538); /** * Braces parsers @@ -63691,15 +63571,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 557 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(545); -var define = __webpack_require__(558); -var utils = __webpack_require__(565); +var isObject = __webpack_require__(543); +var define = __webpack_require__(554); +var utils = __webpack_require__(561); var ownNames; /** @@ -64190,7 +64070,7 @@ exports = module.exports = Node; /***/ }), -/* 558 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64203,7 +64083,7 @@ exports = module.exports = Node; -var isDescriptor = __webpack_require__(559); +var isDescriptor = __webpack_require__(555); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -64228,7 +64108,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 559 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64241,9 +64121,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(560); -var isAccessor = __webpack_require__(561); -var isData = __webpack_require__(563); +var typeOf = __webpack_require__(556); +var isAccessor = __webpack_require__(557); +var isData = __webpack_require__(559); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -64257,7 +64137,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 560 */ +/* 556 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64392,7 +64272,7 @@ function isBuffer(val) { /***/ }), -/* 561 */ +/* 557 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64405,7 +64285,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(562); +var typeOf = __webpack_require__(558); // accessor descriptor properties var accessor = { @@ -64468,7 +64348,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 562 */ +/* 558 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64603,7 +64483,7 @@ function isBuffer(val) { /***/ }), -/* 563 */ +/* 559 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64616,7 +64496,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(564); +var typeOf = __webpack_require__(560); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -64659,7 +64539,7 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 564 */ +/* 560 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64794,13 +64674,13 @@ function isBuffer(val) { /***/ }), -/* 565 */ +/* 561 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(550); +var typeOf = __webpack_require__(548); var utils = module.exports; /** @@ -65820,17 +65700,17 @@ function assert(val, message) { /***/ }), -/* 566 */ +/* 562 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var extend = __webpack_require__(533); -var Snapdragon = __webpack_require__(567); -var compilers = __webpack_require__(539); -var parsers = __webpack_require__(556); -var utils = __webpack_require__(540); +var Snapdragon = __webpack_require__(563); +var compilers = __webpack_require__(537); +var parsers = __webpack_require__(552); +var utils = __webpack_require__(538); /** * Customize Snapdragon parser and renderer @@ -65931,17 +65811,17 @@ module.exports = Braces; /***/ }), -/* 567 */ +/* 563 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(568); -var define = __webpack_require__(594); -var Compiler = __webpack_require__(604); -var Parser = __webpack_require__(633); -var utils = __webpack_require__(613); +var Base = __webpack_require__(564); +var define = __webpack_require__(525); +var Compiler = __webpack_require__(593); +var Parser = __webpack_require__(622); +var utils = __webpack_require__(602); var regexCache = {}; var cache = {}; @@ -66112,20 +65992,20 @@ module.exports.Parser = Parser; /***/ }), -/* 568 */ +/* 564 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var define = __webpack_require__(569); -var CacheBase = __webpack_require__(570); -var Emitter = __webpack_require__(571); -var isObject = __webpack_require__(545); -var merge = __webpack_require__(588); -var pascal = __webpack_require__(591); -var cu = __webpack_require__(592); +var define = __webpack_require__(565); +var CacheBase = __webpack_require__(566); +var Emitter = __webpack_require__(567); +var isObject = __webpack_require__(543); +var merge = __webpack_require__(584); +var pascal = __webpack_require__(587); +var cu = __webpack_require__(588); /** * Optionally define a custom `cache` namespace to use. @@ -66554,7 +66434,7 @@ module.exports.namespace = namespace; /***/ }), -/* 569 */ +/* 565 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66567,7 +66447,7 @@ module.exports.namespace = namespace; -var isDescriptor = __webpack_require__(559); +var isDescriptor = __webpack_require__(555); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -66592,21 +66472,21 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 570 */ +/* 566 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(545); -var Emitter = __webpack_require__(571); -var visit = __webpack_require__(572); -var toPath = __webpack_require__(575); -var union = __webpack_require__(576); -var del = __webpack_require__(580); -var get = __webpack_require__(578); -var has = __webpack_require__(585); -var set = __webpack_require__(579); +var isObject = __webpack_require__(543); +var Emitter = __webpack_require__(567); +var visit = __webpack_require__(568); +var toPath = __webpack_require__(571); +var union = __webpack_require__(572); +var del = __webpack_require__(576); +var get = __webpack_require__(574); +var has = __webpack_require__(581); +var set = __webpack_require__(575); /** * Create a `Cache` constructor that when instantiated will @@ -66860,7 +66740,7 @@ module.exports.namespace = namespace; /***/ }), -/* 571 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { @@ -67029,7 +66909,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 572 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67042,8 +66922,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(573); -var mapVisit = __webpack_require__(574); +var visit = __webpack_require__(569); +var mapVisit = __webpack_require__(570); module.exports = function(collection, method, val) { var result; @@ -67066,7 +66946,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 573 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67079,7 +66959,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(545); +var isObject = __webpack_require__(543); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -67106,14 +66986,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 574 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var visit = __webpack_require__(573); +var visit = __webpack_require__(569); /** * Map `visit` over an array of objects. @@ -67150,7 +67030,7 @@ function isObject(val) { /***/ }), -/* 575 */ +/* 571 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67163,7 +67043,7 @@ function isObject(val) { -var typeOf = __webpack_require__(550); +var typeOf = __webpack_require__(548); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -67190,16 +67070,16 @@ function filter(arr) { /***/ }), -/* 576 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(537); -var union = __webpack_require__(577); -var get = __webpack_require__(578); -var set = __webpack_require__(579); +var isObject = __webpack_require__(534); +var union = __webpack_require__(573); +var get = __webpack_require__(574); +var set = __webpack_require__(575); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -67227,7 +67107,7 @@ function arrayify(val) { /***/ }), -/* 577 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67263,7 +67143,7 @@ module.exports = function union(init) { /***/ }), -/* 578 */ +/* 574 */ /***/ (function(module, exports) { /*! @@ -67319,7 +67199,7 @@ function toString(val) { /***/ }), -/* 579 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67332,10 +67212,10 @@ function toString(val) { -var split = __webpack_require__(541); -var extend = __webpack_require__(536); -var isPlainObject = __webpack_require__(544); -var isObject = __webpack_require__(537); +var split = __webpack_require__(539); +var extend = __webpack_require__(533); +var isPlainObject = __webpack_require__(542); +var isObject = __webpack_require__(534); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -67381,7 +67261,7 @@ function isValidKey(key) { /***/ }), -/* 580 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67394,8 +67274,8 @@ function isValidKey(key) { -var isObject = __webpack_require__(545); -var has = __webpack_require__(581); +var isObject = __webpack_require__(543); +var has = __webpack_require__(577); module.exports = function unset(obj, prop) { if (!isObject(obj)) { @@ -67420,7 +67300,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 581 */ +/* 577 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67433,9 +67313,9 @@ module.exports = function unset(obj, prop) { -var isObject = __webpack_require__(582); -var hasValues = __webpack_require__(584); -var get = __webpack_require__(578); +var isObject = __webpack_require__(578); +var hasValues = __webpack_require__(580); +var get = __webpack_require__(574); module.exports = function(obj, prop, noZero) { if (isObject(obj)) { @@ -67446,7 +67326,7 @@ module.exports = function(obj, prop, noZero) { /***/ }), -/* 582 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67459,7 +67339,7 @@ module.exports = function(obj, prop, noZero) { -var isArray = __webpack_require__(583); +var isArray = __webpack_require__(579); module.exports = function isObject(val) { return val != null && typeof val === 'object' && isArray(val) === false; @@ -67467,7 +67347,7 @@ module.exports = function isObject(val) { /***/ }), -/* 583 */ +/* 579 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -67478,7 +67358,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 584 */ +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67521,7 +67401,7 @@ module.exports = function hasValue(o, noZero) { /***/ }), -/* 585 */ +/* 581 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67534,9 +67414,9 @@ module.exports = function hasValue(o, noZero) { -var isObject = __webpack_require__(545); -var hasValues = __webpack_require__(586); -var get = __webpack_require__(578); +var isObject = __webpack_require__(543); +var hasValues = __webpack_require__(582); +var get = __webpack_require__(574); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -67544,7 +67424,7 @@ module.exports = function(val, prop) { /***/ }), -/* 586 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67557,8 +67437,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(587); -var isNumber = __webpack_require__(549); +var typeOf = __webpack_require__(583); +var isNumber = __webpack_require__(547); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -67611,7 +67491,7 @@ module.exports = function hasValue(val) { /***/ }), -/* 587 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { var isBuffer = __webpack_require__(530); @@ -67736,14 +67616,14 @@ module.exports = function kindOf(val) { /***/ }), -/* 588 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(589); -var forIn = __webpack_require__(590); +var isExtendable = __webpack_require__(585); +var forIn = __webpack_require__(586); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -67807,7 +67687,7 @@ module.exports = mixinDeep; /***/ }), -/* 589 */ +/* 585 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67820,7 +67700,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(542); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67828,7 +67708,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 590 */ +/* 586 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67851,7 +67731,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 591 */ +/* 587 */ /***/ (function(module, exports) { /*! @@ -67878,14 +67758,14 @@ module.exports = pascalcase; /***/ }), -/* 592 */ +/* 588 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var utils = __webpack_require__(593); +var utils = __webpack_require__(589); /** * Expose class utils @@ -68250,7 +68130,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 593 */ +/* 589 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68264,10 +68144,10 @@ var utils = {}; * Lazily required module dependencies */ -utils.union = __webpack_require__(577); -utils.define = __webpack_require__(594); -utils.isObj = __webpack_require__(545); -utils.staticExtend = __webpack_require__(601); +utils.union = __webpack_require__(573); +utils.define = __webpack_require__(525); +utils.isObj = __webpack_require__(543); +utils.staticExtend = __webpack_require__(590); /** @@ -68278,624 +68158,22 @@ module.exports = utils; /***/ }), -/* 594 */ +/* 590 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! - * define-property + * static-extend * - * Copyright (c) 2015, Jon Schlinkert. + * Copyright (c) 2016, Jon Schlinkert. * Licensed under the MIT License. */ -var isDescriptor = __webpack_require__(595); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; - - -/***/ }), -/* 595 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var typeOf = __webpack_require__(596); -var isAccessor = __webpack_require__(597); -var isData = __webpack_require__(599); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; - - -/***/ }), -/* 596 */ -/***/ (function(module, exports) { - -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - var type = typeof val; - - // primitivies - if (type === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (type === 'string' || val instanceof String) { - return 'string'; - } - if (type === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (type === 'function' || val instanceof Function) { - if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { - return 'generatorfunction'; - } - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - if (type === '[object Map Iterator]') { - return 'mapiterator'; - } - if (type === '[object Set Iterator]') { - return 'setiterator'; - } - if (type === '[object String Iterator]') { - return 'stringiterator'; - } - if (type === '[object Array Iterator]') { - return 'arrayiterator'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ - -function isBuffer(val) { - return val.constructor - && typeof val.constructor.isBuffer === 'function' - && val.constructor.isBuffer(val); -} - - -/***/ }), -/* 597 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var typeOf = __webpack_require__(598); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (typeOf(obj) !== 'object') { - return false; - } - - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } - - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } - - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; - - -/***/ }), -/* 598 */ -/***/ (function(module, exports, __webpack_require__) { - -var isBuffer = __webpack_require__(530); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), -/* 599 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-data-descriptor - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var typeOf = __webpack_require__(600); - -// data descriptor properties -var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' -}; - -function isDataDescriptor(obj, prop) { - if (typeOf(obj) !== 'object') { - return false; - } - - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (!('value' in obj) && !('writable' in obj)) { - return false; - } - - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -/** - * Expose `isDataDescriptor` - */ - -module.exports = isDataDescriptor; - - -/***/ }), -/* 600 */ -/***/ (function(module, exports, __webpack_require__) { - -var isBuffer = __webpack_require__(530); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), -/* 601 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * static-extend - * - * Copyright (c) 2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var copy = __webpack_require__(602); -var define = __webpack_require__(594); -var util = __webpack_require__(111); +var copy = __webpack_require__(591); +var define = __webpack_require__(525); +var util = __webpack_require__(111); /** * Returns a function for extending the static properties, @@ -68977,15 +68255,15 @@ module.exports = extend; /***/ }), -/* 602 */ +/* 591 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(550); -var copyDescriptor = __webpack_require__(603); -var define = __webpack_require__(594); +var typeOf = __webpack_require__(548); +var copyDescriptor = __webpack_require__(592); +var define = __webpack_require__(525); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -69158,7 +68436,7 @@ module.exports.has = has; /***/ }), -/* 603 */ +/* 592 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69246,16 +68524,16 @@ function isObject(val) { /***/ }), -/* 604 */ +/* 593 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(605); -var define = __webpack_require__(594); -var debug = __webpack_require__(607)('snapdragon:compiler'); -var utils = __webpack_require__(613); +var use = __webpack_require__(594); +var define = __webpack_require__(525); +var debug = __webpack_require__(596)('snapdragon:compiler'); +var utils = __webpack_require__(602); /** * Create a new `Compiler` with the given `options`. @@ -69409,7 +68687,7 @@ Compiler.prototype = { // source map support if (opts.sourcemap) { - var sourcemaps = __webpack_require__(632); + var sourcemaps = __webpack_require__(621); sourcemaps(this); this.mapVisit(this.ast.nodes); this.applySourceMaps(); @@ -69430,7 +68708,7 @@ module.exports = Compiler; /***/ }), -/* 605 */ +/* 594 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69443,7 +68721,7 @@ module.exports = Compiler; -var utils = __webpack_require__(606); +var utils = __webpack_require__(595); module.exports = function base(app, opts) { if (!utils.isObject(app) && typeof app !== 'function') { @@ -69558,7 +68836,7 @@ module.exports = function base(app, opts) { /***/ }), -/* 606 */ +/* 595 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69572,8 +68850,8 @@ var utils = {}; * Lazily required module dependencies */ -utils.define = __webpack_require__(594); -utils.isObject = __webpack_require__(545); +utils.define = __webpack_require__(525); +utils.isObject = __webpack_require__(543); utils.isString = function(val) { @@ -69588,7 +68866,7 @@ module.exports = utils; /***/ }), -/* 607 */ +/* 596 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -69597,14 +68875,14 @@ module.exports = utils; */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(608); + module.exports = __webpack_require__(597); } else { - module.exports = __webpack_require__(611); + module.exports = __webpack_require__(600); } /***/ }), -/* 608 */ +/* 597 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -69613,7 +68891,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(609); +exports = module.exports = __webpack_require__(598); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -69795,7 +69073,7 @@ function localstorage() { /***/ }), -/* 609 */ +/* 598 */ /***/ (function(module, exports, __webpack_require__) { @@ -69811,7 +69089,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(610); +exports.humanize = __webpack_require__(599); /** * The currently active debug mode names, and names to skip. @@ -70003,7 +69281,7 @@ function coerce(val) { /***/ }), -/* 610 */ +/* 599 */ /***/ (function(module, exports) { /** @@ -70161,7 +69439,7 @@ function plural(ms, n, name) { /***/ }), -/* 611 */ +/* 600 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -70177,7 +69455,7 @@ var util = __webpack_require__(111); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(609); +exports = module.exports = __webpack_require__(598); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -70356,7 +69634,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(612); + var net = __webpack_require__(601); stream = new net.Socket({ fd: fd, readable: false, @@ -70415,13 +69693,13 @@ exports.enable(load()); /***/ }), -/* 612 */ +/* 601 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 613 */ +/* 602 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -70431,9 +69709,9 @@ module.exports = require("net"); * Module dependencies */ -exports.extend = __webpack_require__(536); -exports.SourceMap = __webpack_require__(614); -exports.sourceMapResolve = __webpack_require__(625); +exports.extend = __webpack_require__(533); +exports.SourceMap = __webpack_require__(603); +exports.sourceMapResolve = __webpack_require__(614); /** * Convert backslash in the given string to forward slashes @@ -70476,7 +69754,7 @@ exports.last = function(arr, n) { /***/ }), -/* 614 */ +/* 603 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -70484,13 +69762,13 @@ exports.last = function(arr, n) { * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */ -exports.SourceMapGenerator = __webpack_require__(615).SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__(621).SourceMapConsumer; -exports.SourceNode = __webpack_require__(624).SourceNode; +exports.SourceMapGenerator = __webpack_require__(604).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(610).SourceMapConsumer; +exports.SourceNode = __webpack_require__(613).SourceNode; /***/ }), -/* 615 */ +/* 604 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70500,10 +69778,10 @@ exports.SourceNode = __webpack_require__(624).SourceNode; * http://opensource.org/licenses/BSD-3-Clause */ -var base64VLQ = __webpack_require__(616); -var util = __webpack_require__(618); -var ArraySet = __webpack_require__(619).ArraySet; -var MappingList = __webpack_require__(620).MappingList; +var base64VLQ = __webpack_require__(605); +var util = __webpack_require__(607); +var ArraySet = __webpack_require__(608).ArraySet; +var MappingList = __webpack_require__(609).MappingList; /** * An instance of the SourceMapGenerator represents a source map which is @@ -70912,7 +70190,7 @@ exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/* 616 */ +/* 605 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70952,7 +70230,7 @@ exports.SourceMapGenerator = SourceMapGenerator; * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var base64 = __webpack_require__(617); +var base64 = __webpack_require__(606); // A single base 64 digit can contain 6 bits of data. For the base 64 variable // length quantities we use in the source map spec, the first bit is the sign, @@ -71058,7 +70336,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { /***/ }), -/* 617 */ +/* 606 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71131,7 +70409,7 @@ exports.decode = function (charCode) { /***/ }), -/* 618 */ +/* 607 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71554,7 +70832,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate /***/ }), -/* 619 */ +/* 608 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71564,7 +70842,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(618); +var util = __webpack_require__(607); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; @@ -71681,7 +70959,7 @@ exports.ArraySet = ArraySet; /***/ }), -/* 620 */ +/* 609 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71691,7 +70969,7 @@ exports.ArraySet = ArraySet; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(618); +var util = __webpack_require__(607); /** * Determine whether mappingB is after mappingA with respect to generated @@ -71766,7 +71044,7 @@ exports.MappingList = MappingList; /***/ }), -/* 621 */ +/* 610 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71776,11 +71054,11 @@ exports.MappingList = MappingList; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(618); -var binarySearch = __webpack_require__(622); -var ArraySet = __webpack_require__(619).ArraySet; -var base64VLQ = __webpack_require__(616); -var quickSort = __webpack_require__(623).quickSort; +var util = __webpack_require__(607); +var binarySearch = __webpack_require__(611); +var ArraySet = __webpack_require__(608).ArraySet; +var base64VLQ = __webpack_require__(605); +var quickSort = __webpack_require__(612).quickSort; function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; @@ -72854,7 +72132,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; /***/ }), -/* 622 */ +/* 611 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -72971,7 +72249,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { /***/ }), -/* 623 */ +/* 612 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -73091,7 +72369,7 @@ exports.quickSort = function (ary, comparator) { /***/ }), -/* 624 */ +/* 613 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -73101,8 +72379,8 @@ exports.quickSort = function (ary, comparator) { * http://opensource.org/licenses/BSD-3-Clause */ -var SourceMapGenerator = __webpack_require__(615).SourceMapGenerator; -var util = __webpack_require__(618); +var SourceMapGenerator = __webpack_require__(604).SourceMapGenerator; +var util = __webpack_require__(607); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). @@ -73510,17 +72788,17 @@ exports.SourceNode = SourceNode; /***/ }), -/* 625 */ +/* 614 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = __webpack_require__(626) -var resolveUrl = __webpack_require__(627) -var decodeUriComponent = __webpack_require__(628) -var urix = __webpack_require__(630) -var atob = __webpack_require__(631) +var sourceMappingURL = __webpack_require__(615) +var resolveUrl = __webpack_require__(616) +var decodeUriComponent = __webpack_require__(617) +var urix = __webpack_require__(619) +var atob = __webpack_require__(620) @@ -73818,7 +73096,7 @@ module.exports = { /***/ }), -/* 626 */ +/* 615 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell @@ -73881,7 +73159,7 @@ void (function(root, factory) { /***/ }), -/* 627 */ +/* 616 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -73899,13 +73177,13 @@ module.exports = resolveUrl /***/ }), -/* 628 */ +/* 617 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var decodeUriComponent = __webpack_require__(629) +var decodeUriComponent = __webpack_require__(618) function customDecodeUriComponent(string) { // `decodeUriComponent` turns `+` into ` `, but that's not wanted. @@ -73916,7 +73194,7 @@ module.exports = customDecodeUriComponent /***/ }), -/* 629 */ +/* 618 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74017,7 +73295,7 @@ module.exports = function (encodedURI) { /***/ }), -/* 630 */ +/* 619 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -74040,7 +73318,7 @@ module.exports = urix /***/ }), -/* 631 */ +/* 620 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74054,7 +73332,7 @@ module.exports = atob.atob = atob; /***/ }), -/* 632 */ +/* 621 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74062,8 +73340,8 @@ module.exports = atob.atob = atob; var fs = __webpack_require__(133); var path = __webpack_require__(4); -var define = __webpack_require__(594); -var utils = __webpack_require__(613); +var define = __webpack_require__(525); +var utils = __webpack_require__(602); /** * Expose `mixin()`. @@ -74206,19 +73484,19 @@ exports.comment = function(node) { /***/ }), -/* 633 */ +/* 622 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(605); +var use = __webpack_require__(594); var util = __webpack_require__(111); -var Cache = __webpack_require__(634); -var define = __webpack_require__(594); -var debug = __webpack_require__(607)('snapdragon:parser'); -var Position = __webpack_require__(635); -var utils = __webpack_require__(613); +var Cache = __webpack_require__(623); +var define = __webpack_require__(525); +var debug = __webpack_require__(596)('snapdragon:parser'); +var Position = __webpack_require__(624); +var utils = __webpack_require__(602); /** * Create a new `Parser` with the given `input` and `options`. @@ -74746,7 +74024,7 @@ module.exports = Parser; /***/ }), -/* 634 */ +/* 623 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74853,13 +74131,13 @@ MapCache.prototype.del = function mapDelete(key) { /***/ }), -/* 635 */ +/* 624 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(594); +var define = __webpack_require__(525); /** * Store position for a node @@ -74874,16 +74152,16 @@ module.exports = function Position(start, parser) { /***/ }), -/* 636 */ +/* 625 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var safe = __webpack_require__(637); -var define = __webpack_require__(643); -var extend = __webpack_require__(644); -var not = __webpack_require__(646); +var safe = __webpack_require__(626); +var define = __webpack_require__(632); +var extend = __webpack_require__(633); +var not = __webpack_require__(635); var MAX_LENGTH = 1024 * 64; /** @@ -75036,10 +74314,10 @@ module.exports.makeRe = makeRe; /***/ }), -/* 637 */ +/* 626 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(638); +var parse = __webpack_require__(627); var types = parse.types; module.exports = function (re, opts) { @@ -75085,13 +74363,13 @@ function isRegExp (x) { /***/ }), -/* 638 */ +/* 627 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(639); -var types = __webpack_require__(640); -var sets = __webpack_require__(641); -var positions = __webpack_require__(642); +var util = __webpack_require__(628); +var types = __webpack_require__(629); +var sets = __webpack_require__(630); +var positions = __webpack_require__(631); module.exports = function(regexpStr) { @@ -75373,11 +74651,11 @@ module.exports.types = types; /***/ }), -/* 639 */ +/* 628 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(640); -var sets = __webpack_require__(641); +var types = __webpack_require__(629); +var sets = __webpack_require__(630); // All of these are private and only used by randexp. @@ -75490,7 +74768,7 @@ exports.error = function(regexp, msg) { /***/ }), -/* 640 */ +/* 629 */ /***/ (function(module, exports) { module.exports = { @@ -75506,10 +74784,10 @@ module.exports = { /***/ }), -/* 641 */ +/* 630 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(640); +var types = __webpack_require__(629); var INTS = function() { return [{ type: types.RANGE , from: 48, to: 57 }]; @@ -75594,10 +74872,10 @@ exports.anyChar = function() { /***/ }), -/* 642 */ +/* 631 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(640); +var types = __webpack_require__(629); exports.wordBoundary = function() { return { type: types.POSITION, value: 'b' }; @@ -75617,7 +74895,7 @@ exports.end = function() { /***/ }), -/* 643 */ +/* 632 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75630,8 +74908,8 @@ exports.end = function() { -var isobject = __webpack_require__(545); -var isDescriptor = __webpack_require__(559); +var isobject = __webpack_require__(543); +var isDescriptor = __webpack_require__(555); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -75662,14 +74940,14 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 644 */ +/* 633 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(645); -var assignSymbols = __webpack_require__(546); +var isExtendable = __webpack_require__(634); +var assignSymbols = __webpack_require__(544); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -75729,7 +75007,7 @@ function isEnum(obj, key) { /***/ }), -/* 645 */ +/* 634 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75742,7 +75020,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(542); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -75750,14 +75028,14 @@ module.exports = function isExtendable(val) { /***/ }), -/* 646 */ +/* 635 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(644); -var safe = __webpack_require__(637); +var extend = __webpack_require__(633); +var safe = __webpack_require__(626); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -75829,14 +75107,14 @@ module.exports = toRegex; /***/ }), -/* 647 */ +/* 636 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var nanomatch = __webpack_require__(648); -var extglob = __webpack_require__(664); +var nanomatch = __webpack_require__(637); +var extglob = __webpack_require__(652); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -75913,7 +75191,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 648 */ +/* 637 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75924,17 +75202,17 @@ function escapeExtglobs(compiler) { */ var util = __webpack_require__(111); -var toRegex = __webpack_require__(649); -var extend = __webpack_require__(650); +var toRegex = __webpack_require__(524); +var extend = __webpack_require__(638); /** * Local dependencies */ -var compilers = __webpack_require__(652); -var parsers = __webpack_require__(653); -var cache = __webpack_require__(656); -var utils = __webpack_require__(658); +var compilers = __webpack_require__(640); +var parsers = __webpack_require__(641); +var cache = __webpack_require__(644); +var utils = __webpack_require__(646); var MAX_LENGTH = 1024 * 64; /** @@ -76680,247 +75958,92 @@ nanomatch.compile = function(ast, options) { * * ```js * nm.clearCache(); - * ``` - * @api public - */ - -nanomatch.clearCache = function() { - nanomatch.cache.__data__ = {}; -}; - -/** - * Compose a matcher function with the given patterns. - * This allows matcher functions to be compiled once and - * called multiple times. - */ - -function compose(patterns, options, matcher) { - var matchers; - - return memoize('compose', String(patterns), options, function() { - return function(file) { - // delay composition until it's invoked the first time, - // after that it won't be called again - if (!matchers) { - matchers = []; - for (var i = 0; i < patterns.length; i++) { - matchers.push(matcher(patterns[i], options)); - } - } - - var len = matchers.length; - while (len--) { - if (matchers[len](file) === true) { - return true; - } - } - return false; - }; - }); -} - -/** - * Memoize a generated regex or function. A unique key is generated - * from the `type` (usually method name), the `pattern`, and - * user-defined options. - */ - -function memoize(type, pattern, options, fn) { - var key = utils.createKey(type + '=' + pattern, options); - - if (options && options.cache === false) { - return fn(pattern, options); - } - - if (cache.has(type, key)) { - return cache.get(type, key); - } - - var val = fn(pattern, options); - cache.set(type, key, val); - return val; -} - -/** - * Expose compiler, parser and cache on `nanomatch` - */ - -nanomatch.compilers = compilers; -nanomatch.parsers = parsers; -nanomatch.cache = cache; - -/** - * Expose `nanomatch` - * @type {Function} - */ - -module.exports = nanomatch; - - -/***/ }), -/* 649 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var define = __webpack_require__(594); -var extend = __webpack_require__(536); -var not = __webpack_require__(535); -var MAX_LENGTH = 1024 * 64; - -/** - * Session cache - */ - -var cache = {}; - -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -module.exports = function(patterns, options) { - if (!Array.isArray(patterns)) { - return makeRe(patterns, options); - } - return makeRe(patterns.join('|'), options); -}; - -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -function makeRe(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; - } - - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } - - var key = pattern; - // do this before shallow cloning options, it's a lot faster - if (!options || (options && options.cache !== false)) { - key = createKey(pattern, options); - - if (cache.hasOwnProperty(key)) { - return cache[key]; - } - } - - var opts = extend({}, options); - if (opts.contains === true) { - if (opts.negate === true) { - opts.strictNegate = false; - } else { - opts.strict = false; - } - } - - if (opts.strict === false) { - opts.strictOpen = false; - opts.strictClose = false; - } - - var open = opts.strictOpen !== false ? '^' : ''; - var close = opts.strictClose !== false ? '$' : ''; - var flags = opts.flags || ''; - var regex; - - if (opts.nocase === true && !/i/.test(flags)) { - flags += 'i'; - } - - try { - if (opts.negate || typeof opts.strictNegate === 'boolean') { - pattern = not.create(pattern, opts); - } - var str = open + '(?:' + pattern + ')' + close; - regex = new RegExp(str, flags); - } catch (err) { - if (opts.strictErrors === true) { - err.key = key; - err.pattern = pattern; - err.originalOptions = options; - err.createdOptions = opts; - throw err; - } - - try { - regex = new RegExp('^' + pattern.replace(/(\W)/g, '\\$1') + '$'); - } catch (err) { - regex = /.^/; //<= match nothing - } - } + * ``` + * @api public + */ - if (opts.cache !== false) { - cacheRegex(regex, key, pattern, opts); - } - return regex; -} +nanomatch.clearCache = function() { + nanomatch.cache.__data__ = {}; +}; /** - * Cache generated regex. This can result in dramatic speed improvements - * and simplify debugging by adding options and pattern to the regex. It can be - * disabled by passing setting `options.cache` to false. + * Compose a matcher function with the given patterns. + * This allows matcher functions to be compiled once and + * called multiple times. */ -function cacheRegex(regex, key, pattern, options) { - define(regex, 'cached', true); - define(regex, 'pattern', pattern); - define(regex, 'options', options); - define(regex, 'key', key); - cache[key] = regex; +function compose(patterns, options, matcher) { + var matchers; + + return memoize('compose', String(patterns), options, function() { + return function(file) { + // delay composition until it's invoked the first time, + // after that it won't be called again + if (!matchers) { + matchers = []; + for (var i = 0; i < patterns.length; i++) { + matchers.push(matcher(patterns[i], options)); + } + } + + var len = matchers.length; + while (len--) { + if (matchers[len](file) === true) { + return true; + } + } + return false; + }; + }); } /** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. + * Memoize a generated regex or function. A unique key is generated + * from the `type` (usually method name), the `pattern`, and + * user-defined options. */ -function createKey(pattern, options) { - if (!options) return pattern; - var key = pattern; - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - key += ';' + prop + '=' + String(options[prop]); - } +function memoize(type, pattern, options, fn) { + var key = utils.createKey(type + '=' + pattern, options); + + if (options && options.cache === false) { + return fn(pattern, options); } - return key; + + if (cache.has(type, key)) { + return cache.get(type, key); + } + + var val = fn(pattern, options); + cache.set(type, key, val); + return val; } /** - * Expose `makeRe` + * Expose compiler, parser and cache on `nanomatch` */ -module.exports.makeRe = makeRe; +nanomatch.compilers = compilers; +nanomatch.parsers = parsers; +nanomatch.cache = cache; + +/** + * Expose `nanomatch` + * @type {Function} + */ + +module.exports = nanomatch; /***/ }), -/* 650 */ +/* 638 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(651); -var assignSymbols = __webpack_require__(546); +var isExtendable = __webpack_require__(639); +var assignSymbols = __webpack_require__(544); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -76980,7 +76103,7 @@ function isEnum(obj, key) { /***/ }), -/* 651 */ +/* 639 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76993,7 +76116,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(542); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -77001,7 +76124,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 652 */ +/* 640 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77347,15 +76470,15 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 653 */ +/* 641 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var regexNot = __webpack_require__(535); -var toRegex = __webpack_require__(649); -var isOdd = __webpack_require__(654); +var toRegex = __webpack_require__(524); +var isOdd = __webpack_require__(642); /** * Characters to use in negation regex (we want to "not" match @@ -77741,7 +76864,7 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 654 */ +/* 642 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77754,7 +76877,7 @@ module.exports.not = NOT_REGEX; -var isNumber = __webpack_require__(655); +var isNumber = __webpack_require__(643); module.exports = function isOdd(i) { if (!isNumber(i)) { @@ -77768,7 +76891,7 @@ module.exports = function isOdd(i) { /***/ }), -/* 655 */ +/* 643 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77796,14 +76919,14 @@ module.exports = function isNumber(num) { /***/ }), -/* 656 */ +/* 644 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(657))(); +module.exports = new (__webpack_require__(645))(); /***/ }), -/* 657 */ +/* 645 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77816,7 +76939,7 @@ module.exports = new (__webpack_require__(657))(); -var MapCache = __webpack_require__(634); +var MapCache = __webpack_require__(623); /** * Create a new `FragmentCache` with an optional object to use for `caches`. @@ -77938,7 +77061,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 658 */ +/* 646 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77951,14 +77074,14 @@ var path = __webpack_require__(4); * Module dependencies */ -var isWindows = __webpack_require__(659)(); -var Snapdragon = __webpack_require__(567); -utils.define = __webpack_require__(660); -utils.diff = __webpack_require__(661); -utils.extend = __webpack_require__(650); -utils.pick = __webpack_require__(662); -utils.typeOf = __webpack_require__(663); -utils.unique = __webpack_require__(538); +var isWindows = __webpack_require__(647)(); +var Snapdragon = __webpack_require__(563); +utils.define = __webpack_require__(648); +utils.diff = __webpack_require__(649); +utils.extend = __webpack_require__(638); +utils.pick = __webpack_require__(650); +utils.typeOf = __webpack_require__(651); +utils.unique = __webpack_require__(536); /** * Returns true if the given value is effectively an empty string @@ -78324,7 +77447,7 @@ utils.unixify = function(options) { /***/ }), -/* 659 */ +/* 647 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -78352,7 +77475,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 660 */ +/* 648 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78365,8 +77488,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ -var isobject = __webpack_require__(545); -var isDescriptor = __webpack_require__(559); +var isobject = __webpack_require__(543); +var isDescriptor = __webpack_require__(555); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -78397,7 +77520,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 661 */ +/* 649 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78451,7 +77574,7 @@ function diffArray(one, two) { /***/ }), -/* 662 */ +/* 650 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78464,7 +77587,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(545); +var isObject = __webpack_require__(543); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -78493,7 +77616,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 663 */ +/* 651 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -78628,7 +77751,7 @@ function isBuffer(val) { /***/ }), -/* 664 */ +/* 652 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78638,18 +77761,18 @@ function isBuffer(val) { * Module dependencies */ -var extend = __webpack_require__(536); -var unique = __webpack_require__(538); -var toRegex = __webpack_require__(649); +var extend = __webpack_require__(533); +var unique = __webpack_require__(536); +var toRegex = __webpack_require__(524); /** * Local dependencies */ -var compilers = __webpack_require__(665); -var parsers = __webpack_require__(676); -var Extglob = __webpack_require__(679); -var utils = __webpack_require__(678); +var compilers = __webpack_require__(653); +var parsers = __webpack_require__(664); +var Extglob = __webpack_require__(667); +var utils = __webpack_require__(666); var MAX_LENGTH = 1024 * 64; /** @@ -78966,13 +78089,13 @@ module.exports = extglob; /***/ }), -/* 665 */ +/* 653 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(666); +var brackets = __webpack_require__(654); /** * Extglob compilers @@ -79142,7 +78265,7 @@ module.exports = function(extglob) { /***/ }), -/* 666 */ +/* 654 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79152,17 +78275,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(667); -var parsers = __webpack_require__(669); +var compilers = __webpack_require__(655); +var parsers = __webpack_require__(657); /** * Module dependencies */ -var debug = __webpack_require__(671)('expand-brackets'); -var extend = __webpack_require__(536); -var Snapdragon = __webpack_require__(567); -var toRegex = __webpack_require__(649); +var debug = __webpack_require__(659)('expand-brackets'); +var extend = __webpack_require__(533); +var Snapdragon = __webpack_require__(563); +var toRegex = __webpack_require__(524); /** * Parses the given POSIX character class `pattern` and returns a @@ -79360,13 +78483,13 @@ module.exports = brackets; /***/ }), -/* 667 */ +/* 655 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(668); +var posix = __webpack_require__(656); module.exports = function(brackets) { brackets.compiler @@ -79454,7 +78577,7 @@ module.exports = function(brackets) { /***/ }), -/* 668 */ +/* 656 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79483,14 +78606,14 @@ module.exports = { /***/ }), -/* 669 */ +/* 657 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(670); -var define = __webpack_require__(594); +var utils = __webpack_require__(658); +var define = __webpack_require__(525); /** * Text regex @@ -79709,13 +78832,13 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 670 */ +/* 658 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(649); +var toRegex = __webpack_require__(524); var regexNot = __webpack_require__(535); var cached; @@ -79750,7 +78873,7 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 671 */ +/* 659 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -79759,14 +78882,14 @@ exports.createRegex = function(pattern, include) { */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(672); + module.exports = __webpack_require__(660); } else { - module.exports = __webpack_require__(675); + module.exports = __webpack_require__(663); } /***/ }), -/* 672 */ +/* 660 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -79775,7 +78898,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(673); +exports = module.exports = __webpack_require__(661); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -79957,7 +79080,7 @@ function localstorage() { /***/ }), -/* 673 */ +/* 661 */ /***/ (function(module, exports, __webpack_require__) { @@ -79973,7 +79096,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(674); +exports.humanize = __webpack_require__(662); /** * The currently active debug mode names, and names to skip. @@ -80165,7 +79288,7 @@ function coerce(val) { /***/ }), -/* 674 */ +/* 662 */ /***/ (function(module, exports) { /** @@ -80323,7 +79446,7 @@ function plural(ms, n, name) { /***/ }), -/* 675 */ +/* 663 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -80339,7 +79462,7 @@ var util = __webpack_require__(111); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(673); +exports = module.exports = __webpack_require__(661); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -80518,7 +79641,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(612); + var net = __webpack_require__(601); stream = new net.Socket({ fd: fd, readable: false, @@ -80577,15 +79700,15 @@ exports.enable(load()); /***/ }), -/* 676 */ +/* 664 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(666); -var define = __webpack_require__(677); -var utils = __webpack_require__(678); +var brackets = __webpack_require__(654); +var define = __webpack_require__(665); +var utils = __webpack_require__(666); /** * Characters to use in text regex (we want to "not" match @@ -80740,7 +79863,7 @@ module.exports = parsers; /***/ }), -/* 677 */ +/* 665 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80753,7 +79876,7 @@ module.exports = parsers; -var isDescriptor = __webpack_require__(559); +var isDescriptor = __webpack_require__(555); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -80778,14 +79901,14 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 678 */ +/* 666 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var regex = __webpack_require__(535); -var Cache = __webpack_require__(657); +var Cache = __webpack_require__(645); /** * Utils @@ -80854,7 +79977,7 @@ utils.createRegex = function(str) { /***/ }), -/* 679 */ +/* 667 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80864,16 +79987,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(567); -var define = __webpack_require__(677); -var extend = __webpack_require__(536); +var Snapdragon = __webpack_require__(563); +var define = __webpack_require__(665); +var extend = __webpack_require__(533); /** * Local dependencies */ -var compilers = __webpack_require__(665); -var parsers = __webpack_require__(676); +var compilers = __webpack_require__(653); +var parsers = __webpack_require__(664); /** * Customize Snapdragon parser and renderer @@ -80939,16 +80062,16 @@ module.exports = Extglob; /***/ }), -/* 680 */ +/* 668 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(664); -var nanomatch = __webpack_require__(648); +var extglob = __webpack_require__(652); +var nanomatch = __webpack_require__(637); var regexNot = __webpack_require__(535); -var toRegex = __webpack_require__(636); +var toRegex = __webpack_require__(625); var not; /** @@ -81029,14 +80152,14 @@ function textRegex(pattern) { /***/ }), -/* 681 */ +/* 669 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(657))(); +module.exports = new (__webpack_require__(645))(); /***/ }), -/* 682 */ +/* 670 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81049,13 +80172,13 @@ var path = __webpack_require__(4); * Module dependencies */ -var Snapdragon = __webpack_require__(567); -utils.define = __webpack_require__(643); -utils.diff = __webpack_require__(661); -utils.extend = __webpack_require__(644); -utils.pick = __webpack_require__(662); -utils.typeOf = __webpack_require__(683); -utils.unique = __webpack_require__(538); +var Snapdragon = __webpack_require__(563); +utils.define = __webpack_require__(632); +utils.diff = __webpack_require__(649); +utils.extend = __webpack_require__(633); +utils.pick = __webpack_require__(650); +utils.typeOf = __webpack_require__(671); +utils.unique = __webpack_require__(536); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -81352,7 +80475,7 @@ utils.unixify = function(options) { /***/ }), -/* 683 */ +/* 671 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -81487,7 +80610,7 @@ function isBuffer(val) { /***/ }), -/* 684 */ +/* 672 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81506,9 +80629,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(685); -var reader_1 = __webpack_require__(698); -var fs_stream_1 = __webpack_require__(702); +var readdir = __webpack_require__(673); +var reader_1 = __webpack_require__(686); +var fs_stream_1 = __webpack_require__(690); var ReaderAsync = /** @class */ (function (_super) { __extends(ReaderAsync, _super); function ReaderAsync() { @@ -81569,15 +80692,15 @@ exports.default = ReaderAsync; /***/ }), -/* 685 */ +/* 673 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(686); -const readdirAsync = __webpack_require__(694); -const readdirStream = __webpack_require__(697); +const readdirSync = __webpack_require__(674); +const readdirAsync = __webpack_require__(682); +const readdirStream = __webpack_require__(685); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -81661,7 +80784,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 686 */ +/* 674 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81669,11 +80792,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(687); +const DirectoryReader = __webpack_require__(675); let syncFacade = { - fs: __webpack_require__(692), - forEach: __webpack_require__(693), + fs: __webpack_require__(680), + forEach: __webpack_require__(681), sync: true }; @@ -81702,7 +80825,7 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 687 */ +/* 675 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81711,9 +80834,9 @@ function readdirSync (dir, options, internalOptions) { const Readable = __webpack_require__(137).Readable; const EventEmitter = __webpack_require__(155).EventEmitter; const path = __webpack_require__(4); -const normalizeOptions = __webpack_require__(688); -const stat = __webpack_require__(690); -const call = __webpack_require__(691); +const normalizeOptions = __webpack_require__(676); +const stat = __webpack_require__(678); +const call = __webpack_require__(679); /** * Asynchronously reads the contents of a directory and streams the results @@ -82089,14 +81212,14 @@ module.exports = DirectoryReader; /***/ }), -/* 688 */ +/* 676 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const globToRegExp = __webpack_require__(689); +const globToRegExp = __webpack_require__(677); module.exports = normalizeOptions; @@ -82273,7 +81396,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 689 */ +/* 677 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -82410,13 +81533,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 690 */ +/* 678 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(691); +const call = __webpack_require__(679); module.exports = stat; @@ -82491,7 +81614,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 691 */ +/* 679 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82552,14 +81675,14 @@ function callOnce (fn) { /***/ }), -/* 692 */ +/* 680 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const call = __webpack_require__(691); +const call = __webpack_require__(679); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -82623,7 +81746,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 693 */ +/* 681 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82652,7 +81775,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 694 */ +/* 682 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82660,12 +81783,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(695); -const DirectoryReader = __webpack_require__(687); +const maybe = __webpack_require__(683); +const DirectoryReader = __webpack_require__(675); let asyncFacade = { fs: __webpack_require__(133), - forEach: __webpack_require__(696), + forEach: __webpack_require__(684), async: true }; @@ -82707,7 +81830,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 695 */ +/* 683 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82734,7 +81857,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 696 */ +/* 684 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82770,7 +81893,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 697 */ +/* 685 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82778,11 +81901,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(687); +const DirectoryReader = __webpack_require__(675); let streamFacade = { fs: __webpack_require__(133), - forEach: __webpack_require__(696), + forEach: __webpack_require__(684), async: true }; @@ -82802,16 +81925,16 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 698 */ +/* 686 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var deep_1 = __webpack_require__(699); -var entry_1 = __webpack_require__(701); -var pathUtil = __webpack_require__(700); +var deep_1 = __webpack_require__(687); +var entry_1 = __webpack_require__(689); +var pathUtil = __webpack_require__(688); var Reader = /** @class */ (function () { function Reader(options) { this.options = options; @@ -82877,13 +82000,13 @@ exports.default = Reader; /***/ }), -/* 699 */ +/* 687 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(700); +var pathUtils = __webpack_require__(688); var patternUtils = __webpack_require__(517); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { @@ -82967,7 +82090,7 @@ exports.default = DeepFilter; /***/ }), -/* 700 */ +/* 688 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82998,13 +82121,13 @@ exports.makeAbsolute = makeAbsolute; /***/ }), -/* 701 */ +/* 689 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(700); +var pathUtils = __webpack_require__(688); var patternUtils = __webpack_require__(517); var EntryFilter = /** @class */ (function () { function EntryFilter(options, micromatchOptions) { @@ -83090,7 +82213,7 @@ exports.default = EntryFilter; /***/ }), -/* 702 */ +/* 690 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83110,8 +82233,8 @@ var __extends = (this && this.__extends) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); var stream = __webpack_require__(137); -var fsStat = __webpack_require__(703); -var fs_1 = __webpack_require__(707); +var fsStat = __webpack_require__(691); +var fs_1 = __webpack_require__(695); var FileSystemStream = /** @class */ (function (_super) { __extends(FileSystemStream, _super); function FileSystemStream() { @@ -83161,14 +82284,14 @@ exports.default = FileSystemStream; /***/ }), -/* 703 */ +/* 691 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__(704); -const statProvider = __webpack_require__(706); +const optionsManager = __webpack_require__(692); +const statProvider = __webpack_require__(694); /** * Asynchronous API. */ @@ -83199,13 +82322,13 @@ exports.statSync = statSync; /***/ }), -/* 704 */ +/* 692 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__(705); +const fsAdapter = __webpack_require__(693); function prepare(opts) { const options = Object.assign({ fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), @@ -83218,7 +82341,7 @@ exports.prepare = prepare; /***/ }), -/* 705 */ +/* 693 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83241,7 +82364,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter; /***/ }), -/* 706 */ +/* 694 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83293,7 +82416,7 @@ exports.isFollowedSymlink = isFollowedSymlink; /***/ }), -/* 707 */ +/* 695 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83324,7 +82447,7 @@ exports.default = FileSystem; /***/ }), -/* 708 */ +/* 696 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83344,9 +82467,9 @@ var __extends = (this && this.__extends) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); var stream = __webpack_require__(137); -var readdir = __webpack_require__(685); -var reader_1 = __webpack_require__(698); -var fs_stream_1 = __webpack_require__(702); +var readdir = __webpack_require__(673); +var reader_1 = __webpack_require__(686); +var fs_stream_1 = __webpack_require__(690); var TransformStream = /** @class */ (function (_super) { __extends(TransformStream, _super); function TransformStream(reader) { @@ -83414,7 +82537,7 @@ exports.default = ReaderStream; /***/ }), -/* 709 */ +/* 697 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83433,9 +82556,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(685); -var reader_1 = __webpack_require__(698); -var fs_sync_1 = __webpack_require__(710); +var readdir = __webpack_require__(673); +var reader_1 = __webpack_require__(686); +var fs_sync_1 = __webpack_require__(698); var ReaderSync = /** @class */ (function (_super) { __extends(ReaderSync, _super); function ReaderSync() { @@ -83495,7 +82618,7 @@ exports.default = ReaderSync; /***/ }), -/* 710 */ +/* 698 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83514,8 +82637,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__(703); -var fs_1 = __webpack_require__(707); +var fsStat = __webpack_require__(691); +var fs_1 = __webpack_require__(695); var FileSystemSync = /** @class */ (function (_super) { __extends(FileSystemSync, _super); function FileSystemSync() { @@ -83561,7 +82684,7 @@ exports.default = FileSystemSync; /***/ }), -/* 711 */ +/* 699 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83577,7 +82700,7 @@ exports.flatten = flatten; /***/ }), -/* 712 */ +/* 700 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83598,13 +82721,13 @@ exports.merge = merge; /***/ }), -/* 713 */ +/* 701 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(714); +const pathType = __webpack_require__(702); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -83670,13 +82793,13 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 714 */ +/* 702 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const pify = __webpack_require__(715); +const pify = __webpack_require__(703); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -83719,7 +82842,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 715 */ +/* 703 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83810,7 +82933,7 @@ module.exports = (obj, opts) => { /***/ }), -/* 716 */ +/* 704 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83818,9 +82941,9 @@ module.exports = (obj, opts) => { const fs = __webpack_require__(133); const path = __webpack_require__(4); const fastGlob = __webpack_require__(513); -const gitIgnore = __webpack_require__(717); -const pify = __webpack_require__(718); -const slash = __webpack_require__(719); +const gitIgnore = __webpack_require__(705); +const pify = __webpack_require__(706); +const slash = __webpack_require__(707); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -83918,7 +83041,7 @@ module.exports.sync = options => { /***/ }), -/* 717 */ +/* 705 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -84387,7 +83510,7 @@ module.exports = options => new IgnoreBase(options) /***/ }), -/* 718 */ +/* 706 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84462,7 +83585,7 @@ module.exports = (input, options) => { /***/ }), -/* 719 */ +/* 707 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84480,7 +83603,7 @@ module.exports = input => { /***/ }), -/* 720 */ +/* 708 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -84534,17 +83657,17 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 721 */ +/* 709 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); const {constants: fsConstants} = __webpack_require__(133); -const pEvent = __webpack_require__(722); -const CpFileError = __webpack_require__(725); -const fs = __webpack_require__(729); -const ProgressEmitter = __webpack_require__(732); +const pEvent = __webpack_require__(710); +const CpFileError = __webpack_require__(713); +const fs = __webpack_require__(717); +const ProgressEmitter = __webpack_require__(720); const cpFileAsync = async (source, destination, options, progressEmitter) => { let readError; @@ -84658,12 +83781,12 @@ module.exports.sync = (source, destination, options) => { /***/ }), -/* 722 */ +/* 710 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pTimeout = __webpack_require__(723); +const pTimeout = __webpack_require__(711); const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; @@ -84954,12 +84077,12 @@ module.exports.iterator = (emitter, event, options) => { /***/ }), -/* 723 */ +/* 711 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pFinally = __webpack_require__(724); +const pFinally = __webpack_require__(712); class TimeoutError extends Error { constructor(message) { @@ -85005,7 +84128,7 @@ module.exports.TimeoutError = TimeoutError; /***/ }), -/* 724 */ +/* 712 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85027,12 +84150,12 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 725 */ +/* 713 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(726); +const NestedError = __webpack_require__(714); class CpFileError extends NestedError { constructor(message, nested) { @@ -85046,10 +84169,10 @@ module.exports = CpFileError; /***/ }), -/* 726 */ +/* 714 */ /***/ (function(module, exports, __webpack_require__) { -var inherits = __webpack_require__(727); +var inherits = __webpack_require__(715); var NestedError = function (message, nested) { this.nested = nested; @@ -85100,7 +84223,7 @@ module.exports = NestedError; /***/ }), -/* 727 */ +/* 715 */ /***/ (function(module, exports, __webpack_require__) { try { @@ -85108,12 +84231,12 @@ try { if (typeof util.inherits !== 'function') throw ''; module.exports = util.inherits; } catch (e) { - module.exports = __webpack_require__(728); + module.exports = __webpack_require__(716); } /***/ }), -/* 728 */ +/* 716 */ /***/ (function(module, exports) { if (typeof Object.create === 'function') { @@ -85142,16 +84265,16 @@ if (typeof Object.create === 'function') { /***/ }), -/* 729 */ +/* 717 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const {promisify} = __webpack_require__(111); const fs = __webpack_require__(132); -const makeDir = __webpack_require__(730); -const pEvent = __webpack_require__(722); -const CpFileError = __webpack_require__(725); +const makeDir = __webpack_require__(718); +const pEvent = __webpack_require__(710); +const CpFileError = __webpack_require__(713); const stat = promisify(fs.stat); const lstat = promisify(fs.lstat); @@ -85248,7 +84371,7 @@ exports.copyFileSync = (source, destination, flags) => { /***/ }), -/* 730 */ +/* 718 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85256,7 +84379,7 @@ exports.copyFileSync = (source, destination, flags) => { const fs = __webpack_require__(133); const path = __webpack_require__(4); const {promisify} = __webpack_require__(111); -const semver = __webpack_require__(731); +const semver = __webpack_require__(719); const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); @@ -85411,7 +84534,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 731 */ +/* 719 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -87013,7 +86136,7 @@ function coerce (version, options) { /***/ }), -/* 732 */ +/* 720 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87054,7 +86177,7 @@ module.exports = ProgressEmitter; /***/ }), -/* 733 */ +/* 721 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87100,12 +86223,12 @@ exports.default = module.exports; /***/ }), -/* 734 */ +/* 722 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(735); +const NestedError = __webpack_require__(723); class CpyError extends NestedError { constructor(message, nested) { @@ -87119,7 +86242,7 @@ module.exports = CpyError; /***/ }), -/* 735 */ +/* 723 */ /***/ (function(module, exports, __webpack_require__) { var inherits = __webpack_require__(111).inherits; diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json index 1f916c58e2ecd..be18b7cfc0d01 100644 --- a/packages/kbn-ui-framework/package.json +++ b/packages/kbn-ui-framework/package.json @@ -37,7 +37,7 @@ "babel-loader": "^8.0.6", "brace": "0.11.1", "chalk": "^4.1.0", - "chokidar": "3.2.1", + "chokidar": "^3.4.2", "core-js": "^3.6.4", "css-loader": "^3.4.2", "expose-loader": "^0.7.5", diff --git a/src/cli/cluster/cluster_manager.ts b/src/cli/cluster/cluster_manager.ts index 78472bb3f517d..e1f56a2f267fa 100644 --- a/src/cli/cluster/cluster_manager.ts +++ b/src/cli/cluster/cluster_manager.ts @@ -227,9 +227,6 @@ export class ClusterManager { fromRoot('src/legacy/server'), fromRoot('src/legacy/ui'), fromRoot('src/legacy/utils'), - fromRoot('x-pack/legacy/common'), - fromRoot('x-pack/legacy/plugins'), - fromRoot('x-pack/legacy/server'), fromRoot('config'), ...extraPaths, ].map((path) => resolve(path)) @@ -242,7 +239,6 @@ export class ClusterManager { /\.md$/, /debug\.log$/, ...pluginInternalDirsIgnore, - fromRoot('src/legacy/server/sass/__tmp__'), fromRoot('x-pack/plugins/reporting/chromium'), fromRoot('x-pack/plugins/security_solution/cypress'), fromRoot('x-pack/plugins/apm/e2e'), @@ -253,7 +249,6 @@ export class ClusterManager { fromRoot('x-pack/plugins/lists/server/scripts'), fromRoot('x-pack/plugins/security_solution/scripts'), fromRoot('x-pack/plugins/security_solution/server/lib/detection_engine/scripts'), - 'plugins/java_languageserver', ]; this.watcher = chokidar.watch(watchPaths, { diff --git a/yarn.lock b/yarn.lock index b6516b8bf3b55..1f849c97d4f13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8484,21 +8484,6 @@ chokidar@2.1.2: optionalDependencies: fsevents "^1.2.7" -chokidar@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.2.1.tgz#4634772a1924512d990d4505957bf3a510611387" - integrity sha512-/j5PPkb5Feyps9e+jo07jUZGvkB5Aj953NrI4s8xSVScrAo/RHeILrtdb4uzR7N6aaFFxxJ+gt8mA8HfNpw76w== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.1.3" - optionalDependencies: - fsevents "~2.1.0" - chokidar@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" @@ -8533,10 +8518,10 @@ chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.2, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.2.2, chokidar@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" - integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== +chokidar@^3.2.2, chokidar@^3.4.0, chokidar@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -13665,7 +13650,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.1.0, fsevents@~2.1.1, fsevents@~2.1.2: +fsevents@^2.1.2, fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== @@ -24294,13 +24279,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.3.tgz#d6e011ed5b9240a92f08651eeb40f7942ceb6cc1" - integrity sha512-ZOsfTGkjO2kqeR5Mzr5RYDbTGYneSkdNKX2fOX2P5jF7vMrd/GNnIAUtDldeHHumHUCQ3V05YfWUdxMPAsRu9Q== - dependencies: - picomatch "^2.0.4" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" From e873848cc10e7c900946b87d15086d32959029a4 Mon Sep 17 00:00:00 2001 From: Constance Date: Tue, 29 Sep 2020 08:18:58 -0700 Subject: [PATCH 057/119] [Enterprise Search] DRY out createHref helper for navigateToUrl calls (#78717) * DRY out createHref helper - that navigateToUrl will shortly also use + fix mockHistory type complaint * KibanaLogic: Update navigateToUrl to use createHref helper + add param.history value, since we're technically supposed to be using Kibana's passed history over anything from useHistory * Update breadcrumbs & eui link helpers w/ new KibanaLogic changes - navigateToUrl is now double-dipping createHref, so we update it to not do so - remove useHistory in favor of grabbing history from KibanaLogic * [Optional?] Update FlashMessages to grab history from KibanaLogic - since we're now storing it there, we might as well grab it as well instead of passing in props? * [Misc] Fix failing tests due to react router mock --- .../__mocks__/kibana_logic.mock.ts | 3 +++ .../__mocks__/react_router_history.mock.ts | 3 ++- .../public/applications/index.tsx | 5 ++-- .../flash_messages_logic.test.ts | 5 +++- .../flash_messages/flash_messages_logic.ts | 13 ++++----- .../set_message_helpers.test.ts | 5 +++- .../shared/kibana/kibana_logic.test.ts | 21 ++++++++++++++- .../shared/kibana/kibana_logic.ts | 20 +++++++++++--- .../generate_breadcrumbs.test.ts | 16 ++++++----- .../kibana_chrome/generate_breadcrumbs.ts | 12 +++------ .../react_router_helpers/create_href.test.ts | 19 +++++++++++++ .../react_router_helpers/create_href.ts | 27 +++++++++++++++++++ .../react_router_helpers/eui_link.test.tsx | 1 - .../shared/react_router_helpers/eui_link.tsx | 10 +++---- .../shared/react_router_helpers/index.ts | 1 + 15 files changed, 122 insertions(+), 39 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts index 9f3c2443bc9b8..419db86148984 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts @@ -4,8 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ +import { mockHistory } from './'; + export const mockKibanaValues = { config: { host: 'http://localhost:3002' }, + history: mockHistory, navigateToUrl: jest.fn(), setBreadcrumbs: jest.fn(), setDocTitle: jest.fn(), diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/react_router_history.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/react_router_history.mock.ts index 7b3ac86ad0ab1..2c833bcfeaf4c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/react_router_history.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/react_router_history.mock.ts @@ -15,7 +15,7 @@ export const mockHistory = { pathname: '/current-path', }, listen: jest.fn(() => jest.fn()), -}; +} as any; export const mockLocation = { key: 'someKey', pathname: '/current-path', @@ -25,6 +25,7 @@ export const mockLocation = { }; jest.mock('react-router-dom', () => ({ + ...(jest.requireActual('react-router-dom') as object), useHistory: jest.fn(() => mockHistory), useLocation: jest.fn(() => mockLocation), })); diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 63be9b684e56f..8b5e7daea989c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -41,6 +41,7 @@ export const renderApp = ( const unmountKibanaLogic = mountKibanaLogic({ config, + history: params.history, navigateToUrl: core.application.navigateToUrl, setBreadcrumbs: core.chrome.setBreadcrumbs, setDocTitle: core.chrome.docTitle.change, @@ -53,9 +54,7 @@ export const renderApp = ( errorConnecting, readOnlyMode: initialData.readOnlyMode, }); - const unmountFlashMessagesLogic = mountFlashMessagesLogic({ - history: params.history, - }); + const unmountFlashMessagesLogic = mountFlashMessagesLogic(); ReactDOM.render( diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts index c12011b47a472..ff1ec7428e828 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts @@ -7,11 +7,14 @@ import { resetContext } from 'kea'; import { mockHistory } from '../../__mocks__'; +jest.mock('../kibana', () => ({ + KibanaLogic: { values: { history: mockHistory } }, +})); import { FlashMessagesLogic, mountFlashMessagesLogic, IFlashMessage } from './'; describe('FlashMessagesLogic', () => { - const mount = () => mountFlashMessagesLogic({ history: mockHistory as any }); + const mount = () => mountFlashMessagesLogic(); beforeEach(() => { jest.clearAllMocks(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts index 1735cc8ac7228..5a05a03adeb6b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts @@ -6,7 +6,8 @@ import { kea, MakeLogicType } from 'kea'; import { ReactNode } from 'react'; -import { History } from 'history'; + +import { KibanaLogic } from '../kibana'; export interface IFlashMessage { type: 'success' | 'info' | 'warning' | 'error'; @@ -61,10 +62,10 @@ export const FlashMessagesLogic = kea ({ + events: ({ values, actions }) => ({ afterMount: () => { // On React Router navigation, clear previous flash messages and load any queued messages - const unlisten = props.history.listen(() => { + const unlisten = KibanaLogic.values.history.listen(() => { actions.clearFlashMessages(); actions.setFlashMessages(values.queuedMessages); actions.clearQueuedMessages(); @@ -81,11 +82,7 @@ export const FlashMessagesLogic = kea { - FlashMessagesLogic(props); +export const mountFlashMessagesLogic = () => { const unmount = FlashMessagesLogic.mount(); return unmount; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts index f2ddd560ac9c1..46027fdfb22b1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts @@ -5,6 +5,9 @@ */ import { mockHistory } from '../../__mocks__'; +jest.mock('../kibana', () => ({ + KibanaLogic: { values: { history: mockHistory } }, +})); import { FlashMessagesLogic, @@ -18,7 +21,7 @@ describe('Flash Message Helpers', () => { const message = 'I am a message'; beforeEach(() => { - mountFlashMessagesLogic({ history: mockHistory as any }); + mountFlashMessagesLogic(); }); it('setSuccessMessage()', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts index 99262cca97ca8..4d51362a7e11b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts @@ -20,7 +20,10 @@ describe('KibanaLogic', () => { it('sets values from props', () => { mountKibanaLogic(mockKibanaValues); - expect(KibanaLogic.values).toEqual(mockKibanaValues); + expect(KibanaLogic.values).toEqual({ + ...mockKibanaValues, + navigateToUrl: expect.any(Function), + }); }); it('gracefully handles missing configs', () => { @@ -29,4 +32,20 @@ describe('KibanaLogic', () => { expect(KibanaLogic.values.config).toEqual({}); }); }); + + describe('navigateToUrl()', () => { + beforeEach(() => mountKibanaLogic(mockKibanaValues)); + + it('runs paths through createHref before calling navigateToUrl', () => { + KibanaLogic.values.navigateToUrl('/test'); + + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/app/enterprise_search/test'); + }); + + it('does not run paths through createHref if the shouldNotCreateHref option is passed', () => { + KibanaLogic.values.navigateToUrl('/test', { shouldNotCreateHref: true }); + + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/test'); + }); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts index a884acb02d10a..5904c6c89e39c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -6,26 +6,40 @@ import { kea, MakeLogicType } from 'kea'; +import { History } from 'history'; import { ApplicationStart, ChromeBreadcrumb } from 'src/core/public'; -export interface IKibanaValues { +import { createHref, ICreateHrefOptions } from '../react_router_helpers'; + +interface IKibanaLogicProps { config: { host?: string }; + history: History; navigateToUrl: ApplicationStart['navigateToUrl']; setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; setDocTitle(title: string): void; } +export interface IKibanaValues extends IKibanaLogicProps { + navigateToUrl(path: string, options?: ICreateHrefOptions): Promise; +} export const KibanaLogic = kea>({ path: ['enterprise_search', 'kibana_logic'], reducers: ({ props }) => ({ config: [props.config || {}, {}], - navigateToUrl: [props.navigateToUrl, {}], + history: [props.history, {}], + navigateToUrl: [ + (url: string, options?: ICreateHrefOptions) => { + const href = createHref(url, props.history, options); + return props.navigateToUrl(href); + }, + {}, + ], setBreadcrumbs: [props.setBreadcrumbs, {}], setDocTitle: [props.setDocTitle, {}], }), }); -export const mountKibanaLogic = (props: IKibanaValues) => { +export const mountKibanaLogic = (props: IKibanaLogicProps) => { KibanaLogic(props); const unmount = KibanaLogic.mount(); return unmount; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts index a2c0bcae6fc18..61a4397486346 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts @@ -5,10 +5,12 @@ */ import '../../__mocks__/kea.mock'; -import '../../__mocks__/react_router_history.mock'; import { mockKibanaValues, mockHistory } from '../../__mocks__'; -jest.mock('../react_router_helpers', () => ({ letBrowserHandleEvent: jest.fn(() => false) })); +jest.mock('../react_router_helpers', () => ({ + letBrowserHandleEvent: jest.fn(() => false), + createHref: jest.requireActual('../react_router_helpers').createHref, +})); import { letBrowserHandleEvent } from '../react_router_helpers'; import { @@ -50,21 +52,23 @@ describe('useBreadcrumbs', () => { it('prevents default navigation and uses React Router history on click', () => { const breadcrumb = useBreadcrumbs([{ text: '', path: '/test' }])[0] as any; + + expect(breadcrumb.href).toEqual('/app/enterprise_search/test'); + expect(mockHistory.createHref).toHaveBeenCalled(); + const event = { preventDefault: jest.fn() }; breadcrumb.onClick(event); - expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/app/enterprise_search/test'); - expect(mockHistory.createHref).toHaveBeenCalled(); expect(event.preventDefault).toHaveBeenCalled(); + expect(mockKibanaValues.navigateToUrl).toHaveBeenCalled(); }); it('does not call createHref if shouldNotCreateHref is passed', () => { const breadcrumb = useBreadcrumbs([ { text: '', path: '/test', shouldNotCreateHref: true }, ])[0] as any; - breadcrumb.onClick({ preventDefault: () => null }); - expect(mockKibanaValues.navigateToUrl).toHaveBeenCalledWith('/test'); + expect(breadcrumb.href).toEqual('/test'); expect(mockHistory.createHref).not.toHaveBeenCalled(); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts index ff7f29e2e393c..9ef23e6b176d9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts @@ -5,7 +5,6 @@ */ import { useValues } from 'kea'; -import { useHistory } from 'react-router-dom'; import { EuiBreadcrumb } from '@elastic/eui'; import { KibanaLogic } from '../../shared/kibana'; @@ -16,7 +15,7 @@ import { WORKPLACE_SEARCH_PLUGIN, } from '../../../../common/constants'; -import { letBrowserHandleEvent } from '../react_router_helpers'; +import { letBrowserHandleEvent, createHref } from '../react_router_helpers'; /** * Generate React-Router-friendly EUI breadcrumb objects @@ -33,20 +32,17 @@ interface IBreadcrumb { export type TBreadcrumbs = IBreadcrumb[]; export const useBreadcrumbs = (breadcrumbs: TBreadcrumbs) => { - const history = useHistory(); - const { navigateToUrl } = useValues(KibanaLogic); + const { navigateToUrl, history } = useValues(KibanaLogic); return breadcrumbs.map(({ text, path, shouldNotCreateHref }) => { const breadcrumb = { text } as EuiBreadcrumb; if (path) { - const href = shouldNotCreateHref ? path : (history.createHref({ pathname: path }) as string); - - breadcrumb.href = href; + breadcrumb.href = createHref(path, history, { shouldNotCreateHref }); breadcrumb.onClick = (event) => { if (letBrowserHandleEvent(event)) return; event.preventDefault(); - navigateToUrl(href); + navigateToUrl(path, { shouldNotCreateHref }); }; } diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.test.ts new file mode 100644 index 0000000000000..5f96beeb42ae4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.test.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { mockHistory } from '../../__mocks__'; + +import { createHref } from './'; + +describe('createHref', () => { + it('generates a path with the React Router basename included', () => { + expect(createHref('/test', mockHistory)).toEqual('/app/enterprise_search/test'); + }); + + it('does not include the basename if shouldNotCreateHref is passed', () => { + expect(createHref('/test', mockHistory, { shouldNotCreateHref: true })).toEqual('/test'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.ts b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.ts new file mode 100644 index 0000000000000..cc8279c80a092 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/create_href.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { History } from 'history'; + +/** + * This helper uses React Router's createHref function to generate links with router basenames accounted for. + * For example, if we perform navigateToUrl('/engines') within App Search, we expect the app basename + * to be taken into account to be intelligently routed to '/app/enterprise_search/app_search/engines'. + * + * This helper accomplishes that, while still giving us an escape hatch for navigation *between* apps. + * For example, if we want to navigate the user from App Search to Enterprise Search we could + * navigateToUrl('/app/enterprise_search', { shouldNotCreateHref: true }) + */ +export interface ICreateHrefOptions { + shouldNotCreateHref?: boolean; +} +export const createHref = ( + path: string, + history: History, + options?: ICreateHrefOptions +): string => { + return options?.shouldNotCreateHref ? path : history.createHref({ pathname: path }); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx index eba632d86dc66..82fbb8940d460 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.test.tsx @@ -5,7 +5,6 @@ */ import '../../__mocks__/kea.mock'; -import '../../__mocks__/react_router_history.mock'; import React from 'react'; import { shallow, mount } from 'enzyme'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx index 99314515f2734..e0aa5afdf38c1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_link.tsx @@ -6,11 +6,10 @@ import React from 'react'; import { useValues } from 'kea'; -import { useHistory } from 'react-router-dom'; import { EuiLink, EuiButton, EuiButtonProps, EuiLinkAnchorProps } from '@elastic/eui'; import { KibanaLogic } from '../../shared/kibana'; -import { letBrowserHandleEvent } from './link_events'; +import { letBrowserHandleEvent, createHref } from './'; /** * Generates either an EuiLink or EuiButton with a React-Router-ified link @@ -33,11 +32,10 @@ export const EuiReactRouterHelper: React.FC = ({ shouldNotCreateHref, children, }) => { - const history = useHistory(); - const { navigateToUrl } = useValues(KibanaLogic); + const { navigateToUrl, history } = useValues(KibanaLogic); // Generate the correct link href (with basename etc. accounted for) - const href = shouldNotCreateHref ? to : history.createHref({ pathname: to }); + const href = createHref(to, history, { shouldNotCreateHref }); const reactRouterLinkClick = (event: React.MouseEvent) => { if (onClick) onClick(); // Run any passed click events (e.g. telemetry) @@ -47,7 +45,7 @@ export const EuiReactRouterHelper: React.FC = ({ event.preventDefault(); // Perform SPA navigation. - navigateToUrl(href); + navigateToUrl(to, { shouldNotCreateHref }); }; const reactRouterProps = { href, onClick: reactRouterLinkClick }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts index 46dc328633153..6915d3222c45c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts @@ -5,5 +5,6 @@ */ export { letBrowserHandleEvent } from './link_events'; +export { createHref, ICreateHrefOptions } from './create_href'; export { EuiReactRouterLink as EuiLink } from './eui_link'; export { EuiReactRouterButton as EuiButton } from './eui_link'; From b412b68aed98c4d5da1ad4df92906001eca40b25 Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Tue, 29 Sep 2020 08:20:02 -0700 Subject: [PATCH 058/119] [Fleet] Rename `CONFIG_CHANGE` action to `POLICY_CHANGE` (#78221) * Initial pass at config->policy change action * Make policy change action BWC with agent <= 7.9 * Fix test * Add agent action SO migration for policy change actions Co-authored-by: Elastic Machine --- .../common/openapi/spec_oas3.json | 4 +- .../common/types/models/agent.ts | 17 +- .../server/routes/agent/acks_handlers.test.ts | 2 +- .../routes/agent/actions_handlers.test.ts | 6 +- .../server/saved_objects/index.ts | 4 + .../saved_objects/migrations/to_v7_10_0.ts | 16 ++ .../server/services/agent_policy.ts | 4 +- .../server/services/agents/acks.test.ts | 12 +- .../server/services/agents/acks.ts | 13 +- .../server/services/agents/actions.test.ts | 4 +- .../agents/checkin/state_new_actions.test.ts | 156 ++++++++++++++++++ .../agents/checkin/state_new_actions.ts | 40 ++++- .../ingest_manager/server/types/index.tsx | 1 + .../server/types/models/agent.ts | 2 +- .../es_archives/fleet/agents/data.json | 4 +- .../apis/fleet/agents/actions.ts | 6 +- .../apis/fleet/agents/complete_flow.ts | 4 +- 17 files changed, 255 insertions(+), 40 deletions(-) create mode 100644 x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts diff --git a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json index b7856e6d57402..28a88aa2be605 100644 --- a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json +++ b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json @@ -2757,7 +2757,7 @@ "data": "{\"config\":{\"id\":\"ae556400-5e39-11ea-8b49-f9747e466f7b\",\"outputs\":{\"default\":{\"type\":\"elasticsearch\",\"hosts\":[\"http://localhost:9200\"],\"api_key\":\"\",\"api_token\":\"6ckkp3ABz7e_XRqr3LM8:gQuDfUNSRgmY0iziYqP9Hw\"}},\"packagePolicies\":[]}}", "created_at": "2020-03-04T20:02:56.149Z", "id": "6a95c00a-d76d-4931-97c3-0bf935272d7d", - "type": "CONFIG_CHANGE" + "type": "POLICY_CHANGE" } ], "access_api_key_id": "6Mkkp3ABz7e_XRqrzLNJ", @@ -2920,7 +2920,7 @@ "actions": [ { "agent_id": "a6f14bd2-1a2a-481c-9212-9494d064ffdf", - "type": "CONFIG_CHANGE", + "type": "POLICY_CHANGE", "data": { "config": { "id": "2fe89350-a5e0-11ea-a587-5f886c8a849f", diff --git a/x-pack/plugins/ingest_manager/common/types/models/agent.ts b/x-pack/plugins/ingest_manager/common/types/models/agent.ts index 7110fd4ce52ea..6ac783820ce82 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/agent.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/agent.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - +import { FullAgentPolicy } from './agent_policy'; import { AGENT_TYPE_EPHEMERAL, AGENT_TYPE_PERMANENT, AGENT_TYPE_TEMPORARY } from '../../constants'; export type AgentType = @@ -22,7 +22,7 @@ export type AgentStatus = | 'upgrading' | 'degraded'; -export type AgentActionType = 'CONFIG_CHANGE' | 'UNENROLL' | 'UPGRADE'; +export type AgentActionType = 'POLICY_CHANGE' | 'UNENROLL' | 'UPGRADE'; export interface NewAgentAction { type: AgentActionType; data?: any; @@ -42,13 +42,24 @@ export interface AgentAction extends NewAgentAction { export interface AgentPolicyAction extends NewAgentAction { id: string; type: AgentActionType; - data?: any; + data: { + policy: FullAgentPolicy; + }; policy_id: string; policy_revision: number; created_at: string; ack_data?: any; } +// Make policy change action renaming BWC with agent version <= 7.9 +// eslint-disable-next-line @typescript-eslint/naming-convention +export type AgentPolicyActionV7_9 = Omit & { + type: 'CONFIG_CHANGE'; + data: { + config: FullAgentPolicy; + }; +}; + interface CommonAgentActionSOAttributes { type: AgentActionType; sent_at?: string; diff --git a/x-pack/plugins/ingest_manager/server/routes/agent/acks_handlers.test.ts b/x-pack/plugins/ingest_manager/server/routes/agent/acks_handlers.test.ts index 33b9dc617075b..3d7f5c4a17adb 100644 --- a/x-pack/plugins/ingest_manager/server/routes/agent/acks_handlers.test.ts +++ b/x-pack/plugins/ingest_manager/server/routes/agent/acks_handlers.test.ts @@ -73,7 +73,7 @@ describe('test acks handlers', () => { const ackService: AcksService = { acknowledgeAgentActions: jest.fn().mockReturnValueOnce([ { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', id: 'action1', }, ]), diff --git a/x-pack/plugins/ingest_manager/server/routes/agent/actions_handlers.test.ts b/x-pack/plugins/ingest_manager/server/routes/agent/actions_handlers.test.ts index 5445a46fbe2b4..4574bcc64d4ce 100644 --- a/x-pack/plugins/ingest_manager/server/routes/agent/actions_handlers.test.ts +++ b/x-pack/plugins/ingest_manager/server/routes/agent/actions_handlers.test.ts @@ -23,7 +23,7 @@ describe('test actions handlers schema', () => { it('validate that new agent actions schema is valid', async () => { expect( NewAgentActionSchema.validate({ - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: 'data', sent_at: '2020-03-14T19:45:02.620Z', }) @@ -53,7 +53,7 @@ describe('test actions handlers', () => { const postNewAgentActionRequest: PostNewAgentActionRequest = { body: { action: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: 'data', sent_at: '2020-03-14T19:45:02.620Z', }, @@ -66,7 +66,7 @@ describe('test actions handlers', () => { const mockRequest = httpServerMock.createKibanaRequest(postNewAgentActionRequest); const agentAction = ({ - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', id: 'action1', sent_at: '2020-03-14T19:45:02.620Z', timestamp: '2019-01-04T14:32:03.36764-05:00', diff --git a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts index fd08b76a3916b..b3a8c7390176f 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts @@ -24,6 +24,7 @@ import { migrateEnrollmentApiKeysToV7100, migratePackagePolicyToV7100, migrateSettingsToV7100, + migrateAgentActionToV7100, } from './migrations/to_v7_10_0'; /* @@ -109,6 +110,9 @@ const savedObjectTypes: { [key: string]: SavedObjectsType } = { created_at: { type: 'date' }, }, }, + migrations: { + '7.10.0': migrateAgentActionToV7100, + }, }, [AGENT_EVENT_SAVED_OBJECT_TYPE]: { name: AGENT_EVENT_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/ingest_manager/server/saved_objects/migrations/to_v7_10_0.ts b/x-pack/plugins/ingest_manager/server/saved_objects/migrations/to_v7_10_0.ts index 5e36ce46c099b..53af5ae42e410 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/migrations/to_v7_10_0.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/migrations/to_v7_10_0.ts @@ -12,6 +12,7 @@ import { PackagePolicy, EnrollmentAPIKey, Settings, + AgentAction, } from '../../types'; export const migrateAgentToV7100: SavedObjectMigrationFn< @@ -92,3 +93,18 @@ export const migrateSettingsToV7100: SavedObjectMigrationFn< return settingsDoc; }; + +export const migrateAgentActionToV7100: SavedObjectMigrationFn = ( + agentActionDoc +) => { + // @ts-expect-error + if (agentActionDoc.attributes.type === 'CONFIG_CHANGE') { + agentActionDoc.attributes.type = 'POLICY_CHANGE'; + if (agentActionDoc.attributes.data?.config) { + agentActionDoc.attributes.data.policy = agentActionDoc.attributes.data.config; + delete agentActionDoc.attributes.data.config; + } + } + + return agentActionDoc; +}; diff --git a/x-pack/plugins/ingest_manager/server/services/agent_policy.ts b/x-pack/plugins/ingest_manager/server/services/agent_policy.ts index 64b11512fae10..29821a530098c 100644 --- a/x-pack/plugins/ingest_manager/server/services/agent_policy.ts +++ b/x-pack/plugins/ingest_manager/server/services/agent_policy.ts @@ -399,8 +399,8 @@ class AgentPolicyService { }, []); await createAgentPolicyAction(soClient, { - type: 'CONFIG_CHANGE', - data: { config: policy } as any, + type: 'POLICY_CHANGE', + data: { policy }, ack_data: { packages }, created_at: new Date().toISOString(), policy_id: policy.id, diff --git a/x-pack/plugins/ingest_manager/server/services/agents/acks.test.ts b/x-pack/plugins/ingest_manager/server/services/agents/acks.test.ts index c7b4098803827..8bcf275fce6ac 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/acks.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/acks.test.ts @@ -28,7 +28,7 @@ describe('test agent acks services', () => { references: [], type: AGENT_ACTION_SAVED_OBJECT_TYPE, attributes: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', agent_id: 'id', sent_at: '2020-03-14T19:45:02.620Z', timestamp: '2019-01-04T14:32:03.36764-05:00', @@ -61,7 +61,7 @@ describe('test agent acks services', () => { const mockSavedObjectsClient = savedObjectsClientMock.create(); const actionAttributes = { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', policy_id: 'policy1', policy_revision: 4, sent_at: '2020-03-14T19:45:02.620Z', @@ -120,7 +120,7 @@ describe('test agent acks services', () => { const mockSavedObjectsClient = savedObjectsClientMock.create(); const actionAttributes = { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', policy_id: 'policy1', policy_revision: 4, sent_at: '2020-03-14T19:45:02.620Z', @@ -180,7 +180,7 @@ describe('test agent acks services', () => { const mockSavedObjectsClient = savedObjectsClientMock.create(); const actionAttributes = { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', policy_id: 'policy1', policy_revision: 4, sent_at: '2020-03-14T19:45:02.620Z', @@ -235,7 +235,7 @@ describe('test agent acks services', () => { references: [], type: AGENT_ACTION_SAVED_OBJECT_TYPE, attributes: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', sent_at: '2020-03-14T19:45:02.620Z', timestamp: '2019-01-04T14:32:03.36764-05:00', created_at: '2020-03-14T19:45:02.620Z', @@ -319,7 +319,7 @@ describe('test agent acks services', () => { references: [], type: AGENT_ACTION_SAVED_OBJECT_TYPE, attributes: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', agent_id: 'id', sent_at: '2020-03-14T19:45:02.620Z', timestamp: '2019-01-04T14:32:03.36764-05:00', diff --git a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts index e22ee4256b0e2..a552caa12b95e 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts @@ -16,6 +16,7 @@ import { Agent, AgentAction, AgentPolicyAction, + AgentPolicyActionV7_9, AgentEvent, AgentEventSOAttributes, AgentSOAttributes, @@ -132,18 +133,20 @@ async function fetchActionsUsingCache( return [...freshActions, ...actions]; } -function isAgentPolicyAction(action: AgentAction | AgentPolicyAction): action is AgentPolicyAction { +function isAgentPolicyAction( + action: AgentAction | AgentPolicyAction | AgentPolicyActionV7_9 +): action is AgentPolicyAction | AgentPolicyActionV7_9 { return (action as AgentPolicyAction).policy_id !== undefined; } function getLatestConfigChangePolicyActionIfUpdated( agent: Agent, - actions: Array -): AgentPolicyAction | null { - return actions.reduce((acc, action) => { + actions: Array +): AgentPolicyAction | AgentPolicyActionV7_9 | null { + return actions.reduce((acc, action) => { if ( !isAgentPolicyAction(action) || - action.type !== 'CONFIG_CHANGE' || + (action.type !== 'POLICY_CHANGE' && action.type !== 'CONFIG_CHANGE') || action.policy_id !== agent.policy_id || (action?.policy_revision ?? 0) < (agent.policy_revision || 0) ) { diff --git a/x-pack/plugins/ingest_manager/server/services/agents/actions.test.ts b/x-pack/plugins/ingest_manager/server/services/agents/actions.test.ts index bcb3fc7fdc7bd..8fde684aa38bf 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/actions.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/actions.test.ts @@ -15,7 +15,7 @@ describe('test agent actions services', () => { const newAgentAction: Omit = { agent_id: 'agentid', - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: { content: 'data' }, sent_at: '2020-03-14T19:45:02.620Z', created_at: '2020-03-14T19:45:02.620Z', @@ -24,7 +24,7 @@ describe('test agent actions services', () => { Promise.resolve({ attributes: { agent_id: 'agentid', - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: JSON.stringify({ content: 'data' }), sent_at: '2020-03-14T19:45:02.620Z', created_at: '2020-03-14T19:45:02.620Z', diff --git a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts new file mode 100644 index 0000000000000..dd00ba87fded5 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { savedObjectsClientMock } from 'src/core/server/mocks'; +import { createAgentActionFromPolicyAction } from './state_new_actions'; +import { OutputType, Agent, AgentPolicyAction } from '../../../types'; + +jest.mock('../../app_context', () => ({ + appContextService: { + getEncryptedSavedObjects: () => ({ + getDecryptedAsInternalUser: () => ({ + attributes: { + default_api_key: 'MOCK_API_KEY', + }, + }), + }), + }, +})); + +describe('test agent checkin new action services', () => { + describe('createAgentActionFromPolicyAction()', () => { + const mockSavedObjectsClient = savedObjectsClientMock.create(); + const mockAgent: Agent = { + id: 'agent1', + active: true, + type: 'PERMANENT', + local_metadata: { elastic: { agent: { version: '7.10.0' } } }, + user_provided_metadata: {}, + current_error_events: [], + packages: [], + enrolled_at: '2020-03-14T19:45:02.620Z', + }; + const mockPolicyAction: AgentPolicyAction = { + id: 'action1', + type: 'POLICY_CHANGE', + policy_id: 'policy1', + policy_revision: 1, + sent_at: '2020-03-14T19:45:02.620Z', + created_at: '2020-03-14T19:45:02.620Z', + data: { + policy: { + id: 'policy1', + outputs: { + default: { + type: OutputType.Elasticsearch, + hosts: [], + ca_sha256: undefined, + api_key: undefined, + }, + }, + inputs: [], + }, + }, + }; + + it('should return POLICY_CHANGE and data.policy for agent version >= 7.10', async () => { + const expectedResult = [ + { + agent_id: 'agent1', + created_at: '2020-03-14T19:45:02.620Z', + data: { + policy: { + id: 'policy1', + inputs: [], + outputs: { default: { api_key: 'MOCK_API_KEY', hosts: [], type: 'elasticsearch' } }, + }, + }, + id: 'action1', + sent_at: '2020-03-14T19:45:02.620Z', + type: 'POLICY_CHANGE', + }, + ]; + + expect( + await createAgentActionFromPolicyAction(mockSavedObjectsClient, mockAgent, mockPolicyAction) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.10.1-SNAPSHOT' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '8.0.0' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '8.0.0-SNAPSHOT' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + }); + + it('should return CONNFIG_CHANGE and data.config for agent version <= 7.9', async () => { + const expectedResult = [ + { + agent_id: 'agent1', + created_at: '2020-03-14T19:45:02.620Z', + data: { + config: { + id: 'policy1', + inputs: [], + outputs: { default: { api_key: 'MOCK_API_KEY', hosts: [], type: 'elasticsearch' } }, + }, + }, + id: 'action1', + sent_at: '2020-03-14T19:45:02.620Z', + type: 'CONFIG_CHANGE', + }, + ]; + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.0' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.1-SNAPSHOT' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.3' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.8.2' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + }); + }); +}); diff --git a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts index fbbed87b031e2..89b045c5c0516 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - +import semver from 'semver'; import { timer, from, Observable, TimeoutError } from 'rxjs'; import { omit } from 'lodash'; import { @@ -16,7 +16,13 @@ import { take, } from 'rxjs/operators'; import { SavedObjectsClientContract, KibanaRequest } from 'src/core/server'; -import { Agent, AgentAction, AgentPolicyAction, AgentSOAttributes } from '../../../types'; +import { + Agent, + AgentAction, + AgentPolicyAction, + AgentPolicyActionV7_9, + AgentSOAttributes, +} from '../../../types'; import * as APIKeysService from '../../api_keys'; import { AGENT_SAVED_OBJECT_TYPE, @@ -105,15 +111,29 @@ async function getOrCreateAgentDefaultOutputAPIKey( return outputAPIKey.key; } -async function createAgentActionFromPolicyAction( +export async function createAgentActionFromPolicyAction( soClient: SavedObjectsClientContract, agent: Agent, policyAction: AgentPolicyAction ) { + // Transform the policy action for agent version <= 7.9 for BWC + const agentVersion = semver.parse((agent.local_metadata?.elastic as any)?.agent?.version); + const agentPolicyAction: AgentPolicyAction | AgentPolicyActionV7_9 = + agentVersion && semver.lt(agentVersion, '7.10.0') + ? { + ...policyAction, + type: 'CONFIG_CHANGE', + data: { + config: policyAction.data.policy, + }, + } + : policyAction; + + // Create agent action const newAgentAction: AgentAction = Object.assign( omit( // Faster than clone - JSON.parse(JSON.stringify(policyAction)) as AgentPolicyAction, + JSON.parse(JSON.stringify(agentPolicyAction)) as AgentPolicyAction, 'policy_id', 'policy_revision' ), @@ -123,10 +143,14 @@ async function createAgentActionFromPolicyAction( ); // Mutate the policy to set the api token for this agent - newAgentAction.data.config.outputs.default.api_key = await getOrCreateAgentDefaultOutputAPIKey( - soClient, - agent - ); + const apiKey = await getOrCreateAgentDefaultOutputAPIKey(soClient, agent); + if (newAgentAction.data.policy) { + newAgentAction.data.policy.outputs.default.api_key = apiKey; + } + // BWC for agent <= 7.9 + else if (newAgentAction.data.config) { + newAgentAction.data.config.outputs.default.api_key = apiKey; + } return [newAgentAction]; } diff --git a/x-pack/plugins/ingest_manager/server/types/index.tsx b/x-pack/plugins/ingest_manager/server/types/index.tsx index d00491afef72b..b43d6355c479a 100644 --- a/x-pack/plugins/ingest_manager/server/types/index.tsx +++ b/x-pack/plugins/ingest_manager/server/types/index.tsx @@ -17,6 +17,7 @@ export { AgentEventSOAttributes, AgentAction, AgentPolicyAction, + AgentPolicyActionV7_9, BaseAgentActionSOAttributes, AgentActionSOAttributes, AgentPolicyActionSOAttributes, diff --git a/x-pack/plugins/ingest_manager/server/types/models/agent.ts b/x-pack/plugins/ingest_manager/server/types/models/agent.ts index 15004e60a6fa4..87e9257b7189c 100644 --- a/x-pack/plugins/ingest_manager/server/types/models/agent.ts +++ b/x-pack/plugins/ingest_manager/server/types/models/agent.ts @@ -63,7 +63,7 @@ export const AgentEventSchema = schema.object({ export const NewAgentActionSchema = schema.object({ type: schema.oneOf([ - schema.literal('CONFIG_CHANGE'), + schema.literal('POLICY_CHANGE'), schema.literal('UNENROLL'), schema.literal('UPGRADE'), ]), diff --git a/x-pack/test/functional/es_archives/fleet/agents/data.json b/x-pack/test/functional/es_archives/fleet/agents/data.json index e05a2fe010e89..f204e44b31bc9 100644 --- a/x-pack/test/functional/es_archives/fleet/agents/data.json +++ b/x-pack/test/functional/es_archives/fleet/agents/data.json @@ -196,7 +196,7 @@ "type": "fleet-agent-actions", "fleet-agent-actions": { "agent_id": "agent1", - "type": "CONFIG_CHANGE", + "type": "POLICY_CHANGE", "created_at": "2020-03-15T03:47:15.129Z", "sent_at": "2020-03-04T15:03:07+0000" } @@ -213,7 +213,7 @@ "type": "fleet-agent-actions", "fleet-agent-actions": { "agent_id": "agent1", - "type": "CONFIG_CHANGE", + "type": "POLICY_CHANGE", "created_at": "2020-03-15T03:47:15.129Z", "sent_at": "2020-03-04T15:03:07+0000" } diff --git a/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/actions.ts b/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/actions.ts index 68e02933f5650..f5a647593ef52 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/actions.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/actions.ts @@ -26,13 +26,13 @@ export default function (providerContext: FtrProviderContext) { .set('kbn-xsrf', 'xx') .send({ action: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: { data: 'action_data' }, }, }) .expect(200); - expect(apiResponse.item.type).to.eql('CONFIG_CHANGE'); + expect(apiResponse.item.type).to.eql('POLICY_CHANGE'); expect(apiResponse.item.data).to.eql({ data: 'action_data' }); }); @@ -58,7 +58,7 @@ export default function (providerContext: FtrProviderContext) { .set('kbn-xsrf', 'xx') .send({ action: { - type: 'CONFIG_CHANGE', + type: 'POLICY_CHANGE', data: { data: 'action_data' }, sent_at: '2020-03-18T19:45:02.620Z', }, diff --git a/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/complete_flow.ts b/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/complete_flow.ts index 1d5b682d71c7a..a59b3ff0890f7 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/complete_flow.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/fleet/agents/complete_flow.ts @@ -76,9 +76,9 @@ export default function (providerContext: FtrProviderContext) { .expect(200); expect(checkinApiResponse.actions).length(1); - expect(checkinApiResponse.actions[0].type).be('CONFIG_CHANGE'); + expect(checkinApiResponse.actions[0].type).be('POLICY_CHANGE'); const policyChangeAction = checkinApiResponse.actions[0]; - const defaultOutputApiKey = policyChangeAction.data.config.outputs.default.api_key; + const defaultOutputApiKey = policyChangeAction.data.policy.outputs.default.api_key; // Ack actions await supertestWithoutAuth From 7b07fa53ef67d1a8d898021e462ce87730db98e9 Mon Sep 17 00:00:00 2001 From: Michail Yasonik Date: Tue, 29 Sep 2020 11:56:25 -0400 Subject: [PATCH 059/119] Use more specific rule skipping for a11y tests (#77647) --- package.json | 2 +- .../query_string_input/query_string_input.tsx | 1 + .../__snapshots__/new_vis_modal.test.tsx.snap | 24 ------------------- .../public/wizard/new_vis_modal.tsx | 1 - .../wizard/type_selection/type_selection.tsx | 1 - test/accessibility/services/a11y/a11y.ts | 5 ++-- .../services/a11y/analyze_with_axe.js | 21 +++++++++++++++- .../public/components/search_bar.tsx | 3 +++ x-pack/test/accessibility/apps/home.ts | 15 ++++++++---- yarn.lock | 8 +++---- 10 files changed, 42 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 85af66d98a6ba..bc782a859bf3e 100644 --- a/package.json +++ b/package.json @@ -350,7 +350,7 @@ "angular-route": "^1.8.0", "angular-sortable-view": "^0.0.17", "archiver": "^3.1.1", - "axe-core": "^3.4.1", + "axe-core": "^4.0.2", "babel-eslint": "^10.0.3", "babel-jest": "^25.5.1", "babel-plugin-istanbul": "^6.0.0", diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx index bbd998c0b74de..ec45b80927f6d 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx @@ -613,6 +613,7 @@ export class QueryStringInputUI extends Component { })} aria-haspopup="true" aria-expanded={this.state.isSuggestionsVisible} + data-skip-axe="aria-required-children" > ); } @@ -160,34 +180,20 @@ export function PanelHeader({ className={classes} data-test-subj={`embeddablePanelHeading-${(title || '').replace(/\s/g, '')}`} > -

+

{showTitle ? ( - ) : ( - - - {i18n.translate('embeddableApi.panel.dashboardPanelAriaLabel', { - defaultMessage: 'Dashboard panel', - })} - - + {getAriaLabel()} )} {renderBadges(badges, embeddable)}

diff --git a/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx b/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx index d12a55dd827e6..24d94020af4dc 100644 --- a/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx +++ b/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx @@ -33,9 +33,9 @@ import { HelloWorldContainer } from '../lib/test_samples/embeddables/hello_world import { coreMock } from '../../../../core/public/mocks'; import { testPlugin } from './test_plugin'; import { CustomizePanelModal } from '../lib/panel/panel_header/panel_actions/customize_title/customize_panel_modal'; -import { mount } from 'enzyme'; import { EmbeddableStart } from '../plugin'; import { createEmbeddablePanelMock } from '../mocks'; +import { mountWithIntl } from '../../../../test_utils/public/enzyme_helpers'; let api: EmbeddableStart; let container: Container; @@ -84,19 +84,20 @@ beforeEach(async () => { } }); -test('Is initialized with the embeddables title', async () => { - const component = mount( {}} />); +test('Value is initialized with the embeddables title', async () => { + const component = mountWithIntl( + {}} cancel={() => {}} /> + ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); - expect(inputField.props().placeholder).toBe(embeddable.getOutput().title); - expect(inputField.props().placeholder).toBe(embeddable.getOutput().defaultTitle); - expect(inputField.props().value).toBe(''); + expect(inputField.props().value).toBe(embeddable.getOutput().title); + expect(inputField.props().value).toBe(embeddable.getOutput().defaultTitle); }); test('Calls updateTitle with a new title', async () => { const updateTitle = jest.fn(); - const component = mount( - + const component = mountWithIntl( + {}} /> ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); @@ -105,15 +106,15 @@ test('Calls updateTitle with a new title', async () => { findTestSubject(component, 'saveNewTitleButton').simulate('click'); - expect(updateTitle).toBeCalledWith('new title'); + expect(updateTitle).toBeCalledWith('new title', undefined); }); test('Input value shows custom title if one given', async () => { embeddable.updateInput({ title: 'new title' }); const updateTitle = jest.fn(); - const component = mount( - + const component = mountWithIntl( + {}} /> ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); @@ -122,12 +123,12 @@ test('Input value shows custom title if one given', async () => { expect(inputField.props().value).toBe('new title'); }); -test('Reset updates the input with the default title when the embeddable has no title override', async () => { +test('Reset updates the input value with the default title when the embeddable has a title override', async () => { const updateTitle = jest.fn(); embeddable.updateInput({ title: 'my custom title' }); - const component = mount( - + const component = mountWithIntl( + {}} /> ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); @@ -135,13 +136,14 @@ test('Reset updates the input with the default title when the embeddable has no inputField.simulate('change', event); findTestSubject(component, 'resetCustomEmbeddablePanelTitle').simulate('click'); - expect(inputField.props().placeholder).toBe(embeddable.getOutput().defaultTitle); + const inputAfter = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); + expect(inputAfter.props().value).toBe(embeddable.getOutput().defaultTitle); }); -test('Reset updates the input with the default title when the embeddable has a title override', async () => { +test('Reset updates the input with the default title when the embeddable has no title override', async () => { const updateTitle = jest.fn(); - const component = mount( - + const component = mountWithIntl( + {}} /> ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); @@ -149,13 +151,14 @@ test('Reset updates the input with the default title when the embeddable has a t inputField.simulate('change', event); findTestSubject(component, 'resetCustomEmbeddablePanelTitle').simulate('click'); - expect(inputField.props().placeholder).toBe(embeddable.getOutput().defaultTitle); + await component.update(); + expect(inputField.props().value).toBe(embeddable.getOutput().defaultTitle); }); test('Reset calls updateTitle with undefined', async () => { const updateTitle = jest.fn(); - const component = mount( - + const component = mountWithIntl( + {}} /> ); const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput').find('input'); @@ -165,19 +168,21 @@ test('Reset calls updateTitle with undefined', async () => { findTestSubject(component, 'resetCustomEmbeddablePanelTitle').simulate('click'); findTestSubject(component, 'saveNewTitleButton').simulate('click'); - expect(updateTitle).toBeCalledWith(undefined); + expect(updateTitle).toBeCalledWith(undefined, undefined); }); test('Can set title to an empty string', async () => { const updateTitle = jest.fn(); - const component = mount( - + const component = mountWithIntl( + {}} /> ); - const inputField = findTestSubject(component, 'customizePanelHideTitle'); - inputField.simulate('click'); + const inputField = findTestSubject(component, 'customEmbeddablePanelTitleInput'); + const event = { target: { value: '' } }; + inputField.simulate('change', event); findTestSubject(component, 'saveNewTitleButton').simulate('click'); - expect(inputField.props().value).toBeUndefined(); - expect(updateTitle).toBeCalledWith(''); + const inputFieldAfter = findTestSubject(component, 'customEmbeddablePanelTitleInput'); + expect(inputFieldAfter.props().value).toBe(''); + expect(updateTitle).toBeCalledWith('', undefined); }); diff --git a/test/functional/apps/dashboard/dashboard_options.js b/test/functional/apps/dashboard/dashboard_options.js index 4e7c3f4cdc79b..d48e46e58f6d0 100644 --- a/test/functional/apps/dashboard/dashboard_options.js +++ b/test/functional/apps/dashboard/dashboard_options.js @@ -44,7 +44,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.dashboard.checkHideTitle(); await retry.try(async () => { const titles = await PageObjects.dashboard.getPanelTitles(); - expect(titles[0]).to.eql(''); + expect(titles[0]).to.eql(undefined); }); }); From 70d5157d62f0ded530194ac9d97ba8356cf230f2 Mon Sep 17 00:00:00 2001 From: Kevin Logan <56395104+kevinlog@users.noreply.github.com> Date: Tue, 29 Sep 2020 15:13:12 -0400 Subject: [PATCH 081/119] [SECURITY_SOLUTION] add condition and message for Endpoints enrolling (#77273) --- .../pages/endpoint_hosts/store/action.ts | 26 ++++++++- .../pages/endpoint_hosts/store/index.test.ts | 4 ++ .../pages/endpoint_hosts/store/middleware.ts | 55 +++++++++++++++--- .../store/mock_endpoint_result_list.ts | 21 ++++++- .../pages/endpoint_hosts/store/reducer.ts | 26 +++++++++ .../pages/endpoint_hosts/store/selectors.ts | 8 +++ .../management/pages/endpoint_hosts/types.ts | 8 +++ .../pages/endpoint_hosts/view/index.test.tsx | 57 +++++++++++++++++++ .../pages/endpoint_hosts/view/index.tsx | 26 ++++++++- .../store/policy_list/services/ingest.ts | 22 +++++++ 10 files changed, 241 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts index c2a838404b0bb..dce135dd213b3 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts @@ -113,6 +113,26 @@ interface AppRequestedEndpointList { type: 'appRequestedEndpointList'; } +interface ServerReturnedAgenstWithEndpointsTotal { + type: 'serverReturnedAgenstWithEndpointsTotal'; + payload: number; +} + +interface ServerFailedToReturnAgenstWithEndpointsTotal { + type: 'serverFailedToReturnAgenstWithEndpointsTotal'; + payload: ServerApiError; +} + +interface ServerReturnedEndpointsTotal { + type: 'serverReturnedEndpointsTotal'; + payload: number; +} + +interface ServerFailedToReturnEndpointsTotal { + type: 'serverFailedToReturnEndpointsTotal'; + payload: ServerApiError; +} + export type EndpointAction = | ServerReturnedEndpointList | ServerFailedToReturnEndpointList @@ -131,5 +151,9 @@ export type EndpointAction = | ServerFailedToReturnMetadataPatterns | AppRequestedEndpointList | ServerReturnedEndpointNonExistingPolicies + | ServerReturnedAgenstWithEndpointsTotal | ServerReturnedEndpointAgentPolicies - | UserUpdatedEndpointListRefreshOptions; + | UserUpdatedEndpointListRefreshOptions + | ServerReturnedEndpointsTotal + | ServerFailedToReturnAgenstWithEndpointsTotal + | ServerFailedToReturnEndpointsTotal; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts index 61bcd222b1b1e..84d1dabe86910 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts @@ -58,6 +58,10 @@ describe('EndpointList store concerns', () => { patternsError: undefined, isAutoRefreshEnabled: true, autoRefreshInterval: DEFAULT_POLL_INTERVAL, + agentsWithEndpointsTotal: 0, + endpointsTotal: 0, + agentsWithEndpointsTotalError: undefined, + endpointsTotalError: undefined, queryStrategyVersion: undefined, }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts index 7872c8824a8ee..17e0101426b07 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts @@ -24,6 +24,7 @@ import { sendGetEndpointSpecificPackagePolicies, sendGetEndpointSecurityPackage, sendGetAgentPolicyList, + sendGetFleetAgentsWithEndpoint, } from '../../policy/store/policy_list/services/ingest'; import { AGENT_POLICY_SAVED_OBJECT_TYPE } from '../../../../../../ingest_manager/common'; import { metadataCurrentIndexPattern } from '../../../../../common/endpoint/constants'; @@ -87,6 +88,32 @@ export const endpointMiddlewareFactory: ImmutableMiddlewareFactory => { +const endpointsTotal = async (http: HttpStart): Promise => { try { return ( - ( - await http.post('/api/endpoint/metadata', { - body: JSON.stringify({ - paging_properties: [{ page_index: 0 }, { page_size: 1 }], - }), - }) - ).hosts.length !== 0 - ); + await http.post('/api/endpoint/metadata', { + body: JSON.stringify({ + paging_properties: [{ page_index: 0 }, { page_size: 1 }], + }), + }) + ).total; + } catch (error) { + // eslint-disable-next-line no-console + console.error(`error while trying to check for total endpoints`); + // eslint-disable-next-line no-console + console.error(error); + } + return 0; +}; + +const doEndpointsExist = async (http: HttpStart): Promise => { + try { + return (await endpointsTotal(http)) > 0; } catch (error) { // eslint-disable-next-line no-console console.error(`error while trying to check if endpoints exist`); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts index 43b6d4d349ddf..ff3bd2d9973c7 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts @@ -18,11 +18,13 @@ import { INGEST_API_AGENT_POLICIES, INGEST_API_EPM_PACKAGES, INGEST_API_PACKAGE_POLICIES, + INGEST_API_FLEET_AGENTS, } from '../../policy/store/policy_list/services/ingest'; import { GetAgentPoliciesResponse, GetAgentPoliciesResponseItem, GetPackagesResponse, + GetAgentsResponse, } from '../../../../../../ingest_manager/common/types/rest_spec'; import { GetPolicyListResponse } from '../../policy/types'; @@ -87,6 +89,7 @@ const endpointListApiPathHandlerMocks = ({ policyResponse = generator.generatePolicyResponse(), agentPolicy = generator.generateAgentPolicy(), queryStrategyVersion = MetadataQueryStrategyVersions.VERSION_2, + totalAgentsUsingEndpoint = 0, }: { /** route handlers will be setup for each individual host in this array */ endpointsResults?: HostResultList['hosts']; @@ -95,6 +98,7 @@ const endpointListApiPathHandlerMocks = ({ policyResponse?: HostPolicyResponse; agentPolicy?: GetAgentPoliciesResponseItem; queryStrategyVersion?: MetadataQueryStrategyVersions; + totalAgentsUsingEndpoint?: number; } = {}) => { const apiHandlers = { // endpoint package info @@ -143,6 +147,17 @@ const endpointListApiPathHandlerMocks = ({ total: endpointPackagePolicies?.length, }; }, + + // List of Agents using Endpoint + [INGEST_API_FLEET_AGENTS]: (): GetAgentsResponse => { + return { + total: totalAgentsUsingEndpoint, + list: [], + totalInactive: 0, + page: 1, + perPage: 10, + }; + }, }; // Build a GET route handler for each endpoint details based on the list of Endpoints passed on input @@ -185,11 +200,15 @@ export const setEndpointListApiMockImplementation: ( throw new Error(`un-expected call to http.post: ${args}`); }) // First time called, return list of endpoints + .mockImplementationOnce(async () => { + return apiHandlers['/api/endpoint/metadata'](); + }) + // Metadata is called a second time to get the full total of Endpoints regardless of filters. .mockImplementationOnce(async () => { return apiHandlers['/api/endpoint/metadata'](); }); - // If the endpoints list results is zero, then mock the second call to `/metadata` to return + // If the endpoints list results is zero, then mock the third call to `/metadata` to return // empty list - indicating there are no endpoints currently present on the system if (!endpointsResults.length) { mockedHttpService.post.mockImplementationOnce(async () => { diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts index 0f948f74a48e4..26d8dda2f4aec 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts @@ -36,6 +36,10 @@ export const initialEndpointListState: Immutable = { patternsError: undefined, isAutoRefreshEnabled: true, autoRefreshInterval: DEFAULT_POLL_INTERVAL, + agentsWithEndpointsTotal: 0, + agentsWithEndpointsTotalError: undefined, + endpointsTotal: 0, + endpointsTotalError: undefined, queryStrategyVersion: undefined, }; @@ -160,6 +164,28 @@ export const endpointListReducer: ImmutableReducer = ( ...state, endpointsExist: action.payload, }; + } else if (action.type === 'serverReturnedAgenstWithEndpointsTotal') { + return { + ...state, + agentsWithEndpointsTotal: action.payload, + agentsWithEndpointsTotalError: undefined, + }; + } else if (action.type === 'serverFailedToReturnAgenstWithEndpointsTotal') { + return { + ...state, + agentsWithEndpointsTotalError: action.payload, + }; + } else if (action.type === 'serverReturnedEndpointsTotal') { + return { + ...state, + endpointsTotal: action.payload, + endpointsTotalError: undefined, + }; + } else if (action.type === 'serverFailedToReturnEndpointsTotal') { + return { + ...state, + endpointsTotalError: action.payload, + }; } else if (action.type === 'userUpdatedEndpointListRefreshOptions') { return { ...state, diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts index fe47d60afc339..29d9185b6cea5 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts @@ -55,6 +55,14 @@ export const isAutoRefreshEnabled = (state: Immutable) => state.i export const autoRefreshInterval = (state: Immutable) => state.autoRefreshInterval; +export const areEndpointsEnrolling = (state: Immutable) => { + return state.agentsWithEndpointsTotal > state.endpointsTotal; +}; + +export const agentsWithEndpointsTotalError = (state: Immutable) => + state.agentsWithEndpointsTotalError; + +export const endpointsTotalError = (state: Immutable) => state.endpointsTotalError; const queryStrategyVersion = (state: Immutable) => state.queryStrategyVersion; export const endpointPackageVersion = createSelector( diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts index bdd0d5e942cef..e3e2dc7b55a5e 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts @@ -66,6 +66,14 @@ export interface EndpointState { isAutoRefreshEnabled: boolean; /** The current auto refresh interval for data in ms */ autoRefreshInterval: number; + /** The total Agents that contain an Endpoint package */ + agentsWithEndpointsTotal: number; + /** api error for total Agents that contain an Endpoint package */ + agentsWithEndpointsTotalError?: ServerApiError; + /** The total, actual number of Endpoints regardless of any filtering */ + endpointsTotal: number; + /** api error for total, actual Endpoints */ + endpointsTotalError?: ServerApiError; /** The query strategy version that informs whether the transform for KQL is enabled or not */ queryStrategyVersion?: MetadataQueryStrategyVersions; } diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx index bb4be42b04d4e..debdde901407a 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx @@ -150,6 +150,63 @@ describe('when on the list page', () => { }); }); + describe('when determining when to show the enrolling message', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should display the enrolling message when there are less Endpoints than Agents', async () => { + reactTestingLibrary.act(() => { + const mockedEndpointListData = mockEndpointResultList({ + total: 4, + }); + setEndpointListApiMockImplementation(coreStart.http, { + endpointsResults: mockedEndpointListData.hosts, + totalAgentsUsingEndpoint: 5, + }); + }); + const renderResult = render(); + await reactTestingLibrary.act(async () => { + await middlewareSpy.waitForAction('serverReturnedAgenstWithEndpointsTotal'); + }); + expect(renderResult.queryByTestId('endpointsEnrollingNotification')).not.toBeNull(); + }); + + it('should NOT display the enrolling message when there are equal Endpoints than Agents', async () => { + reactTestingLibrary.act(() => { + const mockedEndpointListData = mockEndpointResultList({ + total: 5, + }); + setEndpointListApiMockImplementation(coreStart.http, { + endpointsResults: mockedEndpointListData.hosts, + totalAgentsUsingEndpoint: 5, + }); + }); + const renderResult = render(); + await reactTestingLibrary.act(async () => { + await middlewareSpy.waitForAction('serverReturnedAgenstWithEndpointsTotal'); + }); + expect(renderResult.queryByTestId('endpointsEnrollingNotification')).toBeNull(); + }); + + it('should NOT display the enrolling message when there are more Endpoints than Agents', async () => { + reactTestingLibrary.act(() => { + const mockedEndpointListData = mockEndpointResultList({ + total: 6, + }); + setEndpointListApiMockImplementation(coreStart.http, { + endpointsResults: mockedEndpointListData.hosts, + totalAgentsUsingEndpoint: 5, + }); + }); + const renderResult = render(); + await reactTestingLibrary.act(async () => { + await middlewareSpy.waitForAction('serverReturnedAgenstWithEndpointsTotal'); + }); + expect(renderResult.queryByTestId('endpointsEnrollingNotification')).toBeNull(); + }); + }); + describe('when there is no selected host in the url', () => { it('should not show the flyout', () => { const renderResult = render(); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx index 3e1f08eee7b94..4bb9335496ef4 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx @@ -23,6 +23,7 @@ import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem, + EuiCallOut, } from '@elastic/eui'; import { useHistory } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; @@ -135,6 +136,9 @@ export const EndpointList = () => { autoRefreshInterval, isAutoRefreshEnabled, patternsError, + areEndpointsEnrolling, + agentsWithEndpointsTotalError, + endpointsTotalError, isTransformEnabled, } = useEndpointSelector(selector); const { formatUrl, search } = useFormatUrl(SecurityPageName.administration); @@ -486,7 +490,7 @@ export const EndpointList = () => { }, [formatUrl, queryParams, search, agentPolicies, services?.application?.getUrlForApp]); const renderTableOrEmptyState = useMemo(() => { - if (endpointsExist) { + if (endpointsExist || areEndpointsEnrolling) { return ( { handleSelectableOnChange, selectionOptions, handleCreatePolicyClick, + areEndpointsEnrolling, ]); const hasListData = listData && listData.length > 0; @@ -544,6 +549,10 @@ export const EndpointList = () => { return !endpointsExist ? DEFAULT_POLL_INTERVAL : autoRefreshInterval; }, [endpointsExist, autoRefreshInterval]); + const hasErrorFindingTotals = useMemo(() => { + return endpointsTotalError || agentsWithEndpointsTotalError ? true : false; + }, [endpointsTotalError, agentsWithEndpointsTotalError]); + const shouldShowKQLBar = useMemo(() => { return endpointsExist && !patternsError && isTransformEnabled; }, [endpointsExist, patternsError, isTransformEnabled]); @@ -567,6 +576,21 @@ export const EndpointList = () => { > {hasSelectedEndpoint && } <> + {areEndpointsEnrolling && !hasErrorFindingTotals && ( + <> + + } + /> + + + )} {shouldShowKQLBar && ( diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_list/services/ingest.ts b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_list/services/ingest.ts index e3b12e06a7025..48ee6e4f67ad0 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_list/services/ingest.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_list/services/ingest.ts @@ -8,6 +8,7 @@ import { HttpFetchOptions, HttpStart } from 'kibana/public'; import { GetPackagePoliciesRequest, GetAgentStatusResponse, + GetAgentsResponse, DeletePackagePoliciesResponse, DeletePackagePoliciesRequest, PACKAGE_POLICY_SAVED_OBJECT_TYPE, @@ -23,6 +24,7 @@ export const INGEST_API_PACKAGE_POLICIES = `${INGEST_API_ROOT}/package_policies` export const INGEST_API_AGENT_POLICIES = `${INGEST_API_ROOT}/agent_policies`; const INGEST_API_FLEET = `${INGEST_API_ROOT}/fleet`; const INGEST_API_FLEET_AGENT_STATUS = `${INGEST_API_FLEET}/agent-status`; +export const INGEST_API_FLEET_AGENTS = `${INGEST_API_FLEET}/agents`; export const INGEST_API_EPM_PACKAGES = `${INGEST_API_ROOT}/epm/packages`; const INGEST_API_DELETE_PACKAGE_POLICY = `${INGEST_API_PACKAGE_POLICIES}/delete`; @@ -131,6 +133,26 @@ export const sendGetFleetAgentStatusForPolicy = ( }); }; +/** + * Get a status summary for all Agents that are currently assigned to a given agent policy + * + * @param http + * @param options + */ +export const sendGetFleetAgentsWithEndpoint = ( + http: HttpStart, + options: Exclude = {} +): Promise => { + return http.get(INGEST_API_FLEET_AGENTS, { + ...options, + query: { + page: 1, + perPage: 1, + kuery: 'fleet-agents.packages : "endpoint"', + }, + }); +}; + /** * Get Endpoint Security Package information */ From c2ef407d0431660bc46f40ebf6817baec3aeb5f2 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Tue, 29 Sep 2020 14:33:29 -0500 Subject: [PATCH 082/119] OpenTelemetry icons and data telemetry (#78499) Add OpenTelemetry agent names and and icon. OpenTelemetry services will have the same icon as the corresponding APM services. Services that report "otlp" as their agent name use the OpenTelemetry icon. The OpenTelemetry agents are now collected in the data telemetry along with the other agent names. Change "ratio" in the telemetry to a float. --- .../__snapshots__/apm_telemetry.test.ts.snap | 754 +++++++++++++++++- x-pack/plugins/apm/common/agent_name.ts | 42 +- x-pack/plugins/apm/common/apm_telemetry.ts | 6 +- .../components/app/RumDashboard/index.tsx | 4 +- .../shared/AgentIcon/get_agent_icon.test.ts | 42 + .../shared/AgentIcon/get_agent_icon.ts | 41 +- .../shared/AgentIcon/icons/opentelemetry.svg | 1 + .../collect_data_telemetry/tasks.ts | 4 +- .../apm/typings/es_schemas/ui/fields/agent.ts | 13 +- 9 files changed, 874 insertions(+), 33 deletions(-) create mode 100644 x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.test.ts create mode 100644 x-pack/plugins/apm/public/components/shared/AgentIcon/icons/opentelemetry.svg diff --git a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap index e9763082a3999..663411dff76ff 100644 --- a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap +++ b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap @@ -524,6 +524,710 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the } } } + }, + "otlp": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/cpp": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/dotnet": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/erlang": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/go": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/java": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/nodejs": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/php": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/python": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/ruby": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } + }, + "opentelemetry/webjs": { + "properties": { + "agent": { + "properties": { + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "service": { + "properties": { + "framework": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "language": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "runtime": { + "properties": { + "composite": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + } + } } } }, @@ -538,7 +1242,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "type": "long" }, "ratio": { - "type": "long" + "type": "float" } } }, @@ -551,7 +1255,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "type": "long" }, "ratio": { - "type": "long" + "type": "float" } } }, @@ -564,7 +1268,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "type": "long" }, "ratio": { - "type": "long" + "type": "float" } } } @@ -885,6 +1589,50 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "rum-js": { "type": "long", "null_value": 0 + }, + "otlp": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/cpp": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/dotnet": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/erlang": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/go": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/java": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/nodejs": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/php": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/python": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/ruby": { + "type": "long", + "null_value": 0 + }, + "opentelemetry/webjs": { + "type": "long", + "null_value": 0 } } }, diff --git a/x-pack/plugins/apm/common/agent_name.ts b/x-pack/plugins/apm/common/agent_name.ts index 8b479d1d82fe7..ca9e59e050c95 100644 --- a/x-pack/plugins/apm/common/agent_name.ts +++ b/x-pack/plugins/apm/common/agent_name.ts @@ -14,6 +14,20 @@ import { AgentName } from '../typings/es_schemas/ui/fields/agent'; * AGENT_NAMES array. */ +export const OPEN_TELEMETRY_AGENT_NAMES: AgentName[] = [ + 'otlp', + 'opentelemetry/cpp', + 'opentelemetry/dotnet', + 'opentelemetry/erlang', + 'opentelemetry/go', + 'opentelemetry/java', + 'opentelemetry/nodejs', + 'opentelemetry/php', + 'opentelemetry/python', + 'opentelemetry/ruby', + 'opentelemetry/webjs', +]; + export const AGENT_NAMES: AgentName[] = [ 'dotnet', 'go', @@ -23,18 +37,19 @@ export const AGENT_NAMES: AgentName[] = [ 'python', 'ruby', 'rum-js', + ...OPEN_TELEMETRY_AGENT_NAMES, ]; -export function isAgentName(agentName: string): agentName is AgentName { - return AGENT_NAMES.includes(agentName as AgentName); -} - -export const RUM_AGENTS = ['js-base', 'rum-js']; +export const RUM_AGENT_NAMES: AgentName[] = [ + 'js-base', + 'rum-js', + 'opentelemetry/webjs', +]; export function isRumAgentName( agentName?: string -): agentName is 'js-base' | 'rum-js' { - return RUM_AGENTS.includes(agentName!); +): agentName is 'js-base' | 'rum-js' | 'opentelemetry/webjs' { + return RUM_AGENT_NAMES.includes(agentName! as AgentName); } export function isJavaAgentName( @@ -42,16 +57,3 @@ export function isJavaAgentName( ): agentName is 'java' { return agentName === 'java'; } - -/** - * "Normalizes" and agent name by: - * - * * Converting to lowercase - * * Converting "rum-js" to "js-base" - * - * This helps dealing with some older agent versions - */ -export function getNormalizedAgentName(agentName?: string) { - const lowercased = agentName && agentName.toLowerCase(); - return isRumAgentName(lowercased) ? 'js-base' : lowercased; -} diff --git a/x-pack/plugins/apm/common/apm_telemetry.ts b/x-pack/plugins/apm/common/apm_telemetry.ts index 3e885f4948c1e..874cee05553d4 100644 --- a/x-pack/plugins/apm/common/apm_telemetry.ts +++ b/x-pack/plugins/apm/common/apm_telemetry.ts @@ -19,6 +19,10 @@ export function getApmTelemetryMapping() { ignore_above: 1024, }; + const float = { + type: 'float', + }; + const long = { type: 'long', }; @@ -78,7 +82,7 @@ export function getApmTelemetryMapping() { properties: { expected_metric_document_count: long, transaction_count: long, - ratio: long, + ratio: float, }, }; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx index 588831d55771d..33a7a23ab086b 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx @@ -16,7 +16,7 @@ import { Projection } from '../../../../common/projections'; import { RumDashboard } from './RumDashboard'; import { useUrlParams } from '../../../hooks/useUrlParams'; import { useFetcher } from '../../../hooks/useFetcher'; -import { RUM_AGENTS } from '../../../../common/agent_name'; +import { RUM_AGENT_NAMES } from '../../../../common/agent_name'; import { EnvironmentFilter } from '../../shared/EnvironmentFilter'; import { URLFilter } from './URLFilter'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; @@ -48,7 +48,7 @@ export function RumOverview() { query: { start, end, - uiFilters: JSON.stringify({ agentName: RUM_AGENTS }), + uiFilters: JSON.stringify({ agentName: RUM_AGENT_NAMES }), }, }, }); diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.test.ts b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.test.ts new file mode 100644 index 0000000000000..6a739a668c404 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.test.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getAgentIconKey } from './get_agent_icon'; + +const examples = { + DotNet: 'dotnet', // Test for case sensitivity + dotnet: 'dotnet', + go: 'go', + java: 'java', + 'js-base': 'rum', + nodejs: 'nodejs', + 'opentelemetry/cpp': 'opentelemetry', + 'opentelemetry/dotnet': 'dotnet', + 'opentelemetry/erlang': 'opentelemetry', + 'opentelemetry/go': 'go', + 'opentelemetry/java': 'java', + 'opentelemetry/nodejs': 'nodejs', + 'opentelemetry/php': 'php', + 'opentelemetry/python': 'python', + 'opentelemetry/ruby': 'ruby', + 'opentelemetry/webjs': 'rum', + otlp: 'opentelemetry', + php: 'php', + python: 'python', + ruby: 'ruby', + 'rum-js': 'rum', + 'something else': undefined, +}; + +describe('getAgentIconKey', () => { + Object.entries(examples).forEach(([key, value]) => { + describe(`with ${key}`, () => { + it(`returns ${value}`, () => { + expect(getAgentIconKey(key)).toEqual(value); + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts index 2475eecee8e34..939b55f6ae6f1 100644 --- a/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts @@ -4,11 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ -import { getNormalizedAgentName } from '../../../../common/agent_name'; +import { + OPEN_TELEMETRY_AGENT_NAMES, + RUM_AGENT_NAMES, +} from '../../../../common/agent_name'; +import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; import dotNetIcon from './icons/dot-net.svg'; import goIcon from './icons/go.svg'; import javaIcon from './icons/java.svg'; import nodeJsIcon from './icons/nodejs.svg'; +import openTelemetryIcon from './icons/opentelemetry.svg'; import phpIcon from './icons/php.svg'; import pythonIcon from './icons/python.svg'; import rubyIcon from './icons/ruby.svg'; @@ -18,14 +23,42 @@ const agentIcons: { [key: string]: string } = { dotnet: dotNetIcon, go: goIcon, java: javaIcon, - 'js-base': rumJsIcon, nodejs: nodeJsIcon, + opentelemetry: openTelemetryIcon, php: phpIcon, python: pythonIcon, ruby: rubyIcon, + rum: rumJsIcon, }; +// This only needs to be exported for testing purposes, since we stub the SVG +// import values in test. +export function getAgentIconKey(agentName: string) { + // Ignore case + const lowercasedAgentName = agentName.toLowerCase(); + + // RUM agent names + if (RUM_AGENT_NAMES.includes(lowercasedAgentName as AgentName)) { + return 'rum'; + } + + // Remove "opentelemetry/" prefix + const agentNameWithoutPrefix = lowercasedAgentName.replace( + /^opentelemetry\//, + '' + ); + + if (Object.keys(agentIcons).includes(agentNameWithoutPrefix)) { + return agentNameWithoutPrefix; + } + + // OpenTelemetry-only agents + if (OPEN_TELEMETRY_AGENT_NAMES.includes(lowercasedAgentName as AgentName)) { + return 'opentelemetry'; + } +} + export function getAgentIcon(agentName?: string) { - const normalizedAgentName = getNormalizedAgentName(agentName); - return normalizedAgentName && agentIcons[normalizedAgentName]; + const key = agentName && getAgentIconKey(agentName); + return key && agentIcons[key]; } diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/opentelemetry.svg b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/opentelemetry.svg new file mode 100644 index 0000000000000..1ce99fcc497d0 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/opentelemetry.svg @@ -0,0 +1 @@ + diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts index fcd4f468d4367..ac82d353417b4 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts @@ -8,7 +8,7 @@ import { flatten, merge, sortBy, sum, pickBy } from 'lodash'; import { AggregationOptionsByType } from '../../../../typings/elasticsearch/aggregations'; import { ProcessorEvent } from '../../../../common/processor_event'; import { TelemetryTask } from '.'; -import { AGENT_NAMES, RUM_AGENTS } from '../../../../common/agent_name'; +import { AGENT_NAMES, RUM_AGENT_NAMES } from '../../../../common/agent_name'; import { AGENT_NAME, AGENT_VERSION, @@ -1020,7 +1020,7 @@ export const tasks: TelemetryTask[] = [ timeout, query: { bool: { - filter: [range1d, { terms: { [AGENT_NAME]: RUM_AGENTS } }], + filter: [range1d, { terms: { [AGENT_NAME]: RUM_AGENT_NAMES } }], }, }, aggs: { diff --git a/x-pack/plugins/apm/typings/es_schemas/ui/fields/agent.ts b/x-pack/plugins/apm/typings/es_schemas/ui/fields/agent.ts index 4d98825f36b50..b5f3ae834d5e2 100644 --- a/x-pack/plugins/apm/typings/es_schemas/ui/fields/agent.ts +++ b/x-pack/plugins/apm/typings/es_schemas/ui/fields/agent.ts @@ -16,7 +16,18 @@ export type AgentName = | 'nodejs' | 'python' | 'dotnet' - | 'ruby'; + | 'ruby' + | 'otlp' + | 'opentelemetry/cpp' + | 'opentelemetry/dotnet' + | 'opentelemetry/erlang' + | 'opentelemetry/go' + | 'opentelemetry/java' + | 'opentelemetry/nodejs' + | 'opentelemetry/php' + | 'opentelemetry/python' + | 'opentelemetry/ruby' + | 'opentelemetry/webjs'; export interface Agent { ephemeral_id?: string; From f27b6fef19b964577d898399a5c195d6f8a56817 Mon Sep 17 00:00:00 2001 From: Rashmi Kulkarni Date: Tue, 29 Sep 2020 12:54:22 -0700 Subject: [PATCH 083/119] Accessibility tests for Stack management > advanced settings page (#78102) * wip * advanced settings * removed unused vars * unused vars * fix label issue and ignore duplicate id issue * fixing advanced management * fixing jest tests * i18n translations * i18n translations * fixed jest tests * addressed review comments * addressed review comments * addressed review comments * reverted the snapshot Co-authored-by: Michail Yasonik Co-authored-by: Elastic Machine --- .../global_toast_list.test.tsx.snap | 1 + .../toasts/global_toast_list.tsx | 4 + ..._settings_voice_announcement.test.tsx.snap | 7 +- .../advanced_settings_voice_announcement.tsx | 40 +++-- .../field/__snapshots__/field.test.tsx.snap | 146 +++++++++--------- .../management_app/components/field/field.tsx | 18 +-- .../management_app_wrapper.tsx | 4 +- .../accessibility/apps/advanced_settings.ts | 54 +++++++ x-pack/test/accessibility/config.ts | 1 + 9 files changed, 178 insertions(+), 97 deletions(-) create mode 100644 x-pack/test/accessibility/apps/advanced_settings.ts diff --git a/src/core/public/notifications/toasts/__snapshots__/global_toast_list.test.tsx.snap b/src/core/public/notifications/toasts/__snapshots__/global_toast_list.test.tsx.snap index 2b3bdb65708a3..0ed32a1dbccb2 100644 --- a/src/core/public/notifications/toasts/__snapshots__/global_toast_list.test.tsx.snap +++ b/src/core/public/notifications/toasts/__snapshots__/global_toast_list.test.tsx.snap @@ -2,6 +2,7 @@ exports[`renders matching snapshot 1`] = ` { public render() { return ( this.props.dismissToast(id)} diff --git a/src/plugins/advanced_settings/public/management_app/components/advanced_settings_voice_announcement/__snapshots__/advanced_settings_voice_announcement.test.tsx.snap b/src/plugins/advanced_settings/public/management_app/components/advanced_settings_voice_announcement/__snapshots__/advanced_settings_voice_announcement.test.tsx.snap index 490e105c18a7d..82c8dcd7f7ea1 100644 --- a/src/plugins/advanced_settings/public/management_app/components/advanced_settings_voice_announcement/__snapshots__/advanced_settings_voice_announcement.test.tsx.snap +++ b/src/plugins/advanced_settings/public/management_app/components/advanced_settings_voice_announcement/__snapshots__/advanced_settings_voice_announcement.test.tsx.snap @@ -3,6 +3,7 @@ exports[`Advanced Settings: Voice Announcement should render announcement 1`] = `
@@ -28,6 +29,7 @@ exports[`Advanced Settings: Voice Announcement should render announcement 1`] = exports[`Advanced Settings: Voice Announcement should render nothing 1`] = `
@@ -35,12 +37,11 @@ exports[`Advanced Settings: Voice Announcement should render nothing 1`] = ` delay={500} > { const filteredOptions = [...filteredSections]; return ( -
+
- + {this.props.queryText ? ( + + ) : ( + + )}
diff --git a/src/plugins/advanced_settings/public/management_app/components/field/__snapshots__/field.test.tsx.snap b/src/plugins/advanced_settings/public/management_app/components/field/__snapshots__/field.test.tsx.snap index 2aabacb061667..19bf9e6d73757 100644 --- a/src/plugins/advanced_settings/public/management_app/components/field/__snapshots__/field.test.tsx.snap +++ b/src/plugins/advanced_settings/public/management_app/components/field/__snapshots__/field.test.tsx.snap @@ -15,7 +15,7 @@ exports[`Field for array setting should render as read only if saving is disable } fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

} fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

} fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

} fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

} fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

Setting is currently not saved.

@@ -364,7 +364,7 @@ exports[`Field for array setting should render user value if there is user value } fullWidth={true} - id="array:test:setting" + id="array:test:setting-group" title={

} fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

} fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

} fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

} fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

} fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

Setting is currently not saved.

@@ -807,7 +807,7 @@ exports[`Field for boolean setting should render user value if there is user val } fullWidth={true} - id="boolean:test:setting" + id="boolean:test:setting-group" title={

} fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

} fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

} fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

} fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

} fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

Setting is currently not saved.

@@ -1231,7 +1235,7 @@ exports[`Field for image setting should render user value if there is user value } fullWidth={true} - id="image:test:setting" + id="image:test:setting-group" title={

} fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

} fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

} fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

} fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

} fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

Setting is currently not saved.

@@ -1832,7 +1836,7 @@ exports[`Field for json setting should render user value if there is user value } fullWidth={true} - id="json:test:setting" + id="json:test:setting-group" title={

} fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

} fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

} fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

} fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

} fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

Setting is currently not saved.

@@ -2365,7 +2369,7 @@ exports[`Field for markdown setting should render user value if there is user va } fullWidth={true} - id="markdown:test:setting" + id="markdown:test:setting-group" title={

} fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

} fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

} fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

} fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

} fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

Setting is currently not saved.

@@ -2798,7 +2802,7 @@ exports[`Field for number setting should render user value if there is user valu } fullWidth={true} - id="number:test:setting" + id="number:test:setting-group" title={

} fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

} fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

} fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

} fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

} fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

Setting is currently not saved.

@@ -3291,7 +3295,7 @@ exports[`Field for select setting should render user value if there is user valu } fullWidth={true} - id="select:test:setting" + id="select:test:setting-group" title={

} fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

} fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

} fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

} fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

} fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

Setting is currently not saved.

@@ -3720,7 +3724,7 @@ exports[`Field for string setting should render user value if there is user valu } fullWidth={true} - id="string:test:setting" + id="string:test:setting-group" title={

} fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

} fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

} fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

} fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

} fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

Setting is currently not saved.

@@ -4133,7 +4137,7 @@ exports[`Field for stringWithValidation setting should render user value if ther } fullWidth={true} - id="string:test-validation:setting" + id="string:test-validation:setting-group" title={

{ } }; - renderField(id: string, setting: FieldSetting) { + renderField(setting: FieldSetting, ariaDescribedBy?: string) { const { enableSaving, unsavedChanges, loading } = this.props; const { name, @@ -301,10 +299,10 @@ export class Field extends PureComponent { defVal, ariaName, } = setting; - const a11yProps: { [key: string]: string } = unsavedChanges + const a11yProps: { [key: string]: string } = ariaDescribedBy ? { 'aria-label': ariaName, - 'aria-describedby': id, + 'aria-describedby': ariaDescribedBy, } : { 'aria-label': ariaName, @@ -370,6 +368,7 @@ export class Field extends PureComponent { ref={this.changeImageForm} fullWidth data-test-subj={`advancedSetting-editField-${name}`} + aria-label={name} /> ); } @@ -669,11 +668,12 @@ export class Field extends PureComponent { // eslint-disable-next-line @typescript-eslint/naming-convention 'mgtAdvancedSettings__field--invalid': isInvalid, }); - const id = setting.name; + const groupId = `${setting.name}-group`; + const unsavedId = `${setting.name}-unsaved`; return ( { fullWidth > <> - {this.renderField(id, setting)} + {this.renderField(setting, unsavedChanges ? `${groupId} ${unsavedId}` : undefined)} {unsavedChanges && ( -

+

{unsavedChanges.error ? unsavedChanges.error : i18n.translate('advancedSettings.field.settingIsUnsaved', { diff --git a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx b/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx index 02da2a46540c2..bcfb86c331084 100644 --- a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx +++ b/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx @@ -32,7 +32,7 @@ interface ManagementSectionWrapperProps { export class ManagementAppWrapper extends Component { private unmount?: Unmount; - private mountElementRef = createRef(); + private mountElementRef = createRef(); componentDidMount() { const { setBreadcrumbs, app, onAppMounted, history } = this.props; @@ -64,6 +64,6 @@ export class ManagementAppWrapper extends Component; + return

; } } diff --git a/x-pack/test/accessibility/apps/advanced_settings.ts b/x-pack/test/accessibility/apps/advanced_settings.ts new file mode 100644 index 0000000000000..804a2657ce6e3 --- /dev/null +++ b/x-pack/test/accessibility/apps/advanced_settings.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['common', 'settings', 'header']); + const a11y = getService('a11y'); + const testSubjects = getService('testSubjects'); + + describe('Stack Management -Advanced Settings', () => { + // click on Management > Advanced settings + it('click on advanced settings ', async () => { + await PageObjects.common.navigateToUrl('management', 'kibana/settings', { + shouldUseHashForSubUrl: false, + }); + await testSubjects.click('settings'); + await a11y.testAppSnapshot(); + }); + + // clicking on the top search bar + it('adv settings - search ', async () => { + await testSubjects.click('settingsSearchBar'); + await a11y.testAppSnapshot(); + }); + + // clicking on the category dropdown + it('adv settings - category -dropdown ', async () => { + await testSubjects.click('settingsSearchBar'); + await a11y.testAppSnapshot(); + }); + + // clicking on the toggle button + it('adv settings - toggle ', async () => { + await testSubjects.click('advancedSetting-editField-csv:quoteValues'); + await a11y.testAppSnapshot(); + }); + + // clicking on editor panel + it('adv settings - edit ', async () => { + await testSubjects.click('advancedSetting-editField-csv:separator'); + await a11y.testAppSnapshot(); + }); + + // clicking on save button + it('adv settings - save', async () => { + await testSubjects.click('advancedSetting-saveButton'); + await a11y.testAppSnapshot(); + }); + }); +} diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 1163b74b24628..915872d8b3fb0 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -21,6 +21,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./apps/search_profiler'), require.resolve('./apps/uptime'), require.resolve('./apps/spaces'), + require.resolve('./apps/advanced_settings'), require.resolve('./apps/dashboard_edit_panel'), ], From 1edda05813f2e212e358ea913f87cb02cfcef811 Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Tue, 29 Sep 2020 12:55:09 -0700 Subject: [PATCH 084/119] [Metrics UI] Inventory shows * node when there are no results (#78371) * [Metrics UI] Inventory shows * node when there are no results * fixing tests to handle the new behavoir --- x-pack/plugins/infra/server/lib/metrics/constants.ts | 9 +-------- .../api_integration/apis/metrics_ui/metrics_explorer.ts | 8 +------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/infra/server/lib/metrics/constants.ts b/x-pack/plugins/infra/server/lib/metrics/constants.ts index 590eaf5605c72..dcff96ed155dc 100644 --- a/x-pack/plugins/infra/server/lib/metrics/constants.ts +++ b/x-pack/plugins/infra/server/lib/metrics/constants.ts @@ -4,13 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ export const EMPTY_RESPONSE = { - series: [ - { - id: '*', - keys: ['*'], - columns: [], - rows: [], - }, - ], + series: [], info: { total: 0, afterKey: null, interval: 0 }, }; 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 16809fba8c8df..bd10a854d006f 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 @@ -239,13 +239,7 @@ export default function ({ getService }: FtrProviderContext) { .send(postBody) .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); - expect(body.series).length(1); - expect(body.series[0]!).to.have.property('rows'); - expect(body.series[0]!.rows).length(0); - expect(body.pageInfo).to.eql({ - afterKey: null, - total: 0, - }); + expect(body.series).length(0); }); it('should work when there is no data with groupBy', async () => { const postBody = { From 15ebb751c6c33dc98846de6f0ce7b2fc846fbce4 Mon Sep 17 00:00:00 2001 From: Michael Olorunnisola Date: Tue, 29 Sep 2020 16:00:31 -0400 Subject: [PATCH 085/119] [Security Solution][Resolver] Request data from new event api (#78782) --- .../public/resolver/store/data/action.ts | 16 +++++ .../public/resolver/store/data/reducer.ts | 31 ++++++++ .../public/resolver/store/data/selectors.ts | 21 ++++++ .../current_related_event_fetcher.ts | 67 +++++++++++++++++ .../public/resolver/store/middleware/index.ts | 3 + .../public/resolver/store/selectors.ts | 16 +++++ .../public/resolver/types.ts | 9 +++ .../resolver/view/panels/event_detail.tsx | 71 ++++++++++++------- .../view/panels/panel_content_error.tsx | 2 +- 9 files changed, 208 insertions(+), 28 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/resolver/store/middleware/current_related_event_fetcher.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/action.ts b/x-pack/plugins/security_solution/public/resolver/store/data/action.ts index 8ee48d0cebcfe..40a103ac6add7 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/action.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/action.ts @@ -8,6 +8,7 @@ import { ResolverRelatedEvents, ResolverTree, SafeEndpointEvent, + SafeResolverEvent, } from '../../../../common/endpoint/types'; import { TreeFetcherParameters } from '../../types'; @@ -78,10 +79,25 @@ interface ServerReturnedNodeEventsInCategory { eventCategory: string; }; } +interface AppRequestedCurrentRelatedEventData { + type: 'appRequestedCurrentRelatedEventData'; +} + +interface ServerFailedToReturnCurrentRelatedEventData { + type: 'serverFailedToReturnCurrentRelatedEventData'; +} + +interface ServerReturnedCurrentRelatedEventData { + readonly type: 'serverReturnedCurrentRelatedEventData'; + readonly payload: SafeResolverEvent; +} export type DataAction = | ServerReturnedResolverData | ServerFailedToReturnResolverData + | AppRequestedCurrentRelatedEventData + | ServerReturnedCurrentRelatedEventData + | ServerFailedToReturnCurrentRelatedEventData | ServerReturnedRelatedEventData | ServerReturnedNodeEventsInCategory | AppRequestedResolverData diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts index 84c11fffc939f..7760bda19ff07 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts @@ -12,6 +12,10 @@ import * as selectors from './selectors'; import * as nodeEventsInCategoryModel from './node_events_in_category_model'; const initialState: DataState = { + currentRelatedEvent: { + loading: false, + data: null, + }, relatedEvents: new Map(), resolverComponentInstanceID: undefined, }; @@ -153,6 +157,33 @@ export const dataReducer: Reducer = (state = initialS // the action is stale, ignore it return state; } + } else if (action.type === 'appRequestedCurrentRelatedEventData') { + const nextState: DataState = { + ...state, + currentRelatedEvent: { + loading: true, + data: null, + }, + }; + return nextState; + } else if (action.type === 'serverReturnedCurrentRelatedEventData') { + const nextState: DataState = { + ...state, + currentRelatedEvent: { + loading: false, + data: action.payload, + }, + }; + return nextState; + } else if (action.type === 'serverFailedToReturnCurrentRelatedEventData') { + const nextState: DataState = { + ...state, + currentRelatedEvent: { + loading: false, + data: null, + }, + }; + return nextState; } else { return state; } diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts index c6f8990d1fbc4..8e06b26b5c316 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts @@ -183,6 +183,27 @@ export function relatedEventsByEntityId(data: DataState): Map, ResolverState>} api + * @returns {() => void} + */ +export function CurrentRelatedEventFetcher( + dataAccessLayer: DataAccessLayer, + api: MiddlewareAPI, ResolverState> +): () => void { + let last: PanelViewAndParameters | undefined; + + return async () => { + const state = api.getState(); + + const newParams = selectors.panelViewAndParameters(state); + + const oldParams = last; + last = newParams; + + // If the panel view params have changed and the current panel view is the `eventDetail`, then fetch the event details for that eventID. + if (!isEqual(newParams, oldParams) && newParams.panelView === 'eventDetail') { + const currentEventID = newParams.panelParameters.eventID; + + api.dispatch({ + type: 'appRequestedCurrentRelatedEventData', + }); + + let result: SafeResolverEvent | undefined | null; + try { + result = await dataAccessLayer.event(currentEventID); + } catch (error) { + api.dispatch({ + type: 'serverFailedToReturnCurrentRelatedEventData', + }); + } + + if (result) { + api.dispatch({ + type: 'serverReturnedCurrentRelatedEventData', + payload: result, + }); + } else { + api.dispatch({ + type: 'serverFailedToReturnCurrentRelatedEventData', + }); + } + } + }; +} diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts b/x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts index 5dca858b4fabe..3bc4612026c12 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts @@ -10,6 +10,7 @@ import { ResolverTreeFetcher } from './resolver_tree_fetcher'; import { ResolverAction } from '../actions'; import { RelatedEventsFetcher } from './related_events_fetcher'; +import { CurrentRelatedEventFetcher } from './current_related_event_fetcher'; type MiddlewareFactory = ( dataAccessLayer: DataAccessLayer @@ -27,11 +28,13 @@ export const resolverMiddlewareFactory: MiddlewareFactory = (dataAccessLayer: Da return (api) => (next) => { const resolverTreeFetcher = ResolverTreeFetcher(dataAccessLayer, api); const relatedEventsFetcher = RelatedEventsFetcher(dataAccessLayer, api); + const currentRelatedEventFetcher = CurrentRelatedEventFetcher(dataAccessLayer, api); return async (action: ResolverAction) => { next(action); resolverTreeFetcher(); relatedEventsFetcher(); + currentRelatedEventFetcher(); }; }; }; diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts index db8d617052657..8809b4b15a3fb 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts @@ -138,6 +138,22 @@ export const relatedEventCountByCategory: ( dataSelectors.relatedEventCountByCategory ); +/** + * the loading state of the current related event data for the `event_detail` view + */ +export const isCurrentRelatedEventLoading = composeSelectors( + dataStateSelector, + dataSelectors.isCurrentRelatedEventLoading +); + +/** + * the current related event data for the `event_detail` view + */ +export const currentRelatedEventData = composeSelectors( + dataStateSelector, + dataSelectors.currentRelatedEventData +); + /** * Map of related events... by entity id * @deprecated diff --git a/x-pack/plugins/security_solution/public/resolver/types.ts b/x-pack/plugins/security_solution/public/resolver/types.ts index 1cac5056de580..9f440d7094987 100644 --- a/x-pack/plugins/security_solution/public/resolver/types.ts +++ b/x-pack/plugins/security_solution/public/resolver/types.ts @@ -245,6 +245,15 @@ export interface DataState { */ readonly nodeEventsInCategory?: NodeEventsInCategoryState; + /** + * Used when the panelView is `eventDetail`. + * + */ + readonly currentRelatedEvent: { + loading: boolean; + data: SafeResolverEvent | null; + }; + readonly tree?: { /** * The parameters passed from the resolver properties diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx index ff45c3166d14c..27ab343a882a6 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx @@ -25,6 +25,7 @@ import { Breadcrumbs } from './breadcrumbs'; import * as eventModel from '../../../../common/endpoint/models/event'; import * as selectors from '../../store/selectors'; import { PanelLoading } from './panel_loading'; +import { PanelContentError } from './panel_content_error'; import { ResolverState } from '../../types'; import { DescriptiveName } from './descriptive_name'; import { useLinkProps } from '../use_link_props'; @@ -32,6 +33,13 @@ import { SafeResolverEvent } from '../../../../common/endpoint/types'; import { deepObjectEntries } from './deep_object_entries'; import { useFormattedDate } from './use_formatted_date'; +const eventDetailRequestError = i18n.translate( + 'xpack.securitySolution.resolver.panel.eventDetail.requestError', + { + defaultMessage: 'Event details were unable to be retrieved', + } +); + export const EventDetail = memo(function EventDetail({ nodeID, eventID, @@ -42,28 +50,31 @@ export const EventDetail = memo(function EventDetail({ /** The event type to show in the breadcrumbs */ eventCategory: string; }) { - const event = useSelector((state: ResolverState) => - selectors.eventByID(state)({ nodeID, eventID }) - ); + const isEventLoading = useSelector(selectors.isCurrentRelatedEventLoading); + const isProcessTreeLoading = useSelector(selectors.isTreeLoading); + + const isLoading = isEventLoading || isProcessTreeLoading; + + const event = useSelector(selectors.currentRelatedEventData); const processEvent = useSelector((state: ResolverState) => selectors.processEventForID(state)(nodeID) ); - if (event && processEvent) { - return ( - - ); - } else { - return ( - - - - ); - } + return isLoading ? ( + + + + ) : event ? ( + + ) : ( + + + + ); }); /** @@ -82,16 +93,17 @@ const EventDetailContents = memo(function ({ * Event type to use in the breadcrumbs */ eventType: string; - processEvent: SafeResolverEvent; + processEvent: SafeResolverEvent | null; }) { const timestamp = eventModel.timestampSafeVersion(event); const formattedDate = useFormattedDate(timestamp) || noTimestampRetrievedText; + const nodeName = processEvent ? eventModel.processNameSafeVersion(processEvent) : null; return ( @@ -188,7 +200,7 @@ function EventDetailBreadcrumbs({ breadcrumbEventCategory, }: { nodeID: string; - nodeName?: string; + nodeName: string | null | undefined; event: SafeResolverEvent; breadcrumbEventCategory: string; }) { @@ -217,7 +229,7 @@ function EventDetailBreadcrumbs({ panelParameters: { nodeID, eventCategory: breadcrumbEventCategory }, }); const breadcrumbs = useMemo(() => { - return [ + const crumbs = [ { text: i18n.translate( 'xpack.securitySolution.endpoint.resolver.panel.relatedEventDetail.events', @@ -227,10 +239,6 @@ function EventDetailBreadcrumbs({ ), ...nodesLinkNavProps, }, - { - text: nodeName, - ...nodeDetailLinkNavProps, - }, { text: ( , }, ]; + + if (nodeName) { + crumbs.splice(1, 0, { + text: nodeName, + ...nodeDetailLinkNavProps, + }); + } + + return crumbs; }, [ breadcrumbEventCategory, countByCategory, diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx index 199758145f117..c7cc420fcc0d4 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx @@ -48,7 +48,7 @@ export const PanelContentError = memo(function ({ {i18n.translate('xpack.securitySolution.endpoint.resolver.panel.error.goBack', { - defaultMessage: 'Click this link to return to the list of all processes.', + defaultMessage: 'Click here to return to the list of all processes.', })} From bc9bd13e3ce67861e98cab642a52c188c683f454 Mon Sep 17 00:00:00 2001 From: Constance Date: Tue, 29 Sep 2020 13:28:13 -0700 Subject: [PATCH 086/119] [Enterprise Search] Move header actions menu to be rendered after the main app + share its store (#78691) * [Setup] Refactor renderApp tests - This is anticipation of upcoming renderHeaderActions changes which will require these helpers (particularly the unmount portion, for some reason renderHeaderAction tests fail if apps are not unmounted properly) - Add mount/unmount helper (but leave first test the same so that devs can see the normal/expected usage) - Add missing EnterpriseSearch app test - Add mockContainer var for brevity, pull out MockApp in anticipation of future usage * Store renderHeaderActions in KibanaLogic - a light wrapper/helper around params.setHeaderActionMenu + update renderHeaderActions - move to main renderApp block to reflect that its relationship with renderApp ('child'/should be called within renderApp/shares dependencies). * Update WorkplaceSearch to render its header actions from app, not plugin.ts * Update WorkplaceSearch tests (+ bonus refactor) - We need to update WS tests to setMockValues so that it doesn't override the renderHeaderActions mock + bonus - add setMockActions as well because since we're already here + bonus - update App Search index tests as well to match + ?? - for some reason tests were failing beceause react router wasn't mocked properly - requireActual seems to fix that * :fire: Remove temporary externalUrl workaround - set in https://github.com/elastic/kibana/pull/78368/commits/9d993d8e5d71c66b3a8a3584d89eceeb46fee8da - WorkplaceSearchHeaderActions should now still have the correct URL - and also now be able to access all Kea logic set up by the main app :) --- .../public/applications/__mocks__/index.ts | 2 +- .../public/applications/__mocks__/kea.mock.ts | 5 +- .../__mocks__/kibana_logic.mock.ts | 1 + .../applications/app_search/index.test.tsx | 32 ++++---- .../public/applications/index.test.tsx | 73 ++++++++++++++----- .../public/applications/index.tsx | 17 ++++- .../shared/kibana/kibana_logic.ts | 3 + .../workplace_search/index.test.tsx | 28 +++---- .../applications/workplace_search/index.tsx | 8 +- .../enterprise_search/public/plugin.ts | 14 +--- 10 files changed, 113 insertions(+), 70 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts index f48f5fb91e3e7..22bb556e6d602 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/index.ts @@ -9,7 +9,7 @@ export { mockKibanaValues } from './kibana_logic.mock'; export { mockLicensingValues } from './licensing_logic.mock'; export { mockHttpValues } from './http_logic.mock'; export { mockFlashMessagesValues, mockFlashMessagesActions } from './flash_messages_logic.mock'; -export { mockAllValues, mockAllActions, setMockValues } from './kea.mock'; +export { mockAllValues, mockAllActions, setMockValues, setMockActions } from './kea.mock'; export { mountAsync } from './mount_async.mock'; export { mountWithIntl } from './mount_with_i18n.mock'; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts index b616cbab03e28..ffbbaaf794bcc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea.mock.ts @@ -48,8 +48,11 @@ jest.mock('kea', () => ({ * setMockValues({ someValue: 'hello' }); * }); */ -import { useValues } from 'kea'; +import { useValues, useActions } from 'kea'; export const setMockValues = (values: object) => { (useValues as jest.Mock).mockImplementation(() => ({ ...mockAllValues, ...values })); }; +export const setMockActions = (actions: object) => { + (useActions as jest.Mock).mockImplementation(() => ({ ...mockAllActions, ...actions })); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts index 419db86148984..ab91666d4acb6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts @@ -12,4 +12,5 @@ export const mockKibanaValues = { navigateToUrl: jest.fn(), setBreadcrumbs: jest.fn(), setDocTitle: jest.fn(), + renderHeaderActions: jest.fn(), }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx index c54d6ed3ddd6f..ab5b3c9faeea7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/index.test.tsx @@ -7,11 +7,11 @@ import '../__mocks__/shallow_useeffect.mock'; import '../__mocks__/kea.mock'; import '../__mocks__/enterprise_search_url.mock'; +import { setMockValues, setMockActions } from '../__mocks__'; import React from 'react'; import { Redirect } from 'react-router-dom'; import { shallow } from 'enzyme'; -import { useValues, useActions } from 'kea'; import { Layout, SideNav, SideNavLink } from '../shared/layout'; import { SetupGuide } from './components/setup_guide'; @@ -21,14 +21,14 @@ import { AppSearch, AppSearchUnconfigured, AppSearchConfigured, AppSearchNav } f describe('AppSearch', () => { it('renders AppSearchUnconfigured when config.host is not set', () => { - (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); + setMockValues({ config: { host: '' } }); const wrapper = shallow(); expect(wrapper.find(AppSearchUnconfigured)).toHaveLength(1); }); it('renders AppSearchConfigured when config.host set', () => { - (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); + setMockValues({ config: { host: 'some.url' } }); const wrapper = shallow(); expect(wrapper.find(AppSearchConfigured)).toHaveLength(1); @@ -47,8 +47,8 @@ describe('AppSearchUnconfigured', () => { describe('AppSearchConfigured', () => { beforeEach(() => { // Mock resets - (useValues as jest.Mock).mockImplementation(() => ({ myRole: {} })); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData: () => {} })); + setMockValues({ myRole: {} }); + setMockActions({ initializeAppData: () => {} }); }); it('renders with layout', () => { @@ -61,7 +61,7 @@ describe('AppSearchConfigured', () => { it('initializes app data with passed props', () => { const initializeAppData = jest.fn(); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData })); + setMockActions({ initializeAppData }); shallow(); @@ -70,8 +70,8 @@ describe('AppSearchConfigured', () => { it('does not re-initialize app data', () => { const initializeAppData = jest.fn(); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData })); - (useValues as jest.Mock).mockImplementation(() => ({ myRole: {}, hasInitialized: true })); + setMockActions({ initializeAppData }); + setMockValues({ myRole: {}, hasInitialized: true }); shallow(); @@ -79,7 +79,7 @@ describe('AppSearchConfigured', () => { }); it('renders ErrorConnecting', () => { - (useValues as jest.Mock).mockImplementation(() => ({ myRole: {}, errorConnecting: true })); + setMockValues({ myRole: {}, errorConnecting: true }); const wrapper = shallow(); @@ -87,7 +87,7 @@ describe('AppSearchConfigured', () => { }); it('passes readOnlyMode state', () => { - (useValues as jest.Mock).mockImplementation(() => ({ myRole: {}, readOnlyMode: true })); + setMockValues({ myRole: {}, readOnlyMode: true }); const wrapper = shallow(); @@ -109,9 +109,7 @@ describe('AppSearchNav', () => { }); it('renders the Settings link', () => { - (useValues as jest.Mock).mockImplementation(() => ({ - myRole: { canViewSettings: true }, - })); + setMockValues({ myRole: { canViewSettings: true } }); const wrapper = shallow(); expect(wrapper.find(SideNavLink).last().prop('to')).toEqual( @@ -120,9 +118,7 @@ describe('AppSearchNav', () => { }); it('renders the Credentials link', () => { - (useValues as jest.Mock).mockImplementation(() => ({ - myRole: { canViewAccountCredentials: true }, - })); + setMockValues({ myRole: { canViewAccountCredentials: true } }); const wrapper = shallow(); expect(wrapper.find(SideNavLink).last().prop('to')).toEqual( @@ -131,9 +127,7 @@ describe('AppSearchNav', () => { }); it('renders the Role Mappings link', () => { - (useValues as jest.Mock).mockImplementation(() => ({ - myRole: { canViewRoleMappings: true }, - })); + setMockValues({ myRole: { canViewRoleMappings: true } }); const wrapper = shallow(); expect(wrapper.find(SideNavLink).last().prop('to')).toEqual( diff --git a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx index 66772f96671e8..d5b9513d0dbb3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx @@ -5,13 +5,16 @@ */ import React from 'react'; +import { getContext } from 'kea'; import { coreMock } from 'src/core/public/mocks'; import { licensingMock } from '../../../licensing/public/mocks'; import { renderApp, renderHeaderActions } from './'; +import { EnterpriseSearch } from './enterprise_search'; import { AppSearch } from './app_search'; import { WorkplaceSearch } from './workplace_search'; +import { KibanaLogic } from './shared/kibana'; describe('renderApp', () => { const kibanaDeps = { @@ -28,36 +31,70 @@ describe('renderApp', () => { jest.clearAllMocks(); }); - it('mounts and unmounts UI', () => { - const MockApp = () =>
Hello world!
; + const mockContainer = kibanaDeps.params.element; + const MockApp = () =>
Hello world!
; + it('mounts and unmounts UI', () => { const unmount = renderApp(MockApp, kibanaDeps, pluginData); - expect(kibanaDeps.params.element.querySelector('.hello-world')).not.toBeNull(); + expect(mockContainer.querySelector('.hello-world')).not.toBeNull(); unmount(); - expect(kibanaDeps.params.element.innerHTML).toEqual(''); + expect(mockContainer.innerHTML).toEqual(''); }); - it('renders AppSearch', () => { - renderApp(AppSearch, kibanaDeps, pluginData); - expect(kibanaDeps.params.element.querySelector('.setupGuide')).not.toBeNull(); - }); + /** + * Helper for automatically mounting and unmounting future tests + */ + let unmount: any; + const mount = (App: React.FC) => { + unmount = renderApp(App, kibanaDeps, pluginData); + }; + + describe('Enterprise Search apps', () => { + afterEach(() => unmount()); + + it('renders EnterpriseSearch', () => { + mount(EnterpriseSearch); + expect(mockContainer.querySelector('.enterpriseSearchOverview')).not.toBeNull(); + }); + + it('renders AppSearch', () => { + mount(AppSearch); + expect(mockContainer.querySelector('.setupGuide')).not.toBeNull(); + }); - it('renders WorkplaceSearch', () => { - renderApp(WorkplaceSearch, kibanaDeps, pluginData); - expect(kibanaDeps.params.element.querySelector('.setupGuide')).not.toBeNull(); + it('renders WorkplaceSearch', () => { + mount(WorkplaceSearch); + expect(mockContainer.querySelector('.setupGuide')).not.toBeNull(); + }); }); -}); -describe('renderHeaderActions', () => { - it('mounts and unmounts any HeaderActions component', () => { + describe('renderHeaderActions', () => { const mockHeaderEl = document.createElement('header'); const MockHeaderActions = () => ; - const unmount = renderHeaderActions(MockHeaderActions, mockHeaderEl); - expect(mockHeaderEl.querySelector('.hello-world')).not.toBeNull(); + it('mounts and unmounts any HeaderActions component', () => { + const store = getContext().store; - unmount(); - expect(mockHeaderEl.innerHTML).toEqual(''); + const unmountHeader = renderHeaderActions(MockHeaderActions, store, mockHeaderEl); + expect(mockHeaderEl.querySelector('.hello-world')).not.toBeNull(); + + unmountHeader(); + expect(mockHeaderEl.innerHTML).toEqual(''); + }); + + it('passes a renderHeaderActions helper to KibanaLogic, which can be used by our apps to render HeaderActions', () => { + // Setup + kibanaDeps.params.setHeaderActionMenu.mockImplementationOnce((cb: any) => cb(mockHeaderEl)); + mount(MockApp); + + // Call KibanaLogic's renderHeaderActions, which should call params.setHeaderActionMenu + KibanaLogic.values.renderHeaderActions(MockHeaderActions); + expect(kibanaDeps.params.setHeaderActionMenu).toHaveBeenCalled(); + + // renderHeaderActions should have been called and generated the correct DOM + expect(mockHeaderEl.querySelector('.hello-world')).not.toBeNull(); + unmount(); + }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 8b5e7daea989c..b9c94e351089d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -37,7 +37,7 @@ export const renderApp = ( externalUrl.enterpriseSearchUrl = publicUrl || config.host || ''; resetContext({ createStore: true }); - const store = getContext().store as Store; + const store = getContext().store; const unmountKibanaLogic = mountKibanaLogic({ config, @@ -45,6 +45,8 @@ export const renderApp = ( navigateToUrl: core.application.navigateToUrl, setBreadcrumbs: core.chrome.setBreadcrumbs, setDocTitle: core.chrome.docTitle.change, + renderHeaderActions: (HeaderActions) => + params.setHeaderActionMenu((el) => renderHeaderActions(HeaderActions, store, el)), }); const unmountLicensingLogic = mountLicensingLogic({ license$: plugins.licensing.license$, @@ -82,7 +84,16 @@ export const renderApp = ( * @see https://github.com/elastic/kibana/blob/master/docs/development/core/public/kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md */ -export const renderHeaderActions = (HeaderActions: React.FC, kibanaHeaderEl: HTMLElement) => { - ReactDOM.render(, kibanaHeaderEl); +export const renderHeaderActions = ( + HeaderActions: React.FC, + store: Store, + kibanaHeaderEl: HTMLElement +) => { + ReactDOM.render( + + + , + kibanaHeaderEl + ); return () => ReactDOM.unmountComponentAtNode(kibanaHeaderEl); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts index 5904c6c89e39c..9519a62ac352b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -6,6 +6,7 @@ import { kea, MakeLogicType } from 'kea'; +import { FC } from 'react'; import { History } from 'history'; import { ApplicationStart, ChromeBreadcrumb } from 'src/core/public'; @@ -17,6 +18,7 @@ interface IKibanaLogicProps { navigateToUrl: ApplicationStart['navigateToUrl']; setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; setDocTitle(title: string): void; + renderHeaderActions(HeaderActions: FC): void; } export interface IKibanaValues extends IKibanaLogicProps { navigateToUrl(path: string, options?: ICreateHrefOptions): Promise; @@ -36,6 +38,7 @@ export const KibanaLogic = kea>({ ], setBreadcrumbs: [props.setBreadcrumbs, {}], setDocTitle: [props.setDocTitle, {}], + renderHeaderActions: [props.renderHeaderActions, {}], }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx index 76afde142a690..25544b4a9bb68 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx @@ -6,13 +6,14 @@ import '../__mocks__/shallow_useeffect.mock'; import '../__mocks__/kea.mock'; +import { setMockValues, setMockActions, mockKibanaValues } from '../__mocks__'; import React from 'react'; import { Redirect } from 'react-router-dom'; import { shallow } from 'enzyme'; -import { useValues, useActions } from 'kea'; import { Layout } from '../shared/layout'; +import { WorkplaceSearchHeaderActions } from './components/layout'; import { SetupGuide } from './views/setup_guide'; import { ErrorState } from './views/error_state'; import { Overview } from './views/overview'; @@ -21,14 +22,14 @@ import { WorkplaceSearch, WorkplaceSearchUnconfigured, WorkplaceSearchConfigured describe('WorkplaceSearch', () => { it('renders WorkplaceSearchUnconfigured when config.host is not set', () => { - (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: '' } })); + setMockValues({ config: { host: '' } }); const wrapper = shallow(); expect(wrapper.find(WorkplaceSearchUnconfigured)).toHaveLength(1); }); it('renders WorkplaceSearchConfigured when config.host set', () => { - (useValues as jest.Mock).mockImplementationOnce(() => ({ config: { host: 'some.url' } })); + setMockValues({ config: { host: 'some.url' } }); const wrapper = shallow(); expect(wrapper.find(WorkplaceSearchConfigured)).toHaveLength(1); @@ -46,39 +47,40 @@ describe('WorkplaceSearchUnconfigured', () => { describe('WorkplaceSearchConfigured', () => { beforeEach(() => { - // Mock resets - (useValues as jest.Mock).mockImplementation(() => ({})); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData: () => {} })); + jest.clearAllMocks(); + setMockActions({ initializeAppData: () => {} }); }); - it('renders with layout', () => { + it('renders layout and header actions', () => { const wrapper = shallow(); expect(wrapper.find(Layout).prop('readOnlyMode')).toBeFalsy(); expect(wrapper.find(Overview)).toHaveLength(1); + expect(mockKibanaValues.renderHeaderActions).toHaveBeenCalledWith(WorkplaceSearchHeaderActions); }); it('initializes app data with passed props', () => { const initializeAppData = jest.fn(); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData })); + setMockActions({ initializeAppData }); shallow(); expect(initializeAppData).toHaveBeenCalledWith({ isFederatedAuth: true }); }); - it('does not re-initialize app data', () => { + it('does not re-initialize app data or re-render header actions', () => { const initializeAppData = jest.fn(); - (useActions as jest.Mock).mockImplementation(() => ({ initializeAppData })); - (useValues as jest.Mock).mockImplementation(() => ({ hasInitialized: true })); + setMockActions({ initializeAppData }); + setMockValues({ hasInitialized: true }); shallow(); expect(initializeAppData).not.toHaveBeenCalled(); + expect(mockKibanaValues.renderHeaderActions).not.toHaveBeenCalled(); }); it('renders ErrorState', () => { - (useValues as jest.Mock).mockImplementation(() => ({ errorConnecting: true })); + setMockValues({ errorConnecting: true }); const wrapper = shallow(); @@ -86,7 +88,7 @@ describe('WorkplaceSearchConfigured', () => { }); it('passes readOnlyMode state', () => { - (useValues as jest.Mock).mockImplementation(() => ({ readOnlyMode: true })); + setMockValues({ readOnlyMode: true }); const wrapper = shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx index 4769358a3eb30..b4c4217659043 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx @@ -14,7 +14,7 @@ import { KibanaLogic } from '../shared/kibana'; import { HttpLogic } from '../shared/http'; import { AppLogic } from './app_logic'; import { Layout } from '../shared/layout'; -import { WorkplaceSearchNav } from './components/layout/nav'; +import { WorkplaceSearchNav, WorkplaceSearchHeaderActions } from './components/layout'; import { SETUP_GUIDE_PATH } from './routes'; @@ -31,10 +31,14 @@ export const WorkplaceSearch: React.FC = (props) => { export const WorkplaceSearchConfigured: React.FC = (props) => { const { hasInitialized } = useValues(AppLogic); const { initializeAppData } = useActions(AppLogic); + const { renderHeaderActions } = useValues(KibanaLogic); const { errorConnecting, readOnlyMode } = useValues(HttpLogic); useEffect(() => { - if (!hasInitialized) initializeAppData(props); + if (!hasInitialized) { + initializeAppData(props); + renderHeaderActions(WorkplaceSearchHeaderActions); + } }, [hasInitialized]); return ( diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index d870127f297b4..c63232b0c8a7f 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -23,7 +23,6 @@ import { WORKPLACE_SEARCH_PLUGIN, } from '../common/constants'; import { IInitialAppData } from '../common/types'; -import { externalUrl } from './applications/shared/enterprise_search_url'; export interface ClientConfigType { host?: string; @@ -106,16 +105,9 @@ export class EnterpriseSearchPlugin implements Plugin { await this.getInitialData(http); const pluginData = this.getPluginData(); - const { renderApp, renderHeaderActions } = await import('./applications'); + const { renderApp } = await import('./applications'); const { WorkplaceSearch } = await import('./applications/workplace_search'); - const { WorkplaceSearchHeaderActions } = await import( - './applications/workplace_search/components/layout' - ); - params.setHeaderActionMenu((element) => - renderHeaderActions(WorkplaceSearchHeaderActions, element) - ); - return renderApp(WorkplaceSearch, kibanaDeps, pluginData); }, }); @@ -175,10 +167,6 @@ export class EnterpriseSearchPlugin implements Plugin { try { this.data = await http.get('/api/enterprise_search/config_data'); this.hasInitialized = true; - - // TODO: This is a temporary workaround to keep the WorkplaceSearchHeaderActions working. - // We'll solve this shortly by ensuring the main app store loads before the header actions. - externalUrl.enterpriseSearchUrl = this.data.publicUrl || this.config.host; } catch { this.data.errorConnecting = true; } From dffbc35119e2acd56ba2f429f2fca78ac7ebdc3c Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Tue, 29 Sep 2020 15:59:40 -0500 Subject: [PATCH 087/119] Fix APM header wrapping (#78845) Add `wrap` to the flex group for the APM header and remove the `break-all` CSS. Makes it so the date picker doesn't get cut off on narrow screens and the header text does not wrap unnecessarily. --- .../public/components/shared/ApmHeader/index.tsx | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx b/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx index 9f67ba99103ec..6674abe9b8ce5 100644 --- a/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx @@ -6,25 +6,15 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import React, { ReactNode } from 'react'; -import styled from 'styled-components'; import { DatePicker } from '../DatePicker'; import { EnvironmentFilter } from '../EnvironmentFilter'; import { KueryBar } from '../KueryBar'; -// Header titles with long, unbroken words, like you would see for a long URL in -// a transaction name, with the default `work-break`, don't break, and that ends -// up pushing the date picker off of the screen. Setting `break-all` here lets -// it wrap even if it has a long, unbroken work. The wrapped result is not great -// looking, since it wraps, but it doesn't push any controls off of the screen. -const ChildrenContainerFlexItem = styled(EuiFlexItem)` - word-break: break-all; -`; - export function ApmHeader({ children }: { children: ReactNode }) { return ( <> - - {children} + + {children} From 1b034bbd2b78fce7884680dae5b220956e5787f1 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 29 Sep 2020 14:15:50 -0700 Subject: [PATCH 088/119] [canvas] only import templates when necessary (#78709) * [canvas] only import templates when necessary * import correct exports Co-authored-by: spalger --- .../i18n/templates/template_strings.test.ts | 6 ++--- .../plugins/canvas/server/templates/index.ts | 23 +++++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/canvas/i18n/templates/template_strings.test.ts b/x-pack/plugins/canvas/i18n/templates/template_strings.test.ts index 4185ad00e7ed7..f27b3554cacd6 100644 --- a/x-pack/plugins/canvas/i18n/templates/template_strings.test.ts +++ b/x-pack/plugins/canvas/i18n/templates/template_strings.test.ts @@ -5,13 +5,13 @@ */ import { getTemplateStrings } from './template_strings'; -import { templates } from '../../server/templates'; // eslint-disable-line +import { loadTemplates } from '../../server/templates'; // eslint-disable-line import { TagStrings } from '../tags'; describe('TemplateStrings', () => { const templateStrings = getTemplateStrings(); - const templateNames = templates.map((template) => template.name); + const templateNames = loadTemplates().map((template) => template.name); const stringKeys = Object.keys(templateStrings); test('All template names should exist in the strings definition', () => { @@ -39,7 +39,7 @@ describe('TemplateStrings', () => { test('All templates should have tags that are defined', () => { const tagNames = Object.keys(TagStrings); - templates.forEach((template) => { + loadTemplates().forEach((template) => { template.tags.forEach((tagName: string) => expect(tagNames).toContain(tagName)); }); }); diff --git a/x-pack/plugins/canvas/server/templates/index.ts b/x-pack/plugins/canvas/server/templates/index.ts index c2723fbc87e17..800ac10fb9cd4 100644 --- a/x-pack/plugins/canvas/server/templates/index.ts +++ b/x-pack/plugins/canvas/server/templates/index.ts @@ -5,15 +5,24 @@ */ import { SavedObjectsRepository } from 'src/core/server'; -import { pitch } from './pitch_presentation'; -import { status } from './status_report'; -import { summary } from './summary_report'; -import { dark } from './theme_dark'; -import { light } from './theme_light'; import { TEMPLATE_TYPE } from '../../common/lib/constants'; -export const templates = [status, summary, dark, light, pitch]; +// only load templates when requested to reduce require() cost on startup +export function loadTemplates() { + return [ + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('./pitch_presentation').pitch, + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('./status_report').status, + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('./summary_report').summary, + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('./theme_dark').dark, + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('./theme_light').light, + ]; +} export async function initializeTemplates( client: Pick @@ -26,7 +35,7 @@ export async function initializeTemplates( // So, rather than doing a bulk create of templates, we're going to fire off individual // creates and catch and throw-away any errors that happen. // Once packages are ready, we should probably move that pitch that is so large to a package - for (const template of templates) { + for (const template of loadTemplates()) { client.create(TEMPLATE_TYPE, template, { id: template.id }).catch((err) => undefined); } } From 9a9a8b0c32fa808b83f891a2cd7f98b80c2bd57b Mon Sep 17 00:00:00 2001 From: Marshall Main <55718608+marshallmain@users.noreply.github.com> Date: Tue, 29 Sep 2020 17:47:15 -0400 Subject: [PATCH 089/119] Update host.os.family to match what endpoint sends (#78607) --- .../security_solution/common/endpoint/generate_data.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts index 7f31c71fe712b..abdbbf1986bcd 100644 --- a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts @@ -67,7 +67,7 @@ const Windows: OSFields[] = [ full: 'Windows 10', version: '10.0', platform: 'Windows', - family: 'Windows', + family: 'windows', Ext: { variant: 'Windows Pro', }, @@ -77,7 +77,7 @@ const Windows: OSFields[] = [ full: 'Windows Server 2016', version: '10.0', platform: 'Windows', - family: 'Windows', + family: 'windows', Ext: { variant: 'Windows Server', }, @@ -87,7 +87,7 @@ const Windows: OSFields[] = [ full: 'Windows Server 2012', version: '6.2', platform: 'Windows', - family: 'Windows', + family: 'windows', Ext: { variant: 'Windows Server', }, @@ -97,7 +97,7 @@ const Windows: OSFields[] = [ full: 'Windows Server 2012R2', version: '6.3', platform: 'Windows', - family: 'Windows', + family: 'windows', Ext: { variant: 'Windows Server Release 2', }, From fd09c095de0813d032f6dd7599bf35ef853a53db Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Tue, 29 Sep 2020 18:32:24 -0400 Subject: [PATCH 090/119] [ML] DF Analytics exploration: add `ml.is_training` filter to regression/classification views (#78702) * add training quickfilter buttons in results view * explorationQueryBar- add ability to use quickfilters * update type for button group --- .../exploration_query_bar.tsx | 122 ++++++++++++++---- .../exploration_results_table.tsx | 20 +++ .../application/explorer/explorer_utils.d.ts | 6 + 3 files changed, 125 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx index 8ed732bf7da2b..c2f3e71e2e492 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx @@ -6,10 +6,12 @@ import React, { Dispatch, FC, SetStateAction, useEffect, useState } from 'react'; -import { EuiCode, EuiInputPopover } from '@elastic/eui'; +import { EuiButtonGroup, EuiCode, EuiFlexGroup, EuiFlexItem, EuiInputPopover } from '@elastic/eui'; +import { EuiButtonGroupIdToSelectedMap } from '@elastic/eui/src/components/button/button_group/button_group'; import { i18n } from '@kbn/i18n'; +import { Dictionary } from '../../../../../../../common/types/common'; import { IIndexPattern } from '../../../../../../../../../../src/plugins/data/common/index_patterns'; import { esKuery, @@ -21,6 +23,7 @@ import { import { SEARCH_QUERY_LANGUAGE } from '../../../../../../../common/constants/search'; import { SavedSearchQuery } from '../../../../../contexts/ml'; +import { removeFilterFromQueryString } from '../../../../../explorer/explorer_utils'; interface ErrorMessage { query: string; @@ -32,6 +35,11 @@ interface ExplorationQueryBarProps { setSearchQuery: Dispatch>; includeQueryString?: boolean; defaultQueryString?: string; + filters?: { + options: Array<{ id: string; label: string }>; + columnId: string; + key: Dictionary; + }; } export const ExplorationQueryBar: FC = ({ @@ -39,12 +47,14 @@ export const ExplorationQueryBar: FC = ({ setSearchQuery, includeQueryString = false, defaultQueryString, + filters, }) => { // The internal state of the input query bar updated on every key stroke. const [searchInput, setSearchInput] = useState({ query: '', language: SEARCH_QUERY_LANGUAGE.KUERY, }); + const [idToSelectedMap, setIdToSelectedMap] = useState({}); const [errorMessage, setErrorMessage] = useState(undefined); @@ -55,7 +65,12 @@ export const ExplorationQueryBar: FC = ({ }, [defaultQueryString !== undefined]); const searchChangeHandler = (query: Query) => setSearchInput(query); - const searchSubmitHandler = (query: Query) => { + const searchSubmitHandler = (query: Query, filtering?: boolean) => { + // If moved to querying manually, clear filter selection. + if (filtering === undefined) { + setIdToSelectedMap({}); + } + try { switch (query.language) { case SEARCH_QUERY_LANGUAGE.KUERY: @@ -83,32 +98,93 @@ export const ExplorationQueryBar: FC = ({ } }; + const handleFilterUpdate = (optionId: string, currentIdToSelectedMap: any) => { + let newQuery = ''; + const filterValue = filters?.key[optionId]; + const filterQueryString = `${filters?.columnId}:${filterValue}`; + const regex = new RegExp(`${filters?.columnId}\s?:\s?(true|false)`, 'g'); + + // Toggling selected optionId to 'off' - remove column id query from filter + if (currentIdToSelectedMap[optionId] === false) { + newQuery = + searchInput.query !== '' + ? removeFilterFromQueryString( + searchInput.query as string, + filters?.columnId!, + String(filterValue) + ) + : ''; + } else if (currentIdToSelectedMap[optionId] === true) { + // Toggling selected optionId to 'on' + if (searchInput.query === '') { + newQuery = filterQueryString; + } else if (searchInput.query.match(regex) !== null) { + // If query already contains columnId filter - replace with incoming value from filter selection + newQuery = searchInput.query.replace(regex, filterQueryString); + } else { + // Otherwise just add filter query to the end of existing query + newQuery = `${searchInput.query} and ${filterQueryString}`; + } + } + // Add the filter query to the search input and setSearchQuery + const newSearchInput = { ...searchInput, query: newQuery }; + + setSearchInput(newSearchInput); + searchSubmitHandler(newSearchInput, true); + }; + return ( setErrorMessage(undefined)} input={ - + + + + + {filters && filters.options && ( + + { + const newIdToSelectedMap = { [optionId]: !idToSelectedMap[optionId] }; + setIdToSelectedMap(newIdToSelectedMap); + handleFilterUpdate(optionId, newIdToSelectedMap); + }} + /> + + )} + } isOpen={errorMessage?.query === searchInput.query && errorMessage?.message !== ''} > diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx index ef014b07a937e..bd4079272c56e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx @@ -48,6 +48,25 @@ const showingFirstDocs = i18n.translate( } ); +const filters = { + options: [ + { + id: 'training', + label: i18n.translate('xpack.ml.dataframe.analytics.explorationResults.trainingSubsetLabel', { + defaultMessage: 'Training', + }), + }, + { + id: 'testing', + label: i18n.translate('xpack.ml.dataframe.analytics.explorationResults.testingSubsetLabel', { + defaultMessage: 'Testing', + }), + }, + ], + columnId: 'ml.is_training', + key: { training: true, testing: false }, +}; + interface Props { indexPattern: IndexPattern; jobConfig: DataFrameAnalyticsConfig; @@ -162,6 +181,7 @@ export const ExplorationResultsTable: FC = React.memo( indexPattern={indexPattern} setSearchQuery={setSearchQuery} defaultQueryString={defaultQueryString} + filters={filters} /> diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_utils.d.ts b/x-pack/plugins/ml/public/application/explorer/explorer_utils.d.ts index 81b5167cc00bd..94690b74a6f8f 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_utils.d.ts +++ b/x-pack/plugins/ml/public/application/explorer/explorer_utils.d.ts @@ -190,3 +190,9 @@ export declare interface AppStateSelectedCells { showTopFieldValues?: boolean; viewByFieldName?: string; } + +export declare const removeFilterFromQueryString: ( + currentQueryString: string, + fieldName: string, + fieldValue: string +) => string; From 46a595947e8b5fcf48363423b57d8ccd82484fd6 Mon Sep 17 00:00:00 2001 From: Phillip Burch Date: Tue, 29 Sep 2020 18:06:38 -0500 Subject: [PATCH 091/119] [Metrics UI] Add anomalies to timeline (#78602) * Add ability to fetch anomalies by metric * Add ability to fetch anomalies to timeline * Show anomaly annotation on timeline * Fix type check * Fix typos * Add influencers to tooltip, add legend * Remove unused variable * Only show anomalies with a score greater than 50 Co-authored-by: Elastic Machine --- .../http_api/infra_ml/results/common.ts | 8 + .../results/metrics_hosts_anomalies.ts | 6 +- .../infra_ml/results/metrics_k8s_anomalies.ts | 4 +- .../ml/anomaly_detection/flyout_home.tsx | 2 +- .../ml/anomaly_detection/job_setup_screen.tsx | 2 +- .../components/timeline/timeline.tsx | 150 ++++++++++++++++-- .../hooks/use_metrics_hosts_anomalies.ts | 10 +- .../hooks/use_metrics_k8s_anomalies.ts | 10 +- .../inventory_view/hooks/use_timeline.ts | 8 +- .../lib/infra_ml/metrics_hosts_anomalies.ts | 98 ++++-------- .../lib/infra_ml/metrics_k8s_anomalies.ts | 88 ++++------ .../server/lib/infra_ml/queries/common.ts | 10 ++ .../queries/metrics_hosts_anomalies.ts | 8 + .../infra_ml/queries/metrics_k8s_anomalies.ts | 11 +- .../results/metrics_hosts_anomalies.ts | 4 +- .../infra_ml/results/metrics_k8s_anomalies.ts | 2 + 16 files changed, 262 insertions(+), 159 deletions(-) diff --git a/x-pack/plugins/infra/common/http_api/infra_ml/results/common.ts b/x-pack/plugins/infra/common/http_api/infra_ml/results/common.ts index 0474fbd1cfc2f..deb8e6401008d 100644 --- a/x-pack/plugins/infra/common/http_api/infra_ml/results/common.ts +++ b/x-pack/plugins/infra/common/http_api/infra_ml/results/common.ts @@ -57,3 +57,11 @@ export const sortRT = rt.type({ }); export type Sort = rt.TypeOf; + +export const metricRT = rt.keyof({ + memory_usage: null, + network_in: null, + network_out: null, +}); + +export type Metric = rt.TypeOf; diff --git a/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_hosts_anomalies.ts b/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_hosts_anomalies.ts index 9fdac09fec20e..a08dd438a32c8 100644 --- a/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_hosts_anomalies.ts +++ b/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_hosts_anomalies.ts @@ -7,7 +7,7 @@ import * as rt from 'io-ts'; import { timeRangeRT, routeTimingMetadataRT } from '../../shared'; -import { anomalyTypeRT, paginationCursorRT, sortRT, paginationRT } from './common'; +import { anomalyTypeRT, paginationCursorRT, sortRT, paginationRT, metricRT } from './common'; export const INFA_ML_GET_METRICS_HOSTS_ANOMALIES_PATH = '/api/infra/infra_ml/results/metrics_hosts_anomalies'; @@ -18,6 +18,7 @@ const metricsHostAnomalyCommonFieldsRT = rt.type({ typical: rt.number, actual: rt.number, type: anomalyTypeRT, + influencers: rt.array(rt.string), duration: rt.number, startTime: rt.number, jobId: rt.string, @@ -64,12 +65,11 @@ export const getMetricsHostsAnomaliesRequestPayloadRT = rt.type({ timeRange: timeRangeRT, }), rt.partial({ + metric: metricRT, // Pagination properties pagination: paginationRT, // Sort properties sort: sortRT, - // // Dataset filters - // datasets: rt.array(rt.string), }), ]), }); diff --git a/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_k8s_anomalies.ts b/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_k8s_anomalies.ts index ab1f245a74c0c..7450bb39276ac 100644 --- a/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_k8s_anomalies.ts +++ b/x-pack/plugins/infra/common/http_api/infra_ml/results/metrics_k8s_anomalies.ts @@ -7,7 +7,7 @@ import * as rt from 'io-ts'; import { timeRangeRT, routeTimingMetadataRT } from '../../shared'; -import { paginationCursorRT, anomalyTypeRT, sortRT, paginationRT } from './common'; +import { paginationCursorRT, anomalyTypeRT, sortRT, paginationRT, metricRT } from './common'; export const INFA_ML_GET_METRICS_K8S_ANOMALIES_PATH = '/api/infra/infra_ml/results/metrics_k8s_anomalies'; @@ -18,6 +18,7 @@ const metricsK8sAnomalyCommonFieldsRT = rt.type({ typical: rt.number, actual: rt.number, type: anomalyTypeRT, + influencers: rt.array(rt.string), duration: rt.number, startTime: rt.number, jobId: rt.string, @@ -64,6 +65,7 @@ export const getMetricsK8sAnomaliesRequestPayloadRT = rt.type({ timeRange: timeRangeRT, }), rt.partial({ + metric: metricRT, // Pagination properties pagination: paginationRT, // Sort properties diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx index 9cf898b684336..801dff9c4a17a 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx @@ -84,7 +84,7 @@ export const FlyoutHome = (props: Props) => { return ( ); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/job_setup_screen.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/job_setup_screen.tsx index 730cd7b6e9ef5..428c002da6383 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/job_setup_screen.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/job_setup_screen.tsx @@ -223,7 +223,7 @@ export const JobSetupScreen = (props: Props) => { label={ } compressed diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx index 2792b6eb18b00..a3b02b858385e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo, useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import moment from 'moment'; @@ -18,7 +18,12 @@ import { TooltipValue, niceTimeFormatter, ElementClickListener, + RectAnnotation, + RectAnnotationDatum, } from '@elastic/charts'; +import { EuiFlexItem } from '@elastic/eui'; +import { EuiFlexGroup } from '@elastic/eui'; +import { EuiIcon } from '@elastic/eui'; import { useUiSetting } from '../../../../../../../../../src/plugins/kibana_react/public'; import { toMetricOpt } from '../../../../../../common/snapshot_metric_i18n'; import { MetricsExplorerAggregation } from '../../../../../../common/http_api'; @@ -35,6 +40,8 @@ import { calculateDomain } from '../../../metrics_explorer/components/helpers/ca import { euiStyled } from '../../../../../../../observability/public'; import { InfraFormatter } from '../../../../../lib/lib'; +import { useMetricsHostsAnomaliesResults } from '../../hooks/use_metrics_hosts_anomalies'; +import { useMetricsK8sAnomaliesResults } from '../../hooks/use_metrics_k8s_anomalies'; interface Props { interval: string; @@ -47,7 +54,8 @@ export const Timeline: React.FC = ({ interval, yAxisFormatter, isVisible const { metric, nodeType, accountId, region } = useWaffleOptionsContext(); const { currentTime, jumpToTime, stopAutoReload } = useWaffleTimeContext(); const { filterQueryAsJson } = useWaffleFiltersContext(); - const { loading, error, timeseries, reload } = useTimeline( + + const { loading, error, startTime, endTime, timeseries, reload } = useTimeline( filterQueryAsJson, [metric], nodeType, @@ -59,6 +67,40 @@ export const Timeline: React.FC = ({ interval, yAxisFormatter, isVisible isVisible ); + const anomalyParams = { + sourceId: 'default', + startTime, + endTime, + defaultSortOptions: { + direction: 'desc' as const, + field: 'anomalyScore' as const, + }, + defaultPaginationOptions: { pageSize: 100 }, + }; + + const { metricsHostsAnomalies, getMetricsHostsAnomalies } = useMetricsHostsAnomaliesResults( + anomalyParams + ); + const { metricsK8sAnomalies, getMetricsK8sAnomalies } = useMetricsK8sAnomaliesResults( + anomalyParams + ); + + const getAnomalies = useMemo(() => { + if (nodeType === 'host') { + return getMetricsHostsAnomalies; + } else if (nodeType === 'pod') { + return getMetricsK8sAnomalies; + } + }, [nodeType, getMetricsK8sAnomalies, getMetricsHostsAnomalies]); + + const anomalies = useMemo(() => { + if (nodeType === 'host') { + return metricsHostsAnomalies; + } else if (nodeType === 'pod') { + return metricsK8sAnomalies; + } + }, [nodeType, metricsHostsAnomalies, metricsK8sAnomalies]); + const metricLabel = toMetricOpt(metric.type)?.textLC; const chartMetric = { @@ -104,6 +146,25 @@ export const Timeline: React.FC = ({ interval, yAxisFormatter, isVisible [jumpToTime, stopAutoReload] ); + const anomalyMetricName = useMemo(() => { + const metricType = metric.type; + if (metricType === 'memory') { + return 'memory_usage'; + } + if (metricType === 'rx') { + return 'network_in'; + } + if (metricType === 'tx') { + return 'network_out'; + } + }, [metric]); + + useEffect(() => { + if (getAnomalies && anomalyMetricName) { + getAnomalies(anomalyMetricName); + } + }, [getAnomalies, anomalyMetricName]); + if (loading) { return ( @@ -130,21 +191,86 @@ export const Timeline: React.FC = ({ interval, yAxisFormatter, isVisible ); } + function generateAnnotationData(results: Array<[number, string[]]>): RectAnnotationDatum[] { + return results.map((anomaly) => { + const [val, influencers] = anomaly; + return { + coordinates: { + x0: val, + x1: moment(val).add(15, 'minutes').valueOf(), + y0: dataDomain?.min, + y1: dataDomain?.max, + }, + details: influencers.join(','), + }; + }); + } + return ( - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {anomalies && ( + [a.startTime, a.influencers]) + )} + style={{ fill: '#D36086' }} + /> + )} props.theme.eui.paddingSizes.xs}; + padding-left: ${(props) => props.theme.eui.paddingSizes.xs}; width: 100%; height: 100%; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts index f755057d0b76d..f33e3ea16b389 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts @@ -7,6 +7,7 @@ import { useMemo, useState, useCallback, useEffect, useReducer } from 'react'; import { INFA_ML_GET_METRICS_HOSTS_ANOMALIES_PATH, + Metric, Sort, Pagination, PaginationCursor, @@ -168,7 +169,7 @@ export const useMetricsHostsAnomaliesResults = ({ const [getMetricsHostsAnomaliesRequest, getMetricsHostsAnomalies] = useTrackedPromise( { cancelPreviousOn: 'creation', - createPromise: async () => { + createPromise: async (metric: Metric) => { const { timeRange: { start: queryStartTime, end: queryEndTime }, sortOptions, @@ -179,6 +180,7 @@ export const useMetricsHostsAnomaliesResults = ({ sourceId, queryStartTime, queryEndTime, + metric, sortOptions, { ...paginationOptions, @@ -249,10 +251,6 @@ export const useMetricsHostsAnomaliesResults = ({ }); }, [filteredDatasets]); - useEffect(() => { - getMetricsHostsAnomalies(); - }, [getMetricsHostsAnomalies]); // TODO: FIgure out the deps here. - const handleFetchNextPage = useCallback(() => { if (reducerState.lastReceivedCursors) { dispatch({ type: 'fetchNextPage' }); @@ -294,6 +292,7 @@ export const callGetMetricHostsAnomaliesAPI = async ( sourceId: string, startTime: number, endTime: number, + metric: Metric, sort: Sort, pagination: Pagination ) => { @@ -307,6 +306,7 @@ export const callGetMetricHostsAnomaliesAPI = async ( startTime, endTime, }, + metric, sort, pagination, }, diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts index 4a7b78e1fdf92..89e70c4c5c4c7 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts @@ -13,6 +13,7 @@ import { getMetricsK8sAnomaliesSuccessReponsePayloadRT, getMetricsK8sAnomaliesRequestPayloadRT, MetricsK8sAnomaly, + Metric, } from '../../../../../common/http_api/infra_ml'; import { useTrackedPromise } from '../../../../utils/use_tracked_promise'; import { npStart } from '../../../../legacy_singletons'; @@ -168,7 +169,7 @@ export const useMetricsK8sAnomaliesResults = ({ const [getMetricsK8sAnomaliesRequest, getMetricsK8sAnomalies] = useTrackedPromise( { cancelPreviousOn: 'creation', - createPromise: async () => { + createPromise: async (metric: Metric) => { const { timeRange: { start: queryStartTime, end: queryEndTime }, sortOptions, @@ -180,6 +181,7 @@ export const useMetricsK8sAnomaliesResults = ({ sourceId, queryStartTime, queryEndTime, + metric, sortOptions, { ...paginationOptions, @@ -251,10 +253,6 @@ export const useMetricsK8sAnomaliesResults = ({ }); }, [filteredDatasets]); - useEffect(() => { - getMetricsK8sAnomalies(); - }, [getMetricsK8sAnomalies]); - const handleFetchNextPage = useCallback(() => { if (reducerState.lastReceivedCursors) { dispatch({ type: 'fetchNextPage' }); @@ -296,6 +294,7 @@ export const callGetMetricsK8sAnomaliesAPI = async ( sourceId: string, startTime: number, endTime: number, + metric: Metric, sort: Sort, pagination: Pagination, datasets?: string[] @@ -310,6 +309,7 @@ export const callGetMetricsK8sAnomaliesAPI = async ( startTime, endTime, }, + metric, sort, pagination, datasets, diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts index acf9011ac7ddd..597c268180819 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts @@ -81,10 +81,12 @@ export function useTimeline( ]); const { timeLength, intervalInSeconds } = timeLengthResult; + const endTime = currentTime + intervalInSeconds * 1000; + const startTime = currentTime - timeLength * 1000; const timerange: InfraTimerangeInput = { interval: displayInterval ?? '', - to: currentTime + intervalInSeconds * 1000, - from: currentTime - timeLength * 1000, + to: endTime, + from: startTime, ignoreLookback: true, forceInterval: true, }; @@ -127,6 +129,8 @@ export function useTimeline( error: (error && error.message) || null, loading: !interval ? true : loading, timeseries, + startTime, + endTime, reload: makeRequest, }; } diff --git a/x-pack/plugins/infra/server/lib/infra_ml/metrics_hosts_anomalies.ts b/x-pack/plugins/infra/server/lib/infra_ml/metrics_hosts_anomalies.ts index e0afa458aac88..a3a0f91afaab8 100644 --- a/x-pack/plugins/infra/server/lib/infra_ml/metrics_hosts_anomalies.ts +++ b/x-pack/plugins/infra/server/lib/infra_ml/metrics_hosts_anomalies.ts @@ -7,7 +7,7 @@ import { RequestHandlerContext } from 'src/core/server'; import { InfraRequestHandlerContext } from '../../types'; import { TracingSpan, startTracingSpan } from '../../../common/performance_tracing'; -import { fetchMlJob, getLogEntryDatasets } from './common'; +import { fetchMlJob } from './common'; import { getJobId, metricsHostsJobTypes } from '../../../common/infra_ml'; import { Sort, Pagination } from '../../../common/http_api/infra_ml'; import type { MlSystem, MlAnomalyDetectors } from '../../types'; @@ -21,37 +21,43 @@ import { interface MappedAnomalyHit { id: string; anomalyScore: number; - dataset: string; typical: number; actual: number; jobId: string; startTime: number; duration: number; - hostName: string[]; + influencers: string[]; categoryId?: string; } async function getCompatibleAnomaliesJobIds( spaceId: string, sourceId: string, + metric: 'memory_usage' | 'network_in' | 'network_out' | undefined, mlAnomalyDetectors: MlAnomalyDetectors ) { - const metricsHostsJobIds = metricsHostsJobTypes.map((jt) => getJobId(spaceId, sourceId, jt)); + let metricsHostsJobIds = metricsHostsJobTypes; + + if (metric) { + metricsHostsJobIds = metricsHostsJobIds.filter((jt) => jt === `hosts_${metric}`); + } const jobIds: string[] = []; let jobSpans: TracingSpan[] = []; try { await Promise.all( - metricsHostsJobIds.map((id) => { - return (async () => { - const { - timing: { spans }, - } = await fetchMlJob(mlAnomalyDetectors, id); - jobIds.push(id); - jobSpans = [...jobSpans, ...spans]; - })(); - }) + metricsHostsJobIds + .map((jt) => getJobId(spaceId, sourceId, jt)) + .map((id) => { + return (async () => { + const { + timing: { spans }, + } = await fetchMlJob(mlAnomalyDetectors, id); + jobIds.push(id); + jobSpans = [...jobSpans, ...spans]; + })(); + }) ); } catch (e) { if (isMlPrivilegesError(e)) { @@ -71,6 +77,7 @@ export async function getMetricsHostsAnomalies( sourceId: string, startTime: number, endTime: number, + metric: 'memory_usage' | 'network_in' | 'network_out' | undefined, sort: Sort, pagination: Pagination ) { @@ -82,6 +89,7 @@ export async function getMetricsHostsAnomalies( } = await getCompatibleAnomaliesJobIds( context.infra.spaceId, sourceId, + metric, context.infra.mlAnomalyDetectors ); @@ -131,22 +139,20 @@ const parseAnomalyResult = (anomaly: MappedAnomalyHit, jobId: string) => { const { id, anomalyScore, - dataset, typical, actual, duration, - hostName, + influencers, startTime: anomalyStartTime, } = anomaly; return { id, anomalyScore, - dataset, typical, actual, duration, - hostName, + influencers, startTime: anomalyStartTime, type: 'metrics_hosts' as const, jobId, @@ -169,16 +175,6 @@ async function fetchMetricsHostsAnomalies( const finalizeFetchLogEntryAnomaliesSpan = startTracingSpan('fetch metrics hosts anomalies'); - // console.log( - // 'data', - // JSON.stringify( - // await mlSystem.mlAnomalySearch( - // createMetricsHostsAnomaliesQuery(jobIds, startTime, endTime, sort, expandedPagination) - // ), - // null, - // 2 - // ) - // ); const results = decodeOrThrow(metricsHostsAnomaliesResponseRT)( await mlSystem.mlAnomalySearch( createMetricsHostsAnomaliesQuery(jobIds, startTime, endTime, sort, expandedPagination) @@ -216,11 +212,13 @@ async function fetchMetricsHostsAnomalies( record_score: anomalyScore, typical, actual, + influencers, bucket_span: duration, timestamp: anomalyStartTime, by_field_value: categoryId, } = result._source; + const hostInfluencers = influencers.filter((i) => i.influencer_field_name === 'host.name'); return { id: result._id, anomalyScore, @@ -228,7 +226,10 @@ async function fetchMetricsHostsAnomalies( typical: typical[0], actual: actual[0], jobId: job_id, - hostName: result._source['host.name'], + influencers: hostInfluencers.reduce( + (acc: string[], i) => [...acc, ...i.influencer_field_values], + [] + ), startTime: anomalyStartTime, duration: duration * 1000, categoryId, @@ -246,44 +247,3 @@ async function fetchMetricsHostsAnomalies( }, }; } - -// TODO: FIgure out why we need datasets -export async function getMetricsHostsAnomaliesDatasets( - context: { - infra: { - mlSystem: MlSystem; - mlAnomalyDetectors: MlAnomalyDetectors; - spaceId: string; - }; - }, - sourceId: string, - startTime: number, - endTime: number -) { - const { - jobIds, - timing: { spans: jobSpans }, - } = await getCompatibleAnomaliesJobIds( - context.infra.spaceId, - sourceId, - context.infra.mlAnomalyDetectors - ); - - if (jobIds.length === 0) { - throw new InsufficientAnomalyMlJobsConfigured( - 'Log rate or categorisation ML jobs need to be configured to search for anomaly datasets' - ); - } - - const { - data: datasets, - timing: { spans: datasetsSpans }, - } = await getLogEntryDatasets(context.infra.mlSystem, startTime, endTime, jobIds); - - return { - datasets, - timing: { - spans: [...jobSpans, ...datasetsSpans], - }, - }; -} diff --git a/x-pack/plugins/infra/server/lib/infra_ml/metrics_k8s_anomalies.ts b/x-pack/plugins/infra/server/lib/infra_ml/metrics_k8s_anomalies.ts index 29507900e1847..1a9b48ade83ed 100644 --- a/x-pack/plugins/infra/server/lib/infra_ml/metrics_k8s_anomalies.ts +++ b/x-pack/plugins/infra/server/lib/infra_ml/metrics_k8s_anomalies.ts @@ -7,7 +7,7 @@ import { RequestHandlerContext } from 'src/core/server'; import { InfraRequestHandlerContext } from '../../types'; import { TracingSpan, startTracingSpan } from '../../../common/performance_tracing'; -import { fetchMlJob, getLogEntryDatasets } from './common'; +import { fetchMlJob } from './common'; import { getJobId, metricsK8SJobTypes } from '../../../common/infra_ml'; import { Sort, Pagination } from '../../../common/http_api/infra_ml'; import type { MlSystem, MlAnomalyDetectors } from '../../types'; @@ -21,11 +21,11 @@ import { interface MappedAnomalyHit { id: string; anomalyScore: number; - // dataset: string; typical: number; actual: number; jobId: string; startTime: number; + influencers: string[]; duration: number; categoryId?: string; } @@ -33,24 +33,31 @@ interface MappedAnomalyHit { async function getCompatibleAnomaliesJobIds( spaceId: string, sourceId: string, + metric: 'memory_usage' | 'network_in' | 'network_out' | undefined, mlAnomalyDetectors: MlAnomalyDetectors ) { - const metricsK8sJobIds = metricsK8SJobTypes.map((jt) => getJobId(spaceId, sourceId, jt)); + let metricsK8sJobIds = metricsK8SJobTypes; + + if (metric) { + metricsK8sJobIds = metricsK8sJobIds.filter((jt) => jt === `k8s_${metric}`); + } const jobIds: string[] = []; let jobSpans: TracingSpan[] = []; try { await Promise.all( - metricsK8sJobIds.map((id) => { - return (async () => { - const { - timing: { spans }, - } = await fetchMlJob(mlAnomalyDetectors, id); - jobIds.push(id); - jobSpans = [...jobSpans, ...spans]; - })(); - }) + metricsK8sJobIds + .map((jt) => getJobId(spaceId, sourceId, jt)) + .map((id) => { + return (async () => { + const { + timing: { spans }, + } = await fetchMlJob(mlAnomalyDetectors, id); + jobIds.push(id); + jobSpans = [...jobSpans, ...spans]; + })(); + }) ); } catch (e) { if (isMlPrivilegesError(e)) { @@ -70,6 +77,7 @@ export async function getMetricK8sAnomalies( sourceId: string, startTime: number, endTime: number, + metric: 'memory_usage' | 'network_in' | 'network_out' | undefined, sort: Sort, pagination: Pagination ) { @@ -81,6 +89,7 @@ export async function getMetricK8sAnomalies( } = await getCompatibleAnomaliesJobIds( context.infra.spaceId, sourceId, + metric, context.infra.mlAnomalyDetectors ); @@ -126,21 +135,21 @@ const parseAnomalyResult = (anomaly: MappedAnomalyHit, jobId: string) => { const { id, anomalyScore, - // dataset, typical, actual, duration, + influencers, startTime: anomalyStartTime, } = anomaly; return { id, anomalyScore, - // dataset, typical, actual, duration, startTime: anomalyStartTime, + influencers, type: 'metrics_k8s' as const, jobId, }; @@ -199,19 +208,25 @@ async function fetchMetricK8sAnomalies( record_score: anomalyScore, typical, actual, - // partition_field_value: dataset, bucket_span: duration, timestamp: anomalyStartTime, by_field_value: categoryId, + influencers, } = result._source; + const podInfluencers = influencers.filter( + (i) => i.influencer_field_name === 'kubernetes.pod.uid' + ); return { id: result._id, anomalyScore, - // dataset, typical: typical[0], actual: actual[0], jobId: job_id, + influencers: podInfluencers.reduce( + (acc: string[], i) => [...acc, ...i.influencer_field_values], + [] + ), startTime: anomalyStartTime, duration: duration * 1000, categoryId, @@ -229,44 +244,3 @@ async function fetchMetricK8sAnomalies( }, }; } - -// TODO: FIgure out why we need datasets -export async function getMetricK8sAnomaliesDatasets( - context: { - infra: { - mlSystem: MlSystem; - mlAnomalyDetectors: MlAnomalyDetectors; - spaceId: string; - }; - }, - sourceId: string, - startTime: number, - endTime: number -) { - const { - jobIds, - timing: { spans: jobSpans }, - } = await getCompatibleAnomaliesJobIds( - context.infra.spaceId, - sourceId, - context.infra.mlAnomalyDetectors - ); - - if (jobIds.length === 0) { - throw new InsufficientAnomalyMlJobsConfigured( - 'Log rate or categorisation ML jobs need to be configured to search for anomaly datasets' - ); - } - - const { - data: datasets, - timing: { spans: datasetsSpans }, - } = await getLogEntryDatasets(context.infra.mlSystem, startTime, endTime, jobIds); - - return { - datasets, - timing: { - spans: [...jobSpans, ...datasetsSpans], - }, - }; -} diff --git a/x-pack/plugins/infra/server/lib/infra_ml/queries/common.ts b/x-pack/plugins/infra/server/lib/infra_ml/queries/common.ts index 63e39ef022392..eb08b6d692336 100644 --- a/x-pack/plugins/infra/server/lib/infra_ml/queries/common.ts +++ b/x-pack/plugins/infra/server/lib/infra_ml/queries/common.ts @@ -40,6 +40,16 @@ export const createTimeRangeFilters = (startTime: number, endTime: number) => [ }, ]; +export const createAnomalyScoreFilter = (minScore: number) => [ + { + range: { + record_score: { + gte: minScore, + }, + }, + }, +]; + export const createResultTypeFilters = (resultTypes: Array<'model_plot' | 'record'>) => [ { terms: { diff --git a/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_hosts_anomalies.ts b/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_hosts_anomalies.ts index b61119b60bc18..bbdc77af1fbe6 100644 --- a/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_hosts_anomalies.ts +++ b/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_hosts_anomalies.ts @@ -11,6 +11,7 @@ import { createTimeRangeFilters, createResultTypeFilters, defaultRequestParameters, + createAnomalyScoreFilter, } from './common'; import { Sort, Pagination } from '../../../../common/http_api/infra_ml'; @@ -35,6 +36,7 @@ export const createMetricsHostsAnomaliesQuery = ( const filters = [ ...createJobIdsFilters(jobIds), + ...createAnomalyScoreFilter(50), ...createTimeRangeFilters(startTime, endTime), ...createResultTypeFilters(['record']), ]; @@ -86,6 +88,12 @@ export const metricsHostsAnomalyHitRT = rt.type({ record_score: rt.number, typical: rt.array(rt.number), actual: rt.array(rt.number), + influencers: rt.array( + rt.type({ + influencer_field_name: rt.string, + influencer_field_values: rt.array(rt.string), + }) + ), 'host.name': rt.array(rt.string), bucket_span: rt.number, timestamp: rt.number, diff --git a/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_k8s_anomalies.ts b/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_k8s_anomalies.ts index 84ed8b064c5ca..79bfdc91dc5a4 100644 --- a/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_k8s_anomalies.ts +++ b/x-pack/plugins/infra/server/lib/infra_ml/queries/metrics_k8s_anomalies.ts @@ -11,6 +11,7 @@ import { createTimeRangeFilters, createResultTypeFilters, defaultRequestParameters, + createAnomalyScoreFilter, } from './common'; import { Sort, Pagination } from '../../../../common/http_api/infra_ml'; @@ -35,6 +36,7 @@ export const createMetricsK8sAnomaliesQuery = ( const filters = [ ...createJobIdsFilters(jobIds), + ...createAnomalyScoreFilter(50), ...createTimeRangeFilters(startTime, endTime), ...createResultTypeFilters(['record']), ]; @@ -48,6 +50,8 @@ export const createMetricsK8sAnomaliesQuery = ( 'timestamp', 'bucket_span', 'by_field_value', + 'influencers.influencer_field_name', + 'influencers.influencer_field_values', ]; const { querySortDirection, queryCursor } = parsePaginationCursor(sort, pagination); @@ -83,7 +87,12 @@ export const metricsK8sAnomalyHitRT = rt.type({ record_score: rt.number, typical: rt.array(rt.number), actual: rt.array(rt.number), - // partition_field_value: rt.string, + influencers: rt.array( + rt.type({ + influencer_field_name: rt.string, + influencer_field_values: rt.array(rt.string), + }) + ), bucket_span: rt.number, timestamp: rt.number, }), diff --git a/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_hosts_anomalies.ts b/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_hosts_anomalies.ts index 29122ae159cdc..9dc309c605206 100644 --- a/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_hosts_anomalies.ts +++ b/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_hosts_anomalies.ts @@ -36,6 +36,7 @@ export const initGetHostsAnomaliesRoute = ({ framework }: InfraBackendLibs) => { timeRange: { startTime, endTime }, sort: sortParam, pagination: paginationParam, + metric, }, } = request.body; @@ -54,12 +55,11 @@ export const initGetHostsAnomaliesRoute = ({ framework }: InfraBackendLibs) => { sourceId, startTime, endTime, + metric, sort, pagination ); - // console.log('---- anomalies', anomalies); - return response.ok({ body: getMetricsHostsAnomaliesSuccessReponsePayloadRT.encode({ data: { diff --git a/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_k8s_anomalies.ts b/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_k8s_anomalies.ts index 5260c55836c59..1618018b85fcf 100644 --- a/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_k8s_anomalies.ts +++ b/x-pack/plugins/infra/server/routes/infra_ml/results/metrics_k8s_anomalies.ts @@ -35,6 +35,7 @@ export const initGetK8sAnomaliesRoute = ({ framework }: InfraBackendLibs) => { timeRange: { startTime, endTime }, sort: sortParam, pagination: paginationParam, + metric, }, } = request.body; @@ -53,6 +54,7 @@ export const initGetK8sAnomaliesRoute = ({ framework }: InfraBackendLibs) => { sourceId, startTime, endTime, + metric, sort, pagination ); From 564a7b1a17c4c1b67116f81b93d7ee23f7b2df51 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Tue, 29 Sep 2020 19:34:05 -0500 Subject: [PATCH 092/119] Storybook 6 and config changes (#75357) Upgrade to Storybook 6 and attempt to use the declarative configuration. The goals of this PR (as part of Kibana's Storybook roadmap, are: Upgrade to Storybook 6 Still allow running Storybooks with yarn storybook plugin_name Use the declarative configuration to (hopefully) make the configuration simpler to use an easier to understand, as well as avoiding deprecation warnings and loss of future compatibility The ways in which what I have so far differs from how we do things today are: In the alias configuration it takes a path to a storybook configuration directory instead of the storybook.js file from before Each plugin (it doesn't have to be a plugin; can be any directory) has a .storybook/main.js (the aliases file in @kbn/storybook specifies these locations) where they can define their Storybook configuration. You can require('@kbn/storybook').defaultConfig to get defaults and override them @kbn/storybook has a preset that can provide Webpack and Babel configuration and Storybook parameters and decorators Instead of dynamically creating the list of stories to import, we define them in the globs of the stories property in .storybook/main.js. Do not build a DLL. We are using @kbn/ui-shared-deps as externals. Startup time is not quite as fast but still acceptable. Other things done in this PR: Allow default exports in .stories. to allow for Common Story Format CSF stories Add guard in Webpack configuration needed for overriding CSS rules Update filename casing check to allow for files with required names in Storybook Clean up observability stories Rename *.examples.tsx and *.story.tsx to *.stories.tsx --- .eslintrc.js | 1 + package.json | 3 + packages/kbn-pm/dist/index.js | 22438 +++++++--------- packages/kbn-storybook/README.md | 60 +- packages/kbn-storybook/index.js | 87 - .../mocks/noop.js => index.ts} | 3 +- .../kbn-storybook/lib/constants.ts | 10 +- .../middleware.js => lib/default_config.ts} | 12 +- packages/kbn-storybook/lib/dll.js | 42 - .../lib/{constants.js => register.ts} | 22 +- .../kbn-storybook/lib/run_storybook_cli.ts | 75 + packages/kbn-storybook/lib/storybook_entry.js | 90 - .../kbn-storybook/lib/templates/index.ejs | 59 + .../kbn-storybook/lib/webpack.dll.config.js | 131 - packages/kbn-storybook/package.json | 28 +- .../kbn-storybook/preset.js | 15 +- .../kbn-storybook/storybook_config/addons.js | 23 - .../kbn-storybook/storybook_config/config.js | 68 - .../mocks/absolute_to_parsed_url.js | 23 - .../storybook_config/mocks/state_store.js | 26 - .../storybook_config/preview-head.html | 6 - .../storybook_config/webpack.config.js | 147 - packages/kbn-storybook/tsconfig.json | 9 + .../mocks/ui_storage.js => typings.d.ts} | 11 +- packages/kbn-storybook/webpack.config.ts | 108 + src/dev/precommit_hook/casing_check_config.js | 8 +- src/dev/storybook/aliases.ts | 18 +- src/dev/storybook/run_storybook_cli.ts | 15 +- .../plugins/embeddable/.storybook/main.js | 8 +- ...les.tsx => panel_options_menu.stories.tsx} | 0 .../public/code_editor/.storybook/main.js | 8 +- ...r.examples.tsx => code_editor.stories.tsx} | 0 x-pack/package.json | 13 +- .../storybook.js => apm/.storybook/main.js} | 8 +- x-pack/plugins/apm/scripts/storybook.js | 15 - .../simple_template.stories.storyshot | 92 +- .../simple_template.stories.storyshot | 152 +- .../simple_template.stories.storyshot | 246 +- .../canvas/storybook/addon/src/register.tsx | 2 +- .../canvas/storybook/decorators/index.ts | 24 - x-pack/plugins/canvas/storybook/main.ts | 19 +- .../canvas/storybook/storyshots.test.tsx | 17 +- .../.storybook/main.js} | 8 +- ...=> dashboard_drilldown_config.stories.tsx} | 0 x-pack/plugins/infra/.storybook/main.js | 7 + .../plugins/observability/.storybook/main.js | 7 + .../pages/overview/overview.stories.tsx | 580 +- .../security_solution/.storybook/main.js | 7 + .../__examples__/index.stories.tsx | 2 +- .../builder/logic_buttons.stories.tsx | 2 +- .../viewer/exception_item/index.stories.tsx | 2 +- .../exceptions_viewer_header.stories.tsx | 2 +- .../ui_actions_enhanced/.storybook/main.js | 7 + ...rd.story.tsx => action_wizard.stories.tsx} | 0 ...cted_flyout_manage_drilldowns.stories.tsx} | 0 ...ry.tsx => drilldown_hello_bar.stories.tsx} | 0 ...sx => flyout_drilldown_wizard.stories.tsx} | 0 ...ame.story.tsx => flyout_frame.stories.tsx} | 0 ...flyout_list_manage_drilldowns.stories.tsx} | 0 ....tsx => form_drilldown_wizard.stories.tsx} | 0 ...tsx => list_manage_drilldowns.stories.tsx} | 0 x-pack/typings/index.d.ts | 7 + yarn.lock | 2987 +- 63 files changed, 12992 insertions(+), 14768 deletions(-) delete mode 100644 packages/kbn-storybook/index.js rename packages/kbn-storybook/{storybook_config/mocks/noop.js => index.ts} (87%) mode change 100755 => 100644 rename src/plugins/kibana_react/public/code_editor/scripts/storybook.ts => packages/kbn-storybook/lib/constants.ts (79%) rename packages/kbn-storybook/{storybook_config/middleware.js => lib/default_config.ts} (73%) delete mode 100644 packages/kbn-storybook/lib/dll.js rename packages/kbn-storybook/lib/{constants.js => register.ts} (60%) create mode 100644 packages/kbn-storybook/lib/run_storybook_cli.ts delete mode 100644 packages/kbn-storybook/lib/storybook_entry.js create mode 100644 packages/kbn-storybook/lib/templates/index.ejs delete mode 100644 packages/kbn-storybook/lib/webpack.dll.config.js rename src/plugins/embeddable/scripts/storybook.js => packages/kbn-storybook/preset.js (75%) delete mode 100644 packages/kbn-storybook/storybook_config/addons.js delete mode 100644 packages/kbn-storybook/storybook_config/config.js delete mode 100644 packages/kbn-storybook/storybook_config/mocks/absolute_to_parsed_url.js delete mode 100644 packages/kbn-storybook/storybook_config/mocks/state_store.js delete mode 100644 packages/kbn-storybook/storybook_config/preview-head.html delete mode 100644 packages/kbn-storybook/storybook_config/webpack.config.js create mode 100644 packages/kbn-storybook/tsconfig.json rename packages/kbn-storybook/{storybook_config/mocks/ui_storage.js => typings.d.ts} (87%) create mode 100644 packages/kbn-storybook/webpack.config.ts rename x-pack/plugins/canvas/scripts/storybook_new.js => src/plugins/embeddable/.storybook/main.js (56%) rename src/plugins/embeddable/public/components/panel_options_menu/__examples__/{panel_options_menu.examples.tsx => panel_options_menu.stories.tsx} (100%) rename x-pack/plugins/dashboard_enhanced/scripts/storybook.js => src/plugins/kibana_react/public/code_editor/.storybook/main.js (54%) rename src/plugins/kibana_react/public/code_editor/{code_editor.examples.tsx => code_editor.stories.tsx} (100%) rename x-pack/plugins/{ui_actions_enhanced/scripts/storybook.js => apm/.storybook/main.js} (54%) delete mode 100644 x-pack/plugins/apm/scripts/storybook.js rename x-pack/plugins/{infra/scripts/storybook.js => dashboard_enhanced/.storybook/main.js} (53%) rename x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/{dashboard_drilldown_config.story.tsx => dashboard_drilldown_config.stories.tsx} (100%) create mode 100644 x-pack/plugins/infra/.storybook/main.js create mode 100644 x-pack/plugins/observability/.storybook/main.js create mode 100644 x-pack/plugins/security_solution/.storybook/main.js create mode 100644 x-pack/plugins/ui_actions_enhanced/.storybook/main.js rename x-pack/plugins/ui_actions_enhanced/public/components/action_wizard/{action_wizard.story.tsx => action_wizard.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/{connected_flyout_manage_drilldowns.story.tsx => connected_flyout_manage_drilldowns.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/{drilldown_hello_bar.story.tsx => drilldown_hello_bar.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/{flyout_drilldown_wizard.story.tsx => flyout_drilldown_wizard.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/{flyout_frame.story.tsx => flyout_frame.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/{flyout_list_manage_drilldowns.story.tsx => flyout_list_manage_drilldowns.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/{form_drilldown_wizard.story.tsx => form_drilldown_wizard.stories.tsx} (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/{list_manage_drilldowns.story.tsx => list_manage_drilldowns.stories.tsx} (100%) diff --git a/.eslintrc.js b/.eslintrc.js index 5802f67a7cd65..a0363e77e3596 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -388,6 +388,7 @@ module.exports = { */ { files: [ + '**/*.stories.tsx', 'x-pack/test/apm_api_integration/**/*.ts', 'x-pack/test/functional/apps/**/*.js', 'x-pack/plugins/apm/**/*.js', diff --git a/package.json b/package.json index bc782a859bf3e..3e26ba566f1b3 100644 --- a/package.json +++ b/package.json @@ -334,6 +334,7 @@ "@types/styled-components": "^5.1.0", "@types/supertest": "^2.0.5", "@types/supertest-as-promised": "^2.0.38", + "@types/tapable": "^1.0.6", "@types/tar": "^4.0.3", "@types/testing-library__jest-dom": "^5.9.2", "@types/testing-library__react-hooks": "^3.4.0", @@ -341,6 +342,8 @@ "@types/uuid": "^3.4.4", "@types/vinyl": "^2.0.4", "@types/vinyl-fs": "^2.4.11", + "@types/webpack": "^4.41.21", + "@types/webpack-env": "^1.15.2", "@types/zen-observable": "^0.8.0", "@typescript-eslint/eslint-plugin": "^3.10.0", "@typescript-eslint/parser": "^3.10.0", diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 97f3ed602f357..7dcfc1d778ea8 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -94,7 +94,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cli__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "run", function() { return _cli__WEBPACK_IMPORTED_MODULE_0__["run"]; }); -/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(504); +/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(496); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildProductionProjects"]; }); /* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(145); @@ -103,10 +103,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(163); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_3__["Project"]; }); -/* harmony import */ var _utils_workspaces__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(279); +/* harmony import */ var _utils_workspaces__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(275); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "copyWorkspacePackages", function() { return _utils_workspaces__WEBPACK_IMPORTED_MODULE_4__["copyWorkspacePackages"]; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(280); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(276); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_5__["getProjectPaths"]; }); /* @@ -150,7 +150,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(127); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(497); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(489); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(143); /* * Licensed to Elasticsearch B.V. under one or more contributor @@ -8763,9 +8763,9 @@ exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commands", function() { return commands; }); /* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(128); -/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(288); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(396); -/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(397); +/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(284); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(388); +/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(389); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -8806,10 +8806,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); /* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(144); /* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(145); -/* harmony import */ var _utils_project_checksums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(281); -/* harmony import */ var _utils_bootstrap_cache_file__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(286); -/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(283); -/* harmony import */ var _utils_validate_yarn_lock__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(287); +/* harmony import */ var _utils_project_checksums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(277); +/* harmony import */ var _utils_bootstrap_cache_file__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(282); +/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(279); +/* harmony import */ var _utils_validate_yarn_lock__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(283); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -10831,7 +10831,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(162); /* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(163); -/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(279); +/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(275); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -23650,9 +23650,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stream__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(227); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(236); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(232); /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(271); +/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(267); /* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(143); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } @@ -23743,12 +23743,12 @@ function spawnStreaming(command, args, opts, { "use strict"; -const ansiStyles = __webpack_require__(228); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(232); +const ansiStyles = __webpack_require__(113); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(228); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(234); +} = __webpack_require__(230); const {isArray} = Array; @@ -23957,7 +23957,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(235); + template = __webpack_require__(231); } return template(chalk, parts.join('')); @@ -23978,6604 +23978,6100 @@ module.exports = chalk; /***/ (function(module, exports, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(module) { -const wrapAnsi16 = (fn, offset) => (...args) => { - const code = fn(...args); - return `\u001B[${code + offset}m`; -}; +const os = __webpack_require__(120); +const tty = __webpack_require__(121); +const hasFlag = __webpack_require__(229); -const wrapAnsi256 = (fn, offset) => (...args) => { - const code = fn(...args); - return `\u001B[${38 + offset};5;${code}m`; -}; +const {env} = process; -const wrapAnsi16m = (fn, offset) => (...args) => { - const rgb = fn(...args); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false') || + hasFlag('color=never')) { + forceColor = 0; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = 1; +} -const ansi2ansi = n => n; -const rgb2rgb = (r, g, b) => [r, g, b]; +if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + forceColor = 1; + } else if (env.FORCE_COLOR === 'false') { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } +} -const setLazyProperty = (object, property, get) => { - Object.defineProperty(object, property, { - get: () => { - const value = get(); +function translateLevel(level) { + if (level === 0) { + return false; + } - Object.defineProperty(object, property, { - value, - enumerable: true, - configurable: true - }); + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} - return value; - }, - enumerable: true, - configurable: true - }); -}; +function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } -/** @type {typeof import('color-convert')} */ -let colorConvert; -const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { - if (colorConvert === undefined) { - colorConvert = __webpack_require__(229); + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; } - const offset = isBackground ? 10 : 0; - const styles = {}; + if (hasFlag('color=256')) { + return 2; + } - for (const [sourceSpace, suite] of Object.entries(colorConvert)) { - const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace; - if (sourceSpace === targetSpace) { - styles[name] = wrap(identity, offset); - } else if (typeof suite === 'object') { - styles[name] = wrap(suite[targetSpace], offset); - } + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; } - return styles; -}; + const min = forceColor || 0; -function assembleStyles() { - const codes = new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], + if (env.TERM === 'dumb') { + return min; + } - // Bright color - blackBright: [90, 39], - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], + if (process.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] + return 1; + } + + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; } - }; - // Alias bright black as gray (and grey) - styles.color.gray = styles.color.blackBright; - styles.bgColor.bgGray = styles.bgColor.bgBlackBright; - styles.color.grey = styles.color.blackBright; - styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + return min; + } - for (const [groupName, group] of Object.entries(styles)) { - for (const [styleName, style] of Object.entries(group)) { - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } - group[styleName] = styles[styleName]; + if ('GITHUB_ACTIONS' in env) { + return 1; + } - codes.set(style[0], style[1]); + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default } + } - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); + if (/-256(color)?$/i.test(env.TERM)) { + return 2; } - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false - }); + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; + if ('COLORTERM' in env) { + return 1; + } - setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false)); - setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false)); - setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false)); - setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true)); - setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true)); - setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true)); + return min; +} - return styles; +function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); } -// Make the export immutable -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); +module.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) +}; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), /* 229 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(230); -const route = __webpack_require__(231); - -const convert = {}; - -const models = Object.keys(conversions); +"use strict"; -function wrapRaw(fn) { - const wrappedFn = function (...args) { - const arg0 = args[0]; - if (arg0 === undefined || arg0 === null) { - return arg0; - } - if (arg0.length > 1) { - args = arg0; - } +module.exports = (flag, argv = process.argv) => { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +}; - return fn(args); - }; - // Preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { - return wrappedFn; -} +"use strict"; -function wrapRounded(fn) { - const wrappedFn = function (...args) { - const arg0 = args[0]; - if (arg0 === undefined || arg0 === null) { - return arg0; - } +const stringReplaceAll = (string, substring, replacer) => { + let index = string.indexOf(substring); + if (index === -1) { + return string; + } - if (arg0.length > 1) { - args = arg0; - } + const substringLength = substring.length; + let endIndex = 0; + let returnValue = ''; + do { + returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; + endIndex = index + substringLength; + index = string.indexOf(substring, endIndex); + } while (index !== -1); - const result = fn(args); + returnValue += string.substr(endIndex); + return returnValue; +}; - // We're assuming the result is an array here. - // see notice in conversions.js; don't use box types - // in conversion functions. - if (typeof result === 'object') { - for (let len = result.length, i = 0; i < len; i++) { - result[i] = Math.round(result[i]); - } - } +const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { + let endIndex = 0; + let returnValue = ''; + do { + const gotCR = string[index - 1] === '\r'; + returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix; + endIndex = index + 1; + index = string.indexOf('\n', endIndex); + } while (index !== -1); - return result; - }; + returnValue += string.substr(endIndex); + return returnValue; +}; - // Preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } +module.exports = { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex +}; - return wrappedFn; -} -models.forEach(fromModel => { - convert[fromModel] = {}; +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { - Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); - Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); +"use strict"; - const routes = route(fromModel); - const routeModels = Object.keys(routes); +const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; +const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; +const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; +const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; - routeModels.forEach(toModel => { - const fn = routes[toModel]; +const ESCAPES = new Map([ + ['n', '\n'], + ['r', '\r'], + ['t', '\t'], + ['b', '\b'], + ['f', '\f'], + ['v', '\v'], + ['0', '\0'], + ['\\', '\\'], + ['e', '\u001B'], + ['a', '\u0007'] +]); - convert[fromModel][toModel] = wrapRounded(fn); - convert[fromModel][toModel].raw = wrapRaw(fn); - }); -}); +function unescape(c) { + const u = c[0] === 'u'; + const bracket = c[1] === '{'; -module.exports = convert; + if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + if (u && bracket) { + return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); + } -/***/ }), -/* 230 */ -/***/ (function(module, exports, __webpack_require__) { + return ESCAPES.get(c) || c; +} -/* MIT license */ -/* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(117); +function parseArguments(name, arguments_) { + const results = []; + const chunks = arguments_.trim().split(/\s*,\s*/g); + let matches; -// NOTE: conversions should only return primitive values (i.e. arrays, or -// values that give correct `typeof` results). -// do not use box values types (i.e. Number(), String(), etc.) + for (const chunk of chunks) { + const number = Number(chunk); + if (!Number.isNaN(number)) { + results.push(number); + } else if ((matches = chunk.match(STRING_REGEX))) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } -const reverseKeywords = {}; -for (const key of Object.keys(cssKeywords)) { - reverseKeywords[cssKeywords[key]] = key; + return results; } -const convert = { - rgb: {channels: 3, labels: 'rgb'}, - hsl: {channels: 3, labels: 'hsl'}, - hsv: {channels: 3, labels: 'hsv'}, - hwb: {channels: 3, labels: 'hwb'}, - cmyk: {channels: 4, labels: 'cmyk'}, - xyz: {channels: 3, labels: 'xyz'}, - lab: {channels: 3, labels: 'lab'}, - lch: {channels: 3, labels: 'lch'}, - hex: {channels: 1, labels: ['hex']}, - keyword: {channels: 1, labels: ['keyword']}, - ansi16: {channels: 1, labels: ['ansi16']}, - ansi256: {channels: 1, labels: ['ansi256']}, - hcg: {channels: 3, labels: ['h', 'c', 'g']}, - apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, - gray: {channels: 1, labels: ['gray']} -}; - -module.exports = convert; +function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; -// Hide .channels and .labels properties -for (const model of Object.keys(convert)) { - if (!('channels' in convert[model])) { - throw new Error('missing channels property: ' + model); - } + const results = []; + let matches; - if (!('labels' in convert[model])) { - throw new Error('missing channel labels property: ' + model); - } + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; - if (convert[model].labels.length !== convert[model].channels) { - throw new Error('channel and label counts mismatch: ' + model); + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } } - const {channels, labels} = convert[model]; - delete convert[model].channels; - delete convert[model].labels; - Object.defineProperty(convert[model], 'channels', {value: channels}); - Object.defineProperty(convert[model], 'labels', {value: labels}); + return results; } -convert.rgb.hsl = function (rgb) { - const r = rgb[0] / 255; - const g = rgb[1] / 255; - const b = rgb[2] / 255; - const min = Math.min(r, g, b); - const max = Math.max(r, g, b); - const delta = max - min; - let h; - let s; +function buildStyle(chalk, styles) { + const enabled = {}; - if (max === min) { - h = 0; - } else if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else if (b === max) { - h = 4 + (r - g) / delta; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } } - h = Math.min(h * 60, 360); - - if (h < 0) { - h += 360; - } + let current = chalk; + for (const [styleName, styles] of Object.entries(enabled)) { + if (!Array.isArray(styles)) { + continue; + } - const l = (min + max) / 2; + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } - if (max === min) { - s = 0; - } else if (l <= 0.5) { - s = delta / (max + min); - } else { - s = delta / (2 - max - min); + current = styles.length > 0 ? current[styleName](...styles) : current[styleName]; } - return [h, s * 100, l * 100]; -}; + return current; +} -convert.rgb.hsv = function (rgb) { - let rdif; - let gdif; - let bdif; - let h; - let s; +module.exports = (chalk, temporary) => { + const styles = []; + const chunks = []; + let chunk = []; - const r = rgb[0] / 255; - const g = rgb[1] / 255; - const b = rgb[2] / 255; - const v = Math.max(r, g, b); - const diff = v - Math.min(r, g, b); - const diffc = function (c) { - return (v - c) / 6 / diff + 1 / 2; - }; - - if (diff === 0) { - h = 0; - s = 0; - } else { - s = diff / v; - rdif = diffc(r); - gdif = diffc(g); - bdif = diffc(b); + // eslint-disable-next-line max-params + temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { + if (escapeCharacter) { + chunk.push(unescape(escapeCharacter)); + } else if (style) { + const string = chunk.join(''); + chunk = []; + chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string)); + styles.push({inverse, styles: parseStyle(style)}); + } else if (close) { + if (styles.length === 0) { + throw new Error('Found extraneous } in Chalk template literal'); + } - if (r === v) { - h = bdif - gdif; - } else if (g === v) { - h = (1 / 3) + rdif - bdif; - } else if (b === v) { - h = (2 / 3) + gdif - rdif; + chunks.push(buildStyle(chalk, styles)(chunk.join(''))); + chunk = []; + styles.pop(); + } else { + chunk.push(character); } + }); - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } + chunks.push(chunk.join('')); + + if (styles.length > 0) { + const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; + throw new Error(errMessage); } - return [ - h * 360, - s * 100, - v * 100 - ]; + return chunks.join(''); }; -convert.rgb.hwb = function (rgb) { - const r = rgb[0]; - const g = rgb[1]; - let b = rgb[2]; - const h = convert.rgb.hsl(rgb)[0]; - const w = 1 / 255 * Math.min(r, Math.min(g, b)); - - b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); - return [h, w * 100, b * 100]; -}; +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { -convert.rgb.cmyk = function (rgb) { - const r = rgb[0] / 255; - const g = rgb[1] / 255; - const b = rgb[2] / 255; +"use strict"; - const k = Math.min(1 - r, 1 - g, 1 - b); - const c = (1 - r - k) / (1 - k) || 0; - const m = (1 - g - k) / (1 - k) || 0; - const y = (1 - b - k) / (1 - k) || 0; +const path = __webpack_require__(4); +const childProcess = __webpack_require__(233); +const crossSpawn = __webpack_require__(234); +const stripFinalNewline = __webpack_require__(247); +const npmRunPath = __webpack_require__(248); +const onetime = __webpack_require__(249); +const makeError = __webpack_require__(251); +const normalizeStdio = __webpack_require__(256); +const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(257); +const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(258); +const {mergePromise, getSpawnedPromise} = __webpack_require__(265); +const {joinCommand, parseCommand} = __webpack_require__(266); - return [c * 100, m * 100, y * 100, k * 100]; -}; +const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; -function comparativeDistance(x, y) { - /* - See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance - */ - return ( - ((x[0] - y[0]) ** 2) + - ((x[1] - y[1]) ** 2) + - ((x[2] - y[2]) ** 2) - ); -} +const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => { + const env = extendEnv ? {...process.env, ...envOption} : envOption; -convert.rgb.keyword = function (rgb) { - const reversed = reverseKeywords[rgb]; - if (reversed) { - return reversed; + if (preferLocal) { + return npmRunPath.env({env, cwd: localDir, execPath}); } - let currentClosestDistance = Infinity; - let currentClosestKeyword; + return env; +}; - for (const keyword of Object.keys(cssKeywords)) { - const value = cssKeywords[keyword]; +const handleArgs = (file, args, options = {}) => { + const parsed = crossSpawn._parse(file, args, options); + file = parsed.command; + args = parsed.args; + options = parsed.options; - // Compute comparative distance - const distance = comparativeDistance(rgb, value); + options = { + maxBuffer: DEFAULT_MAX_BUFFER, + buffer: true, + stripFinalNewline: true, + extendEnv: true, + preferLocal: false, + localDir: options.cwd || process.cwd(), + execPath: process.execPath, + encoding: 'utf8', + reject: true, + cleanup: true, + all: false, + windowsHide: true, + ...options + }; - // Check if its less, if so set as closest - if (distance < currentClosestDistance) { - currentClosestDistance = distance; - currentClosestKeyword = keyword; - } - } + options.env = getEnv(options); - return currentClosestKeyword; -}; + options.stdio = normalizeStdio(options); -convert.keyword.rgb = function (keyword) { - return cssKeywords[keyword]; -}; + if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') { + // #116 + args.unshift('/q'); + } -convert.rgb.xyz = function (rgb) { - let r = rgb[0] / 255; - let g = rgb[1] / 255; - let b = rgb[2] / 255; + return {file, args, options, parsed}; +}; - // Assume sRGB - r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92); - g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92); - b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92); +const handleOutput = (options, value, error) => { + if (typeof value !== 'string' && !Buffer.isBuffer(value)) { + // When `execa.sync()` errors, we normalize it to '' to mimic `execa()` + return error === undefined ? undefined : ''; + } - const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + if (options.stripFinalNewline) { + return stripFinalNewline(value); + } - return [x * 100, y * 100, z * 100]; + return value; }; -convert.rgb.lab = function (rgb) { - const xyz = convert.rgb.xyz(rgb); - let x = xyz[0]; - let y = xyz[1]; - let z = xyz[2]; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116); +const execa = (file, args, options) => { + const parsed = handleArgs(file, args, options); + const command = joinCommand(file, args); - const l = (116 * y) - 16; - const a = 500 * (x - y); - const b = 200 * (y - z); + let spawned; + try { + spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options); + } catch (error) { + // Ensure the returned error is always both a promise and a child process + const dummySpawned = new childProcess.ChildProcess(); + const errorPromise = Promise.reject(makeError({ + error, + stdout: '', + stderr: '', + all: '', + command, + parsed, + timedOut: false, + isCanceled: false, + killed: false + })); + return mergePromise(dummySpawned, errorPromise); + } - return [l, a, b]; -}; + const spawnedPromise = getSpawnedPromise(spawned); + const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); + const processDone = setExitHandler(spawned, parsed.options, timedPromise); -convert.hsl.rgb = function (hsl) { - const h = hsl[0] / 360; - const s = hsl[1] / 100; - const l = hsl[2] / 100; - let t2; - let t3; - let val; + const context = {isCanceled: false}; - if (s === 0) { - val = l * 255; - return [val, val, val]; - } + spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); + spawned.cancel = spawnedCancel.bind(null, spawned, context); - if (l < 0.5) { - t2 = l * (1 + s); - } else { - t2 = l + s - l * s; - } + const handlePromise = async () => { + const [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); + const stdout = handleOutput(parsed.options, stdoutResult); + const stderr = handleOutput(parsed.options, stderrResult); + const all = handleOutput(parsed.options, allResult); - const t1 = 2 * l - t2; + if (error || exitCode !== 0 || signal !== null) { + const returnedError = makeError({ + error, + exitCode, + signal, + stdout, + stderr, + all, + command, + parsed, + timedOut, + isCanceled: context.isCanceled, + killed: spawned.killed + }); - const rgb = [0, 0, 0]; - for (let i = 0; i < 3; i++) { - t3 = h + 1 / 3 * -(i - 1); - if (t3 < 0) { - t3++; - } + if (!parsed.options.reject) { + return returnedError; + } - if (t3 > 1) { - t3--; + throw returnedError; } - if (6 * t3 < 1) { - val = t1 + (t2 - t1) * 6 * t3; - } else if (2 * t3 < 1) { - val = t2; - } else if (3 * t3 < 2) { - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - } else { - val = t1; - } + return { + command, + exitCode: 0, + stdout, + stderr, + all, + failed: false, + timedOut: false, + isCanceled: false, + killed: false + }; + }; - rgb[i] = val * 255; - } + const handlePromiseOnce = onetime(handlePromise); - return rgb; -}; + crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); -convert.hsl.hsv = function (hsl) { - const h = hsl[0]; - let s = hsl[1] / 100; - let l = hsl[2] / 100; - let smin = s; - const lmin = Math.max(l, 0.01); + handleInput(spawned, parsed.options.input); - l *= 2; - s *= (l <= 1) ? l : 2 - l; - smin *= lmin <= 1 ? lmin : 2 - lmin; - const v = (l + s) / 2; - const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + spawned.all = makeAllStream(spawned, parsed.options); - return [h, sv * 100, v * 100]; + return mergePromise(spawned, handlePromiseOnce); }; -convert.hsv.rgb = function (hsv) { - const h = hsv[0] / 60; - const s = hsv[1] / 100; - let v = hsv[2] / 100; - const hi = Math.floor(h) % 6; +module.exports = execa; - const f = h - Math.floor(h); - const p = 255 * v * (1 - s); - const q = 255 * v * (1 - (s * f)); - const t = 255 * v * (1 - (s * (1 - f))); - v *= 255; +module.exports.sync = (file, args, options) => { + const parsed = handleArgs(file, args, options); + const command = joinCommand(file, args); - switch (hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -}; + validateInputSync(parsed.options); -convert.hsv.hsl = function (hsv) { - const h = hsv[0]; - const s = hsv[1] / 100; - const v = hsv[2] / 100; - const vmin = Math.max(v, 0.01); - let sl; - let l; + let result; + try { + result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options); + } catch (error) { + throw makeError({ + error, + stdout: '', + stderr: '', + all: '', + command, + parsed, + timedOut: false, + isCanceled: false, + killed: false + }); + } - l = (2 - s) * v; - const lmin = (2 - s) * vmin; - sl = s * vmin; - sl /= (lmin <= 1) ? lmin : 2 - lmin; - sl = sl || 0; - l /= 2; + const stdout = handleOutput(parsed.options, result.stdout, result.error); + const stderr = handleOutput(parsed.options, result.stderr, result.error); - return [h, sl * 100, l * 100]; -}; + if (result.error || result.status !== 0 || result.signal !== null) { + const error = makeError({ + stdout, + stderr, + error: result.error, + signal: result.signal, + exitCode: result.status, + command, + parsed, + timedOut: result.error && result.error.code === 'ETIMEDOUT', + isCanceled: false, + killed: result.signal !== null + }); -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -convert.hwb.rgb = function (hwb) { - const h = hwb[0] / 360; - let wh = hwb[1] / 100; - let bl = hwb[2] / 100; - const ratio = wh + bl; - let f; + if (!parsed.options.reject) { + return error; + } - // Wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; + throw error; } - const i = Math.floor(6 * h); - const v = 1 - bl; - f = 6 * h - i; + return { + command, + exitCode: 0, + stdout, + stderr, + failed: false, + timedOut: false, + isCanceled: false, + killed: false + }; +}; - if ((i & 0x01) !== 0) { - f = 1 - f; - } +module.exports.command = (command, options) => { + const [file, ...args] = parseCommand(command); + return execa(file, args, options); +}; - const n = wh + f * (v - wh); // Linear interpolation +module.exports.commandSync = (command, options) => { + const [file, ...args] = parseCommand(command); + return execa.sync(file, args, options); +}; - let r; - let g; - let b; - /* eslint-disable max-statements-per-line,no-multi-spaces */ - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; +module.exports.node = (scriptPath, args, options = {}) => { + if (args && !Array.isArray(args) && typeof args === 'object') { + options = args; + args = []; } - /* eslint-enable max-statements-per-line,no-multi-spaces */ - - return [r * 255, g * 255, b * 255]; -}; -convert.cmyk.rgb = function (cmyk) { - const c = cmyk[0] / 100; - const m = cmyk[1] / 100; - const y = cmyk[2] / 100; - const k = cmyk[3] / 100; + const stdio = normalizeStdio.node(options); - const r = 1 - Math.min(1, c * (1 - k) + k); - const g = 1 - Math.min(1, m * (1 - k) + k); - const b = 1 - Math.min(1, y * (1 - k) + k); + const {nodePath = process.execPath, nodeOptions = process.execArgv} = options; - return [r * 255, g * 255, b * 255]; + return execa( + nodePath, + [ + ...nodeOptions, + scriptPath, + ...(Array.isArray(args) ? args : []) + ], + { + ...options, + stdin: undefined, + stdout: undefined, + stderr: undefined, + stdio, + shell: false + } + ); }; -convert.xyz.rgb = function (xyz) { - const x = xyz[0] / 100; - const y = xyz[1] / 100; - const z = xyz[2] / 100; - let r; - let g; - let b; - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); +/***/ }), +/* 233 */ +/***/ (function(module, exports) { - // Assume sRGB - r = r > 0.0031308 - ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055) - : r * 12.92; +module.exports = require("child_process"); - g = g > 0.0031308 - ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055) - : g * 12.92; +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { - b = b > 0.0031308 - ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055) - : b * 12.92; +"use strict"; - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - return [r * 255, g * 255, b * 255]; -}; +const cp = __webpack_require__(233); +const parse = __webpack_require__(235); +const enoent = __webpack_require__(246); -convert.xyz.lab = function (xyz) { - let x = xyz[0]; - let y = xyz[1]; - let z = xyz[2]; +function spawn(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); - x /= 95.047; - y /= 100; - z /= 108.883; + // Spawn the child process + const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); - x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116); + // Hook into child process "exit" event to emit an error if the command + // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + enoent.hookChildProcess(spawned, parsed); - const l = (116 * y) - 16; - const a = 500 * (x - y); - const b = 200 * (y - z); + return spawned; +} - return [l, a, b]; -}; +function spawnSync(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); -convert.lab.xyz = function (lab) { - const l = lab[0]; - const a = lab[1]; - const b = lab[2]; - let x; - let y; - let z; + // Spawn the child process + const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); - y = (l + 16) / 116; - x = a / 500 + y; - z = y - b / 200; + // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); - const y2 = y ** 3; - const x2 = x ** 3; - const z2 = z ** 3; - y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; - x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; - z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + return result; +} - x *= 95.047; - y *= 100; - z *= 108.883; +module.exports = spawn; +module.exports.spawn = spawn; +module.exports.sync = spawnSync; - return [x, y, z]; -}; +module.exports._parse = parse; +module.exports._enoent = enoent; -convert.lab.lch = function (lab) { - const l = lab[0]; - const a = lab[1]; - const b = lab[2]; - let h; - const hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; +/***/ }), +/* 235 */ +/***/ (function(module, exports, __webpack_require__) { - if (h < 0) { - h += 360; - } +"use strict"; - const c = Math.sqrt(a * a + b * b); - return [l, c, h]; -}; +const path = __webpack_require__(4); +const resolveCommand = __webpack_require__(236); +const escape = __webpack_require__(242); +const readShebang = __webpack_require__(243); -convert.lch.lab = function (lch) { - const l = lch[0]; - const c = lch[1]; - const h = lch[2]; +const isWin = process.platform === 'win32'; +const isExecutableRegExp = /\.(?:com|exe)$/i; +const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; - const hr = h / 360 * 2 * Math.PI; - const a = c * Math.cos(hr); - const b = c * Math.sin(hr); +function detectShebang(parsed) { + parsed.file = resolveCommand(parsed); - return [l, a, b]; -}; + const shebang = parsed.file && readShebang(parsed.file); -convert.rgb.ansi16 = function (args, saturation = null) { - const [r, g, b] = args; - let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization + if (shebang) { + parsed.args.unshift(parsed.file); + parsed.command = shebang; - value = Math.round(value / 50); + return resolveCommand(parsed); + } - if (value === 0) { - return 30; - } + return parsed.file; +} - let ansi = 30 - + ((Math.round(b / 255) << 2) - | (Math.round(g / 255) << 1) - | Math.round(r / 255)); +function parseNonShell(parsed) { + if (!isWin) { + return parsed; + } - if (value === 2) { - ansi += 60; - } + // Detect & add support for shebangs + const commandFile = detectShebang(parsed); - return ansi; -}; + // We don't need a shell if the command filename is an executable + const needsShell = !isExecutableRegExp.test(commandFile); -convert.hsv.ansi16 = function (args) { - // Optimization here; we already know the value and don't need to get - // it converted for us. - return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); -}; + // If a shell is required, use cmd.exe and take care of escaping everything correctly + // Note that `forceShell` is an hidden option used only in tests + if (parsed.options.forceShell || needsShell) { + // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` + // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument + // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, + // we need to double escape them + const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); -convert.rgb.ansi256 = function (args) { - const r = args[0]; - const g = args[1]; - const b = args[2]; + // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) + // This is necessary otherwise it will always fail with ENOENT in those cases + parsed.command = path.normalize(parsed.command); - // We use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - if (r === g && g === b) { - if (r < 8) { - return 16; - } + // Escape command & arguments + parsed.command = escape.command(parsed.command); + parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); - if (r > 248) { - return 231; - } + const shellCommand = [parsed.command].concat(parsed.args).join(' '); - return Math.round(((r - 8) / 247) * 24) + 232; - } + parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; + parsed.command = process.env.comspec || 'cmd.exe'; + parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped + } - const ansi = 16 - + (36 * Math.round(r / 255 * 5)) - + (6 * Math.round(g / 255 * 5)) - + Math.round(b / 255 * 5); + return parsed; +} - return ansi; -}; +function parse(command, args, options) { + // Normalize arguments, similar to nodejs + if (args && !Array.isArray(args)) { + options = args; + args = null; + } -convert.ansi16.rgb = function (args) { - let color = args % 10; + args = args ? args.slice(0) : []; // Clone array to avoid changing the original + options = Object.assign({}, options); // Clone object to avoid changing the original - // Handle greyscale - if (color === 0 || color === 7) { - if (args > 50) { - color += 3.5; - } + // Build our parsed object + const parsed = { + command, + args, + options, + file: undefined, + original: { + command, + args, + }, + }; - color = color / 10.5 * 255; + // Delegate further parsing to shell or non-shell + return options.shell ? parsed : parseNonShell(parsed); +} - return [color, color, color]; - } +module.exports = parse; - const mult = (~~(args > 50) + 1) * 0.5; - const r = ((color & 1) * mult) * 255; - const g = (((color >> 1) & 1) * mult) * 255; - const b = (((color >> 2) & 1) * mult) * 255; - return [r, g, b]; -}; +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { -convert.ansi256.rgb = function (args) { - // Handle greyscale - if (args >= 232) { - const c = (args - 232) * 10 + 8; - return [c, c, c]; - } +"use strict"; - args -= 16; - let rem; - const r = Math.floor(args / 36) / 5 * 255; - const g = Math.floor((rem = args % 36) / 6) / 5 * 255; - const b = (rem % 6) / 5 * 255; +const path = __webpack_require__(4); +const which = __webpack_require__(237); +const pathKey = __webpack_require__(241)(); - return [r, g, b]; -}; +function resolveCommandAttempt(parsed, withoutPathExt) { + const cwd = process.cwd(); + const hasCustomCwd = parsed.options.cwd != null; + // Worker threads do not have process.chdir() + const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined; -convert.rgb.hex = function (args) { - const integer = ((Math.round(args[0]) & 0xFF) << 16) - + ((Math.round(args[1]) & 0xFF) << 8) - + (Math.round(args[2]) & 0xFF); + // If a custom `cwd` was specified, we need to change the process cwd + // because `which` will do stat calls but does not support a custom cwd + if (shouldSwitchCwd) { + try { + process.chdir(parsed.options.cwd); + } catch (err) { + /* Empty */ + } + } - const string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; + let resolved; -convert.hex.rgb = function (args) { - const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); - if (!match) { - return [0, 0, 0]; - } + try { + resolved = which.sync(parsed.command, { + path: (parsed.options.env || process.env)[pathKey], + pathExt: withoutPathExt ? path.delimiter : undefined, + }); + } catch (e) { + /* Empty */ + } finally { + if (shouldSwitchCwd) { + process.chdir(cwd); + } + } - let colorString = match[0]; + // If we successfully resolved, ensure that an absolute path is returned + // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it + if (resolved) { + resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); + } - if (match[0].length === 3) { - colorString = colorString.split('').map(char => { - return char + char; - }).join(''); - } + return resolved; +} - const integer = parseInt(colorString, 16); - const r = (integer >> 16) & 0xFF; - const g = (integer >> 8) & 0xFF; - const b = integer & 0xFF; +function resolveCommand(parsed) { + return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +} - return [r, g, b]; -}; +module.exports = resolveCommand; -convert.rgb.hcg = function (rgb) { - const r = rgb[0] / 255; - const g = rgb[1] / 255; - const b = rgb[2] / 255; - const max = Math.max(Math.max(r, g), b); - const min = Math.min(Math.min(r, g), b); - const chroma = (max - min); - let grayscale; - let hue; - if (chroma < 1) { - grayscale = min / (1 - chroma); - } else { - grayscale = 0; - } +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { - if (chroma <= 0) { - hue = 0; - } else - if (max === r) { - hue = ((g - b) / chroma) % 6; - } else - if (max === g) { - hue = 2 + (b - r) / chroma; - } else { - hue = 4 + (r - g) / chroma; - } +const isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys' - hue /= 6; - hue %= 1; +const path = __webpack_require__(4) +const COLON = isWindows ? ';' : ':' +const isexe = __webpack_require__(238) - return [hue * 360, chroma * 100, grayscale * 100]; -}; +const getNotFoundError = (cmd) => + Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) -convert.hsl.hcg = function (hsl) { - const s = hsl[1] / 100; - const l = hsl[2] / 100; +const getPathInfo = (cmd, opt) => { + const colon = opt.colon || COLON - const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l)); + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] + : ( + [ + // windows always checks the cwd first + ...(isWindows ? [process.cwd()] : []), + ...(opt.path || process.env.PATH || + /* istanbul ignore next: very unusual */ '').split(colon), + ] + ) + const pathExtExe = isWindows + ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' + : '' + const pathExt = isWindows ? pathExtExe.split(colon) : [''] - let f = 0; - if (c < 1.0) { - f = (l - 0.5 * c) / (1.0 - c); - } + if (isWindows) { + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift('') + } - return [hsl[0], c * 100, f * 100]; -}; + return { + pathEnv, + pathExt, + pathExtExe, + } +} -convert.hsv.hcg = function (hsv) { - const s = hsv[1] / 100; - const v = hsv[2] / 100; +const which = (cmd, opt, cb) => { + if (typeof opt === 'function') { + cb = opt + opt = {} + } + if (!opt) + opt = {} - const c = s * v; - let f = 0; + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] - if (c < 1.0) { - f = (v - c) / (1 - c); - } + const step = i => new Promise((resolve, reject) => { + if (i === pathEnv.length) + return opt.all && found.length ? resolve(found) + : reject(getNotFoundError(cmd)) - return [hsv[0], c * 100, f * 100]; -}; + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw -convert.hcg.rgb = function (hcg) { - const h = hcg[0] / 360; - const c = hcg[1] / 100; - const g = hcg[2] / 100; + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd - if (c === 0.0) { - return [g * 255, g * 255, g * 255]; - } + resolve(subStep(p, i, 0)) + }) - const pure = [0, 0, 0]; - const hi = (h % 1) * 6; - const v = hi % 1; - const w = 1 - v; - let mg = 0; + const subStep = (p, i, ii) => new Promise((resolve, reject) => { + if (ii === pathExt.length) + return resolve(step(i + 1)) + const ext = pathExt[ii] + isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { + if (!er && is) { + if (opt.all) + found.push(p + ext) + else + return resolve(p + ext) + } + return resolve(subStep(p, i, ii + 1)) + }) + }) - /* eslint-disable max-statements-per-line */ - switch (Math.floor(hi)) { - case 0: - pure[0] = 1; pure[1] = v; pure[2] = 0; break; - case 1: - pure[0] = w; pure[1] = 1; pure[2] = 0; break; - case 2: - pure[0] = 0; pure[1] = 1; pure[2] = v; break; - case 3: - pure[0] = 0; pure[1] = w; pure[2] = 1; break; - case 4: - pure[0] = v; pure[1] = 0; pure[2] = 1; break; - default: - pure[0] = 1; pure[1] = 0; pure[2] = w; - } - /* eslint-enable max-statements-per-line */ + return cb ? step(0).then(res => cb(null, res), cb) : step(0) +} - mg = (1.0 - c) * g; +const whichSync = (cmd, opt) => { + opt = opt || {} - return [ - (c * pure[0] + mg) * 255, - (c * pure[1] + mg) * 255, - (c * pure[2] + mg) * 255 - ]; -}; + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] -convert.hcg.hsv = function (hcg) { - const c = hcg[1] / 100; - const g = hcg[2] / 100; + for (let i = 0; i < pathEnv.length; i ++) { + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw - const v = c + g * (1.0 - c); - let f = 0; + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd - if (v > 0.0) { - f = c / v; - } + for (let j = 0; j < pathExt.length; j ++) { + const cur = p + pathExt[j] + try { + const is = isexe.sync(cur, { pathExt: pathExtExe }) + if (is) { + if (opt.all) + found.push(cur) + else + return cur + } + } catch (ex) {} + } + } - return [hcg[0], f * 100, v * 100]; -}; + if (opt.all && found.length) + return found -convert.hcg.hsl = function (hcg) { - const c = hcg[1] / 100; - const g = hcg[2] / 100; + if (opt.nothrow) + return null - const l = g * (1.0 - c) + 0.5 * c; - let s = 0; + throw getNotFoundError(cmd) +} - if (l > 0.0 && l < 0.5) { - s = c / (2 * l); - } else - if (l >= 0.5 && l < 1.0) { - s = c / (2 * (1 - l)); - } +module.exports = which +which.sync = whichSync - return [hcg[0], s * 100, l * 100]; -}; -convert.hcg.hwb = function (hcg) { - const c = hcg[1] / 100; - const g = hcg[2] / 100; - const v = c + g * (1.0 - c); - return [hcg[0], (v - c) * 100, (1 - v) * 100]; -}; +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { -convert.hwb.hcg = function (hwb) { - const w = hwb[1] / 100; - const b = hwb[2] / 100; - const v = 1 - b; - const c = v - w; - let g = 0; +var fs = __webpack_require__(133) +var core +if (process.platform === 'win32' || global.TESTING_WINDOWS) { + core = __webpack_require__(239) +} else { + core = __webpack_require__(240) +} - if (c < 1) { - g = (v - c) / (1 - c); - } - - return [hwb[0], c * 100, g * 100]; -}; +module.exports = isexe +isexe.sync = sync -convert.apple.rgb = function (apple) { - return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; -}; +function isexe (path, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } -convert.rgb.apple = function (rgb) { - return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; -}; + if (!cb) { + if (typeof Promise !== 'function') { + throw new TypeError('callback not provided') + } -convert.gray.rgb = function (args) { - return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; -}; + return new Promise(function (resolve, reject) { + isexe(path, options || {}, function (er, is) { + if (er) { + reject(er) + } else { + resolve(is) + } + }) + }) + } -convert.gray.hsl = function (args) { - return [0, 0, args[0]]; -}; + core(path, options || {}, function (er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null + is = false + } + } + cb(er, is) + }) +} -convert.gray.hsv = convert.gray.hsl; +function sync (path, options) { + // my kingdom for a filtered catch + try { + return core.sync(path, options || {}) + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') { + return false + } else { + throw er + } + } +} -convert.gray.hwb = function (gray) { - return [0, 100, gray[0]]; -}; -convert.gray.cmyk = function (gray) { - return [0, 0, 0, gray[0]]; -}; +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { -convert.gray.lab = function (gray) { - return [gray[0], 0, 0]; -}; +module.exports = isexe +isexe.sync = sync -convert.gray.hex = function (gray) { - const val = Math.round(gray[0] / 100 * 255) & 0xFF; - const integer = (val << 16) + (val << 8) + val; +var fs = __webpack_require__(133) - const string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; +function checkPathExt (path, options) { + var pathext = options.pathExt !== undefined ? + options.pathExt : process.env.PATHEXT -convert.rgb.gray = function (rgb) { - const val = (rgb[0] + rgb[1] + rgb[2]) / 3; - return [val / 255 * 100]; -}; + if (!pathext) { + return true + } + pathext = pathext.split(';') + if (pathext.indexOf('') !== -1) { + return true + } + for (var i = 0; i < pathext.length; i++) { + var p = pathext[i].toLowerCase() + if (p && path.substr(-p.length).toLowerCase() === p) { + return true + } + } + return false +} -/***/ }), -/* 231 */ -/***/ (function(module, exports, __webpack_require__) { +function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) +} -const conversions = __webpack_require__(230); +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)) + }) +} -/* - This function routes a model to all other models. +function sync (path, options) { + return checkStat(fs.statSync(path), path, options) +} - all functions that are routed have a property `.conversion` attached - to the returned synthetic function. This property is an array - of strings, each with the steps in between the 'from' and 'to' - color models (inclusive). - conversions that are not possible simply are not included. -*/ +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { -function buildGraph() { - const graph = {}; - // https://jsperf.com/object-keys-vs-for-in-with-closure/3 - const models = Object.keys(conversions); +module.exports = isexe +isexe.sync = sync - for (let len = models.length, i = 0; i < len; i++) { - graph[models[i]] = { - // http://jsperf.com/1-vs-infinity - // micro-opt, but this is simple. - distance: -1, - parent: null - }; - } +var fs = __webpack_require__(133) - return graph; +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)) + }) } -// https://en.wikipedia.org/wiki/Breadth-first_search -function deriveBFS(fromModel) { - const graph = buildGraph(); - const queue = [fromModel]; // Unshift -> queue -> pop +function sync (path, options) { + return checkStat(fs.statSync(path), options) +} - graph[fromModel].distance = 0; +function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) +} - while (queue.length) { - const current = queue.pop(); - const adjacents = Object.keys(conversions[current]); +function checkMode (stat, options) { + var mod = stat.mode + var uid = stat.uid + var gid = stat.gid - for (let len = adjacents.length, i = 0; i < len; i++) { - const adjacent = adjacents[i]; - const node = graph[adjacent]; + var myUid = options.uid !== undefined ? + options.uid : process.getuid && process.getuid() + var myGid = options.gid !== undefined ? + options.gid : process.getgid && process.getgid() - if (node.distance === -1) { - node.distance = graph[current].distance + 1; - node.parent = current; - queue.unshift(adjacent); - } - } - } + var u = parseInt('100', 8) + var g = parseInt('010', 8) + var o = parseInt('001', 8) + var ug = u | g - return graph; -} + var ret = (mod & o) || + (mod & g) && gid === myGid || + (mod & u) && uid === myUid || + (mod & ug) && myUid === 0 -function link(from, to) { - return function (args) { - return to(from(args)); - }; + return ret } -function wrapConversion(toModel, graph) { - const path = [graph[toModel].parent, toModel]; - let fn = conversions[graph[toModel].parent][toModel]; - - let cur = graph[toModel].parent; - while (graph[cur].parent) { - path.unshift(graph[cur].parent); - fn = link(conversions[graph[cur].parent][cur], fn); - cur = graph[cur].parent; - } - fn.conversion = path; - return fn; -} +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { -module.exports = function (fromModel) { - const graph = deriveBFS(fromModel); - const conversion = {}; +"use strict"; - const models = Object.keys(graph); - for (let len = models.length, i = 0; i < len; i++) { - const toModel = models[i]; - const node = graph[toModel]; - if (node.parent === null) { - // No possible conversion, or this node is the source model. - continue; - } +const pathKey = (options = {}) => { + const environment = options.env || process.env; + const platform = options.platform || process.platform; - conversion[toModel] = wrapConversion(toModel, graph); + if (platform !== 'win32') { + return 'PATH'; } - return conversion; + return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; }; +module.exports = pathKey; +// TODO: Remove this for the next major release +module.exports.default = pathKey; /***/ }), -/* 232 */ +/* 242 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); -const tty = __webpack_require__(121); -const hasFlag = __webpack_require__(233); -const {env} = process; +// See http://www.robvanderwoude.com/escapechars.php +const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false') || - hasFlag('color=never')) { - forceColor = 0; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = 1; -} +function escapeCommand(arg) { + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); -if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - forceColor = 1; - } else if (env.FORCE_COLOR === 'false') { - forceColor = 0; - } else { - forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); - } + return arg; } -function translateLevel(level) { - if (level === 0) { - return false; - } +function escapeArgument(arg, doubleEscapeMetaChars) { + // Convert to string + arg = `${arg}`; - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} + // Algorithm below is based on https://qntm.org/cmd -function supportsColor(haveStream, streamIsTTY) { - if (forceColor === 0) { - return 0; - } + // Sequence of backslashes followed by a double quote: + // double up all the backslashes and escape the double quote + arg = arg.replace(/(\\*)"/g, '$1$1\\"'); - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } + // Sequence of backslashes followed by the end of the string + // (which will become a double quote later): + // double up all the backslashes + arg = arg.replace(/(\\*)$/, '$1$1'); - if (hasFlag('color=256')) { - return 2; - } + // All other backslashes occur literally - if (haveStream && !streamIsTTY && forceColor === undefined) { - return 0; - } + // Quote the whole thing: + arg = `"${arg}"`; - const min = forceColor || 0; + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); - if (env.TERM === 'dumb') { - return min; - } + // Double escape meta chars if necessary + if (doubleEscapeMetaChars) { + arg = arg.replace(metaCharsRegExp, '^$1'); + } - if (process.platform === 'win32') { - // Windows 10 build 10586 is the first Windows release that supports 256 colors. - // Windows 10 build 14931 is the first release that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } + return arg; +} - return 1; - } +module.exports.command = escapeCommand; +module.exports.argument = escapeArgument; - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - return min; - } +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } +"use strict"; - if ('GITHUB_ACTIONS' in env) { - return 1; - } - if (env.COLORTERM === 'truecolor') { - return 3; - } +const fs = __webpack_require__(133); +const shebangCommand = __webpack_require__(244); - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); +function readShebang(command) { + // Read the first 150 bytes from the file + const size = 150; + const buffer = Buffer.alloc(size); - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } + let fd; - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } + try { + fd = fs.openSync(command, 'r'); + fs.readSync(fd, buffer, 0, size, 0); + fs.closeSync(fd); + } catch (e) { /* Empty */ } - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } + // Attempt to extract shebang (null is returned if not a shebang) + return shebangCommand(buffer.toString()); +} - if ('COLORTERM' in env) { - return 1; +module.exports = readShebang; + + +/***/ }), +/* 244 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +const shebangRegex = __webpack_require__(245); + +module.exports = (string = '') => { + const match = string.match(shebangRegex); + + if (!match) { + return null; } - return min; -} + const [path, argument] = match[0].replace(/#! ?/, '').split(' '); + const binary = path.split('/').pop(); -function getSupportLevel(stream) { - const level = supportsColor(stream, stream && stream.isTTY); - return translateLevel(level); -} + if (binary === 'env') { + return argument; + } -module.exports = { - supportsColor: getSupportLevel, - stdout: translateLevel(supportsColor(true, tty.isatty(1))), - stderr: translateLevel(supportsColor(true, tty.isatty(2))) + return argument ? `${binary} ${argument}` : binary; }; /***/ }), -/* 233 */ +/* 245 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -module.exports = (flag, argv = process.argv) => { - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const position = argv.indexOf(prefix + flag); - const terminatorPosition = argv.indexOf('--'); - return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); -}; +module.exports = /^#!(.*)/; /***/ }), -/* 234 */ +/* 246 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringReplaceAll = (string, substring, replacer) => { - let index = string.indexOf(substring); - if (index === -1) { - return string; - } +const isWin = process.platform === 'win32'; - const substringLength = substring.length; - let endIndex = 0; - let returnValue = ''; - do { - returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; - endIndex = index + substringLength; - index = string.indexOf(substring, endIndex); - } while (index !== -1); +function notFoundError(original, syscall) { + return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { + code: 'ENOENT', + errno: 'ENOENT', + syscall: `${syscall} ${original.command}`, + path: original.command, + spawnargs: original.args, + }); +} - returnValue += string.substr(endIndex); - return returnValue; -}; +function hookChildProcess(cp, parsed) { + if (!isWin) { + return; + } -const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { - let endIndex = 0; - let returnValue = ''; - do { - const gotCR = string[index - 1] === '\r'; - returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix; - endIndex = index + 1; - index = string.indexOf('\n', endIndex); - } while (index !== -1); + const originalEmit = cp.emit; - returnValue += string.substr(endIndex); - return returnValue; -}; + cp.emit = function (name, arg1) { + // If emitting "exit" event and exit code is 1, we need to check if + // the command exists and emit an "error" instead + // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 + if (name === 'exit') { + const err = verifyENOENT(arg1, parsed, 'spawn'); + + if (err) { + return originalEmit.call(cp, 'error', err); + } + } + + return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params + }; +} + +function verifyENOENT(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawn'); + } + + return null; +} + +function verifyENOENTSync(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawnSync'); + } + + return null; +} module.exports = { - stringReplaceAll, - stringEncaseCRLFWithFirstIndex + hookChildProcess, + verifyENOENT, + verifyENOENTSync, + notFoundError, }; /***/ }), -/* 235 */ +/* 247 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; -const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; -const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; -const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; - -const ESCAPES = new Map([ - ['n', '\n'], - ['r', '\r'], - ['t', '\t'], - ['b', '\b'], - ['f', '\f'], - ['v', '\v'], - ['0', '\0'], - ['\\', '\\'], - ['e', '\u001B'], - ['a', '\u0007'] -]); - -function unescape(c) { - const u = c[0] === 'u'; - const bracket = c[1] === '{'; - if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) { - return String.fromCharCode(parseInt(c.slice(1), 16)); - } +module.exports = input => { + const LF = typeof input === 'string' ? '\n' : '\n'.charCodeAt(); + const CR = typeof input === 'string' ? '\r' : '\r'.charCodeAt(); - if (u && bracket) { - return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); + if (input[input.length - 1] === LF) { + input = input.slice(0, input.length - 1); } - return ESCAPES.get(c) || c; -} - -function parseArguments(name, arguments_) { - const results = []; - const chunks = arguments_.trim().split(/\s*,\s*/g); - let matches; - - for (const chunk of chunks) { - const number = Number(chunk); - if (!Number.isNaN(number)) { - results.push(number); - } else if ((matches = chunk.match(STRING_REGEX))) { - results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character)); - } else { - throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); - } + if (input[input.length - 1] === CR) { + input = input.slice(0, input.length - 1); } - return results; -} - -function parseStyle(style) { - STYLE_REGEX.lastIndex = 0; - - const results = []; - let matches; - - while ((matches = STYLE_REGEX.exec(style)) !== null) { - const name = matches[1]; + return input; +}; - if (matches[2]) { - const args = parseArguments(name, matches[2]); - results.push([name].concat(args)); - } else { - results.push([name]); - } - } - return results; -} +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { -function buildStyle(chalk, styles) { - const enabled = {}; +"use strict"; - for (const layer of styles) { - for (const style of layer.styles) { - enabled[style[0]] = layer.inverse ? null : style.slice(1); - } - } +const path = __webpack_require__(4); +const pathKey = __webpack_require__(241); - let current = chalk; - for (const [styleName, styles] of Object.entries(enabled)) { - if (!Array.isArray(styles)) { - continue; - } +const npmRunPath = options => { + options = { + cwd: process.cwd(), + path: process.env[pathKey()], + execPath: process.execPath, + ...options + }; - if (!(styleName in current)) { - throw new Error(`Unknown Chalk style: ${styleName}`); - } + let previous; + let cwdPath = path.resolve(options.cwd); + const result = []; - current = styles.length > 0 ? current[styleName](...styles) : current[styleName]; + while (previous !== cwdPath) { + result.push(path.join(cwdPath, 'node_modules/.bin')); + previous = cwdPath; + cwdPath = path.resolve(cwdPath, '..'); } - return current; -} + // Ensure the running `node` binary is used + const execPathDir = path.resolve(options.cwd, options.execPath, '..'); + result.push(execPathDir); -module.exports = (chalk, temporary) => { - const styles = []; - const chunks = []; - let chunk = []; + return result.concat(options.path).join(path.delimiter); +}; - // eslint-disable-next-line max-params - temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { - if (escapeCharacter) { - chunk.push(unescape(escapeCharacter)); - } else if (style) { - const string = chunk.join(''); - chunk = []; - chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string)); - styles.push({inverse, styles: parseStyle(style)}); - } else if (close) { - if (styles.length === 0) { - throw new Error('Found extraneous } in Chalk template literal'); - } +module.exports = npmRunPath; +// TODO: Remove this for the next major release +module.exports.default = npmRunPath; - chunks.push(buildStyle(chalk, styles)(chunk.join(''))); - chunk = []; - styles.pop(); - } else { - chunk.push(character); - } - }); +module.exports.env = options => { + options = { + env: process.env, + ...options + }; - chunks.push(chunk.join('')); + const env = {...options.env}; + const path = pathKey({env}); - if (styles.length > 0) { - const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; - throw new Error(errMessage); - } + options.path = env[path]; + env[path] = module.exports(options); - return chunks.join(''); + return env; }; /***/ }), -/* 236 */ +/* 249 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const path = __webpack_require__(4); -const childProcess = __webpack_require__(237); -const crossSpawn = __webpack_require__(238); -const stripFinalNewline = __webpack_require__(251); -const npmRunPath = __webpack_require__(252); -const onetime = __webpack_require__(253); -const makeError = __webpack_require__(255); -const normalizeStdio = __webpack_require__(260); -const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(261); -const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(262); -const {mergePromise, getSpawnedPromise} = __webpack_require__(269); -const {joinCommand, parseCommand} = __webpack_require__(270); - -const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; +const mimicFn = __webpack_require__(250); -const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => { - const env = extendEnv ? {...process.env, ...envOption} : envOption; +const calledFunctions = new WeakMap(); - if (preferLocal) { - return npmRunPath.env({env, cwd: localDir, execPath}); +const oneTime = (fn, options = {}) => { + if (typeof fn !== 'function') { + throw new TypeError('Expected a function'); } - return env; -}; - -const handleArgs = (file, args, options = {}) => { - const parsed = crossSpawn._parse(file, args, options); - file = parsed.command; - args = parsed.args; - options = parsed.options; - - options = { - maxBuffer: DEFAULT_MAX_BUFFER, - buffer: true, - stripFinalNewline: true, - extendEnv: true, - preferLocal: false, - localDir: options.cwd || process.cwd(), - execPath: process.execPath, - encoding: 'utf8', - reject: true, - cleanup: true, - all: false, - windowsHide: true, - ...options - }; + let ret; + let isCalled = false; + let callCount = 0; + const functionName = fn.displayName || fn.name || ''; - options.env = getEnv(options); + const onetime = function (...args) { + calledFunctions.set(onetime, ++callCount); - options.stdio = normalizeStdio(options); + if (isCalled) { + if (options.throw === true) { + throw new Error(`Function \`${functionName}\` can only be called once`); + } - if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') { - // #116 - args.unshift('/q'); - } + return ret; + } - return {file, args, options, parsed}; -}; + isCalled = true; + ret = fn.apply(this, args); + fn = null; -const handleOutput = (options, value, error) => { - if (typeof value !== 'string' && !Buffer.isBuffer(value)) { - // When `execa.sync()` errors, we normalize it to '' to mimic `execa()` - return error === undefined ? undefined : ''; - } + return ret; + }; - if (options.stripFinalNewline) { - return stripFinalNewline(value); - } + mimicFn(onetime, fn); + calledFunctions.set(onetime, callCount); - return value; + return onetime; }; -const execa = (file, args, options) => { - const parsed = handleArgs(file, args, options); - const command = joinCommand(file, args); +module.exports = oneTime; +// TODO: Remove this for the next major release +module.exports.default = oneTime; - let spawned; - try { - spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options); - } catch (error) { - // Ensure the returned error is always both a promise and a child process - const dummySpawned = new childProcess.ChildProcess(); - const errorPromise = Promise.reject(makeError({ - error, - stdout: '', - stderr: '', - all: '', - command, - parsed, - timedOut: false, - isCanceled: false, - killed: false - })); - return mergePromise(dummySpawned, errorPromise); +module.exports.callCount = fn => { + if (!calledFunctions.has(fn)) { + throw new Error(`The given function \`${fn.name}\` is not wrapped by the \`onetime\` package`); } - const spawnedPromise = getSpawnedPromise(spawned); - const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); - const processDone = setExitHandler(spawned, parsed.options, timedPromise); - - const context = {isCanceled: false}; + return calledFunctions.get(fn); +}; - spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); - spawned.cancel = spawnedCancel.bind(null, spawned, context); - const handlePromise = async () => { - const [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); - const stdout = handleOutput(parsed.options, stdoutResult); - const stderr = handleOutput(parsed.options, stderrResult); - const all = handleOutput(parsed.options, allResult); +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { - if (error || exitCode !== 0 || signal !== null) { - const returnedError = makeError({ - error, - exitCode, - signal, - stdout, - stderr, - all, - command, - parsed, - timedOut, - isCanceled: context.isCanceled, - killed: spawned.killed - }); +"use strict"; - if (!parsed.options.reject) { - return returnedError; - } - throw returnedError; - } +const mimicFn = (to, from) => { + for (const prop of Reflect.ownKeys(from)) { + Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); + } - return { - command, - exitCode: 0, - stdout, - stderr, - all, - failed: false, - timedOut: false, - isCanceled: false, - killed: false - }; - }; + return to; +}; - const handlePromiseOnce = onetime(handlePromise); +module.exports = mimicFn; +// TODO: Remove this for the next major release +module.exports.default = mimicFn; - crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); - handleInput(spawned, parsed.options.input); +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { - spawned.all = makeAllStream(spawned, parsed.options); +"use strict"; - return mergePromise(spawned, handlePromiseOnce); -}; +const {signalsByName} = __webpack_require__(252); -module.exports = execa; +const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { + if (timedOut) { + return `timed out after ${timeout} milliseconds`; + } -module.exports.sync = (file, args, options) => { - const parsed = handleArgs(file, args, options); - const command = joinCommand(file, args); + if (isCanceled) { + return 'was canceled'; + } - validateInputSync(parsed.options); + if (errorCode !== undefined) { + return `failed with ${errorCode}`; + } - let result; - try { - result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options); - } catch (error) { - throw makeError({ - error, - stdout: '', - stderr: '', - all: '', - command, - parsed, - timedOut: false, - isCanceled: false, - killed: false - }); + if (signal !== undefined) { + return `was killed with ${signal} (${signalDescription})`; } - const stdout = handleOutput(parsed.options, result.stdout, result.error); - const stderr = handleOutput(parsed.options, result.stderr, result.error); + if (exitCode !== undefined) { + return `failed with exit code ${exitCode}`; + } - if (result.error || result.status !== 0 || result.signal !== null) { - const error = makeError({ - stdout, - stderr, - error: result.error, - signal: result.signal, - exitCode: result.status, - command, - parsed, - timedOut: result.error && result.error.code === 'ETIMEDOUT', - isCanceled: false, - killed: result.signal !== null - }); + return 'failed'; +}; - if (!parsed.options.reject) { - return error; - } +const makeError = ({ + stdout, + stderr, + all, + error, + signal, + exitCode, + command, + timedOut, + isCanceled, + killed, + parsed: {options: {timeout}} +}) => { + // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`. + // We normalize them to `undefined` + exitCode = exitCode === null ? undefined : exitCode; + signal = signal === null ? undefined : signal; + const signalDescription = signal === undefined ? undefined : signalsByName[signal].description; - throw error; - } + const errorCode = error && error.code; - return { - command, - exitCode: 0, - stdout, - stderr, - failed: false, - timedOut: false, - isCanceled: false, - killed: false - }; -}; + const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}); + const execaMessage = `Command ${prefix}: ${command}`; + const isError = Object.prototype.toString.call(error) === '[object Error]'; + const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage; + const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n'); -module.exports.command = (command, options) => { - const [file, ...args] = parseCommand(command); - return execa(file, args, options); -}; + if (isError) { + error.originalMessage = error.message; + error.message = message; + } else { + error = new Error(message); + } -module.exports.commandSync = (command, options) => { - const [file, ...args] = parseCommand(command); - return execa.sync(file, args, options); -}; + error.shortMessage = shortMessage; + error.command = command; + error.exitCode = exitCode; + error.signal = signal; + error.signalDescription = signalDescription; + error.stdout = stdout; + error.stderr = stderr; -module.exports.node = (scriptPath, args, options = {}) => { - if (args && !Array.isArray(args) && typeof args === 'object') { - options = args; - args = []; + if (all !== undefined) { + error.all = all; } - const stdio = normalizeStdio.node(options); + if ('bufferedData' in error) { + delete error.bufferedData; + } - const {nodePath = process.execPath, nodeOptions = process.execArgv} = options; + error.failed = true; + error.timedOut = Boolean(timedOut); + error.isCanceled = isCanceled; + error.killed = killed && !timedOut; - return execa( - nodePath, - [ - ...nodeOptions, - scriptPath, - ...(Array.isArray(args) ? args : []) - ], - { - ...options, - stdin: undefined, - stdout: undefined, - stderr: undefined, - stdio, - shell: false - } - ); + return error; }; +module.exports = makeError; -/***/ }), -/* 237 */ -/***/ (function(module, exports) { - -module.exports = require("child_process"); /***/ }), -/* 238 */ +/* 252 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(120); +var _signals=__webpack_require__(253); +var _realtime=__webpack_require__(255); -const cp = __webpack_require__(237); -const parse = __webpack_require__(239); -const enoent = __webpack_require__(250); -function spawn(command, args, options) { - // Parse the arguments - const parsed = parse(command, args, options); - // Spawn the child process - const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); +const getSignalsByName=function(){ +const signals=(0,_signals.getSignals)(); +return signals.reduce(getSignalByName,{}); +}; - // Hook into child process "exit" event to emit an error if the command - // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - enoent.hookChildProcess(spawned, parsed); +const getSignalByName=function( +signalByNameMemo, +{name,number,description,supported,action,forced,standard}) +{ +return{ +...signalByNameMemo, +[name]:{name,number,description,supported,action,forced,standard}}; - return spawned; -} +}; -function spawnSync(command, args, options) { - // Parse the arguments - const parsed = parse(command, args, options); +const signalsByName=getSignalsByName();exports.signalsByName=signalsByName; - // Spawn the child process - const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); - // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); - return result; -} - -module.exports = spawn; -module.exports.spawn = spawn; -module.exports.sync = spawnSync; - -module.exports._parse = parse; -module.exports._enoent = enoent; +const getSignalsByNumber=function(){ +const signals=(0,_signals.getSignals)(); +const length=_realtime.SIGRTMAX+1; +const signalsA=Array.from({length},(value,number)=> +getSignalByNumber(number,signals)); -/***/ }), -/* 239 */ -/***/ (function(module, exports, __webpack_require__) { +return Object.assign({},...signalsA); +}; -"use strict"; +const getSignalByNumber=function(number,signals){ +const signal=findSignalByNumber(number,signals); +if(signal===undefined){ +return{}; +} -const path = __webpack_require__(4); -const resolveCommand = __webpack_require__(240); -const escape = __webpack_require__(246); -const readShebang = __webpack_require__(247); +const{name,description,supported,action,forced,standard}=signal; +return{ +[number]:{ +name, +number, +description, +supported, +action, +forced, +standard}}; -const isWin = process.platform === 'win32'; -const isExecutableRegExp = /\.(?:com|exe)$/i; -const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; -function detectShebang(parsed) { - parsed.file = resolveCommand(parsed); +}; - const shebang = parsed.file && readShebang(parsed.file); - if (shebang) { - parsed.args.unshift(parsed.file); - parsed.command = shebang; - return resolveCommand(parsed); - } +const findSignalByNumber=function(number,signals){ +const signal=signals.find(({name})=>_os.constants.signals[name]===number); - return parsed.file; +if(signal!==undefined){ +return signal; } -function parseNonShell(parsed) { - if (!isWin) { - return parsed; - } +return signals.find(signalA=>signalA.number===number); +}; - // Detect & add support for shebangs - const commandFile = detectShebang(parsed); +const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber; +//# sourceMappingURL=main.js.map - // We don't need a shell if the command filename is an executable - const needsShell = !isExecutableRegExp.test(commandFile); +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { - // If a shell is required, use cmd.exe and take care of escaping everything correctly - // Note that `forceShell` is an hidden option used only in tests - if (parsed.options.forceShell || needsShell) { - // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` - // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument - // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, - // we need to double escape them - const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); +"use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(120); - // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) - // This is necessary otherwise it will always fail with ENOENT in those cases - parsed.command = path.normalize(parsed.command); +var _core=__webpack_require__(254); +var _realtime=__webpack_require__(255); - // Escape command & arguments - parsed.command = escape.command(parsed.command); - parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); - const shellCommand = [parsed.command].concat(parsed.args).join(' '); - parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; - parsed.command = process.env.comspec || 'cmd.exe'; - parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped - } +const getSignals=function(){ +const realtimeSignals=(0,_realtime.getRealtimeSignals)(); +const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal); +return signals; +};exports.getSignals=getSignals; - return parsed; -} -function parse(command, args, options) { - // Normalize arguments, similar to nodejs - if (args && !Array.isArray(args)) { - options = args; - args = null; - } - args = args ? args.slice(0) : []; // Clone array to avoid changing the original - options = Object.assign({}, options); // Clone object to avoid changing the original - // Build our parsed object - const parsed = { - command, - args, - options, - file: undefined, - original: { - command, - args, - }, - }; - // Delegate further parsing to shell or non-shell - return options.shell ? parsed : parseNonShell(parsed); -} -module.exports = parse; +const normalizeSignal=function({ +name, +number:defaultNumber, +description, +action, +forced=false, +standard}) +{ +const{ +signals:{[name]:constantSignal}}= +_os.constants; +const supported=constantSignal!==undefined; +const number=supported?constantSignal:defaultNumber; +return{name,number,description,supported,action,forced,standard}; +}; +//# sourceMappingURL=signals.js.map /***/ }), -/* 240 */ +/* 254 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.SIGNALS=void 0; +const SIGNALS=[ +{ +name:"SIGHUP", +number:1, +action:"terminate", +description:"Terminal closed", +standard:"posix"}, -const path = __webpack_require__(4); -const which = __webpack_require__(241); -const pathKey = __webpack_require__(245)(); +{ +name:"SIGINT", +number:2, +action:"terminate", +description:"User interruption with CTRL-C", +standard:"ansi"}, -function resolveCommandAttempt(parsed, withoutPathExt) { - const cwd = process.cwd(); - const hasCustomCwd = parsed.options.cwd != null; - // Worker threads do not have process.chdir() - const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined; +{ +name:"SIGQUIT", +number:3, +action:"core", +description:"User interruption with CTRL-\\", +standard:"posix"}, - // If a custom `cwd` was specified, we need to change the process cwd - // because `which` will do stat calls but does not support a custom cwd - if (shouldSwitchCwd) { - try { - process.chdir(parsed.options.cwd); - } catch (err) { - /* Empty */ - } - } +{ +name:"SIGILL", +number:4, +action:"core", +description:"Invalid machine instruction", +standard:"ansi"}, - let resolved; +{ +name:"SIGTRAP", +number:5, +action:"core", +description:"Debugger breakpoint", +standard:"posix"}, - try { - resolved = which.sync(parsed.command, { - path: (parsed.options.env || process.env)[pathKey], - pathExt: withoutPathExt ? path.delimiter : undefined, - }); - } catch (e) { - /* Empty */ - } finally { - if (shouldSwitchCwd) { - process.chdir(cwd); - } - } +{ +name:"SIGABRT", +number:6, +action:"core", +description:"Aborted", +standard:"ansi"}, - // If we successfully resolved, ensure that an absolute path is returned - // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it - if (resolved) { - resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); - } +{ +name:"SIGIOT", +number:6, +action:"core", +description:"Aborted", +standard:"bsd"}, - return resolved; -} +{ +name:"SIGBUS", +number:7, +action:"core", +description: +"Bus error due to misaligned, non-existing address or paging error", +standard:"bsd"}, -function resolveCommand(parsed) { - return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); -} +{ +name:"SIGEMT", +number:7, +action:"terminate", +description:"Command should be emulated but is not implemented", +standard:"other"}, -module.exports = resolveCommand; +{ +name:"SIGFPE", +number:8, +action:"core", +description:"Floating point arithmetic error", +standard:"ansi"}, +{ +name:"SIGKILL", +number:9, +action:"terminate", +description:"Forced termination", +standard:"posix", +forced:true}, -/***/ }), -/* 241 */ -/***/ (function(module, exports, __webpack_require__) { +{ +name:"SIGUSR1", +number:10, +action:"terminate", +description:"Application-specific signal", +standard:"posix"}, -const isWindows = process.platform === 'win32' || - process.env.OSTYPE === 'cygwin' || - process.env.OSTYPE === 'msys' +{ +name:"SIGSEGV", +number:11, +action:"core", +description:"Segmentation fault", +standard:"ansi"}, -const path = __webpack_require__(4) -const COLON = isWindows ? ';' : ':' -const isexe = __webpack_require__(242) +{ +name:"SIGUSR2", +number:12, +action:"terminate", +description:"Application-specific signal", +standard:"posix"}, -const getNotFoundError = (cmd) => - Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) +{ +name:"SIGPIPE", +number:13, +action:"terminate", +description:"Broken pipe or socket", +standard:"posix"}, -const getPathInfo = (cmd, opt) => { - const colon = opt.colon || COLON +{ +name:"SIGALRM", +number:14, +action:"terminate", +description:"Timeout or timer", +standard:"posix"}, - // If it has a slash, then we don't bother searching the pathenv. - // just check the file itself, and that's it. - const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] - : ( - [ - // windows always checks the cwd first - ...(isWindows ? [process.cwd()] : []), - ...(opt.path || process.env.PATH || - /* istanbul ignore next: very unusual */ '').split(colon), - ] - ) - const pathExtExe = isWindows - ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' - : '' - const pathExt = isWindows ? pathExtExe.split(colon) : [''] +{ +name:"SIGTERM", +number:15, +action:"terminate", +description:"Termination", +standard:"ansi"}, - if (isWindows) { - if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') - pathExt.unshift('') - } +{ +name:"SIGSTKFLT", +number:16, +action:"terminate", +description:"Stack is empty or overflowed", +standard:"other"}, - return { - pathEnv, - pathExt, - pathExtExe, - } -} +{ +name:"SIGCHLD", +number:17, +action:"ignore", +description:"Child process terminated, paused or unpaused", +standard:"posix"}, -const which = (cmd, opt, cb) => { - if (typeof opt === 'function') { - cb = opt - opt = {} - } - if (!opt) - opt = {} +{ +name:"SIGCLD", +number:17, +action:"ignore", +description:"Child process terminated, paused or unpaused", +standard:"other"}, - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) - const found = [] +{ +name:"SIGCONT", +number:18, +action:"unpause", +description:"Unpaused", +standard:"posix", +forced:true}, - const step = i => new Promise((resolve, reject) => { - if (i === pathEnv.length) - return opt.all && found.length ? resolve(found) - : reject(getNotFoundError(cmd)) +{ +name:"SIGSTOP", +number:19, +action:"pause", +description:"Paused", +standard:"posix", +forced:true}, - const ppRaw = pathEnv[i] - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw +{ +name:"SIGTSTP", +number:20, +action:"pause", +description:"Paused using CTRL-Z or \"suspend\"", +standard:"posix"}, - const pCmd = path.join(pathPart, cmd) - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd - : pCmd +{ +name:"SIGTTIN", +number:21, +action:"pause", +description:"Background process cannot read terminal input", +standard:"posix"}, - resolve(subStep(p, i, 0)) - }) +{ +name:"SIGBREAK", +number:21, +action:"terminate", +description:"User interruption with CTRL-BREAK", +standard:"other"}, - const subStep = (p, i, ii) => new Promise((resolve, reject) => { - if (ii === pathExt.length) - return resolve(step(i + 1)) - const ext = pathExt[ii] - isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { - if (!er && is) { - if (opt.all) - found.push(p + ext) - else - return resolve(p + ext) - } - return resolve(subStep(p, i, ii + 1)) - }) - }) +{ +name:"SIGTTOU", +number:22, +action:"pause", +description:"Background process cannot write to terminal output", +standard:"posix"}, - return cb ? step(0).then(res => cb(null, res), cb) : step(0) -} +{ +name:"SIGURG", +number:23, +action:"ignore", +description:"Socket received out-of-band data", +standard:"bsd"}, -const whichSync = (cmd, opt) => { - opt = opt || {} +{ +name:"SIGXCPU", +number:24, +action:"core", +description:"Process timed out", +standard:"bsd"}, - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) - const found = [] +{ +name:"SIGXFSZ", +number:25, +action:"core", +description:"File too big", +standard:"bsd"}, - for (let i = 0; i < pathEnv.length; i ++) { - const ppRaw = pathEnv[i] - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw +{ +name:"SIGVTALRM", +number:26, +action:"terminate", +description:"Timeout or timer", +standard:"bsd"}, - const pCmd = path.join(pathPart, cmd) - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd - : pCmd +{ +name:"SIGPROF", +number:27, +action:"terminate", +description:"Timeout or timer", +standard:"bsd"}, - for (let j = 0; j < pathExt.length; j ++) { - const cur = p + pathExt[j] - try { - const is = isexe.sync(cur, { pathExt: pathExtExe }) - if (is) { - if (opt.all) - found.push(cur) - else - return cur - } - } catch (ex) {} - } - } +{ +name:"SIGWINCH", +number:28, +action:"ignore", +description:"Terminal window size changed", +standard:"bsd"}, - if (opt.all && found.length) - return found +{ +name:"SIGIO", +number:29, +action:"terminate", +description:"I/O is available", +standard:"other"}, - if (opt.nothrow) - return null +{ +name:"SIGPOLL", +number:29, +action:"terminate", +description:"Watched event", +standard:"other"}, - throw getNotFoundError(cmd) -} +{ +name:"SIGINFO", +number:29, +action:"ignore", +description:"Request for process information", +standard:"other"}, -module.exports = which -which.sync = whichSync +{ +name:"SIGPWR", +number:30, +action:"terminate", +description:"Device running out of power", +standard:"systemv"}, + +{ +name:"SIGSYS", +number:31, +action:"core", +description:"Invalid system call", +standard:"other"}, +{ +name:"SIGUNUSED", +number:31, +action:"terminate", +description:"Invalid system call", +standard:"other"}];exports.SIGNALS=SIGNALS; +//# sourceMappingURL=core.js.map /***/ }), -/* 242 */ +/* 255 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(133) -var core -if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(243) -} else { - core = __webpack_require__(244) -} - -module.exports = isexe -isexe.sync = sync - -function isexe (path, options, cb) { - if (typeof options === 'function') { - cb = options - options = {} - } - - if (!cb) { - if (typeof Promise !== 'function') { - throw new TypeError('callback not provided') - } - - return new Promise(function (resolve, reject) { - isexe(path, options || {}, function (er, is) { - if (er) { - reject(er) - } else { - resolve(is) - } - }) - }) - } +"use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0; +const getRealtimeSignals=function(){ +const length=SIGRTMAX-SIGRTMIN+1; +return Array.from({length},getRealtimeSignal); +};exports.getRealtimeSignals=getRealtimeSignals; - core(path, options || {}, function (er, is) { - // ignore EACCES because that just means we aren't allowed to run it - if (er) { - if (er.code === 'EACCES' || options && options.ignoreErrors) { - er = null - is = false - } - } - cb(er, is) - }) -} +const getRealtimeSignal=function(value,index){ +return{ +name:`SIGRT${index+1}`, +number:SIGRTMIN+index, +action:"terminate", +description:"Application-specific signal (realtime)", +standard:"posix"}; -function sync (path, options) { - // my kingdom for a filtered catch - try { - return core.sync(path, options || {}) - } catch (er) { - if (options && options.ignoreErrors || er.code === 'EACCES') { - return false - } else { - throw er - } - } -} +}; +const SIGRTMIN=34; +const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; +//# sourceMappingURL=realtime.js.map /***/ }), -/* 243 */ +/* 256 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = isexe -isexe.sync = sync - -var fs = __webpack_require__(133) - -function checkPathExt (path, options) { - var pathext = options.pathExt !== undefined ? - options.pathExt : process.env.PATHEXT - - if (!pathext) { - return true - } - - pathext = pathext.split(';') - if (pathext.indexOf('') !== -1) { - return true - } - for (var i = 0; i < pathext.length; i++) { - var p = pathext[i].toLowerCase() - if (p && path.substr(-p.length).toLowerCase() === p) { - return true - } - } - return false -} +"use strict"; -function checkStat (stat, path, options) { - if (!stat.isSymbolicLink() && !stat.isFile()) { - return false - } - return checkPathExt(path, options) -} +const aliases = ['stdin', 'stdout', 'stderr']; -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, path, options)) - }) -} +const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined); -function sync (path, options) { - return checkStat(fs.statSync(path), path, options) -} +const normalizeStdio = opts => { + if (!opts) { + return; + } + const {stdio} = opts; -/***/ }), -/* 244 */ -/***/ (function(module, exports, __webpack_require__) { + if (stdio === undefined) { + return aliases.map(alias => opts[alias]); + } -module.exports = isexe -isexe.sync = sync + if (hasAlias(opts)) { + throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`); + } -var fs = __webpack_require__(133) + if (typeof stdio === 'string') { + return stdio; + } -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, options)) - }) -} + if (!Array.isArray(stdio)) { + throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); + } -function sync (path, options) { - return checkStat(fs.statSync(path), options) -} + const length = Math.max(stdio.length, aliases.length); + return Array.from({length}, (value, index) => stdio[index]); +}; -function checkStat (stat, options) { - return stat.isFile() && checkMode(stat, options) -} +module.exports = normalizeStdio; -function checkMode (stat, options) { - var mod = stat.mode - var uid = stat.uid - var gid = stat.gid +// `ipc` is pushed unless it is already present +module.exports.node = opts => { + const stdio = normalizeStdio(opts); - var myUid = options.uid !== undefined ? - options.uid : process.getuid && process.getuid() - var myGid = options.gid !== undefined ? - options.gid : process.getgid && process.getgid() + if (stdio === 'ipc') { + return 'ipc'; + } - var u = parseInt('100', 8) - var g = parseInt('010', 8) - var o = parseInt('001', 8) - var ug = u | g + if (stdio === undefined || typeof stdio === 'string') { + return [stdio, stdio, stdio, 'ipc']; + } - var ret = (mod & o) || - (mod & g) && gid === myGid || - (mod & u) && uid === myUid || - (mod & ug) && myUid === 0 + if (stdio.includes('ipc')) { + return stdio; + } - return ret -} + return [...stdio, 'ipc']; +}; /***/ }), -/* 245 */ +/* 257 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +const os = __webpack_require__(120); +const onExit = __webpack_require__(217); -const pathKey = (options = {}) => { - const environment = options.env || process.env; - const platform = options.platform || process.platform; +const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; - if (platform !== 'win32') { - return 'PATH'; +// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior +const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => { + const killResult = kill(signal); + setKillTimeout(kill, signal, options, killResult); + return killResult; +}; + +const setKillTimeout = (kill, signal, options, killResult) => { + if (!shouldForceKill(signal, options, killResult)) { + return; } - return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; -}; + const timeout = getForceKillAfterTimeout(options); + const t = setTimeout(() => { + kill('SIGKILL'); + }, timeout); -module.exports = pathKey; -// TODO: Remove this for the next major release -module.exports.default = pathKey; + // Guarded because there's no `.unref()` when `execa` is used in the renderer + // process in Electron. This cannot be tested since we don't run tests in + // Electron. + // istanbul ignore else + if (t.unref) { + t.unref(); + } +}; +const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => { + return isSigterm(signal) && forceKillAfterTimeout !== false && killResult; +}; -/***/ }), -/* 246 */ -/***/ (function(module, exports, __webpack_require__) { +const isSigterm = signal => { + return signal === os.constants.signals.SIGTERM || + (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM'); +}; -"use strict"; +const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => { + if (forceKillAfterTimeout === true) { + return DEFAULT_FORCE_KILL_TIMEOUT; + } + if (!Number.isInteger(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { + throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); + } -// See http://www.robvanderwoude.com/escapechars.php -const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; + return forceKillAfterTimeout; +}; -function escapeCommand(arg) { - // Escape meta chars - arg = arg.replace(metaCharsRegExp, '^$1'); +// `childProcess.cancel()` +const spawnedCancel = (spawned, context) => { + const killResult = spawned.kill(); - return arg; -} + if (killResult) { + context.isCanceled = true; + } +}; -function escapeArgument(arg, doubleEscapeMetaChars) { - // Convert to string - arg = `${arg}`; +const timeoutKill = (spawned, signal, reject) => { + spawned.kill(signal); + reject(Object.assign(new Error('Timed out'), {timedOut: true, signal})); +}; - // Algorithm below is based on https://qntm.org/cmd +// `timeout` option handling +const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => { + if (timeout === 0 || timeout === undefined) { + return spawnedPromise; + } - // Sequence of backslashes followed by a double quote: - // double up all the backslashes and escape the double quote - arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + if (!Number.isInteger(timeout) || timeout < 0) { + throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); + } - // Sequence of backslashes followed by the end of the string - // (which will become a double quote later): - // double up all the backslashes - arg = arg.replace(/(\\*)$/, '$1$1'); + let timeoutId; + const timeoutPromise = new Promise((resolve, reject) => { + timeoutId = setTimeout(() => { + timeoutKill(spawned, killSignal, reject); + }, timeout); + }); - // All other backslashes occur literally + const safeSpawnedPromise = spawnedPromise.finally(() => { + clearTimeout(timeoutId); + }); - // Quote the whole thing: - arg = `"${arg}"`; + return Promise.race([timeoutPromise, safeSpawnedPromise]); +}; - // Escape meta chars - arg = arg.replace(metaCharsRegExp, '^$1'); +// `cleanup` option handling +const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => { + if (!cleanup || detached) { + return timedPromise; + } - // Double escape meta chars if necessary - if (doubleEscapeMetaChars) { - arg = arg.replace(metaCharsRegExp, '^$1'); - } + const removeExitHandler = onExit(() => { + spawned.kill(); + }); - return arg; -} + return timedPromise.finally(() => { + removeExitHandler(); + }); +}; -module.exports.command = escapeCommand; -module.exports.argument = escapeArgument; +module.exports = { + spawnedKill, + spawnedCancel, + setupTimeout, + setExitHandler +}; /***/ }), -/* 247 */ +/* 258 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +const isStream = __webpack_require__(259); +const getStream = __webpack_require__(260); +const mergeStream = __webpack_require__(264); -const fs = __webpack_require__(133); -const shebangCommand = __webpack_require__(248); - -function readShebang(command) { - // Read the first 150 bytes from the file - const size = 150; - const buffer = Buffer.alloc(size); - - let fd; +// `input` option +const handleInput = (spawned, input) => { + // Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852 + // TODO: Remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0 + if (input === undefined || spawned.stdin === undefined) { + return; + } - try { - fd = fs.openSync(command, 'r'); - fs.readSync(fd, buffer, 0, size, 0); - fs.closeSync(fd); - } catch (e) { /* Empty */ } + if (isStream(input)) { + input.pipe(spawned.stdin); + } else { + spawned.stdin.end(input); + } +}; - // Attempt to extract shebang (null is returned if not a shebang) - return shebangCommand(buffer.toString()); -} +// `all` interleaves `stdout` and `stderr` +const makeAllStream = (spawned, {all}) => { + if (!all || (!spawned.stdout && !spawned.stderr)) { + return; + } -module.exports = readShebang; + const mixed = mergeStream(); + if (spawned.stdout) { + mixed.add(spawned.stdout); + } -/***/ }), -/* 248 */ -/***/ (function(module, exports, __webpack_require__) { + if (spawned.stderr) { + mixed.add(spawned.stderr); + } -"use strict"; + return mixed; +}; -const shebangRegex = __webpack_require__(249); +// On failure, `result.stdout|stderr|all` should contain the currently buffered stream +const getBufferedData = async (stream, streamPromise) => { + if (!stream) { + return; + } -module.exports = (string = '') => { - const match = string.match(shebangRegex); + stream.destroy(); - if (!match) { - return null; + try { + return await streamPromise; + } catch (error) { + return error.bufferedData; } +}; - const [path, argument] = match[0].replace(/#! ?/, '').split(' '); - const binary = path.split('/').pop(); +const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => { + if (!stream || !buffer) { + return; + } - if (binary === 'env') { - return argument; + if (encoding) { + return getStream(stream, {encoding, maxBuffer}); } - return argument ? `${binary} ${argument}` : binary; + return getStream.buffer(stream, {maxBuffer}); }; +// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all) +const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => { + const stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer}); + const stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer}); + const allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2}); -/***/ }), -/* 249 */ -/***/ (function(module, exports, __webpack_require__) { + try { + return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); + } catch (error) { + return Promise.all([ + {error, signal: error.signal, timedOut: error.timedOut}, + getBufferedData(stdout, stdoutPromise), + getBufferedData(stderr, stderrPromise), + getBufferedData(all, allPromise) + ]); + } +}; -"use strict"; +const validateInputSync = ({input}) => { + if (isStream(input)) { + throw new TypeError('The `input` option cannot be a stream in sync mode'); + } +}; + +module.exports = { + handleInput, + makeAllStream, + getSpawnedResult, + validateInputSync +}; -module.exports = /^#!(.*)/; /***/ }), -/* 250 */ +/* 259 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isWin = process.platform === 'win32'; - -function notFoundError(original, syscall) { - return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { - code: 'ENOENT', - errno: 'ENOENT', - syscall: `${syscall} ${original.command}`, - path: original.command, - spawnargs: original.args, - }); -} - -function hookChildProcess(cp, parsed) { - if (!isWin) { - return; - } - - const originalEmit = cp.emit; - - cp.emit = function (name, arg1) { - // If emitting "exit" event and exit code is 1, we need to check if - // the command exists and emit an "error" instead - // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 - if (name === 'exit') { - const err = verifyENOENT(arg1, parsed, 'spawn'); - - if (err) { - return originalEmit.call(cp, 'error', err); - } - } - - return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params - }; -} +const isStream = stream => + stream !== null && + typeof stream === 'object' && + typeof stream.pipe === 'function'; -function verifyENOENT(status, parsed) { - if (isWin && status === 1 && !parsed.file) { - return notFoundError(parsed.original, 'spawn'); - } +isStream.writable = stream => + isStream(stream) && + stream.writable !== false && + typeof stream._write === 'function' && + typeof stream._writableState === 'object'; - return null; -} +isStream.readable = stream => + isStream(stream) && + stream.readable !== false && + typeof stream._read === 'function' && + typeof stream._readableState === 'object'; -function verifyENOENTSync(status, parsed) { - if (isWin && status === 1 && !parsed.file) { - return notFoundError(parsed.original, 'spawnSync'); - } +isStream.duplex = stream => + isStream.writable(stream) && + isStream.readable(stream); - return null; -} +isStream.transform = stream => + isStream.duplex(stream) && + typeof stream._transform === 'function' && + typeof stream._transformState === 'object'; -module.exports = { - hookChildProcess, - verifyENOENT, - verifyENOENTSync, - notFoundError, -}; +module.exports = isStream; /***/ }), -/* 251 */ +/* 260 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +const pump = __webpack_require__(261); +const bufferStream = __webpack_require__(263); -module.exports = input => { - const LF = typeof input === 'string' ? '\n' : '\n'.charCodeAt(); - const CR = typeof input === 'string' ? '\r' : '\r'.charCodeAt(); - - if (input[input.length - 1] === LF) { - input = input.slice(0, input.length - 1); +class MaxBufferError extends Error { + constructor() { + super('maxBuffer exceeded'); + this.name = 'MaxBufferError'; } +} - if (input[input.length - 1] === CR) { - input = input.slice(0, input.length - 1); +async function getStream(inputStream, options) { + if (!inputStream) { + return Promise.reject(new Error('Expected a stream')); } - return input; -}; - - -/***/ }), -/* 252 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__(4); -const pathKey = __webpack_require__(245); - -const npmRunPath = options => { options = { - cwd: process.cwd(), - path: process.env[pathKey()], - execPath: process.execPath, + maxBuffer: Infinity, ...options }; - let previous; - let cwdPath = path.resolve(options.cwd); - const result = []; - - while (previous !== cwdPath) { - result.push(path.join(cwdPath, 'node_modules/.bin')); - previous = cwdPath; - cwdPath = path.resolve(cwdPath, '..'); - } + const {maxBuffer} = options; - // Ensure the running `node` binary is used - const execPathDir = path.resolve(options.cwd, options.execPath, '..'); - result.push(execPathDir); + let stream; + await new Promise((resolve, reject) => { + const rejectPromise = error => { + if (error) { // A null check + error.bufferedData = stream.getBufferedValue(); + } - return result.concat(options.path).join(path.delimiter); -}; + reject(error); + }; -module.exports = npmRunPath; -// TODO: Remove this for the next major release -module.exports.default = npmRunPath; + stream = pump(inputStream, bufferStream(options), error => { + if (error) { + rejectPromise(error); + return; + } -module.exports.env = options => { - options = { - env: process.env, - ...options - }; + resolve(); + }); - const env = {...options.env}; - const path = pathKey({env}); + stream.on('data', () => { + if (stream.getBufferedLength() > maxBuffer) { + rejectPromise(new MaxBufferError()); + } + }); + }); - options.path = env[path]; - env[path] = module.exports(options); + return stream.getBufferedValue(); +} - return env; -}; +module.exports = getStream; +// TODO: Remove this for the next major release +module.exports.default = getStream; +module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'}); +module.exports.array = (stream, options) => getStream(stream, {...options, array: true}); +module.exports.MaxBufferError = MaxBufferError; /***/ }), -/* 253 */ +/* 261 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - -const mimicFn = __webpack_require__(254); - -const calledFunctions = new WeakMap(); - -const oneTime = (fn, options = {}) => { - if (typeof fn !== 'function') { - throw new TypeError('Expected a function'); - } +var once = __webpack_require__(161) +var eos = __webpack_require__(262) +var fs = __webpack_require__(133) // we only need fs to get the ReadStream and WriteStream prototypes - let ret; - let isCalled = false; - let callCount = 0; - const functionName = fn.displayName || fn.name || ''; +var noop = function () {} +var ancient = /^v?\.0/.test(process.version) - const onetime = function (...args) { - calledFunctions.set(onetime, ++callCount); +var isFn = function (fn) { + return typeof fn === 'function' +} - if (isCalled) { - if (options.throw === true) { - throw new Error(`Function \`${functionName}\` can only be called once`); - } +var isFS = function (stream) { + if (!ancient) return false // newer node version do not need to care about fs is a special way + if (!fs) return false // browser + return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) +} - return ret; - } +var isRequest = function (stream) { + return stream.setHeader && isFn(stream.abort) +} - isCalled = true; - ret = fn.apply(this, args); - fn = null; +var destroyer = function (stream, reading, writing, callback) { + callback = once(callback) - return ret; - }; + var closed = false + stream.on('close', function () { + closed = true + }) - mimicFn(onetime, fn); - calledFunctions.set(onetime, callCount); + eos(stream, {readable: reading, writable: writing}, function (err) { + if (err) return callback(err) + closed = true + callback() + }) - return onetime; -}; + var destroyed = false + return function (err) { + if (closed) return + if (destroyed) return + destroyed = true -module.exports = oneTime; -// TODO: Remove this for the next major release -module.exports.default = oneTime; + if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks + if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want -module.exports.callCount = fn => { - if (!calledFunctions.has(fn)) { - throw new Error(`The given function \`${fn.name}\` is not wrapped by the \`onetime\` package`); - } + if (isFn(stream.destroy)) return stream.destroy() - return calledFunctions.get(fn); -}; + callback(err || new Error('stream was destroyed')) + } +} +var call = function (fn) { + fn() +} -/***/ }), -/* 254 */ -/***/ (function(module, exports, __webpack_require__) { +var pipe = function (from, to) { + return from.pipe(to) +} -"use strict"; +var pump = function () { + var streams = Array.prototype.slice.call(arguments) + var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + if (Array.isArray(streams[0])) streams = streams[0] + if (streams.length < 2) throw new Error('pump requires two streams per minimum') -const mimicFn = (to, from) => { - for (const prop of Reflect.ownKeys(from)) { - Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); - } + var error + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1 + var writing = i > 0 + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err + if (err) destroys.forEach(call) + if (reading) return + destroys.forEach(call) + callback(error) + }) + }) - return to; -}; + return streams.reduce(pipe) +} -module.exports = mimicFn; -// TODO: Remove this for the next major release -module.exports.default = mimicFn; +module.exports = pump /***/ }), -/* 255 */ +/* 262 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var once = __webpack_require__(161); -const {signalsByName} = __webpack_require__(256); +var noop = function() {}; -const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { - if (timedOut) { - return `timed out after ${timeout} milliseconds`; - } +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; - if (isCanceled) { - return 'was canceled'; - } +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; - if (errorCode !== undefined) { - return `failed with ${errorCode}`; - } +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; - if (signal !== undefined) { - return `was killed with ${signal} (${signalDescription})`; - } + callback = once(callback || noop); - if (exitCode !== undefined) { - return `failed with exit code ${exitCode}`; - } + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; - return 'failed'; -}; + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; -const makeError = ({ - stdout, - stderr, - all, - error, - signal, - exitCode, - command, - timedOut, - isCanceled, - killed, - parsed: {options: {timeout}} -}) => { - // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`. - // We normalize them to `undefined` - exitCode = exitCode === null ? undefined : exitCode; - signal = signal === null ? undefined : signal; - const signalDescription = signal === undefined ? undefined : signalsByName[signal].description; + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; - const errorCode = error && error.code; + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; - const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}); - const execaMessage = `Command ${prefix}: ${command}`; - const isError = Object.prototype.toString.call(error) === '[object Error]'; - const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage; - const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n'); + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; - if (isError) { - error.originalMessage = error.message; - error.message = message; - } else { - error = new Error(message); - } + var onerror = function(err) { + callback.call(stream, err); + }; - error.shortMessage = shortMessage; - error.command = command; - error.exitCode = exitCode; - error.signal = signal; - error.signalDescription = signalDescription; - error.stdout = stdout; - error.stderr = stderr; + var onclose = function() { + process.nextTick(onclosenexttick); + }; - if (all !== undefined) { - error.all = all; - } + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; - if ('bufferedData' in error) { - delete error.bufferedData; + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); } - error.failed = true; - error.timedOut = Boolean(timedOut); - error.isCanceled = isCanceled; - error.killed = killed && !timedOut; + if (isChildProcess(stream)) stream.on('exit', onexit); - return error; + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; }; -module.exports = makeError; +module.exports = eos; /***/ }), -/* 256 */ +/* 263 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(120); - -var _signals=__webpack_require__(257); -var _realtime=__webpack_require__(259); - - - -const getSignalsByName=function(){ -const signals=(0,_signals.getSignals)(); -return signals.reduce(getSignalByName,{}); -}; - -const getSignalByName=function( -signalByNameMemo, -{name,number,description,supported,action,forced,standard}) -{ -return{ -...signalByNameMemo, -[name]:{name,number,description,supported,action,forced,standard}}; - -}; - -const signalsByName=getSignalsByName();exports.signalsByName=signalsByName; - +const {PassThrough: PassThroughStream} = __webpack_require__(137); +module.exports = options => { + options = {...options}; -const getSignalsByNumber=function(){ -const signals=(0,_signals.getSignals)(); -const length=_realtime.SIGRTMAX+1; -const signalsA=Array.from({length},(value,number)=> -getSignalByNumber(number,signals)); + const {array} = options; + let {encoding} = options; + const isBuffer = encoding === 'buffer'; + let objectMode = false; -return Object.assign({},...signalsA); -}; + if (array) { + objectMode = !(encoding || isBuffer); + } else { + encoding = encoding || 'utf8'; + } -const getSignalByNumber=function(number,signals){ -const signal=findSignalByNumber(number,signals); + if (isBuffer) { + encoding = null; + } -if(signal===undefined){ -return{}; -} + const stream = new PassThroughStream({objectMode}); -const{name,description,supported,action,forced,standard}=signal; -return{ -[number]:{ -name, -number, -description, -supported, -action, -forced, -standard}}; + if (encoding) { + stream.setEncoding(encoding); + } + let length = 0; + const chunks = []; -}; + stream.on('data', chunk => { + chunks.push(chunk); + if (objectMode) { + length = chunks.length; + } else { + length += chunk.length; + } + }); + stream.getBufferedValue = () => { + if (array) { + return chunks; + } -const findSignalByNumber=function(number,signals){ -const signal=signals.find(({name})=>_os.constants.signals[name]===number); + return isBuffer ? Buffer.concat(chunks, length) : chunks.join(''); + }; -if(signal!==undefined){ -return signal; -} + stream.getBufferedLength = () => length; -return signals.find(signalA=>signalA.number===number); + return stream; }; -const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber; -//# sourceMappingURL=main.js.map /***/ }), -/* 257 */ +/* 264 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(120); -var _core=__webpack_require__(258); -var _realtime=__webpack_require__(259); +const { PassThrough } = __webpack_require__(137); + +module.exports = function (/*streams...*/) { + var sources = [] + var output = new PassThrough({objectMode: true}) + + output.setMaxListeners(0) + output.add = add + output.isEmpty = isEmpty -const getSignals=function(){ -const realtimeSignals=(0,_realtime.getRealtimeSignals)(); -const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal); -return signals; -};exports.getSignals=getSignals; + output.on('unpipe', remove) + Array.prototype.slice.call(arguments).forEach(add) + return output + function add (source) { + if (Array.isArray(source)) { + source.forEach(add) + return this + } + sources.push(source); + source.once('end', remove.bind(null, source)) + source.once('error', output.emit.bind(output, 'error')) + source.pipe(output, {end: false}) + return this + } + function isEmpty () { + return sources.length == 0; + } + function remove (source) { + sources = sources.filter(function (it) { return it !== source }) + if (!sources.length && output.readable) { output.end() } + } +} -const normalizeSignal=function({ -name, -number:defaultNumber, -description, -action, -forced=false, -standard}) -{ -const{ -signals:{[name]:constantSignal}}= -_os.constants; -const supported=constantSignal!==undefined; -const number=supported?constantSignal:defaultNumber; -return{name,number,description,supported,action,forced,standard}; -}; -//# sourceMappingURL=signals.js.map /***/ }), -/* 258 */ +/* 265 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.SIGNALS=void 0; -const SIGNALS=[ -{ -name:"SIGHUP", -number:1, -action:"terminate", -description:"Terminal closed", -standard:"posix"}, -{ -name:"SIGINT", -number:2, -action:"terminate", -description:"User interruption with CTRL-C", -standard:"ansi"}, - -{ -name:"SIGQUIT", -number:3, -action:"core", -description:"User interruption with CTRL-\\", -standard:"posix"}, - -{ -name:"SIGILL", -number:4, -action:"core", -description:"Invalid machine instruction", -standard:"ansi"}, - -{ -name:"SIGTRAP", -number:5, -action:"core", -description:"Debugger breakpoint", -standard:"posix"}, - -{ -name:"SIGABRT", -number:6, -action:"core", -description:"Aborted", -standard:"ansi"}, - -{ -name:"SIGIOT", -number:6, -action:"core", -description:"Aborted", -standard:"bsd"}, - -{ -name:"SIGBUS", -number:7, -action:"core", -description: -"Bus error due to misaligned, non-existing address or paging error", -standard:"bsd"}, - -{ -name:"SIGEMT", -number:7, -action:"terminate", -description:"Command should be emulated but is not implemented", -standard:"other"}, - -{ -name:"SIGFPE", -number:8, -action:"core", -description:"Floating point arithmetic error", -standard:"ansi"}, - -{ -name:"SIGKILL", -number:9, -action:"terminate", -description:"Forced termination", -standard:"posix", -forced:true}, - -{ -name:"SIGUSR1", -number:10, -action:"terminate", -description:"Application-specific signal", -standard:"posix"}, - -{ -name:"SIGSEGV", -number:11, -action:"core", -description:"Segmentation fault", -standard:"ansi"}, - -{ -name:"SIGUSR2", -number:12, -action:"terminate", -description:"Application-specific signal", -standard:"posix"}, - -{ -name:"SIGPIPE", -number:13, -action:"terminate", -description:"Broken pipe or socket", -standard:"posix"}, - -{ -name:"SIGALRM", -number:14, -action:"terminate", -description:"Timeout or timer", -standard:"posix"}, - -{ -name:"SIGTERM", -number:15, -action:"terminate", -description:"Termination", -standard:"ansi"}, +const nativePromisePrototype = (async () => {})().constructor.prototype; +const descriptors = ['then', 'catch', 'finally'].map(property => [ + property, + Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) +]); -{ -name:"SIGSTKFLT", -number:16, -action:"terminate", -description:"Stack is empty or overflowed", -standard:"other"}, +// The return value is a mixin of `childProcess` and `Promise` +const mergePromise = (spawned, promise) => { + for (const [property, descriptor] of descriptors) { + // Starting the main `promise` is deferred to avoid consuming streams + const value = typeof promise === 'function' ? + (...args) => Reflect.apply(descriptor.value, promise(), args) : + descriptor.value.bind(promise); -{ -name:"SIGCHLD", -number:17, -action:"ignore", -description:"Child process terminated, paused or unpaused", -standard:"posix"}, + Reflect.defineProperty(spawned, property, {...descriptor, value}); + } -{ -name:"SIGCLD", -number:17, -action:"ignore", -description:"Child process terminated, paused or unpaused", -standard:"other"}, + return spawned; +}; -{ -name:"SIGCONT", -number:18, -action:"unpause", -description:"Unpaused", -standard:"posix", -forced:true}, +// Use promises instead of `child_process` events +const getSpawnedPromise = spawned => { + return new Promise((resolve, reject) => { + spawned.on('exit', (exitCode, signal) => { + resolve({exitCode, signal}); + }); -{ -name:"SIGSTOP", -number:19, -action:"pause", -description:"Paused", -standard:"posix", -forced:true}, + spawned.on('error', error => { + reject(error); + }); -{ -name:"SIGTSTP", -number:20, -action:"pause", -description:"Paused using CTRL-Z or \"suspend\"", -standard:"posix"}, + if (spawned.stdin) { + spawned.stdin.on('error', error => { + reject(error); + }); + } + }); +}; -{ -name:"SIGTTIN", -number:21, -action:"pause", -description:"Background process cannot read terminal input", -standard:"posix"}, +module.exports = { + mergePromise, + getSpawnedPromise +}; -{ -name:"SIGBREAK", -number:21, -action:"terminate", -description:"User interruption with CTRL-BREAK", -standard:"other"}, -{ -name:"SIGTTOU", -number:22, -action:"pause", -description:"Background process cannot write to terminal output", -standard:"posix"}, -{ -name:"SIGURG", -number:23, -action:"ignore", -description:"Socket received out-of-band data", -standard:"bsd"}, +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { -{ -name:"SIGXCPU", -number:24, -action:"core", -description:"Process timed out", -standard:"bsd"}, +"use strict"; -{ -name:"SIGXFSZ", -number:25, -action:"core", -description:"File too big", -standard:"bsd"}, +const SPACES_REGEXP = / +/g; -{ -name:"SIGVTALRM", -number:26, -action:"terminate", -description:"Timeout or timer", -standard:"bsd"}, +const joinCommand = (file, args = []) => { + if (!Array.isArray(args)) { + return file; + } -{ -name:"SIGPROF", -number:27, -action:"terminate", -description:"Timeout or timer", -standard:"bsd"}, + return [file, ...args].join(' '); +}; -{ -name:"SIGWINCH", -number:28, -action:"ignore", -description:"Terminal window size changed", -standard:"bsd"}, +// Allow spaces to be escaped by a backslash if not meant as a delimiter +const handleEscaping = (tokens, token, index) => { + if (index === 0) { + return [token]; + } -{ -name:"SIGIO", -number:29, -action:"terminate", -description:"I/O is available", -standard:"other"}, + const previousToken = tokens[tokens.length - 1]; -{ -name:"SIGPOLL", -number:29, -action:"terminate", -description:"Watched event", -standard:"other"}, + if (previousToken.endsWith('\\')) { + return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; + } -{ -name:"SIGINFO", -number:29, -action:"ignore", -description:"Request for process information", -standard:"other"}, + return [...tokens, token]; +}; -{ -name:"SIGPWR", -number:30, -action:"terminate", -description:"Device running out of power", -standard:"systemv"}, +// Handle `execa.command()` +const parseCommand = command => { + return command + .trim() + .split(SPACES_REGEXP) + .reduce(handleEscaping, []); +}; -{ -name:"SIGSYS", -number:31, -action:"core", -description:"Invalid system call", -standard:"other"}, +module.exports = { + joinCommand, + parseCommand +}; -{ -name:"SIGUNUSED", -number:31, -action:"terminate", -description:"Invalid system call", -standard:"other"}];exports.SIGNALS=SIGNALS; -//# sourceMappingURL=core.js.map /***/ }), -/* 259 */ +/* 267 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0; -const getRealtimeSignals=function(){ -const length=SIGRTMAX-SIGRTMIN+1; -return Array.from({length},getRealtimeSignal); -};exports.getRealtimeSignals=getRealtimeSignals; - -const getRealtimeSignal=function(value,index){ -return{ -name:`SIGRT${index+1}`, -number:SIGRTMIN+index, -action:"terminate", -description:"Application-specific signal (realtime)", -standard:"posix"}; +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 -}; +module.exports = __webpack_require__(268); +module.exports.cli = __webpack_require__(272); -const SIGRTMIN=34; -const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; -//# sourceMappingURL=realtime.js.map /***/ }), -/* 260 */ +/* 268 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 -const aliases = ['stdin', 'stdout', 'stderr']; - -const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined); - -const normalizeStdio = opts => { - if (!opts) { - return; - } - - const {stdio} = opts; - if (stdio === undefined) { - return aliases.map(alias => opts[alias]); - } - if (hasAlias(opts)) { - throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`); - } +var stream = __webpack_require__(137); +var util = __webpack_require__(111); +var fs = __webpack_require__(133); - if (typeof stdio === 'string') { - return stdio; - } +var through = __webpack_require__(269); +var duplexer = __webpack_require__(270); +var StringDecoder = __webpack_require__(271).StringDecoder; - if (!Array.isArray(stdio)) { - throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); - } +module.exports = Logger; - const length = Math.max(stdio.length, aliases.length); - return Array.from({length}, (value, index) => stdio[index]); +Logger.DEFAULTS = { + format: 'text', + tag: '', + mergeMultiline: false, + timeStamp: false, }; -module.exports = normalizeStdio; +var formatters = { + text: textFormatter, + json: jsonFormatter, +} -// `ipc` is pushed unless it is already present -module.exports.node = opts => { - const stdio = normalizeStdio(opts); +function Logger(options) { + var defaults = JSON.parse(JSON.stringify(Logger.DEFAULTS)); + options = util._extend(defaults, options || {}); + var catcher = deLiner(); + var emitter = catcher; + var transforms = [ + objectifier(), + ]; - if (stdio === 'ipc') { - return 'ipc'; - } + if (options.tag) { + transforms.push(staticTagger(options.tag)); + } - if (stdio === undefined || typeof stdio === 'string') { - return [stdio, stdio, stdio, 'ipc']; - } + if (options.mergeMultiline) { + transforms.push(lineMerger()); + } - if (stdio.includes('ipc')) { - return stdio; - } + // TODO + // if (options.pidStamp) { + // transforms.push(pidStamper(options.pid)); + // } - return [...stdio, 'ipc']; -}; + // TODO + // if (options.workerStamp) { + // transforms.push(workerStamper(options.worker)); + // } + transforms.push(formatters[options.format](options)); -/***/ }), -/* 261 */ -/***/ (function(module, exports, __webpack_require__) { + // restore line endings that were removed by line splitting + transforms.push(reLiner()); -"use strict"; + for (var t in transforms) { + emitter = emitter.pipe(transforms[t]); + } -const os = __webpack_require__(120); -const onExit = __webpack_require__(217); + return duplexer(catcher, emitter); +} -const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; +function deLiner() { + var decoder = new StringDecoder('utf8'); + var last = ''; -// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior -const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => { - const killResult = kill(signal); - setKillTimeout(kill, signal, options, killResult); - return killResult; -}; + return new stream.Transform({ + transform(chunk, _enc, callback) { + last += decoder.write(chunk); + var list = last.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g); + last = list.pop(); + for (var i = 0; i < list.length; i++) { + // swallow empty lines + if (list[i]) { + this.push(list[i]); + } + } + callback(); + }, + flush(callback) { + // incomplete UTF8 sequences become UTF8 replacement characters + last += decoder.end(); + if (last) { + this.push(last); + } + callback(); + }, + }); +} -const setKillTimeout = (kill, signal, options, killResult) => { - if (!shouldForceKill(signal, options, killResult)) { - return; - } +function reLiner() { + return through(appendNewline); - const timeout = getForceKillAfterTimeout(options); - const t = setTimeout(() => { - kill('SIGKILL'); - }, timeout); + function appendNewline(line) { + this.emit('data', line + '\n'); + } +} - // Guarded because there's no `.unref()` when `execa` is used in the renderer - // process in Electron. This cannot be tested since we don't run tests in - // Electron. - // istanbul ignore else - if (t.unref) { - t.unref(); - } -}; +function objectifier() { + return through(objectify, null, {autoDestroy: false}); -const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => { - return isSigterm(signal) && forceKillAfterTimeout !== false && killResult; -}; + function objectify(line) { + this.emit('data', { + msg: line, + time: Date.now(), + }); + } +} -const isSigterm = signal => { - return signal === os.constants.signals.SIGTERM || - (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM'); -}; +function staticTagger(tag) { + return through(tagger); -const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => { - if (forceKillAfterTimeout === true) { - return DEFAULT_FORCE_KILL_TIMEOUT; - } + function tagger(logEvent) { + logEvent.tag = tag; + this.emit('data', logEvent); + } +} - if (!Number.isInteger(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { - throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); - } +function textFormatter(options) { + return through(textify); - return forceKillAfterTimeout; -}; - -// `childProcess.cancel()` -const spawnedCancel = (spawned, context) => { - const killResult = spawned.kill(); - - if (killResult) { - context.isCanceled = true; - } -}; - -const timeoutKill = (spawned, signal, reject) => { - spawned.kill(signal); - reject(Object.assign(new Error('Timed out'), {timedOut: true, signal})); -}; - -// `timeout` option handling -const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => { - if (timeout === 0 || timeout === undefined) { - return spawnedPromise; - } + function textify(logEvent) { + var line = util.format('%s%s', textifyTags(logEvent.tag), + logEvent.msg.toString()); + if (options.timeStamp) { + line = util.format('%s %s', new Date(logEvent.time).toISOString(), line); + } + this.emit('data', line.replace(/\n/g, '\\n')); + } - if (!Number.isInteger(timeout) || timeout < 0) { - throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); - } + function textifyTags(tags) { + var str = ''; + if (typeof tags === 'string') { + str = tags + ' '; + } else if (typeof tags === 'object') { + for (var t in tags) { + str += t + ':' + tags[t] + ' '; + } + } + return str; + } +} - let timeoutId; - const timeoutPromise = new Promise((resolve, reject) => { - timeoutId = setTimeout(() => { - timeoutKill(spawned, killSignal, reject); - }, timeout); - }); +function jsonFormatter(options) { + return through(jsonify); - const safeSpawnedPromise = spawnedPromise.finally(() => { - clearTimeout(timeoutId); - }); + function jsonify(logEvent) { + if (options.timeStamp) { + logEvent.time = new Date(logEvent.time).toISOString(); + } else { + delete logEvent.time; + } + logEvent.msg = logEvent.msg.toString(); + this.emit('data', JSON.stringify(logEvent)); + } +} - return Promise.race([timeoutPromise, safeSpawnedPromise]); -}; +function lineMerger(host) { + var previousLine = null; + var flushTimer = null; + var stream = through(lineMergerWrite, lineMergerEnd); + var flush = _flush.bind(stream); -// `cleanup` option handling -const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => { - if (!cleanup || detached) { - return timedPromise; - } + return stream; - const removeExitHandler = onExit(() => { - spawned.kill(); - }); + function lineMergerWrite(line) { + if (/^\s+/.test(line.msg)) { + if (previousLine) { + previousLine.msg += '\n' + line.msg; + } else { + previousLine = line; + } + } else { + flush(); + previousLine = line; + } + // rolling timeout + clearTimeout(flushTimer); + flushTimer = setTimeout(flush.bind(this), 10); + } - return timedPromise.finally(() => { - removeExitHandler(); - }); -}; + function _flush() { + if (previousLine) { + this.emit('data', previousLine); + previousLine = null; + } + } -module.exports = { - spawnedKill, - spawnedCancel, - setupTimeout, - setExitHandler -}; + function lineMergerEnd() { + flush.call(this); + this.emit('end'); + } +} /***/ }), -/* 262 */ +/* 269 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - -const isStream = __webpack_require__(263); -const getStream = __webpack_require__(264); -const mergeStream = __webpack_require__(268); - -// `input` option -const handleInput = (spawned, input) => { - // Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852 - // TODO: Remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0 - if (input === undefined || spawned.stdin === undefined) { - return; - } +var Stream = __webpack_require__(137) - if (isStream(input)) { - input.pipe(spawned.stdin); - } else { - spawned.stdin.end(input); - } -}; +// through +// +// a stream that does nothing but re-emit the input. +// useful for aggregating a series of changing but not ending streams into one stream) -// `all` interleaves `stdout` and `stderr` -const makeAllStream = (spawned, {all}) => { - if (!all || (!spawned.stdout && !spawned.stderr)) { - return; - } +exports = module.exports = through +through.through = through - const mixed = mergeStream(); +//create a readable writable stream. - if (spawned.stdout) { - mixed.add(spawned.stdout); - } +function through (write, end, opts) { + write = write || function (data) { this.queue(data) } + end = end || function () { this.queue(null) } - if (spawned.stderr) { - mixed.add(spawned.stderr); - } + var ended = false, destroyed = false, buffer = [], _ended = false + var stream = new Stream() + stream.readable = stream.writable = true + stream.paused = false - return mixed; -}; +// stream.autoPause = !(opts && opts.autoPause === false) + stream.autoDestroy = !(opts && opts.autoDestroy === false) -// On failure, `result.stdout|stderr|all` should contain the currently buffered stream -const getBufferedData = async (stream, streamPromise) => { - if (!stream) { - return; - } + stream.write = function (data) { + write.call(this, data) + return !stream.paused + } - stream.destroy(); + function drain() { + while(buffer.length && !stream.paused) { + var data = buffer.shift() + if(null === data) + return stream.emit('end') + else + stream.emit('data', data) + } + } - try { - return await streamPromise; - } catch (error) { - return error.bufferedData; - } -}; + stream.queue = stream.push = function (data) { +// console.error(ended) + if(_ended) return stream + if(data === null) _ended = true + buffer.push(data) + drain() + return stream + } -const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => { - if (!stream || !buffer) { - return; - } + //this will be registered as the first 'end' listener + //must call destroy next tick, to make sure we're after any + //stream piped from here. + //this is only a problem if end is not emitted synchronously. + //a nicer way to do this is to make sure this is the last listener for 'end' - if (encoding) { - return getStream(stream, {encoding, maxBuffer}); - } + stream.on('end', function () { + stream.readable = false + if(!stream.writable && stream.autoDestroy) + process.nextTick(function () { + stream.destroy() + }) + }) - return getStream.buffer(stream, {maxBuffer}); -}; + function _end () { + stream.writable = false + end.call(stream) + if(!stream.readable && stream.autoDestroy) + stream.destroy() + } -// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all) -const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => { - const stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer}); - const stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer}); - const allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2}); + stream.end = function (data) { + if(ended) return + ended = true + if(arguments.length) stream.write(data) + _end() // will emit or queue + return stream + } - try { - return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); - } catch (error) { - return Promise.all([ - {error, signal: error.signal, timedOut: error.timedOut}, - getBufferedData(stdout, stdoutPromise), - getBufferedData(stderr, stderrPromise), - getBufferedData(all, allPromise) - ]); - } -}; + stream.destroy = function () { + if(destroyed) return + destroyed = true + ended = true + buffer.length = 0 + stream.writable = stream.readable = false + stream.emit('close') + return stream + } -const validateInputSync = ({input}) => { - if (isStream(input)) { - throw new TypeError('The `input` option cannot be a stream in sync mode'); - } -}; + stream.pause = function () { + if(stream.paused) return + stream.paused = true + return stream + } -module.exports = { - handleInput, - makeAllStream, - getSpawnedResult, - validateInputSync -}; + stream.resume = function () { + if(stream.paused) { + stream.paused = false + stream.emit('resume') + } + drain() + //may have become paused again, + //as drain emits 'data'. + if(!stream.paused) + stream.emit('drain') + return stream + } + return stream +} /***/ }), -/* 263 */ +/* 270 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - +var Stream = __webpack_require__(137) +var writeMethods = ["write", "end", "destroy"] +var readMethods = ["resume", "pause"] +var readEvents = ["data", "close"] +var slice = Array.prototype.slice -const isStream = stream => - stream !== null && - typeof stream === 'object' && - typeof stream.pipe === 'function'; +module.exports = duplex -isStream.writable = stream => - isStream(stream) && - stream.writable !== false && - typeof stream._write === 'function' && - typeof stream._writableState === 'object'; +function forEach (arr, fn) { + if (arr.forEach) { + return arr.forEach(fn) + } -isStream.readable = stream => - isStream(stream) && - stream.readable !== false && - typeof stream._read === 'function' && - typeof stream._readableState === 'object'; + for (var i = 0; i < arr.length; i++) { + fn(arr[i], i) + } +} -isStream.duplex = stream => - isStream.writable(stream) && - isStream.readable(stream); +function duplex(writer, reader) { + var stream = new Stream() + var ended = false -isStream.transform = stream => - isStream.duplex(stream) && - typeof stream._transform === 'function' && - typeof stream._transformState === 'object'; + forEach(writeMethods, proxyWriter) -module.exports = isStream; + forEach(readMethods, proxyReader) + forEach(readEvents, proxyStream) -/***/ }), -/* 264 */ -/***/ (function(module, exports, __webpack_require__) { + reader.on("end", handleEnd) -"use strict"; + writer.on("drain", function() { + stream.emit("drain") + }) -const pump = __webpack_require__(265); -const bufferStream = __webpack_require__(267); + writer.on("error", reemit) + reader.on("error", reemit) -class MaxBufferError extends Error { - constructor() { - super('maxBuffer exceeded'); - this.name = 'MaxBufferError'; - } -} + stream.writable = writer.writable + stream.readable = reader.readable -async function getStream(inputStream, options) { - if (!inputStream) { - return Promise.reject(new Error('Expected a stream')); - } + return stream - options = { - maxBuffer: Infinity, - ...options - }; + function proxyWriter(methodName) { + stream[methodName] = method - const {maxBuffer} = options; + function method() { + return writer[methodName].apply(writer, arguments) + } + } - let stream; - await new Promise((resolve, reject) => { - const rejectPromise = error => { - if (error) { // A null check - error.bufferedData = stream.getBufferedValue(); - } + function proxyReader(methodName) { + stream[methodName] = method - reject(error); - }; + function method() { + stream.emit(methodName) + var func = reader[methodName] + if (func) { + return func.apply(reader, arguments) + } + reader.emit(methodName) + } + } - stream = pump(inputStream, bufferStream(options), error => { - if (error) { - rejectPromise(error); - return; - } + function proxyStream(methodName) { + reader.on(methodName, reemit) - resolve(); - }); + function reemit() { + var args = slice.call(arguments) + args.unshift(methodName) + stream.emit.apply(stream, args) + } + } - stream.on('data', () => { - if (stream.getBufferedLength() > maxBuffer) { - rejectPromise(new MaxBufferError()); - } - }); - }); + function handleEnd() { + if (ended) { + return + } + ended = true + var args = slice.call(arguments) + args.unshift("end") + stream.emit.apply(stream, args) + } - return stream.getBufferedValue(); + function reemit(err) { + stream.emit("error", err) + } } -module.exports = getStream; -// TODO: Remove this for the next major release -module.exports.default = getStream; -module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'}); -module.exports.array = (stream, options) => getStream(stream, {...options, array: true}); -module.exports.MaxBufferError = MaxBufferError; - /***/ }), -/* 265 */ -/***/ (function(module, exports, __webpack_require__) { - -var once = __webpack_require__(161) -var eos = __webpack_require__(266) -var fs = __webpack_require__(133) // we only need fs to get the ReadStream and WriteStream prototypes - -var noop = function () {} -var ancient = /^v?\.0/.test(process.version) - -var isFn = function (fn) { - return typeof fn === 'function' -} +/* 271 */ +/***/ (function(module, exports) { -var isFS = function (stream) { - if (!ancient) return false // newer node version do not need to care about fs is a special way - if (!fs) return false // browser - return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) -} +module.exports = require("string_decoder"); -var isRequest = function (stream) { - return stream.setHeader && isFn(stream.abort) -} +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { -var destroyer = function (stream, reading, writing, callback) { - callback = once(callback) +"use strict"; +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 - var closed = false - stream.on('close', function () { - closed = true - }) - eos(stream, {readable: reading, writable: writing}, function (err) { - if (err) return callback(err) - closed = true - callback() - }) - var destroyed = false - return function (err) { - if (closed) return - if (destroyed) return - destroyed = true +var minimist = __webpack_require__(273); +var path = __webpack_require__(4); - if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks - if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want +var Logger = __webpack_require__(268); +var pkg = __webpack_require__(274); - if (isFn(stream.destroy)) return stream.destroy() +module.exports = cli; - callback(err || new Error('stream was destroyed')) +function cli(args) { + var opts = minimist(args.slice(2)); + var $0 = path.basename(args[1]); + var p = console.log.bind(console); + if (opts.v || opts.version) { + version($0, p); + } else if (opts.h || opts.help) { + usage($0, p); + } else if (args.length < 3) { + process.stdin.pipe(Logger()).pipe(process.stdout); + } else { + process.stdin.pipe(Logger(opts)).pipe(process.stdout); } } -var call = function (fn) { - fn() -} - -var pipe = function (from, to) { - return from.pipe(to) +function version($0, p) { + p('%s v%s', pkg.name, pkg.version); } -var pump = function () { - var streams = Array.prototype.slice.call(arguments) - var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop - - if (Array.isArray(streams[0])) streams = streams[0] - if (streams.length < 2) throw new Error('pump requires two streams per minimum') - - var error - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1 - var writing = i > 0 - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err - if (err) destroys.forEach(call) - if (reading) return - destroys.forEach(call) - callback(error) - }) - }) +function usage($0, p) { + var PADDING = ' '; + var opt, def; + p('Usage: %s [options]', $0); + p(''); + p('%s', pkg.description); + p(''); + p('OPTIONS:'); + for (opt in Logger.DEFAULTS) { + def = Logger.DEFAULTS[opt]; + if (typeof def === 'boolean') + boolOpt(opt, Logger.DEFAULTS[opt]); + else + stdOpt(opt, Logger.DEFAULTS[opt]); + } + p(''); - return streams.reduce(pipe) -} + function boolOpt(name, def) { + name = name + PADDING.slice(0, 20-name.length); + p(' --%s default: %s', name, def); + } -module.exports = pump + function stdOpt(name, def) { + var value = name.toUpperCase() + + PADDING.slice(0, 19 - name.length*2); + p(' --%s %s default: %j', name, value, def); + } +} /***/ }), -/* 266 */ -/***/ (function(module, exports, __webpack_require__) { - -var once = __webpack_require__(161); +/* 273 */ +/***/ (function(module, exports) { -var noop = function() {}; +module.exports = function (args, opts) { + if (!opts) opts = {}; + + var flags = { bools : {}, strings : {}, unknownFn: null }; -var isRequest = function(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -}; + if (typeof opts['unknown'] === 'function') { + flags.unknownFn = opts['unknown']; + } -var isChildProcess = function(stream) { - return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 -}; + if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { + flags.allBools = true; + } else { + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); -var eos = function(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + flags.strings[aliases[key]] = true; + } + }); - callback = once(callback || noop); + var defaults = opts['default'] || {}; + + var argv = { _ : [] }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; - var ws = stream._writableState; - var rs = stream._readableState; - var readable = opts.readable || (opts.readable !== false && stream.readable); - var writable = opts.writable || (opts.writable !== false && stream.writable); - var cancelled = false; + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--')+1); + args = args.slice(0, args.indexOf('--')); + } - var onlegacyfinish = function() { - if (!stream.writable) onfinish(); - }; + function argDefined(key, arg) { + return (flags.allBools && /^--[^=]+$/.test(arg)) || + flags.strings[key] || flags.bools[key] || aliases[key]; + } - var onfinish = function() { - writable = false; - if (!readable) callback.call(stream); - }; + function setArg (key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) return; + } - var onend = function() { - readable = false; - if (!writable) callback.call(stream); - }; + var value = !flags.strings[key] && isNumber(val) + ? Number(val) : val + ; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } - var onexit = function(exitCode) { - callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); - }; + function setKey (obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length-1; i++) { + var key = keys[i]; + if (key === '__proto__') return; + if (o[key] === undefined) o[key] = {}; + if (o[key] === Object.prototype || o[key] === Number.prototype + || o[key] === String.prototype) o[key] = {}; + if (o[key] === Array.prototype) o[key] = []; + o = o[key]; + } - var onerror = function(err) { - callback.call(stream, err); - }; + var key = keys[keys.length - 1]; + if (key === '__proto__') return; + if (o === Object.prototype || o === Number.prototype + || o === String.prototype) o = {}; + if (o === Array.prototype) o = []; + if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } + } + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } - var onclose = function() { - process.nextTick(onclosenexttick); - }; + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + var key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } + else if (/^--no-.+/.test(arg)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } + else if (/^--.+/.test(arg)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, next, arg); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + var next = arg.slice(j+2); + + if (next === '-') { + setArg(letters[j], next, arg) + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split('=')[1], arg); + broken = true; + break; + } + + if (/[A-Za-z]/.test(letters[j]) + && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2), arg); + broken = true; + break; + } + else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + var key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, args[i+1], arg); + i++; + } + else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { + setArg(key, args[i+1] === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } + else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) { + setKey(argv, key.split('.'), defaults[key]); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[key]); + }); + } + }); + + if (opts['--']) { + argv['--'] = new Array(); + notFlags.forEach(function(key) { + argv['--'].push(key); + }); + } + else { + notFlags.forEach(function(key) { + argv._.push(key); + }); + } - var onclosenexttick = function() { - if (cancelled) return; - if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); - if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); - }; + return argv; +}; - var onrequest = function() { - stream.req.on('finish', onfinish); - }; +function hasKey (obj, keys) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + o = (o[key] || {}); + }); - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest(); - else stream.on('request', onrequest); - } else if (writable && !ws) { // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } + var key = keys[keys.length - 1]; + return key in o; +} - if (isChildProcess(stream)) stream.on('exit', onexit); +function isNumber (x) { + if (typeof x === 'number') return true; + if (/^0x[0-9a-f]+$/i.test(x)) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - return function() { - cancelled = true; - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('exit', onexit); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -}; -module.exports = eos; +/***/ }), +/* 274 */ +/***/ (function(module) { +module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); /***/ }), -/* 267 */ -/***/ (function(module, exports, __webpack_require__) { +/* 275 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "workspacePackagePaths", function() { return workspacePackagePaths; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyWorkspacePackages", function() { return copyWorkspacePackages; }); +/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(146); +/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glob__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(276); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(164); +/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(145); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -const {PassThrough: PassThroughStream} = __webpack_require__(137); -module.exports = options => { - options = {...options}; - const {array} = options; - let {encoding} = options; - const isBuffer = encoding === 'buffer'; - let objectMode = false; - if (array) { - objectMode = !(encoding || isBuffer); - } else { - encoding = encoding || 'utf8'; - } - if (isBuffer) { - encoding = null; - } - const stream = new PassThroughStream({objectMode}); - if (encoding) { - stream.setEncoding(encoding); - } +const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a); +async function workspacePackagePaths(rootPath) { + const rootPkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(rootPath); - let length = 0; - const chunks = []; + if (!rootPkgJson.workspaces) { + return []; + } - stream.on('data', chunk => { - chunks.push(chunk); + const workspacesPathsPatterns = rootPkgJson.workspaces.packages; + let workspaceProjectsPaths = []; - if (objectMode) { - length = chunks.length; - } else { - length += chunk.length; - } - }); + for (const pattern of workspacesPathsPatterns) { + workspaceProjectsPaths = workspaceProjectsPaths.concat(await packagesFromGlobPattern({ + pattern, + rootPath + })); + } // Filter out exclude glob patterns - stream.getBufferedValue = () => { - if (array) { - return chunks; - } - return isBuffer ? Buffer.concat(chunks, length) : chunks.join(''); - }; + for (const pattern of workspacesPathsPatterns) { + if (pattern.startsWith('!')) { + const pathToRemove = path__WEBPACK_IMPORTED_MODULE_1___default.a.join(rootPath, pattern.slice(1), 'package.json'); + workspaceProjectsPaths = workspaceProjectsPaths.filter(p => p !== pathToRemove); + } + } - stream.getBufferedLength = () => length; + return workspaceProjectsPaths; +} +async function copyWorkspacePackages(rootPath) { + const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__["getProjectPaths"])({ + rootPath + }); + const projects = await Object(_projects__WEBPACK_IMPORTED_MODULE_6__["getProjects"])(rootPath, projectPaths); - return stream; -}; + for (const project of projects.values()) { + const dest = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(rootPath, 'node_modules', project.name); + if ((await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["isSymlink"])(dest)) === false) { + continue; + } // Remove the symlink -/***/ }), -/* 268 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; + await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["unlink"])(dest); // Copy in the package + await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["copyDirectory"])(project.path, dest); + } +} -const { PassThrough } = __webpack_require__(137); +function packagesFromGlobPattern({ + pattern, + rootPath +}) { + const globOptions = { + cwd: rootPath, + // Should throw in case of unusual errors when reading the file system + strict: true, + // Always returns absolute paths for matched files + absolute: true, + // Do not match ** against multiple filenames + // (This is only specified because we currently don't have a need for it.) + noglobstar: true + }; + return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions); +} -module.exports = function (/*streams...*/) { - var sources = [] - var output = new PassThrough({objectMode: true}) +/***/ }), +/* 276 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - output.setMaxListeners(0) +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return getProjectPaths; }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ - output.add = add - output.isEmpty = isEmpty - output.on('unpipe', remove) - - Array.prototype.slice.call(arguments).forEach(add) - - return output +/** + * Returns all the paths where plugins are located + */ +function getProjectPaths({ + rootPath, + ossOnly, + skipKibanaPlugins +}) { + const projectPaths = [rootPath, Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'packages/*')]; // This is needed in order to install the dependencies for the declared + // plugin functional used in the selenium functional tests. + // As we are now using the webpack dll for the client vendors dependencies + // when we run the plugin functional tests against the distributable + // dependencies used by such plugins like @eui, react and react-dom can't + // be loaded from the dll as the context is different from the one declared + // into the webpack dll reference plugin. + // In anyway, have a plugin declaring their own dependencies is the + // correct and the expect behavior. - function add (source) { - if (Array.isArray(source)) { - source.forEach(add) - return this - } + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'test/plugin_functional/plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'test/interpreter_functional/plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'examples/*')); - sources.push(source); - source.once('end', remove.bind(null, source)) - source.once('error', output.emit.bind(output, 'error')) - source.pipe(output, {end: false}) - return this + if (!ossOnly) { + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/legacy/plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/test/functional_with_es_ssl/fixtures/plugins/*')); } - function isEmpty () { - return sources.length == 0; + if (!skipKibanaPlugins) { + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/packages/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*/packages/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*/plugins/*')); } - function remove (source) { - sources = sources.filter(function (it) { return it !== source }) - if (!sources.length && output.readable) { output.end() } - } + return projectPaths; } - /***/ }), -/* 269 */ -/***/ (function(module, exports, __webpack_require__) { +/* 277 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllChecksums", function() { return getAllChecksums; }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(278); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(232); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(279); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -const nativePromisePrototype = (async () => {})().constructor.prototype; -const descriptors = ['then', 'catch', 'finally'].map(property => [ - property, - Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) -]); -// The return value is a mixin of `childProcess` and `Promise` -const mergePromise = (spawned, promise) => { - for (const [property, descriptor] of descriptors) { - // Starting the main `promise` is deferred to avoid consuming streams - const value = typeof promise === 'function' ? - (...args) => Reflect.apply(descriptor.value, promise(), args) : - descriptor.value.bind(promise); - Reflect.defineProperty(spawned, property, {...descriptor, value}); - } - return spawned; -}; +const statAsync = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_0___default.a.stat); -// Use promises instead of `child_process` events -const getSpawnedPromise = spawned => { - return new Promise((resolve, reject) => { - spawned.on('exit', (exitCode, signal) => { - resolve({exitCode, signal}); - }); +const projectBySpecificitySorter = (a, b) => b.path.length - a.path.length; +/** Get the changed files for a set of projects */ - spawned.on('error', error => { - reject(error); - }); - if (spawned.stdin) { - spawned.stdin.on('error', error => { - reject(error); - }); - } - }); -}; +async function getChangesForProjects(projects, kbn, log) { + log.verbose('getting changed files'); + const { + stdout + } = await execa__WEBPACK_IMPORTED_MODULE_3___default()('git', ['ls-files', '-dmto', '--exclude-standard', '--', ...Array.from(projects.values()).filter(p => kbn.isPartOfRepo(p)).map(p => p.path)], { + cwd: kbn.getAbsolute() + }); + const output = stdout.trim(); + const unassignedChanges = new Map(); -module.exports = { - mergePromise, - getSpawnedPromise -}; + if (output) { + for (const line of output.split('\n')) { + const [tag, ...pathParts] = line.trim().split(' '); + const path = pathParts.join(' '); + switch (tag) { + case 'M': + case 'C': + // for some reason ls-files returns deleted files as both deleted + // and modified, so make sure not to overwrite changes already + // tracked as "deleted" + if (unassignedChanges.get(path) !== 'deleted') { + unassignedChanges.set(path, 'modified'); + } + break; -/***/ }), -/* 270 */ -/***/ (function(module, exports, __webpack_require__) { + case 'R': + unassignedChanges.set(path, 'deleted'); + break; -"use strict"; + case '?': + unassignedChanges.set(path, 'untracked'); + break; -const SPACES_REGEXP = / +/g; + case 'H': + case 'S': + case 'K': + default: + log.warning(`unexpected modification status "${tag}" for ${path}, please report this!`); + unassignedChanges.set(path, 'invalid'); + break; + } + } + } -const joinCommand = (file, args = []) => { - if (!Array.isArray(args)) { - return file; - } + const sortedRelevantProjects = Array.from(projects.values()).sort(projectBySpecificitySorter); + const changesByProject = new Map(); - return [file, ...args].join(' '); -}; + for (const project of sortedRelevantProjects) { + if (kbn.isOutsideRepo(project)) { + changesByProject.set(project, undefined); + continue; + } -// Allow spaces to be escaped by a backslash if not meant as a delimiter -const handleEscaping = (tokens, token, index) => { - if (index === 0) { - return [token]; - } + const ownChanges = new Map(); + const prefix = kbn.getRelative(project.path); - const previousToken = tokens[tokens.length - 1]; + for (const [path, type] of unassignedChanges) { + if (path.startsWith(prefix)) { + ownChanges.set(path, type); + unassignedChanges.delete(path); + } + } - if (previousToken.endsWith('\\')) { - return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; - } + log.verbose(`[${project.name}] found ${ownChanges.size} changes`); + changesByProject.set(project, ownChanges); + } - return [...tokens, token]; -}; + if (unassignedChanges.size) { + throw new Error(`unable to assign all change paths to a project: ${JSON.stringify(Array.from(unassignedChanges.entries()))}`); + } -// Handle `execa.command()` -const parseCommand = command => { - return command - .trim() - .split(SPACES_REGEXP) - .reduce(handleEscaping, []); -}; + return changesByProject; +} +/** Get the latest commit sha for a project */ -module.exports = { - joinCommand, - parseCommand -}; +async function getLatestSha(project, kbn) { + if (kbn.isOutsideRepo(project)) { + return; + } -/***/ }), -/* 271 */ -/***/ (function(module, exports, __webpack_require__) { + const { + stdout + } = await execa__WEBPACK_IMPORTED_MODULE_3___default()('git', ['log', '-n', '1', '--pretty=format:%H', '--', project.path], { + cwd: kbn.getAbsolute() + }); + return stdout.trim() || undefined; +} +/** + * Get the checksum for a specific project in the workspace + */ -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 -module.exports = __webpack_require__(272); -module.exports.cli = __webpack_require__(276); +async function getChecksum(project, changes, yarnLock, kbn, log) { + const sha = await getLatestSha(project, kbn); + if (sha) { + log.verbose(`[${project.name}] local sha:`, sha); + } -/***/ }), -/* 272 */ -/***/ (function(module, exports, __webpack_require__) { + if (!changes || Array.from(changes.values()).includes('invalid')) { + log.warning(`[${project.name}] unable to determine local changes, caching disabled`); + return; + } -"use strict"; -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 + const changesSummary = await Promise.all(Array.from(changes).sort((a, b) => a[0].localeCompare(b[0])).map(async ([path, type]) => { + if (type === 'deleted') { + return `${path}:deleted`; + } + const stats = await statAsync(kbn.getAbsolute(path)); + log.verbose(`[${project.name}] modified time ${stats.mtimeMs} for ${path}`); + return `${path}:${stats.mtimeMs}`; + })); + const depMap = Object(_yarn_lock__WEBPACK_IMPORTED_MODULE_4__["resolveDepsForProject"])({ + project, + yarnLock, + kbn, + log, + includeDependentProject: false, + productionDepsOnly: false + }); + if (!depMap) { + return; + } -var stream = __webpack_require__(137); -var util = __webpack_require__(111); -var fs = __webpack_require__(133); + const deps = Array.from(depMap.values()).map(({ + name, + version + }) => `${name}@${version}`).sort((a, b) => a.localeCompare(b)); + log.verbose(`[${project.name}] resolved %d deps`, deps.length); + const checksum = JSON.stringify({ + sha, + changes: changesSummary, + deps + }, null, 2); -var through = __webpack_require__(273); -var duplexer = __webpack_require__(274); -var StringDecoder = __webpack_require__(275).StringDecoder; + if (process.env.BOOTSTRAP_CACHE_DEBUG_CHECKSUM) { + return checksum; + } -module.exports = Logger; + const hash = crypto__WEBPACK_IMPORTED_MODULE_1___default.a.createHash('sha1'); + hash.update(checksum); + return hash.digest('hex'); +} +/** + * Calculate checksums for all projects in the workspace based on + * - last git commit to project directory + * - un-committed changes + * - resolved dependencies from yarn.lock referenced by project package.json + */ -Logger.DEFAULTS = { - format: 'text', - tag: '', - mergeMultiline: false, - timeStamp: false, -}; -var formatters = { - text: textFormatter, - json: jsonFormatter, +async function getAllChecksums(kbn, log, yarnLock) { + const projects = kbn.getAllProjects(); + const changesByProject = await getChangesForProjects(projects, kbn, log); + /** map of [project.name, cacheKey] */ + + const cacheKeys = new Map(); + await Promise.all(Array.from(projects.values()).map(async project => { + cacheKeys.set(project.name, await getChecksum(project, changesByProject.get(project), yarnLock, kbn, log)); + })); + return cacheKeys; } -function Logger(options) { - var defaults = JSON.parse(JSON.stringify(Logger.DEFAULTS)); - options = util._extend(defaults, options || {}); - var catcher = deLiner(); - var emitter = catcher; - var transforms = [ - objectifier(), - ]; +/***/ }), +/* 278 */ +/***/ (function(module, exports) { - if (options.tag) { - transforms.push(staticTagger(options.tag)); - } +module.exports = require("crypto"); - if (options.mergeMultiline) { - transforms.push(lineMerger()); - } +/***/ }), +/* 279 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // TODO - // if (options.pidStamp) { - // transforms.push(pidStamper(options.pid)); - // } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; }); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(280); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// @ts-expect-error published types are worthless - // TODO - // if (options.workerStamp) { - // transforms.push(workerStamper(options.worker)); - // } - transforms.push(formatters[options.format](options)); +async function readYarnLock(kbn) { + try { + const contents = await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_1__["readFile"])(kbn.getAbsolute('yarn.lock'), 'utf8'); + const yarnLock = Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["parse"])(contents); - // restore line endings that were removed by line splitting - transforms.push(reLiner()); + if (yarnLock.type === 'success') { + return yarnLock.object; + } - for (var t in transforms) { - emitter = emitter.pipe(transforms[t]); + throw new Error('unable to read yarn.lock file, please run `yarn kbn bootstrap`'); + } catch (error) { + if (error.code !== 'ENOENT') { + throw error; + } } - return duplexer(catcher, emitter); + return {}; } +/** + * Get a list of the absolute dependencies of this project, as resolved + * in the yarn.lock file, does not include other projects in the workspace + * or their dependencies + */ -function deLiner() { - var decoder = new StringDecoder('utf8'); - var last = ''; +function resolveDepsForProject({ + project: rootProject, + yarnLock, + kbn, + log, + productionDepsOnly, + includeDependentProject +}) { + /** map of [name@range, { name, version }] */ + const resolved = new Map(); + const seenProjects = new Set(); + const projectQueue = [rootProject]; + const depQueue = []; - return new stream.Transform({ - transform(chunk, _enc, callback) { - last += decoder.write(chunk); - var list = last.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g); - last = list.pop(); - for (var i = 0; i < list.length; i++) { - // swallow empty lines - if (list[i]) { - this.push(list[i]); - } - } - callback(); - }, - flush(callback) { - // incomplete UTF8 sequences become UTF8 replacement characters - last += decoder.end(); - if (last) { - this.push(last); - } - callback(); - }, - }); -} + while (projectQueue.length) { + const project = projectQueue.shift(); -function reLiner() { - return through(appendNewline); + if (seenProjects.has(project)) { + continue; + } - function appendNewline(line) { - this.emit('data', line + '\n'); - } -} + seenProjects.add(project); + const projectDeps = Object.entries(productionDepsOnly ? project.productionDependencies : project.allDependencies); -function objectifier() { - return through(objectify, null, {autoDestroy: false}); + for (const [name, versionRange] of projectDeps) { + depQueue.push([name, versionRange]); + } - function objectify(line) { - this.emit('data', { - msg: line, - time: Date.now(), - }); - } -} + while (depQueue.length) { + const [name, versionRange] = depQueue.shift(); + const req = `${name}@${versionRange}`; -function staticTagger(tag) { - return through(tagger); + if (resolved.has(req)) { + continue; + } - function tagger(logEvent) { - logEvent.tag = tag; - this.emit('data', logEvent); - } -} + if (includeDependentProject && kbn.hasProject(name)) { + projectQueue.push(kbn.getProject(name)); + } -function textFormatter(options) { - return through(textify); + if (!kbn.hasProject(name)) { + const pkg = yarnLock[req]; - function textify(logEvent) { - var line = util.format('%s%s', textifyTags(logEvent.tag), - logEvent.msg.toString()); - if (options.timeStamp) { - line = util.format('%s %s', new Date(logEvent.time).toISOString(), line); - } - this.emit('data', line.replace(/\n/g, '\\n')); - } + if (!pkg) { + log.warning('yarn.lock file is out of date, please run `yarn kbn bootstrap` to re-enable caching'); + return; + } - function textifyTags(tags) { - var str = ''; - if (typeof tags === 'string') { - str = tags + ' '; - } else if (typeof tags === 'object') { - for (var t in tags) { - str += t + ':' + tags[t] + ' '; + resolved.set(req, { + name, + version: pkg.version + }); + const allDepsEntries = [...Object.entries(pkg.dependencies || {}), ...Object.entries(pkg.optionalDependencies || {})]; + + for (const [childName, childVersionRange] of allDepsEntries) { + depQueue.push([childName, childVersionRange]); + } } } - return str; } -} - -function jsonFormatter(options) { - return through(jsonify); - function jsonify(logEvent) { - if (options.timeStamp) { - logEvent.time = new Date(logEvent.time).toISOString(); - } else { - delete logEvent.time; - } - logEvent.msg = logEvent.msg.toString(); - this.emit('data', JSON.stringify(logEvent)); - } + return resolved; } -function lineMerger(host) { - var previousLine = null; - var flushTimer = null; - var stream = through(lineMergerWrite, lineMergerEnd); - var flush = _flush.bind(stream); - - return stream; - - function lineMergerWrite(line) { - if (/^\s+/.test(line.msg)) { - if (previousLine) { - previousLine.msg += '\n' + line.msg; - } else { - previousLine = line; - } - } else { - flush(); - previousLine = line; - } - // rolling timeout - clearTimeout(flushTimer); - flushTimer = setTimeout(flush.bind(this), 10); - } - - function _flush() { - if (previousLine) { - this.emit('data', previousLine); - previousLine = null; - } - } +/***/ }), +/* 280 */ +/***/ (function(module, exports, __webpack_require__) { - function lineMergerEnd() { - flush.call(this); - this.emit('end'); - } -} +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 14); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { +module.exports = __webpack_require__(4); /***/ }), -/* 273 */ +/* 1 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(137) +"use strict"; -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) -exports = module.exports = through -through.through = through +exports.__esModule = true; -//create a readable writable stream. +var _promise = __webpack_require__(173); -function through (write, end, opts) { - write = write || function (data) { this.queue(data) } - end = end || function () { this.queue(null) } +var _promise2 = _interopRequireDefault(_promise); - var ended = false, destroyed = false, buffer = [], _ended = false - var stream = new Stream() - stream.readable = stream.writable = true - stream.paused = false +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// stream.autoPause = !(opts && opts.autoPause === false) - stream.autoDestroy = !(opts && opts.autoDestroy === false) +exports.default = function (fn) { + return function () { + var gen = fn.apply(this, arguments); + return new _promise2.default(function (resolve, reject) { + function step(key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } + if (info.done) { + resolve(value); + } else { + return _promise2.default.resolve(value).then(function (value) { + step("next", value); + }, function (err) { + step("throw", err); + }); + } + } - function drain() { - while(buffer.length && !stream.paused) { - var data = buffer.shift() - if(null === data) - return stream.emit('end') - else - stream.emit('data', data) - } - } + return step("next"); + }); + }; +}; - stream.queue = stream.push = function (data) { -// console.error(ended) - if(_ended) return stream - if(data === null) _ended = true - buffer.push(data) - drain() - return stream - } +/***/ }), +/* 2 */ +/***/ (function(module, exports) { - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - //this is only a problem if end is not emitted synchronously. - //a nicer way to do this is to make sure this is the last listener for 'end' +module.exports = __webpack_require__(111); - stream.on('end', function () { - stream.readable = false - if(!stream.writable && stream.autoDestroy) - process.nextTick(function () { - stream.destroy() - }) - }) +/***/ }), +/* 3 */ +/***/ (function(module, exports) { - function _end () { - stream.writable = false - end.call(stream) - if(!stream.readable && stream.autoDestroy) - stream.destroy() - } +module.exports = __webpack_require__(133); - stream.end = function (data) { - if(ended) return - ended = true - if(arguments.length) stream.write(data) - _end() // will emit or queue - return stream - } +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - buffer.length = 0 - stream.writable = stream.readable = false - stream.emit('close') - return stream - } +"use strict"; - stream.pause = function () { - if(stream.paused) return - stream.paused = true - return stream - } - stream.resume = function () { - if(stream.paused) { - stream.paused = false - stream.emit('resume') - } - drain() - //may have become paused again, - //as drain emits 'data'. - if(!stream.paused) - stream.emit('drain') - return stream +Object.defineProperty(exports, "__esModule", { + value: true +}); +class MessageError extends Error { + constructor(msg, code) { + super(msg); + this.code = code; } - return stream -} +} +exports.MessageError = MessageError; +class ProcessSpawnError extends MessageError { + constructor(msg, code, process) { + super(msg, code); + this.process = process; + } -/***/ }), -/* 274 */ -/***/ (function(module, exports, __webpack_require__) { +} -var Stream = __webpack_require__(137) -var writeMethods = ["write", "end", "destroy"] -var readMethods = ["resume", "pause"] -var readEvents = ["data", "close"] -var slice = Array.prototype.slice +exports.ProcessSpawnError = ProcessSpawnError; +class SecurityError extends MessageError {} -module.exports = duplex +exports.SecurityError = SecurityError; +class ProcessTermError extends MessageError {} -function forEach (arr, fn) { - if (arr.forEach) { - return arr.forEach(fn) - } +exports.ProcessTermError = ProcessTermError; +class ResponseError extends Error { + constructor(msg, responseCode) { + super(msg); + this.responseCode = responseCode; + } - for (var i = 0; i < arr.length; i++) { - fn(arr[i], i) - } } +exports.ResponseError = ResponseError; -function duplex(writer, reader) { - var stream = new Stream() - var ended = false - - forEach(writeMethods, proxyWriter) +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { - forEach(readMethods, proxyReader) +"use strict"; - forEach(readEvents, proxyStream) - reader.on("end", handleEnd) +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; - writer.on("drain", function() { - stream.emit("drain") - }) +var _asyncToGenerator2; - writer.on("error", reemit) - reader.on("error", reemit) +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); +} - stream.writable = writer.writable - stream.readable = reader.readable +let buildActionsForCopy = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - return stream + // + let build = (() => { + var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + const src = data.src, + dest = data.dest, + type = data.type; - function proxyWriter(methodName) { - stream[methodName] = method + const onFresh = data.onFresh || noop; + const onDone = data.onDone || noop; - function method() { - return writer[methodName].apply(writer, arguments) + // TODO https://github.com/yarnpkg/yarn/issues/3751 + // related to bundled dependencies handling + if (files.has(dest.toLowerCase())) { + reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); + } else { + files.add(dest.toLowerCase()); } - } - function proxyReader(methodName) { - stream[methodName] = method + if (type === 'symlink') { + yield mkdirp((_path || _load_path()).default.dirname(dest)); + onFresh(); + actions.symlink.push({ + dest, + linkname: src + }); + onDone(); + return; + } - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) + if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { + // ignored file + return; } - } - function proxyStream(methodName) { - reader.on(methodName, reemit) + const srcStat = yield lstat(src); + let srcFiles; - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) + if (srcStat.isDirectory()) { + srcFiles = yield readdir(src); } - } - function handleEnd() { - if (ended) { - return + let destStat; + try { + // try accessing the destination + destStat = yield lstat(dest); + } catch (e) { + // proceed if destination doesn't exist, otherwise error + if (e.code !== 'ENOENT') { + throw e; + } } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } - function reemit(err) { - stream.emit("error", err) - } -} + // if destination exists + if (destStat) { + const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); + const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); + const bothFiles = srcStat.isFile() && destStat.isFile(); + // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving + // us modes that aren't valid. investigate this, it's generally safe to proceed. -/***/ }), -/* 275 */ -/***/ (function(module, exports) { + /* if (srcStat.mode !== destStat.mode) { + try { + await access(dest, srcStat.mode); + } catch (err) {} + } */ -module.exports = require("string_decoder"); + if (bothFiles && artifactFiles.has(dest)) { + // this file gets changed during build, likely by a custom install script. Don't bother checking it. + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); + return; + } -/***/ }), -/* 276 */ -/***/ (function(module, exports, __webpack_require__) { + if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { + // we can safely assume this is the same file + onDone(); + reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); + return; + } -"use strict"; -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 + if (bothSymlinks) { + const srcReallink = yield readlink(src); + if (srcReallink === (yield readlink(dest))) { + // if both symlinks are the same then we can continue on + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); + return; + } + } + if (bothFolders) { + // mark files that aren't in this folder as possibly extraneous + const destFiles = yield readdir(dest); + invariant(srcFiles, 'src files not initialised'); + for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; -var minimist = __webpack_require__(277); -var path = __webpack_require__(4); + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } -var Logger = __webpack_require__(272); -var pkg = __webpack_require__(278); + const file = _ref6; -module.exports = cli; + if (srcFiles.indexOf(file) < 0) { + const loc = (_path || _load_path()).default.join(dest, file); + possibleExtraneous.add(loc); -function cli(args) { - var opts = minimist(args.slice(2)); - var $0 = path.basename(args[1]); - var p = console.log.bind(console); - if (opts.v || opts.version) { - version($0, p); - } else if (opts.h || opts.help) { - usage($0, p); - } else if (args.length < 3) { - process.stdin.pipe(Logger()).pipe(process.stdout); - } else { - process.stdin.pipe(Logger(opts)).pipe(process.stdout); - } -} + if ((yield lstat(loc)).isDirectory()) { + for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref7; -function version($0, p) { - p('%s v%s', pkg.name, pkg.version); -} + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref7 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref7 = _i5.value; + } -function usage($0, p) { - var PADDING = ' '; - var opt, def; - p('Usage: %s [options]', $0); - p(''); - p('%s', pkg.description); - p(''); - p('OPTIONS:'); - for (opt in Logger.DEFAULTS) { - def = Logger.DEFAULTS[opt]; - if (typeof def === 'boolean') - boolOpt(opt, Logger.DEFAULTS[opt]); - else - stdOpt(opt, Logger.DEFAULTS[opt]); - } - p(''); - - function boolOpt(name, def) { - name = name + PADDING.slice(0, 20-name.length); - p(' --%s default: %s', name, def); - } - - function stdOpt(name, def) { - var value = name.toUpperCase() + - PADDING.slice(0, 19 - name.length*2); - p(' --%s %s default: %j', name, value, def); - } -} - - -/***/ }), -/* 277 */ -/***/ (function(module, exports) { - -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {}, unknownFn: null }; - - if (typeof opts['unknown'] === 'function') { - flags.unknownFn = opts['unknown']; - } + const file = _ref7; - if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { - flags.allBools = true; - } else { - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - } - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); - }); + possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); + } + } + } + } + } + } - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; + if (destStat && destStat.isSymbolicLink()) { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); + destStat = null; } - }); - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; + if (srcStat.isSymbolicLink()) { + onFresh(); + const linkname = yield readlink(src); + actions.symlink.push({ + dest, + linkname + }); + onDone(); + } else if (srcStat.isDirectory()) { + if (!destStat) { + reporter.verbose(reporter.lang('verboseFileFolder', dest)); + yield mkdirp(dest); + } - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } + const destParts = dest.split((_path || _load_path()).default.sep); + while (destParts.length) { + files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); + destParts.pop(); + } - function argDefined(key, arg) { - return (flags.allBools && /^--[^=]+$/.test(arg)) || - flags.strings[key] || flags.bools[key] || aliases[key]; - } + // push all files to queue + invariant(srcFiles, 'src files not initialised'); + let remaining = srcFiles.length; + if (!remaining) { + onDone(); + } + for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref8; - function setArg (key, val, arg) { - if (arg && flags.unknownFn && !argDefined(key, arg)) { - if (flags.unknownFn(arg) === false) return; - } + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref8 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref8 = _i6.value; + } - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } + const file = _ref8; - function setKey (obj, keys, value) { - var o = obj; - for (var i = 0; i < keys.length-1; i++) { - var key = keys[i]; - if (key === '__proto__') return; - if (o[key] === undefined) o[key] = {}; - if (o[key] === Object.prototype || o[key] === Number.prototype - || o[key] === String.prototype) o[key] = {}; - if (o[key] === Array.prototype) o[key] = []; - o = o[key]; - } + queue.push({ + dest: (_path || _load_path()).default.join(dest, file), + onFresh, + onDone: function (_onDone) { + function onDone() { + return _onDone.apply(this, arguments); + } - var key = keys[keys.length - 1]; - if (key === '__proto__') return; - if (o === Object.prototype || o === Number.prototype - || o === String.prototype) o = {}; - if (o === Array.prototype) o = []; - if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } - } - - function aliasIsBoolean(key) { - return aliases[key].some(function (x) { - return flags.bools[x]; - }); - } + onDone.toString = function () { + return _onDone.toString(); + }; - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - var key = m[1]; - var value = m[2]; - if (flags.bools[key]) { - value = value !== 'false'; - } - setArg(key, value, arg); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false, arg); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && !flags.allBools - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, next, arg); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next, arg) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { - setArg(letters[j], next.split('=')[1], arg); - broken = true; - break; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next, arg); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2), arg); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, args[i+1], arg); - i++; - } - else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { - setArg(key, args[i+1] === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); + return onDone; + }(function () { + if (--remaining === 0) { + onDone(); } - } - } - else { - if (!flags.unknownFn || flags.unknownFn(arg) !== false) { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - if (opts.stopEarly) { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); + }), + src: (_path || _load_path()).default.join(src, file) }); + } + } else if (srcStat.isFile()) { + onFresh(); + actions.file.push({ + src, + dest, + atime: srcStat.atime, + mtime: srcStat.mtime, + mode: srcStat.mode + }); + onDone(); + } else { + throw new Error(`unsure how to copy this: ${src}`); } - }); - - if (opts['--']) { - argv['--'] = new Array(); - notFlags.forEach(function(key) { - argv['--'].push(key); - }); - } - else { - notFlags.forEach(function(key) { - argv._.push(key); - }); - } - - return argv; -}; - -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); + }); - var key = keys[keys.length - 1]; - return key in o; -} + return function build(_x5) { + return _ref5.apply(this, arguments); + }; + })(); -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} + const artifactFiles = new Set(events.artifactFiles || []); + const files = new Set(); + // initialise events + for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref2; + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } -/***/ }), -/* 278 */ -/***/ (function(module) { + const item = _ref2; -module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); + const onDone = item.onDone; + item.onDone = function () { + events.onProgress(item.dest); + if (onDone) { + onDone(); + } + }; + } + events.onStart(queue.length); -/***/ }), -/* 279 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // start building actions + const actions = { + file: [], + symlink: [], + link: [] + }; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "workspacePackagePaths", function() { return workspacePackagePaths; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyWorkspacePackages", function() { return copyWorkspacePackages; }); -/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(146); -/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glob__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(280); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130); -/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(164); -/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(145); -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items + // at a time due to the requirement to push items onto the queue + while (queue.length) { + const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); + yield Promise.all(items.map(build)); + } + // simulate the existence of some files to prevent considering them extraneous + for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + const file = _ref3; + if (possibleExtraneous.has(file)) { + reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); + possibleExtraneous.delete(file); + } + } + for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } -const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a); -async function workspacePackagePaths(rootPath) { - const rootPkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(rootPath); + const loc = _ref4; - if (!rootPkgJson.workspaces) { - return []; - } + if (files.has(loc.toLowerCase())) { + possibleExtraneous.delete(loc); + } + } - const workspacesPathsPatterns = rootPkgJson.workspaces.packages; - let workspaceProjectsPaths = []; + return actions; + }); - for (const pattern of workspacesPathsPatterns) { - workspaceProjectsPaths = workspaceProjectsPaths.concat(await packagesFromGlobPattern({ - pattern, - rootPath - })); - } // Filter out exclude glob patterns + return function buildActionsForCopy(_x, _x2, _x3, _x4) { + return _ref.apply(this, arguments); + }; +})(); +let buildActionsForHardlink = (() => { + var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - for (const pattern of workspacesPathsPatterns) { - if (pattern.startsWith('!')) { - const pathToRemove = path__WEBPACK_IMPORTED_MODULE_1___default.a.join(rootPath, pattern.slice(1), 'package.json'); - workspaceProjectsPaths = workspaceProjectsPaths.filter(p => p !== pathToRemove); - } - } + // + let build = (() => { + var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + const src = data.src, + dest = data.dest; - return workspaceProjectsPaths; -} -async function copyWorkspacePackages(rootPath) { - const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__["getProjectPaths"])({ - rootPath - }); - const projects = await Object(_projects__WEBPACK_IMPORTED_MODULE_6__["getProjects"])(rootPath, projectPaths); + const onFresh = data.onFresh || noop; + const onDone = data.onDone || noop; + if (files.has(dest.toLowerCase())) { + // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 + // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, + // package-linker passes that modules A1 and B1 need to be hardlinked, + // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case + // an exception. + onDone(); + return; + } + files.add(dest.toLowerCase()); - for (const project of projects.values()) { - const dest = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(rootPath, 'node_modules', project.name); + if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { + // ignored file + return; + } - if ((await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["isSymlink"])(dest)) === false) { - continue; - } // Remove the symlink + const srcStat = yield lstat(src); + let srcFiles; + if (srcStat.isDirectory()) { + srcFiles = yield readdir(src); + } - await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["unlink"])(dest); // Copy in the package + const destExists = yield exists(dest); + if (destExists) { + const destStat = yield lstat(dest); - await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["copyDirectory"])(project.path, dest); - } -} + const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); + const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); + const bothFiles = srcStat.isFile() && destStat.isFile(); -function packagesFromGlobPattern({ - pattern, - rootPath -}) { - const globOptions = { - cwd: rootPath, - // Should throw in case of unusual errors when reading the file system - strict: true, - // Always returns absolute paths for matched files - absolute: true, - // Do not match ** against multiple filenames - // (This is only specified because we currently don't have a need for it.) - noglobstar: true - }; - return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions); -} + if (srcStat.mode !== destStat.mode) { + try { + yield access(dest, srcStat.mode); + } catch (err) { + // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving + // us modes that aren't valid. investigate this, it's generally safe to proceed. + reporter.verbose(err); + } + } -/***/ }), -/* 280 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + if (bothFiles && artifactFiles.has(dest)) { + // this file gets changed during build, likely by a custom install script. Don't bother checking it. + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); + return; + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return getProjectPaths; }); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + // correct hardlink + if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { + onDone(); + reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); + return; + } + if (bothSymlinks) { + const srcReallink = yield readlink(src); + if (srcReallink === (yield readlink(dest))) { + // if both symlinks are the same then we can continue on + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); + return; + } + } -/** - * Returns all the paths where plugins are located - */ -function getProjectPaths({ - rootPath, - ossOnly, - skipKibanaPlugins -}) { - const projectPaths = [rootPath, Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'packages/*')]; // This is needed in order to install the dependencies for the declared - // plugin functional used in the selenium functional tests. - // As we are now using the webpack dll for the client vendors dependencies - // when we run the plugin functional tests against the distributable - // dependencies used by such plugins like @eui, react and react-dom can't - // be loaded from the dll as the context is different from the one declared - // into the webpack dll reference plugin. - // In anyway, have a plugin declaring their own dependencies is the - // correct and the expect behavior. + if (bothFolders) { + // mark files that aren't in this folder as possibly extraneous + const destFiles = yield readdir(dest); + invariant(srcFiles, 'src files not initialised'); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'test/plugin_functional/plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'test/interpreter_functional/plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'examples/*')); + for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref14; - if (!ossOnly) { - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/legacy/plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/test/functional_with_es_ssl/fixtures/plugins/*')); - } + if (_isArray10) { + if (_i10 >= _iterator10.length) break; + _ref14 = _iterator10[_i10++]; + } else { + _i10 = _iterator10.next(); + if (_i10.done) break; + _ref14 = _i10.value; + } - if (!skipKibanaPlugins) { - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/packages/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*/packages/*')); - projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'plugins/*/plugins/*')); - } + const file = _ref14; - return projectPaths; -} + if (srcFiles.indexOf(file) < 0) { + const loc = (_path || _load_path()).default.join(dest, file); + possibleExtraneous.add(loc); -/***/ }), -/* 281 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + if ((yield lstat(loc)).isDirectory()) { + for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { + var _ref15; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllChecksums", function() { return getAllChecksums; }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(282); -/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(236); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(283); -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + if (_isArray11) { + if (_i11 >= _iterator11.length) break; + _ref15 = _iterator11[_i11++]; + } else { + _i11 = _iterator11.next(); + if (_i11.done) break; + _ref15 = _i11.value; + } + const file = _ref15; + possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); + } + } + } + } + } + } + if (srcStat.isSymbolicLink()) { + onFresh(); + const linkname = yield readlink(src); + actions.symlink.push({ + dest, + linkname + }); + onDone(); + } else if (srcStat.isDirectory()) { + reporter.verbose(reporter.lang('verboseFileFolder', dest)); + yield mkdirp(dest); + const destParts = dest.split((_path || _load_path()).default.sep); + while (destParts.length) { + files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); + destParts.pop(); + } -const statAsync = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_0___default.a.stat); + // push all files to queue + invariant(srcFiles, 'src files not initialised'); + let remaining = srcFiles.length; + if (!remaining) { + onDone(); + } + for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { + var _ref16; -const projectBySpecificitySorter = (a, b) => b.path.length - a.path.length; -/** Get the changed files for a set of projects */ + if (_isArray12) { + if (_i12 >= _iterator12.length) break; + _ref16 = _iterator12[_i12++]; + } else { + _i12 = _iterator12.next(); + if (_i12.done) break; + _ref16 = _i12.value; + } + const file = _ref16; -async function getChangesForProjects(projects, kbn, log) { - log.verbose('getting changed files'); - const { - stdout - } = await execa__WEBPACK_IMPORTED_MODULE_3___default()('git', ['ls-files', '-dmto', '--exclude-standard', '--', ...Array.from(projects.values()).filter(p => kbn.isPartOfRepo(p)).map(p => p.path)], { - cwd: kbn.getAbsolute() - }); - const output = stdout.trim(); - const unassignedChanges = new Map(); + queue.push({ + onFresh, + src: (_path || _load_path()).default.join(src, file), + dest: (_path || _load_path()).default.join(dest, file), + onDone: function (_onDone2) { + function onDone() { + return _onDone2.apply(this, arguments); + } - if (output) { - for (const line of output.split('\n')) { - const [tag, ...pathParts] = line.trim().split(' '); - const path = pathParts.join(' '); + onDone.toString = function () { + return _onDone2.toString(); + }; - switch (tag) { - case 'M': - case 'C': - // for some reason ls-files returns deleted files as both deleted - // and modified, so make sure not to overwrite changes already - // tracked as "deleted" - if (unassignedChanges.get(path) !== 'deleted') { - unassignedChanges.set(path, 'modified'); + return onDone; + }(function () { + if (--remaining === 0) { + onDone(); + } + }) + }); } + } else if (srcStat.isFile()) { + onFresh(); + actions.link.push({ + src, + dest, + removeDest: destExists + }); + onDone(); + } else { + throw new Error(`unsure how to copy this: ${src}`); + } + }); - break; + return function build(_x10) { + return _ref13.apply(this, arguments); + }; + })(); - case 'R': - unassignedChanges.set(path, 'deleted'); - break; + const artifactFiles = new Set(events.artifactFiles || []); + const files = new Set(); - case '?': - unassignedChanges.set(path, 'untracked'); - break; + // initialise events + for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref10; - case 'H': - case 'S': - case 'K': - default: - log.warning(`unexpected modification status "${tag}" for ${path}, please report this!`); - unassignedChanges.set(path, 'invalid'); - break; + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref10 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref10 = _i7.value; } - } - } - const sortedRelevantProjects = Array.from(projects.values()).sort(projectBySpecificitySorter); - const changesByProject = new Map(); + const item = _ref10; - for (const project of sortedRelevantProjects) { - if (kbn.isOutsideRepo(project)) { - changesByProject.set(project, undefined); - continue; + const onDone = item.onDone || noop; + item.onDone = function () { + events.onProgress(item.dest); + onDone(); + }; } + events.onStart(queue.length); - const ownChanges = new Map(); - const prefix = kbn.getRelative(project.path); + // start building actions + const actions = { + file: [], + symlink: [], + link: [] + }; - for (const [path, type] of unassignedChanges) { - if (path.startsWith(prefix)) { - ownChanges.set(path, type); - unassignedChanges.delete(path); - } + // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items + // at a time due to the requirement to push items onto the queue + while (queue.length) { + const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); + yield Promise.all(items.map(build)); } - log.verbose(`[${project.name}] found ${ownChanges.size} changes`); - changesByProject.set(project, ownChanges); - } + // simulate the existence of some files to prevent considering them extraneous + for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref11; - if (unassignedChanges.size) { - throw new Error(`unable to assign all change paths to a project: ${JSON.stringify(Array.from(unassignedChanges.entries()))}`); - } + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref11 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref11 = _i8.value; + } - return changesByProject; -} -/** Get the latest commit sha for a project */ + const file = _ref11; + if (possibleExtraneous.has(file)) { + reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); + possibleExtraneous.delete(file); + } + } -async function getLatestSha(project, kbn) { - if (kbn.isOutsideRepo(project)) { - return; - } + for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref12; - const { - stdout - } = await execa__WEBPACK_IMPORTED_MODULE_3___default()('git', ['log', '-n', '1', '--pretty=format:%H', '--', project.path], { - cwd: kbn.getAbsolute() - }); - return stdout.trim() || undefined; -} -/** - * Get the checksum for a specific project in the workspace - */ + if (_isArray9) { + if (_i9 >= _iterator9.length) break; + _ref12 = _iterator9[_i9++]; + } else { + _i9 = _iterator9.next(); + if (_i9.done) break; + _ref12 = _i9.value; + } + const loc = _ref12; -async function getChecksum(project, changes, yarnLock, kbn, log) { - const sha = await getLatestSha(project, kbn); + if (files.has(loc.toLowerCase())) { + possibleExtraneous.delete(loc); + } + } - if (sha) { - log.verbose(`[${project.name}] local sha:`, sha); - } + return actions; + }); - if (!changes || Array.from(changes.values()).includes('invalid')) { - log.warning(`[${project.name}] unable to determine local changes, caching disabled`); - return; - } + return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { + return _ref9.apply(this, arguments); + }; +})(); - const changesSummary = await Promise.all(Array.from(changes).sort((a, b) => a[0].localeCompare(b[0])).map(async ([path, type]) => { - if (type === 'deleted') { - return `${path}:deleted`; - } +let copyBulk = exports.copyBulk = (() => { + var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { + const events = { + onStart: _events && _events.onStart || noop, + onProgress: _events && _events.onProgress || noop, + possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), + ignoreBasenames: _events && _events.ignoreBasenames || [], + artifactFiles: _events && _events.artifactFiles || [] + }; - const stats = await statAsync(kbn.getAbsolute(path)); - log.verbose(`[${project.name}] modified time ${stats.mtimeMs} for ${path}`); - return `${path}:${stats.mtimeMs}`; - })); - const depMap = Object(_yarn_lock__WEBPACK_IMPORTED_MODULE_4__["resolveDepsForProject"])({ - project, - yarnLock, - kbn, - log, - includeDependentProject: false, - productionDepsOnly: false - }); + const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); + events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - if (!depMap) { - return; - } + const fileActions = actions.file; - const deps = Array.from(depMap.values()).map(({ - name, - version - }) => `${name}@${version}`).sort((a, b) => a.localeCompare(b)); - log.verbose(`[${project.name}] resolved %d deps`, deps.length); - const checksum = JSON.stringify({ - sha, - changes: changesSummary, - deps - }, null, 2); + const currentlyWriting = new Map(); - if (process.env.BOOTSTRAP_CACHE_DEBUG_CHECKSUM) { - return checksum; - } + yield (_promise || _load_promise()).queue(fileActions, (() => { + var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + let writePromise; + while (writePromise = currentlyWriting.get(data.dest)) { + yield writePromise; + } - const hash = crypto__WEBPACK_IMPORTED_MODULE_1___default.a.createHash('sha1'); - hash.update(checksum); - return hash.digest('hex'); -} -/** - * Calculate checksums for all projects in the workspace based on - * - last git commit to project directory - * - un-committed changes - * - resolved dependencies from yarn.lock referenced by project package.json - */ + reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); + const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { + return currentlyWriting.delete(data.dest); + }); + currentlyWriting.set(data.dest, copier); + events.onProgress(data.dest); + return copier; + }); + return function (_x14) { + return _ref18.apply(this, arguments); + }; + })(), CONCURRENT_QUEUE_ITEMS); -async function getAllChecksums(kbn, log, yarnLock) { - const projects = kbn.getAllProjects(); - const changesByProject = await getChangesForProjects(projects, kbn, log); - /** map of [project.name, cacheKey] */ + // we need to copy symlinks last as they could reference files we were copying + const symlinkActions = actions.symlink; + yield (_promise || _load_promise()).queue(symlinkActions, function (data) { + const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); + reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); + return symlink(linkname, data.dest); + }); + }); - const cacheKeys = new Map(); - await Promise.all(Array.from(projects.values()).map(async project => { - cacheKeys.set(project.name, await getChecksum(project, changesByProject.get(project), yarnLock, kbn, log)); - })); - return cacheKeys; -} + return function copyBulk(_x11, _x12, _x13) { + return _ref17.apply(this, arguments); + }; +})(); -/***/ }), -/* 282 */ -/***/ (function(module, exports) { +let hardlinkBulk = exports.hardlinkBulk = (() => { + var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { + const events = { + onStart: _events && _events.onStart || noop, + onProgress: _events && _events.onProgress || noop, + possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), + artifactFiles: _events && _events.artifactFiles || [], + ignoreBasenames: [] + }; -module.exports = require("crypto"); + const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); + events.onStart(actions.file.length + actions.symlink.length + actions.link.length); -/***/ }), -/* 283 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + const fileActions = actions.link; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(284); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -// @ts-expect-error published types are worthless + yield (_promise || _load_promise()).queue(fileActions, (() => { + var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); + if (data.removeDest) { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); + } + yield link(data.src, data.dest); + }); + + return function (_x18) { + return _ref20.apply(this, arguments); + }; + })(), CONCURRENT_QUEUE_ITEMS); + // we need to copy symlinks last as they could reference files we were copying + const symlinkActions = actions.symlink; + yield (_promise || _load_promise()).queue(symlinkActions, function (data) { + const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); + reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); + return symlink(linkname, data.dest); + }); + }); -async function readYarnLock(kbn) { - try { - const contents = await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_1__["readFile"])(kbn.getAbsolute('yarn.lock'), 'utf8'); - const yarnLock = Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["parse"])(contents); + return function hardlinkBulk(_x15, _x16, _x17) { + return _ref19.apply(this, arguments); + }; +})(); - if (yarnLock.type === 'success') { - return yarnLock.object; - } +let readFileAny = exports.readFileAny = (() => { + var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { + for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { + var _ref22; - throw new Error('unable to read yarn.lock file, please run `yarn kbn bootstrap`'); - } catch (error) { - if (error.code !== 'ENOENT') { - throw error; + if (_isArray13) { + if (_i13 >= _iterator13.length) break; + _ref22 = _iterator13[_i13++]; + } else { + _i13 = _iterator13.next(); + if (_i13.done) break; + _ref22 = _i13.value; + } + + const file = _ref22; + + if (yield exists(file)) { + return readFile(file); + } } - } + return null; + }); - return {}; -} -/** - * Get a list of the absolute dependencies of this project, as resolved - * in the yarn.lock file, does not include other projects in the workspace - * or their dependencies - */ + return function readFileAny(_x19) { + return _ref21.apply(this, arguments); + }; +})(); -function resolveDepsForProject({ - project: rootProject, - yarnLock, - kbn, - log, - productionDepsOnly, - includeDependentProject -}) { - /** map of [name@range, { name, version }] */ - const resolved = new Map(); - const seenProjects = new Set(); - const projectQueue = [rootProject]; - const depQueue = []; +let readJson = exports.readJson = (() => { + var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + return (yield readJsonAndFile(loc)).object; + }); - while (projectQueue.length) { - const project = projectQueue.shift(); + return function readJson(_x20) { + return _ref23.apply(this, arguments); + }; +})(); - if (seenProjects.has(project)) { - continue; +let readJsonAndFile = exports.readJsonAndFile = (() => { + var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + const file = yield readFile(loc); + try { + return { + object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))), + content: file + }; + } catch (err) { + err.message = `${loc}: ${err.message}`; + throw err; } + }); - seenProjects.add(project); - const projectDeps = Object.entries(productionDepsOnly ? project.productionDependencies : project.allDependencies); + return function readJsonAndFile(_x21) { + return _ref24.apply(this, arguments); + }; +})(); - for (const [name, versionRange] of projectDeps) { - depQueue.push([name, versionRange]); - } +let find = exports.find = (() => { + var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { + const parts = dir.split((_path || _load_path()).default.sep); - while (depQueue.length) { - const [name, versionRange] = depQueue.shift(); - const req = `${name}@${versionRange}`; + while (parts.length) { + const loc = parts.concat(filename).join((_path || _load_path()).default.sep); - if (resolved.has(req)) { - continue; + if (yield exists(loc)) { + return loc; + } else { + parts.pop(); } + } - if (includeDependentProject && kbn.hasProject(name)) { - projectQueue.push(kbn.getProject(name)); - } + return false; + }); - if (!kbn.hasProject(name)) { - const pkg = yarnLock[req]; + return function find(_x22, _x23) { + return _ref25.apply(this, arguments); + }; +})(); - if (!pkg) { - log.warning('yarn.lock file is out of date, please run `yarn kbn bootstrap` to re-enable caching'); +let symlink = exports.symlink = (() => { + var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { + try { + const stats = yield lstat(dest); + if (stats.isSymbolicLink()) { + const resolved = yield realpath(dest); + if (resolved === src) { return; } + } + } catch (err) { + if (err.code !== 'ENOENT') { + throw err; + } + } + // We use rimraf for unlink which never throws an ENOENT on missing target + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - resolved.set(req, { - name, - version: pkg.version - }); - const allDepsEntries = [...Object.entries(pkg.dependencies || {}), ...Object.entries(pkg.optionalDependencies || {})]; - - for (const [childName, childVersionRange] of allDepsEntries) { - depQueue.push([childName, childVersionRange]); + if (process.platform === 'win32') { + // use directory junctions if possible on win32, this requires absolute paths + yield fsSymlink(src, dest, 'junction'); + } else { + // use relative paths otherwise which will be retained if the directory is moved + let relative; + try { + relative = (_path || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src)); + } catch (err) { + if (err.code !== 'ENOENT') { + throw err; } + relative = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src); } + // When path.relative returns an empty string for the current directory, we should instead use + // '.', which is a valid fs.symlink target. + yield fsSymlink(relative || '.', dest); } - } - - return resolved; -} - -/***/ }), -/* 284 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 14); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __webpack_require__(4); + }); -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { + return function symlink(_x24, _x25) { + return _ref26.apply(this, arguments); + }; +})(); -"use strict"; +let walk = exports.walk = (() => { + var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { + let files = []; + let filenames = yield readdir(dir); + if (ignoreBasenames.size) { + filenames = filenames.filter(function (name) { + return !ignoreBasenames.has(name); + }); + } -exports.__esModule = true; + for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { + var _ref28; -var _promise = __webpack_require__(173); + if (_isArray14) { + if (_i14 >= _iterator14.length) break; + _ref28 = _iterator14[_i14++]; + } else { + _i14 = _iterator14.next(); + if (_i14.done) break; + _ref28 = _i14.value; + } -var _promise2 = _interopRequireDefault(_promise); + const name = _ref28; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name; + const loc = (_path || _load_path()).default.join(dir, name); + const stat = yield lstat(loc); -exports.default = function (fn) { - return function () { - var gen = fn.apply(this, arguments); - return new _promise2.default(function (resolve, reject) { - function step(key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } + files.push({ + relative, + basename: name, + absolute: loc, + mtime: +stat.mtime + }); - if (info.done) { - resolve(value); - } else { - return _promise2.default.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); - } + if (stat.isDirectory()) { + files = files.concat((yield walk(loc, relative, ignoreBasenames))); } + } - return step("next"); - }); + return files; + }); + + return function walk(_x26, _x27) { + return _ref27.apply(this, arguments); }; -}; +})(); -/***/ }), -/* 2 */ -/***/ (function(module, exports) { +let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => { + var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + const stat = yield lstat(loc); + const size = stat.size, + blockSize = stat.blksize; -module.exports = __webpack_require__(111); -/***/ }), -/* 3 */ -/***/ (function(module, exports) { + return Math.ceil(size / blockSize) * blockSize; + }); -module.exports = __webpack_require__(133); + return function getFileSizeOnDisk(_x28) { + return _ref29.apply(this, arguments); + }; +})(); -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { +let getEolFromFile = (() => { + var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { + if (!(yield exists(path))) { + return undefined; + } -"use strict"; + const buffer = yield readFileBuffer(path); + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] === cr) { + return '\r\n'; + } + if (buffer[i] === lf) { + return '\n'; + } + } + return undefined; + }); -Object.defineProperty(exports, "__esModule", { - value: true -}); -class MessageError extends Error { - constructor(msg, code) { - super(msg); - this.code = code; - } + return function getEolFromFile(_x29) { + return _ref30.apply(this, arguments); + }; +})(); -} +let writeFilePreservingEol = exports.writeFilePreservingEol = (() => { + var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { + const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; + if (eol !== '\n') { + data = data.replace(/\n/g, eol); + } + yield writeFile(path, data); + }); -exports.MessageError = MessageError; -class ProcessSpawnError extends MessageError { - constructor(msg, code, process) { - super(msg, code); - this.process = process; - } + return function writeFilePreservingEol(_x30, _x31) { + return _ref31.apply(this, arguments); + }; +})(); -} +let hardlinksWork = exports.hardlinksWork = (() => { + var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { + const filename = 'test-file' + Math.random(); + const file = (_path || _load_path()).default.join(dir, filename); + const fileLink = (_path || _load_path()).default.join(dir, filename + '-link'); + try { + yield writeFile(file, 'test'); + yield link(file, fileLink); + } catch (err) { + return false; + } finally { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); + } + return true; + }); -exports.ProcessSpawnError = ProcessSpawnError; -class SecurityError extends MessageError {} + return function hardlinksWork(_x32) { + return _ref32.apply(this, arguments); + }; +})(); -exports.SecurityError = SecurityError; -class ProcessTermError extends MessageError {} +// not a strict polyfill for Node's fs.mkdtemp -exports.ProcessTermError = ProcessTermError; -class ResponseError extends Error { - constructor(msg, responseCode) { - super(msg); - this.responseCode = responseCode; - } -} -exports.ResponseError = ResponseError; +let makeTempDir = exports.makeTempDir = (() => { + var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { + const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); + yield mkdirp(dir); + return dir; + }); -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { + return function makeTempDir(_x33) { + return _ref33.apply(this, arguments); + }; +})(); -"use strict"; +let readFirstAvailableStream = exports.readFirstAvailableStream = (() => { + var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { + for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { + var _ref35; + if (_isArray15) { + if (_i15 >= _iterator15.length) break; + _ref35 = _iterator15[_i15++]; + } else { + _i15 = _iterator15.next(); + if (_i15.done) break; + _ref35 = _i15.value; + } -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; + const path = _ref35; -var _asyncToGenerator2; + try { + const fd = yield open(path, 'r'); + return (_fs || _load_fs()).default.createReadStream(path, { fd }); + } catch (err) { + // Try the next one + } + } + return null; + }); -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} + return function readFirstAvailableStream(_x34) { + return _ref34.apply(this, arguments); + }; +})(); -let buildActionsForCopy = (() => { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { +let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => { + var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) { + const result = { + skipped: [], + folder: null + }; - // - let build = (() => { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest, - type = data.type; + for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { + var _ref37; - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; + if (_isArray16) { + if (_i16 >= _iterator16.length) break; + _ref37 = _iterator16[_i16++]; + } else { + _i16 = _iterator16.next(); + if (_i16.done) break; + _ref37 = _i16.value; + } - // TODO https://github.com/yarnpkg/yarn/issues/3751 - // related to bundled dependencies handling - if (files.has(dest.toLowerCase())) { - reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); - } else { - files.add(dest.toLowerCase()); - } + const folder = _ref37; - if (type === 'symlink') { - yield mkdirp((_path || _load_path()).default.dirname(dest)); - onFresh(); - actions.symlink.push({ - dest, - linkname: src - }); - onDone(); - return; - } + try { + yield mkdirp(folder); + yield access(folder, mode); - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } + result.folder = folder; - const srcStat = yield lstat(src); - let srcFiles; + return result; + } catch (error) { + result.skipped.push({ + error, + folder + }); + } + } + return result; + }); - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } + return function getFirstSuitableFolder(_x35) { + return _ref36.apply(this, arguments); + }; +})(); - let destStat; - try { - // try accessing the destination - destStat = yield lstat(dest); - } catch (e) { - // proceed if destination doesn't exist, otherwise error - if (e.code !== 'ENOENT') { - throw e; - } - } +exports.copy = copy; +exports.readFile = readFile; +exports.readFileRaw = readFileRaw; +exports.normalizeOS = normalizeOS; - // if destination exists - if (destStat) { - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); +var _fs; - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. +function _load_fs() { + return _fs = _interopRequireDefault(__webpack_require__(3)); +} - /* if (srcStat.mode !== destStat.mode) { - try { - await access(dest, srcStat.mode); - } catch (err) {} - } */ +var _glob; - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } +function _load_glob() { + return _glob = _interopRequireDefault(__webpack_require__(75)); +} - if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { - // we can safely assume this is the same file - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); - return; - } +var _os; - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } +function _load_os() { + return _os = _interopRequireDefault(__webpack_require__(36)); +} - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); +var _path; - for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref6; +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } +var _blockingQueue; - const file = _ref6; +function _load_blockingQueue() { + return _blockingQueue = _interopRequireDefault(__webpack_require__(84)); +} - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); +var _promise; - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref7; +function _load_promise() { + return _promise = _interopRequireWildcard(__webpack_require__(40)); +} - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref7 = _i5.value; - } +var _promise2; - const file = _ref7; +function _load_promise2() { + return _promise2 = __webpack_require__(40); +} - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } +var _map; - if (destStat && destStat.isSymbolicLink()) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - destStat = null; - } +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(20)); +} - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - if (!destStat) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - } +var _fsNormalized; - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } +function _load_fsNormalized() { + return _fsNormalized = __webpack_require__(164); +} - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref8; +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - const file = _ref8; +const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { + R_OK: (_fs || _load_fs()).default.R_OK, + W_OK: (_fs || _load_fs()).default.W_OK, + X_OK: (_fs || _load_fs()).default.X_OK +}; - queue.push({ - dest: (_path || _load_path()).default.join(dest, file), - onFresh, - onDone: function (_onDone) { - function onDone() { - return _onDone.apply(this, arguments); - } +const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - onDone.toString = function () { - return _onDone.toString(); - }; +const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile); +const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open); +const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile); +const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink); +const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath); +const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir); +const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename); +const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access); +const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat); +const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(116)); +const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true); +const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat); +const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod); +const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link); +const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default); +exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }), - src: (_path || _load_path()).default.join(src, file) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.file.push({ - src, - dest, - atime: srcStat.atime, - mtime: srcStat.mtime, - mode: srcStat.mode - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); +// fs.copyFile uses the native file copying instructions on the system, performing much better +// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the +// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. - return function build(_x5) { - return _ref5.apply(this, arguments); - }; - })(); +const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); +const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); +const invariant = __webpack_require__(7); +const stripBOM = __webpack_require__(122); - // initialise events - for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref2; +const noop = () => {}; - if (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; +function copy(src, dest, reporter) { + return copyBulk([{ src, dest }], reporter); +} + +function _readFile(loc, encoding) { + return new Promise((resolve, reject) => { + (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { + if (err) { + reject(err); } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; + resolve(content); } + }); + }); +} - const item = _ref2; +function readFile(loc) { + return _readFile(loc, 'utf8').then(normalizeOS); +} - const onDone = item.onDone; - item.onDone = function () { - events.onProgress(item.dest); - if (onDone) { - onDone(); - } - }; - } - events.onStart(queue.length); +function readFileRaw(loc) { + return _readFile(loc, 'binary'); +} - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; +function normalizeOS(body) { + return body.replace(/\r\n/g, '\n'); +} - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } +const cr = '\r'.charCodeAt(0); +const lf = '\n'.charCodeAt(0); - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref3; +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref3 = _i2.value; - } +"use strict"; - const file = _ref3; - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPathKey = getPathKey; +const os = __webpack_require__(36); +const path = __webpack_require__(0); +const userHome = __webpack_require__(45).default; - for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref4; +var _require = __webpack_require__(171); - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } +const getCacheDir = _require.getCacheDir, + getConfigDir = _require.getConfigDir, + getDataDir = _require.getDataDir; - const loc = _ref4; +const isWebpackBundle = __webpack_require__(227); - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } +const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; +const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; +const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; - return actions; - }); +const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; - return function buildActionsForCopy(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -})(); +const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; -let buildActionsForHardlink = (() => { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { +const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; +const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; +const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; - // - let build = (() => { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest; +const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; - if (files.has(dest.toLowerCase())) { - // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 - // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, - // package-linker passes that modules A1 and B1 need to be hardlinked, - // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case - // an exception. - onDone(); - return; - } - files.add(dest.toLowerCase()); +// cache version, bump whenever we make backwards incompatible changes +const CACHE_VERSION = exports.CACHE_VERSION = 2; - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } +// lockfile version, bump whenever we make backwards incompatible changes +const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; - const srcStat = yield lstat(src); - let srcFiles; +// max amount of network requests to perform concurrently +const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } +// HTTP timeout used when downloading packages +const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds - const destExists = yield exists(dest); - if (destExists) { - const destStat = yield lstat(dest); +// max amount of child processes to execute concurrently +const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); +const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; - if (srcStat.mode !== destStat.mode) { - try { - yield access(dest, srcStat.mode); - } catch (err) { - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - reporter.verbose(err); - } - } +function getPreferredCacheDirectories() { + const preferredCacheDirectories = [getCacheDir()]; - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } + if (process.getuid) { + // $FlowFixMe: process.getuid exists, dammit + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); + } - // correct hardlink - if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); - return; - } + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } + return preferredCacheDirectories; +} - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); +const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); +const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); +const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); +const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); +const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); - for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref14; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref14 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref14 = _i10.value; - } +const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; +const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); - const file = _ref14; +// Webpack needs to be configured with node.__dirname/__filename = false +function getYarnBinPath() { + if (isWebpackBundle) { + return __filename; + } else { + return path.join(__dirname, '..', 'bin', 'yarn.js'); + } +} - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); +const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; +const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { - var _ref15; +const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; +const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref15 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref15 = _i11.value; - } +const META_FOLDER = exports.META_FOLDER = '.yarn-meta'; +const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; +const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; +const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; +const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; +const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; - const file = _ref15; +const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; +const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } +const DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; +const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; +const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); +const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } +function getPathKey(platform, env) { + let pathKey = 'PATH'; - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { - var _ref16; + // windows calls its path "Path" usually, but this is not guaranteed. + if (platform === 'win32') { + pathKey = 'Path'; - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref16 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref16 = _i12.value; - } + for (const key in env) { + if (key.toLowerCase() === 'path') { + pathKey = key; + } + } + } - const file = _ref16; + return pathKey; +} - queue.push({ - onFresh, - src: (_path || _load_path()).default.join(src, file), - dest: (_path || _load_path()).default.join(dest, file), - onDone: function (_onDone2) { - function onDone() { - return _onDone2.apply(this, arguments); - } +const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { + major: 'red', + premajor: 'red', + minor: 'yellow', + preminor: 'yellow', + patch: 'green', + prepatch: 'green', + prerelease: 'red', + unchanged: 'white', + unknown: 'red' +}; - onDone.toString = function () { - return _onDone2.toString(); - }; +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.link.push({ - src, - dest, - removeDest: destExists - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ - return function build(_x10) { - return _ref13.apply(this, arguments); - }; - })(); - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); - // initialise events - for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref10; +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref10 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref10 = _i7.value; - } +var NODE_ENV = "none"; - const item = _ref10; +var invariant = function(condition, format, a, b, c, d, e, f) { + if (NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } - const onDone = item.onDone || noop; - item.onDone = function () { - events.onProgress(item.dest); - onDone(); - }; + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; } - events.onStart(queue.length); - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } +module.exports = invariant; - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref11; - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref11 = _i8.value; - } +/***/ }), +/* 8 */, +/* 9 */ +/***/ (function(module, exports) { - const file = _ref11; +module.exports = __webpack_require__(278); - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } +/***/ }), +/* 10 */, +/* 11 */ +/***/ (function(module, exports) { - for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref12; +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref12 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref12 = _i9.value; - } - const loc = _ref12; +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sortAlpha = sortAlpha; +exports.entries = entries; +exports.removePrefix = removePrefix; +exports.removeSuffix = removeSuffix; +exports.addSuffix = addSuffix; +exports.hyphenate = hyphenate; +exports.camelCase = camelCase; +exports.compareSortedArrays = compareSortedArrays; +exports.sleep = sleep; +const _camelCase = __webpack_require__(176); + +function sortAlpha(a, b) { + // sort alphabetically in a deterministic way + const shortLen = Math.min(a.length, b.length); + for (let i = 0; i < shortLen; i++) { + const aChar = a.charCodeAt(i); + const bChar = b.charCodeAt(i); + if (aChar !== bChar) { + return aChar - bChar; } + } + return a.length - b.length; +} - return actions; - }); +function entries(obj) { + const entries = []; + if (obj) { + for (const key in obj) { + entries.push([key, obj[key]]); + } + } + return entries; +} - return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -})(); +function removePrefix(pattern, prefix) { + if (pattern.startsWith(prefix)) { + pattern = pattern.slice(prefix.length); + } -let copyBulk = exports.copyBulk = (() => { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - ignoreBasenames: _events && _events.ignoreBasenames || [], - artifactFiles: _events && _events.artifactFiles || [] - }; + return pattern; +} - const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); +function removeSuffix(pattern, suffix) { + if (pattern.endsWith(suffix)) { + return pattern.slice(0, -suffix.length); + } - const fileActions = actions.file; + return pattern; +} - const currentlyWriting = new Map(); +function addSuffix(pattern, suffix) { + if (!pattern.endsWith(suffix)) { + return pattern + suffix; + } - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - let writePromise; - while (writePromise = currentlyWriting.get(data.dest)) { - yield writePromise; - } + return pattern; +} - reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); - const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { - return currentlyWriting.delete(data.dest); - }); - currentlyWriting.set(data.dest, copier); - events.onProgress(data.dest); - return copier; - }); +function hyphenate(str) { + return str.replace(/[A-Z]/g, match => { + return '-' + match.charAt(0).toLowerCase(); + }); +} - return function (_x14) { - return _ref18.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); +function camelCase(str) { + if (/[A-Z]/.test(str)) { + return null; + } else { + return _camelCase(str); + } +} - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); +function compareSortedArrays(array1, array2) { + if (array1.length !== array2.length) { + return false; + } + for (let i = 0, len = array1.length; i < len; i++) { + if (array1[i] !== array2[i]) { + return false; + } + } + return true; +} + +function sleep(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms); }); +} - return function copyBulk(_x11, _x12, _x13) { - return _ref17.apply(this, arguments); - }; -})(); +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { -let hardlinkBulk = exports.hardlinkBulk = (() => { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - artifactFiles: _events && _events.artifactFiles || [], - ignoreBasenames: [] - }; +var store = __webpack_require__(107)('wks'); +var uid = __webpack_require__(111); +var Symbol = __webpack_require__(11).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; - const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; - const fileActions = actions.link; +$exports.store = store; - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); - if (data.removeDest) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); - } - yield link(data.src, data.dest); - }); - return function (_x18) { - return _ref20.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); +"use strict"; - return function hardlinkBulk(_x15, _x16, _x17) { - return _ref19.apply(this, arguments); - }; -})(); -let readFileAny = exports.readFileAny = (() => { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { - for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { - var _ref22; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.stringify = exports.parse = undefined; - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref22 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref22 = _i13.value; - } +var _asyncToGenerator2; - const file = _ref22; +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); +} - if (yield exists(file)) { - return readFile(file); - } - } - return null; - }); +var _parse; - return function readFileAny(_x19) { - return _ref21.apply(this, arguments); - }; -})(); +function _load_parse() { + return _parse = __webpack_require__(81); +} -let readJson = exports.readJson = (() => { - var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - return (yield readJsonAndFile(loc)).object; - }); +Object.defineProperty(exports, 'parse', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_parse || _load_parse()).default; + } +}); - return function readJson(_x20) { - return _ref23.apply(this, arguments); - }; -})(); +var _stringify; -let readJsonAndFile = exports.readJsonAndFile = (() => { - var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const file = yield readFile(loc); - try { - return { - object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))), - content: file - }; - } catch (err) { - err.message = `${loc}: ${err.message}`; - throw err; - } - }); +function _load_stringify() { + return _stringify = __webpack_require__(150); +} - return function readJsonAndFile(_x21) { - return _ref24.apply(this, arguments); - }; -})(); +Object.defineProperty(exports, 'stringify', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_stringify || _load_stringify()).default; + } +}); +exports.implodeEntry = implodeEntry; +exports.explodeEntry = explodeEntry; -let find = exports.find = (() => { - var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { - const parts = dir.split((_path || _load_path()).default.sep); +var _misc; - while (parts.length) { - const loc = parts.concat(filename).join((_path || _load_path()).default.sep); +function _load_misc() { + return _misc = __webpack_require__(12); +} - if (yield exists(loc)) { - return loc; - } else { - parts.pop(); - } - } +var _normalizePattern; - return false; - }); +function _load_normalizePattern() { + return _normalizePattern = __webpack_require__(29); +} - return function find(_x22, _x23) { - return _ref25.apply(this, arguments); - }; -})(); +var _parse2; -let symlink = exports.symlink = (() => { - var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { - try { - const stats = yield lstat(dest); - if (stats.isSymbolicLink()) { - const resolved = yield realpath(dest); - if (resolved === src) { - return; - } - } - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - } - // We use rimraf for unlink which never throws an ENOENT on missing target - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); +function _load_parse2() { + return _parse2 = _interopRequireDefault(__webpack_require__(81)); +} - if (process.platform === 'win32') { - // use directory junctions if possible on win32, this requires absolute paths - yield fsSymlink(src, dest, 'junction'); - } else { - // use relative paths otherwise which will be retained if the directory is moved - let relative; - try { - relative = (_path || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src)); - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - relative = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src); - } - // When path.relative returns an empty string for the current directory, we should instead use - // '.', which is a valid fs.symlink target. - yield fsSymlink(relative || '.', dest); - } - }); +var _constants; - return function symlink(_x24, _x25) { - return _ref26.apply(this, arguments); - }; -})(); +function _load_constants() { + return _constants = __webpack_require__(6); +} -let walk = exports.walk = (() => { - var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { - let files = []; +var _fs; - let filenames = yield readdir(dir); - if (ignoreBasenames.size) { - filenames = filenames.filter(function (name) { - return !ignoreBasenames.has(name); - }); - } +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(5)); +} - for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { - var _ref28; +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref28 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref28 = _i14.value; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - const name = _ref28; +const invariant = __webpack_require__(7); - const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name; - const loc = (_path || _load_path()).default.join(dir, name); - const stat = yield lstat(loc); +const path = __webpack_require__(0); +const ssri = __webpack_require__(55); - files.push({ - relative, - basename: name, - absolute: loc, - mtime: +stat.mtime - }); +function getName(pattern) { + return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; +} - if (stat.isDirectory()) { - files = files.concat((yield walk(loc, relative, ignoreBasenames))); - } - } +function blankObjectUndefined(obj) { + return obj && Object.keys(obj).length ? obj : undefined; +} - return files; - }); +function keyForRemote(remote) { + return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null); +} - return function walk(_x26, _x27) { - return _ref27.apply(this, arguments); +function serializeIntegrity(integrity) { + // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output + // See https://git.io/vx2Hy + return integrity.toString().split(' ').sort().join(' '); +} + +function implodeEntry(pattern, obj) { + const inferredName = getName(pattern); + const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; + const imploded = { + name: inferredName === obj.name ? undefined : obj.name, + version: obj.version, + uid: obj.uid === obj.version ? undefined : obj.uid, + resolved: obj.resolved, + registry: obj.registry === 'npm' ? undefined : obj.registry, + dependencies: blankObjectUndefined(obj.dependencies), + optionalDependencies: blankObjectUndefined(obj.optionalDependencies), + permissions: blankObjectUndefined(obj.permissions), + prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants) }; -})(); + if (integrity) { + imploded.integrity = integrity; + } + return imploded; +} -let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const stat = yield lstat(loc); - const size = stat.size, - blockSize = stat.blksize; +function explodeEntry(pattern, obj) { + obj.optionalDependencies = obj.optionalDependencies || {}; + obj.dependencies = obj.dependencies || {}; + obj.uid = obj.uid || obj.version; + obj.permissions = obj.permissions || {}; + obj.registry = obj.registry || 'npm'; + obj.name = obj.name || getName(pattern); + const integrity = obj.integrity; + if (integrity && integrity.isIntegrity) { + obj.integrity = ssri.parse(integrity); + } + return obj; +} +class Lockfile { + constructor({ cache, source, parseResultType } = {}) { + this.source = source || ''; + this.cache = cache; + this.parseResultType = parseResultType; + } - return Math.ceil(size / blockSize) * blockSize; - }); + // source string if the `cache` was parsed - return function getFileSizeOnDisk(_x28) { - return _ref29.apply(this, arguments); - }; -})(); -let getEolFromFile = (() => { - var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { - if (!(yield exists(path))) { - return undefined; + // if true, we're parsing an old yarn file and need to update integrity fields + hasEntriesExistWithoutIntegrity() { + if (!this.cache) { + return false; } - const buffer = yield readFileBuffer(path); - - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] === cr) { - return '\r\n'; - } - if (buffer[i] === lf) { - return '\n'; + for (const key in this.cache) { + // $FlowFixMe - `this.cache` is clearly defined at this point + if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) { + return true; } } - return undefined; - }); - - return function getEolFromFile(_x29) { - return _ref30.apply(this, arguments); - }; -})(); -let writeFilePreservingEol = exports.writeFilePreservingEol = (() => { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { - const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; - if (eol !== '\n') { - data = data.replace(/\n/g, eol); - } - yield writeFile(path, data); - }); + return false; + } - return function writeFilePreservingEol(_x30, _x31) { - return _ref31.apply(this, arguments); - }; -})(); + static fromDirectory(dir, reporter) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // read the manifest in this directory + const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); -let hardlinksWork = exports.hardlinksWork = (() => { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { - const filename = 'test-file' + Math.random(); - const file = (_path || _load_path()).default.join(dir, filename); - const fileLink = (_path || _load_path()).default.join(dir, filename + '-link'); - try { - yield writeFile(file, 'test'); - yield link(file, fileLink); - } catch (err) { - return false; - } finally { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); - } - return true; - }); + let lockfile; + let rawLockfile = ''; + let parseResult; - return function hardlinksWork(_x32) { - return _ref32.apply(this, arguments); - }; -})(); + if (yield (_fs || _load_fs()).exists(lockfileLoc)) { + rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); + parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc); -// not a strict polyfill for Node's fs.mkdtemp + if (reporter) { + if (parseResult.type === 'merge') { + reporter.info(reporter.lang('lockfileMerged')); + } else if (parseResult.type === 'conflict') { + reporter.warn(reporter.lang('lockfileConflict')); + } + } + lockfile = parseResult.object; + } else if (reporter) { + reporter.info(reporter.lang('noLockfileFound')); + } -let makeTempDir = exports.makeTempDir = (() => { - var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { - const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); - yield mkdirp(dir); - return dir; - }); + return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); + })(); + } - return function makeTempDir(_x33) { - return _ref33.apply(this, arguments); - }; -})(); + getLocked(pattern) { + const cache = this.cache; + if (!cache) { + return undefined; + } -let readFirstAvailableStream = exports.readFirstAvailableStream = (() => { - var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { - for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { - var _ref35; + const shrunk = pattern in cache && cache[pattern]; - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref35 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref35 = _i15.value; - } + if (typeof shrunk === 'string') { + return this.getLocked(shrunk); + } else if (shrunk) { + explodeEntry(pattern, shrunk); + return shrunk; + } - const path = _ref35; + return undefined; + } - try { - const fd = yield open(path, 'r'); - return (_fs || _load_fs()).default.createReadStream(path, { fd }); - } catch (err) { - // Try the next one - } + removePattern(pattern) { + const cache = this.cache; + if (!cache) { + return; } - return null; - }); + delete cache[pattern]; + } - return function readFirstAvailableStream(_x34) { - return _ref34.apply(this, arguments); - }; -})(); + getLockfile(patterns) { + const lockfile = {}; + const seen = new Map(); -let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => { - var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) { - const result = { - skipped: [], - folder: null - }; + // order by name so that lockfile manifest is assigned to the first dependency with this manifest + // the others that have the same remoteKey will just refer to the first + // ordering allows for consistency in lockfile when it is serialized + const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha); - for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { - var _ref37; + for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref37 = _iterator16[_i16++]; + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref37 = _i16.value; + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; } - const folder = _ref37; + const pattern = _ref; - try { - yield mkdirp(folder); - yield access(folder, mode); + const pkg = patterns[pattern]; + const remote = pkg._remote, + ref = pkg._reference; - result.folder = folder; + invariant(ref, 'Package is missing a reference'); + invariant(remote, 'Package is missing a remote'); - return result; - } catch (error) { - result.skipped.push({ - error, - folder - }); - } - } - return result; - }); + const remoteKey = keyForRemote(remote); + const seenPattern = remoteKey && seen.get(remoteKey); + if (seenPattern) { + // no point in duplicating it + lockfile[pattern] = seenPattern; - return function getFirstSuitableFolder(_x35) { - return _ref36.apply(this, arguments); - }; -})(); + // if we're relying on our name being inferred and two of the patterns have + // different inferred names then we need to set it + if (!seenPattern.name && getName(pattern) !== pkg.name) { + seenPattern.name = pkg.name; + } + continue; + } + const obj = implodeEntry(pattern, { + name: pkg.name, + version: pkg.version, + uid: pkg._uid, + resolved: remote.resolved, + integrity: remote.integrity, + registry: remote.registry, + dependencies: pkg.dependencies, + peerDependencies: pkg.peerDependencies, + optionalDependencies: pkg.optionalDependencies, + permissions: ref.permissions, + prebuiltVariants: pkg.prebuiltVariants + }); -exports.copy = copy; -exports.readFile = readFile; -exports.readFileRaw = readFileRaw; -exports.normalizeOS = normalizeOS; + lockfile[pattern] = obj; -var _fs; + if (remoteKey) { + seen.set(remoteKey, obj); + } + } -function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(3)); + return lockfile; + } } +exports.default = Lockfile; -var _glob; - -function _load_glob() { - return _glob = _interopRequireDefault(__webpack_require__(75)); -} +/***/ }), +/* 15 */, +/* 16 */, +/* 17 */ +/***/ (function(module, exports) { -var _os; +module.exports = __webpack_require__(137); -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(36)); -} +/***/ }), +/* 18 */, +/* 19 */, +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { -var _path; +"use strict"; -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(0)); -} -var _blockingQueue; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = nullify; +function nullify(obj = {}) { + if (Array.isArray(obj)) { + for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(84)); -} + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } -var _promise; + const item = _ref; -function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(40)); -} + nullify(item); + } + } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { + Object.setPrototypeOf(obj, null); -var _promise2; + // for..in can only be applied to 'object', not 'function' + if (typeof obj === 'object') { + for (const key in obj) { + nullify(obj[key]); + } + } + } -function _load_promise2() { - return _promise2 = __webpack_require__(40); + return obj; } -var _map; +/***/ }), +/* 21 */, +/* 22 */ +/***/ (function(module, exports) { -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(20)); -} +module.exports = __webpack_require__(139); -var _fsNormalized; +/***/ }), +/* 23 */ +/***/ (function(module, exports) { -function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(164); -} +var core = module.exports = { version: '2.5.7' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ }), +/* 24 */, +/* 25 */, +/* 26 */, +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { -const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { - R_OK: (_fs || _load_fs()).default.R_OK, - W_OK: (_fs || _load_fs()).default.W_OK, - X_OK: (_fs || _load_fs()).default.X_OK +var isObject = __webpack_require__(34); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; }; -const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - -const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile); -const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open); -const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile); -const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink); -const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath); -const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir); -const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename); -const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access); -const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat); -const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(116)); -const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true); -const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat); -const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod); -const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link); -const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default); -exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; - -// fs.copyFile uses the native file copying instructions on the system, performing much better -// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the -// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. - -const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - -const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); -const invariant = __webpack_require__(7); -const stripBOM = __webpack_require__(122); - -const noop = () => {}; - -function copy(src, dest, reporter) { - return copyBulk([{ src, dest }], reporter); -} - -function _readFile(loc, encoding) { - return new Promise((resolve, reject) => { - (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - }); -} - -function readFile(loc) { - return _readFile(loc, 'utf8').then(normalizeOS); -} - -function readFileRaw(loc) { - return _readFile(loc, 'binary'); -} - -function normalizeOS(body) { - return body.replace(/\r\n/g, '\n'); -} - -const cr = '\r'.charCodeAt(0); -const lf = '\n'.charCodeAt(0); /***/ }), -/* 6 */ +/* 28 */, +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30584,212 +30080,165 @@ const lf = '\n'.charCodeAt(0); Object.defineProperty(exports, "__esModule", { value: true }); -exports.getPathKey = getPathKey; -const os = __webpack_require__(36); -const path = __webpack_require__(0); -const userHome = __webpack_require__(45).default; - -var _require = __webpack_require__(171); - -const getCacheDir = _require.getCacheDir, - getConfigDir = _require.getConfigDir, - getDataDir = _require.getDataDir; - -const isWebpackBundle = __webpack_require__(227); +exports.normalizePattern = normalizePattern; -const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; -const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; -const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; +/** + * Explode and normalize a pattern into its name and range. + */ -const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; +function normalizePattern(pattern) { + let hasVersion = false; + let range = 'latest'; + let name = pattern; -const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; + // if we're a scope then remove the @ and add it back later + let isScoped = false; + if (name[0] === '@') { + isScoped = true; + name = name.slice(1); + } -const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; -const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; -const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; + // take first part as the name + const parts = name.split('@'); + if (parts.length > 1) { + name = parts.shift(); + range = parts.join('@'); -const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; + if (range) { + hasVersion = true; + } else { + range = '*'; + } + } -// cache version, bump whenever we make backwards incompatible changes -const CACHE_VERSION = exports.CACHE_VERSION = 2; + // add back @ scope suffix + if (isScoped) { + name = `@${name}`; + } -// lockfile version, bump whenever we make backwards incompatible changes -const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; + return { name, range, hasVersion }; +} -// max amount of network requests to perform concurrently -const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; +/***/ }), +/* 30 */, +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { -// HTTP timeout used when downloading packages -const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds +var dP = __webpack_require__(50); +var createDesc = __webpack_require__(106); +module.exports = __webpack_require__(33) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; -// max amount of child processes to execute concurrently -const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; -const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { -function getPreferredCacheDirectories() { - const preferredCacheDirectories = [getCacheDir()]; +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(63) +var Buffer = buffer.Buffer - if (process.getuid) { - // $FlowFixMe: process.getuid exists, dammit - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - - return preferredCacheDirectories; +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) } -const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); -const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); -const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); -const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); -const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) -const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; -const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} -// Webpack needs to be configured with node.__dirname/__filename = false -function getYarnBinPath() { - if (isWebpackBundle) { - return __filename; +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } } else { - return path.join(__dirname, '..', 'bin', 'yarn.js'); + buf.fill(0) } + return buf } -const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; -const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; - -const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; -const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); - -const META_FOLDER = exports.META_FOLDER = '.yarn-meta'; -const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; -const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; -const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; -const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; -const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; - -const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; -const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - -const DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; -const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; -const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; - -const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); - -function getPathKey(platform, env) { - let pathKey = 'PATH'; - - // windows calls its path "Path" usually, but this is not guaranteed. - if (platform === 'win32') { - pathKey = 'Path'; - - for (const key in env) { - if (key.toLowerCase() === 'path') { - pathKey = key; - } - } +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') } + return Buffer(size) +} - return pathKey; +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) } -const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { - major: 'red', - premajor: 'red', - minor: 'yellow', - preminor: 'yellow', - patch: 'green', - prepatch: 'green', - prerelease: 'red', - unchanged: 'white', - unknown: 'red' -}; /***/ }), -/* 7 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var NODE_ENV = "none"; +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(85)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); -var invariant = function(condition, format, a, b, c, d, e, f) { - if (NODE_ENV !== 'production') { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - } - if (!condition) { - var error; - if (format === undefined) { - error = new Error( - 'Minified exception occurred; use the non-minified dev environment ' + - 'for the full error message and additional helpful warnings.' - ); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error( - format.replace(/%s/g, function() { return args[argIndex++]; }) - ); - error.name = 'Invariant Violation'; - } +/***/ }), +/* 34 */ +/***/ (function(module, exports) { - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; }; -module.exports = invariant; - /***/ }), -/* 8 */, -/* 9 */ +/* 35 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(282); +module.exports = {}; + /***/ }), -/* 10 */, -/* 11 */ +/* 36 */ /***/ (function(module, exports) { -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - +module.exports = __webpack_require__(120); /***/ }), -/* 12 */ +/* 37 */, +/* 38 */, +/* 39 */, +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30798,115 +30247,164 @@ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef Object.defineProperty(exports, "__esModule", { value: true }); -exports.sortAlpha = sortAlpha; -exports.entries = entries; -exports.removePrefix = removePrefix; -exports.removeSuffix = removeSuffix; -exports.addSuffix = addSuffix; -exports.hyphenate = hyphenate; -exports.camelCase = camelCase; -exports.compareSortedArrays = compareSortedArrays; -exports.sleep = sleep; -const _camelCase = __webpack_require__(176); - -function sortAlpha(a, b) { - // sort alphabetically in a deterministic way - const shortLen = Math.min(a.length, b.length); - for (let i = 0; i < shortLen; i++) { - const aChar = a.charCodeAt(i); - const bChar = b.charCodeAt(i); - if (aChar !== bChar) { - return aChar - bChar; - } - } - return a.length - b.length; +exports.wait = wait; +exports.promisify = promisify; +exports.queue = queue; +function wait(delay) { + return new Promise(resolve => { + setTimeout(resolve, delay); + }); } -function entries(obj) { - const entries = []; - if (obj) { - for (const key in obj) { - entries.push([key, obj[key]]); - } - } - return entries; -} +function promisify(fn, firstData) { + return function (...args) { + return new Promise(function (resolve, reject) { + args.push(function (err, ...result) { + let res = result; -function removePrefix(pattern, prefix) { - if (pattern.startsWith(prefix)) { - pattern = pattern.slice(prefix.length); - } + if (result.length <= 1) { + res = result[0]; + } - return pattern; -} + if (firstData) { + res = err; + err = null; + } -function removeSuffix(pattern, suffix) { - if (pattern.endsWith(suffix)) { - return pattern.slice(0, -suffix.length); - } + if (err) { + reject(err); + } else { + resolve(res); + } + }); - return pattern; + fn.apply(null, args); + }); + }; } -function addSuffix(pattern, suffix) { - if (!pattern.endsWith(suffix)) { - return pattern + suffix; - } - - return pattern; -} +function queue(arr, promiseProducer, concurrency = Infinity) { + concurrency = Math.min(concurrency, arr.length); -function hyphenate(str) { - return str.replace(/[A-Z]/g, match => { - return '-' + match.charAt(0).toLowerCase(); - }); -} + // clone + arr = arr.slice(); -function camelCase(str) { - if (/[A-Z]/.test(str)) { - return null; - } else { - return _camelCase(str); + const results = []; + let total = arr.length; + if (!total) { + return Promise.resolve(results); } -} -function compareSortedArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (let i = 0, len = array1.length; i < len; i++) { - if (array1[i] !== array2[i]) { - return false; + return new Promise((resolve, reject) => { + for (let i = 0; i < concurrency; i++) { + next(); } - } - return true; -} -function sleep(ms) { - return new Promise(resolve => { - setTimeout(resolve, ms); + function next() { + const item = arr.shift(); + const promise = promiseProducer(item); + + promise.then(function (result) { + results.push(result); + + total--; + if (total === 0) { + resolve(results); + } else { + if (arr.length) { + next(); + } + } + }, reject); + } }); } /***/ }), -/* 13 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { -var store = __webpack_require__(107)('wks'); -var uid = __webpack_require__(111); -var Symbol = __webpack_require__(11).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; +var global = __webpack_require__(11); +var core = __webpack_require__(23); +var ctx = __webpack_require__(48); +var hide = __webpack_require__(31); +var has = __webpack_require__(49); +var PROTOTYPE = 'prototype'; -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var IS_WRAP = type & $export.W; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE]; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; + var key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if (own && has(exports, key)) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function (C) { + var F = function (a, b, c) { + if (this instanceof C) { + switch (arguments.length) { + case 0: return new C(); + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if (IS_PROTO) { + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); + } + } }; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; -$exports.store = store; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +try { + var util = __webpack_require__(2); + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + module.exports = __webpack_require__(224); +} /***/ }), -/* 14 */ +/* 43 */, +/* 44 */, +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30915,3396 +30413,2692 @@ $exports.store = store; Object.defineProperty(exports, "__esModule", { value: true }); -exports.stringify = exports.parse = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} +exports.home = undefined; -var _parse; +var _rootUser; -function _load_parse() { - return _parse = __webpack_require__(81); +function _load_rootUser() { + return _rootUser = _interopRequireDefault(__webpack_require__(169)); } -Object.defineProperty(exports, 'parse', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_parse || _load_parse()).default; - } -}); - -var _stringify; - -function _load_stringify() { - return _stringify = __webpack_require__(150); -} +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -Object.defineProperty(exports, 'stringify', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_stringify || _load_stringify()).default; - } -}); -exports.implodeEntry = implodeEntry; -exports.explodeEntry = explodeEntry; +const path = __webpack_require__(0); -var _misc; +const home = exports.home = __webpack_require__(36).homedir(); -function _load_misc() { - return _misc = __webpack_require__(12); -} +const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home; -var _normalizePattern; +exports.default = userHomeDir; -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(29); -} +/***/ }), +/* 46 */ +/***/ (function(module, exports) { -var _parse2; +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; -function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(81)); -} -var _constants; +/***/ }), +/* 47 */ +/***/ (function(module, exports) { -function _load_constants() { - return _constants = __webpack_require__(6); -} +var toString = {}.toString; -var _fs; +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(5)); -} -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// optional / simple context binding +var aFunction = __webpack_require__(46); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; -const invariant = __webpack_require__(7); -const path = __webpack_require__(0); -const ssri = __webpack_require__(55); +/***/ }), +/* 49 */ +/***/ (function(module, exports) { -function getName(pattern) { - return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; -} +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; -function blankObjectUndefined(obj) { - return obj && Object.keys(obj).length ? obj : undefined; -} -function keyForRemote(remote) { - return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null); -} +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { -function serializeIntegrity(integrity) { - // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output - // See https://git.io/vx2Hy - return integrity.toString().split(' ').sort().join(' '); -} +var anObject = __webpack_require__(27); +var IE8_DOM_DEFINE = __webpack_require__(184); +var toPrimitive = __webpack_require__(201); +var dP = Object.defineProperty; -function implodeEntry(pattern, obj) { - const inferredName = getName(pattern); - const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; - const imploded = { - name: inferredName === obj.name ? undefined : obj.name, - version: obj.version, - uid: obj.uid === obj.version ? undefined : obj.uid, - resolved: obj.resolved, - registry: obj.registry === 'npm' ? undefined : obj.registry, - dependencies: blankObjectUndefined(obj.dependencies), - optionalDependencies: blankObjectUndefined(obj.optionalDependencies), - permissions: blankObjectUndefined(obj.permissions), - prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants) - }; - if (integrity) { - imploded.integrity = integrity; - } - return imploded; -} +exports.f = __webpack_require__(33) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; -function explodeEntry(pattern, obj) { - obj.optionalDependencies = obj.optionalDependencies || {}; - obj.dependencies = obj.dependencies || {}; - obj.uid = obj.uid || obj.version; - obj.permissions = obj.permissions || {}; - obj.registry = obj.registry || 'npm'; - obj.name = obj.name || getName(pattern); - const integrity = obj.integrity; - if (integrity && integrity.isIntegrity) { - obj.integrity = ssri.parse(integrity); - } - return obj; -} -class Lockfile { - constructor({ cache, source, parseResultType } = {}) { - this.source = source || ''; - this.cache = cache; - this.parseResultType = parseResultType; - } +/***/ }), +/* 51 */, +/* 52 */, +/* 53 */, +/* 54 */ +/***/ (function(module, exports) { - // source string if the `cache` was parsed +module.exports = __webpack_require__(155); +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { - // if true, we're parsing an old yarn file and need to update integrity fields - hasEntriesExistWithoutIntegrity() { - if (!this.cache) { - return false; - } +"use strict"; - for (const key in this.cache) { - // $FlowFixMe - `this.cache` is clearly defined at this point - if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) { - return true; - } - } - return false; - } +const Buffer = __webpack_require__(32).Buffer - static fromDirectory(dir, reporter) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // read the manifest in this directory - const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); +const crypto = __webpack_require__(9) +const Transform = __webpack_require__(17).Transform - let lockfile; - let rawLockfile = ''; - let parseResult; +const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512'] - if (yield (_fs || _load_fs()).exists(lockfileLoc)) { - rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); - parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc); +const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i +const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/ +const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/ +const VCHAR_REGEX = /^[\x21-\x7E]+$/ - if (reporter) { - if (parseResult.type === 'merge') { - reporter.info(reporter.lang('lockfileMerged')); - } else if (parseResult.type === 'conflict') { - reporter.warn(reporter.lang('lockfileConflict')); - } - } +class Hash { + get isHash () { return true } + constructor (hash, opts) { + const strict = !!(opts && opts.strict) + this.source = hash.trim() + // 3.1. Integrity metadata (called "Hash" by ssri) + // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description + const match = this.source.match( + strict + ? STRICT_SRI_REGEX + : SRI_REGEX + ) + if (!match) { return } + if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return } + this.algorithm = match[1] + this.digest = match[2] - lockfile = parseResult.object; - } else if (reporter) { - reporter.info(reporter.lang('noLockfileFound')); + const rawOpts = match[3] + this.options = rawOpts ? rawOpts.slice(1).split('?') : [] + } + hexDigest () { + return this.digest && Buffer.from(this.digest, 'base64').toString('hex') + } + toJSON () { + return this.toString() + } + toString (opts) { + if (opts && opts.strict) { + // Strict mode enforces the standard as close to the foot of the + // letter as it can. + if (!( + // The spec has very restricted productions for algorithms. + // https://www.w3.org/TR/CSP2/#source-list-syntax + SPEC_ALGORITHMS.some(x => x === this.algorithm) && + // Usually, if someone insists on using a "different" base64, we + // leave it as-is, since there's multiple standards, and the + // specified is not a URL-safe variant. + // https://www.w3.org/TR/CSP2/#base64_value + this.digest.match(BASE64_REGEX) && + // Option syntax is strictly visual chars. + // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression + // https://tools.ietf.org/html/rfc5234#appendix-B.1 + (this.options || []).every(opt => opt.match(VCHAR_REGEX)) + )) { + return '' } - - return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); - })(); + } + const options = this.options && this.options.length + ? `?${this.options.join('?')}` + : '' + return `${this.algorithm}-${this.digest}${options}` } +} - getLocked(pattern) { - const cache = this.cache; - if (!cache) { - return undefined; +class Integrity { + get isIntegrity () { return true } + toJSON () { + return this.toString() + } + toString (opts) { + opts = opts || {} + let sep = opts.sep || ' ' + if (opts.strict) { + // Entries must be separated by whitespace, according to spec. + sep = sep.replace(/\S+/g, ' ') } - - const shrunk = pattern in cache && cache[pattern]; - - if (typeof shrunk === 'string') { - return this.getLocked(shrunk); - } else if (shrunk) { - explodeEntry(pattern, shrunk); - return shrunk; + return Object.keys(this).map(k => { + return this[k].map(hash => { + return Hash.prototype.toString.call(hash, opts) + }).filter(x => x.length).join(sep) + }).filter(x => x.length).join(sep) + } + concat (integrity, opts) { + const other = typeof integrity === 'string' + ? integrity + : stringify(integrity, opts) + return parse(`${this.toString(opts)} ${other}`, opts) + } + hexDigest () { + return parse(this, {single: true}).hexDigest() + } + match (integrity, opts) { + const other = parse(integrity, opts) + const algo = other.pickAlgorithm(opts) + return ( + this[algo] && + other[algo] && + this[algo].find(hash => + other[algo].find(otherhash => + hash.digest === otherhash.digest + ) + ) + ) || false + } + pickAlgorithm (opts) { + const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash + const keys = Object.keys(this) + if (!keys.length) { + throw new Error(`No algorithms available for ${ + JSON.stringify(this.toString()) + }`) } + return keys.reduce((acc, algo) => { + return pickAlgorithm(acc, algo) || acc + }) + } +} - return undefined; +module.exports.parse = parse +function parse (sri, opts) { + opts = opts || {} + if (typeof sri === 'string') { + return _parse(sri, opts) + } else if (sri.algorithm && sri.digest) { + const fullSri = new Integrity() + fullSri[sri.algorithm] = [sri] + return _parse(stringify(fullSri, opts), opts) + } else { + return _parse(stringify(sri, opts), opts) } +} - removePattern(pattern) { - const cache = this.cache; - if (!cache) { - return; - } - delete cache[pattern]; +function _parse (integrity, opts) { + // 3.4.3. Parse metadata + // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + if (opts.single) { + return new Hash(integrity, opts) } + return integrity.trim().split(/\s+/).reduce((acc, string) => { + const hash = new Hash(string, opts) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) +} - getLockfile(patterns) { - const lockfile = {}; - const seen = new Map(); +module.exports.stringify = stringify +function stringify (obj, opts) { + if (obj.algorithm && obj.digest) { + return Hash.prototype.toString.call(obj, opts) + } else if (typeof obj === 'string') { + return stringify(parse(obj, opts), opts) + } else { + return Integrity.prototype.toString.call(obj, opts) + } +} - // order by name so that lockfile manifest is assigned to the first dependency with this manifest - // the others that have the same remoteKey will just refer to the first - // ordering allows for consistency in lockfile when it is serialized - const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha); +module.exports.fromHex = fromHex +function fromHex (hexDigest, algorithm, opts) { + const optString = (opts && opts.options && opts.options.length) + ? `?${opts.options.join('?')}` + : '' + return parse( + `${algorithm}-${ + Buffer.from(hexDigest, 'hex').toString('base64') + }${optString}`, opts + ) +} - for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; +module.exports.fromData = fromData +function fromData (data, opts) { + opts = opts || {} + const algorithms = opts.algorithms || ['sha512'] + const optString = opts.options && opts.options.length + ? `?${opts.options.join('?')}` + : '' + return algorithms.reduce((acc, algo) => { + const digest = crypto.createHash(algo).update(data).digest('base64') + const hash = new Hash( + `${algo}-${digest}${optString}`, + opts + ) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) +} - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const pattern = _ref; - - const pkg = patterns[pattern]; - const remote = pkg._remote, - ref = pkg._reference; - - invariant(ref, 'Package is missing a reference'); - invariant(remote, 'Package is missing a remote'); - - const remoteKey = keyForRemote(remote); - const seenPattern = remoteKey && seen.get(remoteKey); - if (seenPattern) { - // no point in duplicating it - lockfile[pattern] = seenPattern; +module.exports.fromStream = fromStream +function fromStream (stream, opts) { + opts = opts || {} + const P = opts.Promise || Promise + const istream = integrityStream(opts) + return new P((resolve, reject) => { + stream.pipe(istream) + stream.on('error', reject) + istream.on('error', reject) + let sri + istream.on('integrity', s => { sri = s }) + istream.on('end', () => resolve(sri)) + istream.on('data', () => {}) + }) +} - // if we're relying on our name being inferred and two of the patterns have - // different inferred names then we need to set it - if (!seenPattern.name && getName(pattern) !== pkg.name) { - seenPattern.name = pkg.name; +module.exports.checkData = checkData +function checkData (data, sri, opts) { + opts = opts || {} + sri = parse(sri, opts) + if (!Object.keys(sri).length) { + if (opts.error) { + throw Object.assign( + new Error('No valid integrity hashes to check against'), { + code: 'EINTEGRITY' } - continue; - } - const obj = implodeEntry(pattern, { - name: pkg.name, - version: pkg.version, - uid: pkg._uid, - resolved: remote.resolved, - integrity: remote.integrity, - registry: remote.registry, - dependencies: pkg.dependencies, - peerDependencies: pkg.peerDependencies, - optionalDependencies: pkg.optionalDependencies, - permissions: ref.permissions, - prebuiltVariants: pkg.prebuiltVariants - }); - - lockfile[pattern] = obj; - - if (remoteKey) { - seen.set(remoteKey, obj); - } + ) + } else { + return false } - - return lockfile; + } + const algorithm = sri.pickAlgorithm(opts) + const digest = crypto.createHash(algorithm).update(data).digest('base64') + const newSri = parse({algorithm, digest}) + const match = newSri.match(sri, opts) + if (match || !opts.error) { + return match + } else if (typeof opts.size === 'number' && (data.length !== opts.size)) { + const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`) + err.code = 'EBADSIZE' + err.found = data.length + err.expected = opts.size + err.sri = sri + throw err + } else { + const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`) + err.code = 'EINTEGRITY' + err.found = newSri + err.expected = sri + err.algorithm = algorithm + err.sri = sri + throw err } } -exports.default = Lockfile; - -/***/ }), -/* 15 */, -/* 16 */, -/* 17 */ -/***/ (function(module, exports) { - -module.exports = __webpack_require__(137); - -/***/ }), -/* 18 */, -/* 19 */, -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; +module.exports.checkStream = checkStream +function checkStream (stream, sri, opts) { + opts = opts || {} + const P = opts.Promise || Promise + const checker = integrityStream(Object.assign({}, opts, { + integrity: sri + })) + return new P((resolve, reject) => { + stream.pipe(checker) + stream.on('error', reject) + checker.on('error', reject) + let sri + checker.on('verified', s => { sri = s }) + checker.on('end', () => resolve(sri)) + checker.on('data', () => {}) + }) +} -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = nullify; -function nullify(obj = {}) { - if (Array.isArray(obj)) { - for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; +module.exports.integrityStream = integrityStream +function integrityStream (opts) { + opts = opts || {} + // For verification + const sri = opts.integrity && parse(opts.integrity, opts) + const goodSri = sri && Object.keys(sri).length + const algorithm = goodSri && sri.pickAlgorithm(opts) + const digests = goodSri && sri[algorithm] + // Calculating stream + const algorithms = Array.from( + new Set( + (opts.algorithms || ['sha512']) + .concat(algorithm ? [algorithm] : []) + ) + ) + const hashes = algorithms.map(crypto.createHash) + let streamSize = 0 + const stream = new Transform({ + transform (chunk, enc, cb) { + streamSize += chunk.length + hashes.forEach(h => h.update(chunk, enc)) + cb(null, chunk, enc) + } + }).on('end', () => { + const optString = (opts.options && opts.options.length) + ? `?${opts.options.join('?')}` + : '' + const newSri = parse(hashes.map((h, i) => { + return `${algorithms[i]}-${h.digest('base64')}${optString}` + }).join(' '), opts) + // Integrity verification mode + const match = goodSri && newSri.match(sri, opts) + if (typeof opts.size === 'number' && streamSize !== opts.size) { + const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`) + err.code = 'EBADSIZE' + err.found = streamSize + err.expected = opts.size + err.sri = sri + stream.emit('error', err) + } else if (opts.integrity && !match) { + const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`) + err.code = 'EINTEGRITY' + err.found = newSri + err.expected = digests + err.algorithm = algorithm + err.sri = sri + stream.emit('error', err) + } else { + stream.emit('size', streamSize) + stream.emit('integrity', newSri) + match && stream.emit('verified', match) + } + }) + return stream +} - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } +module.exports.create = createIntegrity +function createIntegrity (opts) { + opts = opts || {} + const algorithms = opts.algorithms || ['sha512'] + const optString = opts.options && opts.options.length + ? `?${opts.options.join('?')}` + : '' - const item = _ref; + const hashes = algorithms.map(crypto.createHash) - nullify(item); - } - } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { - Object.setPrototypeOf(obj, null); + return { + update: function (chunk, enc) { + hashes.forEach(h => h.update(chunk, enc)) + return this + }, + digest: function (enc) { + const integrity = algorithms.reduce((acc, algo) => { + const digest = hashes.shift().digest('base64') + const hash = new Hash( + `${algo}-${digest}${optString}`, + opts + ) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) - // for..in can only be applied to 'object', not 'function' - if (typeof obj === 'object') { - for (const key in obj) { - nullify(obj[key]); - } + return integrity } } - - return obj; } -/***/ }), -/* 21 */, -/* 22 */ -/***/ (function(module, exports) { - -module.exports = __webpack_require__(139); +const NODE_HASHES = new Set(crypto.getHashes()) -/***/ }), -/* 23 */ -/***/ (function(module, exports) { +// This is a Best Effort™ at a reasonable priority for hash algos +const DEFAULT_PRIORITY = [ + 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', + // TODO - it's unclear _which_ of these Node will actually use as its name + // for the algorithm, so we guesswork it based on the OpenSSL names. + 'sha3', + 'sha3-256', 'sha3-384', 'sha3-512', + 'sha3_256', 'sha3_384', 'sha3_512' +].filter(algo => NODE_HASHES.has(algo)) -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef +function getPrioritizedHash (algo1, algo2) { + return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase()) + ? algo1 + : algo2 +} /***/ }), -/* 24 */, -/* 25 */, -/* 26 */, -/* 27 */ +/* 56 */, +/* 57 */, +/* 58 */, +/* 59 */, +/* 60 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(34); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; +module.exports = minimatch +minimatch.Minimatch = Minimatch +var path = { sep: '/' } +try { + path = __webpack_require__(0) +} catch (er) {} -/***/ }), -/* 28 */, -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = __webpack_require__(175) -"use strict"; +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.normalizePattern = normalizePattern; +// * => any number of characters +var star = qmark + '*?' -/** - * Explode and normalize a pattern into its name and range. - */ +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' -function normalizePattern(pattern) { - let hasVersion = false; - let range = 'latest'; - let name = pattern; +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - // if we're a scope then remove the @ and add it back later - let isScoped = false; - if (name[0] === '@') { - isScoped = true; - name = name.slice(1); - } +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') - // take first part as the name - const parts = name.split('@'); - if (parts.length > 1) { - name = parts.shift(); - range = parts.join('@'); +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} - if (range) { - hasVersion = true; - } else { - range = '*'; - } - } +// normalizes slashes. +var slashSplit = /\/+/ - // add back @ scope suffix - if (isScoped) { - name = `@${name}`; +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) } - - return { name, range, hasVersion }; } -/***/ }), -/* 30 */, -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(50); -var createDesc = __webpack_require__(106); -module.exports = __webpack_require__(33) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { + var orig = minimatch -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(63) -var Buffer = buffer.Buffer + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) + return m } -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch } -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') } - return buf -} -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} + if (!options) options = {} -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false } - return buffer.SlowBuffer(size) -} + // "" only matches "" + if (pattern.trim() === '') return p === '' -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(85)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); + return new Minimatch(pattern, options).match(p) +} +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } -/***/ }), -/* 34 */ -/***/ (function(module, exports) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; + if (!options) options = {} + pattern = pattern.trim() + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } -/***/ }), -/* 35 */ -/***/ (function(module, exports) { + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false -module.exports = {}; + // make the set of regexps etc. + this.make() +} +Minimatch.prototype.debug = function () {} -/***/ }), -/* 36 */ -/***/ (function(module, exports) { +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return -module.exports = __webpack_require__(120); + var pattern = this.pattern + var options = this.options -/***/ }), -/* 37 */, -/* 38 */, -/* 39 */, -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } -"use strict"; + // step 1: figure out negation, etc. + this.parseNegate() + // step 2: expand braces + var set = this.globSet = this.braceExpand() -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.wait = wait; -exports.promisify = promisify; -exports.queue = queue; -function wait(delay) { - return new Promise(resolve => { - setTimeout(resolve, delay); - }); -} + if (options.debug) this.debug = console.error -function promisify(fn, firstData) { - return function (...args) { - return new Promise(function (resolve, reject) { - args.push(function (err, ...result) { - let res = result; + this.debug(this.pattern, set) - if (result.length <= 1) { - res = result[0]; - } + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) - if (firstData) { - res = err; - err = null; - } + this.debug(this.pattern, set) - if (err) { - reject(err); - } else { - resolve(res); - } - }); + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) - fn.apply(null, args); - }); - }; -} + this.debug(this.pattern, set) -function queue(arr, promiseProducer, concurrency = Infinity) { - concurrency = Math.min(concurrency, arr.length); + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) - // clone - arr = arr.slice(); + this.debug(this.pattern, set) - const results = []; - let total = arr.length; - if (!total) { - return Promise.resolve(results); - } + this.set = set +} - return new Promise((resolve, reject) => { - for (let i = 0; i < concurrency; i++) { - next(); - } +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 - function next() { - const item = arr.shift(); - const promise = promiseProducer(item); + if (options.nonegate) return - promise.then(function (result) { - results.push(result); + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } - total--; - if (total === 0) { - resolve(results); - } else { - if (arr.length) { - next(); - } - } - }, reject); - } - }); + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate } -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} -var global = __webpack_require__(11); -var core = __webpack_require__(23); -var ctx = __webpack_require__(48); -var hide = __webpack_require__(31); -var has = __webpack_require__(49); -var PROTOTYPE = 'prototype'; +Minimatch.prototype.braceExpand = braceExpand -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} } } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } -try { - var util = __webpack_require__(2); - if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; -} catch (e) { - module.exports = __webpack_require__(224); + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) } +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } -/***/ }), -/* 43 */, -/* 44 */, -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { + var options = this.options -"use strict"; + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.home = undefined; + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } -var _rootUser; + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) -function _load_rootUser() { - return _rootUser = _interopRequireDefault(__webpack_require__(169)); -} + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false -const path = __webpack_require__(0); + case '\\': + clearStateChar() + escaping = true + continue -const home = exports.home = __webpack_require__(36).homedir(); + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) -const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home; + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } -exports.default = userHomeDir; + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue -/***/ }), -/* 46 */ -/***/ (function(module, exports) { + case '(': + if (inClass) { + re += '(' + continue + } -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; + if (!stateChar) { + re += '\\(' + continue + } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue -/***/ }), -/* 47 */ -/***/ (function(module, exports) { + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } -var toString = {}.toString; + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + clearStateChar() + re += '|' + continue -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() -// optional / simple context binding -var aFunction = __webpack_require__(46); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; + if (inClass) { + re += '\\' + c + continue + } + inClass = true + classStart = i + reClassStart = re.length + re += c + continue -/***/ }), -/* 49 */ -/***/ (function(module, exports) { + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + // finish up the class. + hasMagic = true + inClass = false + re += c + continue -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { + default: + // swallow any state char that wasn't consumed + clearStateChar() -var anObject = __webpack_require__(27); -var IE8_DOM_DEFINE = __webpack_require__(184); -var toPrimitive = __webpack_require__(201); -var dP = Object.defineProperty; + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } -exports.f = __webpack_require__(33) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; + re += c + } // switch + } // for -/***/ }), -/* 51 */, -/* 52 */, -/* 53 */, -/* 54 */ -/***/ (function(module, exports) { + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } -module.exports = __webpack_require__(155); + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) -"use strict"; + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } -const Buffer = __webpack_require__(32).Buffer + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } -const crypto = __webpack_require__(9) -const Transform = __webpack_require__(17).Transform + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } -const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512'] + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] -const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i -const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/ -const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/ -const VCHAR_REGEX = /^[\x21-\x7E]+$/ + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) -class Hash { - get isHash () { return true } - constructor (hash, opts) { - const strict = !!(opts && opts.strict) - this.source = hash.trim() - // 3.1. Integrity metadata (called "Hash" by ssri) - // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description - const match = this.source.match( - strict - ? STRICT_SRI_REGEX - : SRI_REGEX - ) - if (!match) { return } - if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return } - this.algorithm = match[1] - this.digest = match[2] + nlLast += nlAfter - const rawOpts = match[3] - this.options = rawOpts ? rawOpts.slice(1).split('?') : [] - } - hexDigest () { - return this.digest && Buffer.from(this.digest, 'base64').toString('hex') - } - toJSON () { - return this.toString() - } - toString (opts) { - if (opts && opts.strict) { - // Strict mode enforces the standard as close to the foot of the - // letter as it can. - if (!( - // The spec has very restricted productions for algorithms. - // https://www.w3.org/TR/CSP2/#source-list-syntax - SPEC_ALGORITHMS.some(x => x === this.algorithm) && - // Usually, if someone insists on using a "different" base64, we - // leave it as-is, since there's multiple standards, and the - // specified is not a URL-safe variant. - // https://www.w3.org/TR/CSP2/#base64_value - this.digest.match(BASE64_REGEX) && - // Option syntax is strictly visual chars. - // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression - // https://tools.ietf.org/html/rfc5234#appendix-B.1 - (this.options || []).every(opt => opt.match(VCHAR_REGEX)) - )) { - return '' - } + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') } - const options = this.options && this.options.length - ? `?${this.options.join('?')}` - : '' - return `${this.algorithm}-${this.digest}${options}` - } -} + nlAfter = cleanAfter -class Integrity { - get isIntegrity () { return true } - toJSON () { - return this.toString() - } - toString (opts) { - opts = opts || {} - let sep = opts.sep || ' ' - if (opts.strict) { - // Entries must be separated by whitespace, according to spec. - sep = sep.replace(/\S+/g, ' ') + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' } - return Object.keys(this).map(k => { - return this[k].map(hash => { - return Hash.prototype.toString.call(hash, opts) - }).filter(x => x.length).join(sep) - }).filter(x => x.length).join(sep) - } - concat (integrity, opts) { - const other = typeof integrity === 'string' - ? integrity - : stringify(integrity, opts) - return parse(`${this.toString(opts)} ${other}`, opts) - } - hexDigest () { - return parse(this, {single: true}).hexDigest() + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe } - match (integrity, opts) { - const other = parse(integrity, opts) - const algo = other.pickAlgorithm(opts) - return ( - this[algo] && - other[algo] && - this[algo].find(hash => - other[algo].find(otherhash => - hash.digest === otherhash.digest - ) - ) - ) || false + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re } - pickAlgorithm (opts) { - const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash - const keys = Object.keys(this) - if (!keys.length) { - throw new Error(`No algorithms available for ${ - JSON.stringify(this.toString()) - }`) - } - return keys.reduce((acc, algo) => { - return pickAlgorithm(acc, algo) || acc - }) + + if (addPatternStart) { + re = patternStart + re } -} -module.exports.parse = parse -function parse (sri, opts) { - opts = opts || {} - if (typeof sri === 'string') { - return _parse(sri, opts) - } else if (sri.algorithm && sri.digest) { - const fullSri = new Integrity() - fullSri[sri.algorithm] = [sri] - return _parse(stringify(fullSri, opts), opts) - } else { - return _parse(stringify(sri, opts), opts) + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] } -} -function _parse (integrity, opts) { - // 3.4.3. Parse metadata - // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - if (opts.single) { - return new Hash(integrity, opts) + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) } - return integrity.trim().split(/\s+/).reduce((acc, string) => { - const hash = new Hash(string, opts) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) -} -module.exports.stringify = stringify -function stringify (obj, opts) { - if (obj.algorithm && obj.digest) { - return Hash.prototype.toString.call(obj, opts) - } else if (typeof obj === 'string') { - return stringify(parse(obj, opts), opts) - } else { - return Integrity.prototype.toString.call(obj, opts) + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') } -} -module.exports.fromHex = fromHex -function fromHex (hexDigest, algorithm, opts) { - const optString = (opts && opts.options && opts.options.length) - ? `?${opts.options.join('?')}` - : '' - return parse( - `${algorithm}-${ - Buffer.from(hexDigest, 'hex').toString('base64') - }${optString}`, opts - ) -} + regExp._glob = pattern + regExp._src = re -module.exports.fromData = fromData -function fromData (data, opts) { - opts = opts || {} - const algorithms = opts.algorithms || ['sha512'] - const optString = opts.options && opts.options.length - ? `?${opts.options.join('?')}` - : '' - return algorithms.reduce((acc, algo) => { - const digest = crypto.createHash(algo).update(data).digest('base64') - const hash = new Hash( - `${algo}-${digest}${optString}`, - opts - ) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) + return regExp } -module.exports.fromStream = fromStream -function fromStream (stream, opts) { - opts = opts || {} - const P = opts.Promise || Promise - const istream = integrityStream(opts) - return new P((resolve, reject) => { - stream.pipe(istream) - stream.on('error', reject) - istream.on('error', reject) - let sri - istream.on('integrity', s => { sri = s }) - istream.on('end', () => resolve(sri)) - istream.on('data', () => {}) - }) +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() } -module.exports.checkData = checkData -function checkData (data, sri, opts) { - opts = opts || {} - sri = parse(sri, opts) - if (!Object.keys(sri).length) { - if (opts.error) { - throw Object.assign( - new Error('No valid integrity hashes to check against'), { - code: 'EINTEGRITY' - } - ) - } else { - return false - } - } - const algorithm = sri.pickAlgorithm(opts) - const digest = crypto.createHash(algorithm).update(data).digest('base64') - const newSri = parse({algorithm, digest}) - const match = newSri.match(sri, opts) - if (match || !opts.error) { - return match - } else if (typeof opts.size === 'number' && (data.length !== opts.size)) { - const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`) - err.code = 'EBADSIZE' - err.found = data.length - err.expected = opts.size - err.sri = sri - throw err - } else { - const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`) - err.code = 'EINTEGRITY' - err.found = newSri - err.expected = sri - err.algorithm = algorithm - err.sri = sri - throw err +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp } -} + var options = this.options -module.exports.checkStream = checkStream -function checkStream (stream, sri, opts) { - opts = opts || {} - const P = opts.Promise || Promise - const checker = integrityStream(Object.assign({}, opts, { - integrity: sri - })) - return new P((resolve, reject) => { - stream.pipe(checker) - stream.on('error', reject) - checker.on('error', reject) - let sri - checker.on('verified', s => { sri = s }) - checker.on('end', () => resolve(sri)) - checker.on('data', () => {}) - }) -} + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' -module.exports.integrityStream = integrityStream -function integrityStream (opts) { - opts = opts || {} - // For verification - const sri = opts.integrity && parse(opts.integrity, opts) - const goodSri = sri && Object.keys(sri).length - const algorithm = goodSri && sri.pickAlgorithm(opts) - const digests = goodSri && sri[algorithm] - // Calculating stream - const algorithms = Array.from( - new Set( - (opts.algorithms || ['sha512']) - .concat(algorithm ? [algorithm] : []) - ) - ) - const hashes = algorithms.map(crypto.createHash) - let streamSize = 0 - const stream = new Transform({ - transform (chunk, enc, cb) { - streamSize += chunk.length - hashes.forEach(h => h.update(chunk, enc)) - cb(null, chunk, enc) - } - }).on('end', () => { - const optString = (opts.options && opts.options.length) - ? `?${opts.options.join('?')}` - : '' - const newSri = parse(hashes.map((h, i) => { - return `${algorithms[i]}-${h.digest('base64')}${optString}` - }).join(' '), opts) - // Integrity verification mode - const match = goodSri && newSri.match(sri, opts) - if (typeof opts.size === 'number' && streamSize !== opts.size) { - const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`) - err.code = 'EBADSIZE' - err.found = streamSize - err.expected = opts.size - err.sri = sri - stream.emit('error', err) - } else if (opts.integrity && !match) { - const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`) - err.code = 'EINTEGRITY' - err.found = newSri - err.expected = digests - err.algorithm = algorithm - err.sri = sri - stream.emit('error', err) - } else { - stream.emit('size', streamSize) - stream.emit('integrity', newSri) - match && stream.emit('verified', match) - } - }) - return stream -} + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') -module.exports.create = createIntegrity -function createIntegrity (opts) { - opts = opts || {} - const algorithms = opts.algorithms || ['sha512'] - const optString = opts.options && opts.options.length - ? `?${opts.options.join('?')}` - : '' + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' - const hashes = algorithms.map(crypto.createHash) + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' - return { - update: function (chunk, enc) { - hashes.forEach(h => h.update(chunk, enc)) - return this - }, - digest: function (enc) { - const integrity = algorithms.reduce((acc, algo) => { - const digest = hashes.shift().digest('base64') - const hash = new Hash( - `${algo}-${digest}${optString}`, - opts - ) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} - return integrity - } +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) } + return list } -const NODE_HASHES = new Set(crypto.getHashes()) +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' -// This is a Best Effort™ at a reasonable priority for hash algos -const DEFAULT_PRIORITY = [ - 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', - // TODO - it's unclear _which_ of these Node will actually use as its name - // for the algorithm, so we guesswork it based on the OpenSSL names. - 'sha3', - 'sha3-256', 'sha3-384', 'sha3-512', - 'sha3_256', 'sha3_384', 'sha3_512' -].filter(algo => NODE_HASHES.has(algo)) + if (f === '/' && partial) return true -function getPrioritizedHash (algo1, algo2) { - return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase()) - ? algo1 - : algo2 -} + var options = this.options + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } -/***/ }), -/* 56 */, -/* 57 */, -/* 58 */, -/* 59 */, -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) -module.exports = minimatch -minimatch.Minimatch = Minimatch + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. -var path = { sep: '/' } -try { - path = __webpack_require__(0) -} catch (er) {} + var set = this.set + this.debug(this.pattern, 'set', set) -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__(175) + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } -var plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' } + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate } -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options -// * => any number of characters -var star = qmark + '*?' + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + this.debug('matchOne', file.length, pattern.length) -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') + this.debug(pattern, p, f) -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false -// normalizes slashes. -var slashSplit = /\/+/ + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - var orig = minimatch + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false } - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd } - return m + // should be unreachable. + throw new Error('wtf?') } -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') } -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} - if (!options) options = {} - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { - // "" only matches "" - if (pattern.trim() === '') return p === '' +var wrappy = __webpack_require__(123) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) - return new Minimatch(pattern, options).match(p) -} +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) } + f.called = false + return f +} - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f } -Minimatch.prototype.debug = function () {} -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return +/***/ }), +/* 62 */, +/* 63 */ +/***/ (function(module, exports) { - var pattern = this.pattern - var options = this.options +module.exports = __webpack_require__(281); - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } +/***/ }), +/* 64 */, +/* 65 */, +/* 66 */, +/* 67 */ +/***/ (function(module, exports) { - // step 1: figure out negation, etc. - this.parseNegate() +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; - // step 2: expand braces - var set = this.globSet = this.braceExpand() - if (options.debug) this.debug = console.error +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { - this.debug(this.pattern, set) +var isObject = __webpack_require__(34); +var document = __webpack_require__(11).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - this.debug(this.pattern, set) +/***/ }), +/* 69 */ +/***/ (function(module, exports) { - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) +module.exports = true; - this.debug(this.pattern, set) - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { - this.debug(this.pattern, set) +"use strict"; - this.set = set -} +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = __webpack_require__(46); -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} - if (options.nonegate) return +module.exports.f = function (C) { + return new PromiseCapability(C); +}; - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} +var def = __webpack_require__(50).f; +var has = __webpack_require__(49); +var TAG = __webpack_require__(13)('toStringTag'); -Minimatch.prototype.braceExpand = braceExpand +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { - if (typeof pattern === 'undefined') { - throw new TypeError('undefined pattern') - } +var shared = __webpack_require__(107)('keys'); +var uid = __webpack_require__(111); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - return expand(pattern) -} +/***/ }), +/* 73 */ +/***/ (function(module, exports) { -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - if (pattern.length > 1024 * 64) { - throw new TypeError('pattern is too long') - } +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; - var options = this.options - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(131); +var defined = __webpack_require__(67); +module.exports = function (it) { + return IObject(defined(it)); +}; - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false +module.exports = glob - case '\\': - clearStateChar() - escaping = true - continue +var fs = __webpack_require__(3) +var rp = __webpack_require__(114) +var minimatch = __webpack_require__(60) +var Minimatch = minimatch.Minimatch +var inherits = __webpack_require__(42) +var EE = __webpack_require__(54).EventEmitter +var path = __webpack_require__(0) +var assert = __webpack_require__(22) +var isAbsolute = __webpack_require__(76) +var globSync = __webpack_require__(218) +var common = __webpack_require__(115) +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = __webpack_require__(223) +var util = __webpack_require__(2) +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) +var once = __webpack_require__(61) - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } - case '(': - if (inClass) { - re += '(' - continue - } + return new Glob(pattern, options, cb) +} - if (!stateChar) { - re += '\\(' - continue - } +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue +// old api surface +glob.glob = glob - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } +function extend (origin, add) { + if (add === null || typeof add !== 'object') { + return origin + } - clearStateChar() - hasMagic = true - var pl = patternListStack.pop() - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close - if (pl.type === '!') { - negativeLists.push(pl) - } - pl.reEnd = re.length - continue + var keys = Object.keys(add) + var i = keys.length + while (i--) { + origin[keys[i]] = add[keys[i]] + } + return origin +} - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } +glob.hasMagic = function (pattern, options_) { + var options = extend({}, options_) + options.noprocess = true - clearStateChar() - re += '|' - continue + var g = new Glob(pattern, options) + var set = g.minimatch.set - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() + if (!pattern) + return false - if (inClass) { - re += '\\' + c - continue - } + if (set.length > 1) + return true - inClass = true - classStart = i - reClassStart = re.length - re += c - continue + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } + return false +} - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } - // finish up the class. - hasMagic = true - inClass = false - re += c - continue + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } - default: - // swallow any state char that wasn't consumed - clearStateChar() + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } + setopts(this, pattern, options) + this._didRealPath = false - re += c + // process each pattern in the minimatch set + var n = this.minimatch.set.length - } // switch - } // for + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) } - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length) - this.debug('setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } + var self = this + this._processing = 0 - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) + this._emitQueue = [] + this._processQueue = [] + this.paused = false - this.debug('tail=%j\n %s', tail, tail, pl, re) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type + if (this.noprocess) + return this - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } + if (n === 0) + return done() - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' + var sync = true + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) } + sync = false - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true + function done () { + --self._processing + if (self._processing <= 0) { + if (sync) { + process.nextTick(function () { + self._finish() + }) + } else { + self._finish() + } + } } +} - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) + if (this.realpath && !this._didRealpath) + return this._realpath() - nlLast += nlAfter + common.finish(this) + this.emit('end', this.found) +} - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter +Glob.prototype._realpath = function () { + if (this._didRealpath) + return - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } + this._didRealpath = true - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } + var n = this.matches.length + if (n === 0) + return this._finish() - if (addPatternStart) { - re = patternStart + re - } + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] + function next () { + if (--n === 0) + self._finish() } +} - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() - var flags = options.nocase ? 'i' : '' - try { - var regExp = new RegExp('^' + re + '$', flags) - } catch (er) { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } + var found = Object.keys(matchset) + var self = this + var n = found.length - regExp._glob = pattern - regExp._src = re + if (n === 0) + return cb() - return regExp -} + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + rp.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) } -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') } - return this.regexp } -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } } - return list } -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') - var options = this.options + if (this.aborted) + return - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return } - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) + //console.error('PROCESS %d', this._processing, pattern) - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. - var set = this.set - this.debug(this.pattern, 'set', set) + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break } - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} + var remain = pattern.slice(n) -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) + var abs = this._makeAbs(read) - this.debug('matchOne', file.length, pattern.length) + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} - this.debug(pattern, p, f) +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) } + if (m) + matchedEntries.push(e) + } + } - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e } - return false - } - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) + this._emitMatch(index, e) } - - if (!hit) return false + // This was the last one, and no stats were needed + return cb() } - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) } - - // should be unreachable. - throw new Error('wtf?') + cb() } -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} + if (isIgnored(this, e)) + return + if (this.paused) { + this._emitQueue.push([index, e]) + return + } -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { + var abs = isAbsolute(e) ? e : this._makeAbs(e) -var wrappy = __webpack_require__(123) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) + if (this.mark) + e = this._mark(e) -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) + if (this.absolute) + e = abs - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) + if (this.matches[index][e]) + return -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return } - f.called = false - return f -} -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} + this.matches[index][e] = true + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) -/***/ }), -/* 62 */, -/* 63 */ -/***/ (function(module, exports) { + this.emit('match', e) +} -module.exports = __webpack_require__(285); +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return -/***/ }), -/* 64 */, -/* 65 */, -/* 66 */, -/* 67 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { + if (lstatcb) + fs.lstat(abs, lstatcb) -var isObject = __webpack_require__(34); -var document = __webpack_require__(11).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; + function lstatcb_ (er, lstat) { + if (er && er.code === 'ENOENT') + return cb() + var isSym = lstat && lstat.isSymbolicLink() + self.symlinks[abs] = isSym -/***/ }), -/* 69 */ -/***/ (function(module, exports) { + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} -module.exports = true; +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return -/***/ }), -/* 70 */ -/***/ (function(module, exports, __webpack_require__) { + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) -"use strict"; + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() -// 25.4.1.5 NewPromiseCapability(C) -var aFunction = __webpack_require__(46); + if (Array.isArray(c)) + return cb(null, c) + } -function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) } -module.exports.f = function (C) { - return new PromiseCapability(C); -}; - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} -var def = __webpack_require__(50).f; -var has = __webpack_require__(49); -var TAG = __webpack_require__(13)('toStringTag'); +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + this.cache[abs] = entries + return cb(null, entries) +} -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return -var shared = __webpack_require__(107)('keys'); -var uid = __webpack_require__(111); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + this.emit('error', error) + this.abort() + } + break + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break -/***/ }), -/* 73 */ -/***/ (function(module, exports) { + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; + return cb() +} +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} -/***/ }), -/* 74 */ -/***/ (function(module, exports, __webpack_require__) { -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(131); -var defined = __webpack_require__(67); -module.exports = function (it) { - return IObject(defined(it)); -}; +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern, false) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern, inGlobStar) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// -// If inGlobStar and PREFIX is symlink and points to dir -// set ENTRIES = [] -// else readdir(PREFIX) as ENTRIES -// If fail, END -// -// with ENTRIES -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// // Mark that this entry is a globstar match -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) -module.exports = glob + var isSym = this.symlinks[abs] + var len = entries.length -var fs = __webpack_require__(3) -var rp = __webpack_require__(114) -var minimatch = __webpack_require__(60) -var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__(42) -var EE = __webpack_require__(54).EventEmitter -var path = __webpack_require__(0) -var assert = __webpack_require__(22) -var isAbsolute = __webpack_require__(76) -var globSync = __webpack_require__(218) -var common = __webpack_require__(115) -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var setopts = common.setopts -var ownProp = common.ownProp -var inflight = __webpack_require__(223) -var util = __webpack_require__(2) -var childrenIgnored = common.childrenIgnored -var isIgnored = common.isIgnored + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() -var once = __webpack_require__(61) + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue -function glob (pattern, options, cb) { - if (typeof options === 'function') cb = options, options = {} - if (!options) options = {} + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) - if (options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return globSync(pattern, options) + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) } - return new Glob(pattern, options, cb) + cb() } -glob.sync = globSync -var GlobSync = glob.GlobSync = globSync.GlobSync - -// old api surface -glob.glob = glob - -function extend (origin, add) { - if (add === null || typeof add !== 'object') { - return origin - } - - var keys = Object.keys(add) - var i = keys.length - while (i--) { - origin[keys[i]] = add[keys[i]] - } - return origin +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) } +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { -glob.hasMagic = function (pattern, options_) { - var options = extend({}, options_) - options.noprocess = true - - var g = new Glob(pattern, options) - var set = g.minimatch.set + //console.error('ps2', prefix, exists) - if (!pattern) - return false + if (!this.matches[index]) + this.matches[index] = Object.create(null) - if (set.length > 1) - return true + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() - for (var j = 0; j < set[0].length; j++) { - if (typeof set[0][j] !== 'string') - return true + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } } - return false + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() } -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' - if (options && options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return new GlobSync(pattern, options) - } + if (f.length > this.maxLength) + return cb() - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb) + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] - setopts(this, pattern, options) - this._didRealPath = false + if (Array.isArray(c)) + c = 'DIR' - // process each pattern in the minimatch set - var n = this.minimatch.set.length + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) + if (needDir && c === 'FILE') + return cb() - if (typeof cb === 'function') { - cb = once(cb) - this.on('error', cb) - this.on('end', function (matches) { - cb(null, matches) - }) + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. } - var self = this - this._processing = 0 - - this._emitQueue = [] - this._processQueue = [] - this.paused = false - - if (this.noprocess) - return this - - if (n === 0) - return done() - - var sync = true - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false, done) + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } } - sync = false - function done () { - --self._processing - if (self._processing <= 0) { - if (sync) { - process.nextTick(function () { - self._finish() - }) - } else { - self._finish() - } + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) } } } -Glob.prototype._finish = function () { - assert(this instanceof Glob) - if (this.aborted) - return +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return cb() + } - if (this.realpath && !this._didRealpath) - return this._realpath() + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat - common.finish(this) - this.emit('end', this.found) -} + if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) + return cb(null, false, stat) -Glob.prototype._realpath = function () { - if (this._didRealpath) - return + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c - this._didRealpath = true + if (needDir && c === 'FILE') + return cb() - var n = this.matches.length - if (n === 0) - return this._finish() + return cb(null, c, stat) +} - var self = this - for (var i = 0; i < this.matches.length; i++) - this._realpathSet(i, next) - function next () { - if (--n === 0) - self._finish() - } -} +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { -Glob.prototype._realpathSet = function (index, cb) { - var matchset = this.matches[index] - if (!matchset) - return cb() +"use strict"; - var found = Object.keys(matchset) - var self = this - var n = found.length - if (n === 0) - return cb() +function posix(path) { + return path.charAt(0) === '/'; +} - var set = this.matches[index] = Object.create(null) - found.forEach(function (p, i) { - // If there's a problem with the stat, then it means that - // one or more of the links in the realpath couldn't be - // resolved. just return the abs value in that case. - p = self._makeAbs(p) - rp.realpath(p, self.realpathCache, function (er, real) { - if (!er) - set[real] = true - else if (er.syscall === 'stat') - set[p] = true - else - self.emit('error', er) // srsly wtf right here +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); - if (--n === 0) { - self.matches[index] = set - cb() - } - }) - }) + // UNC paths are always absolute + return Boolean(result[2] || isUnc); } -Glob.prototype._mark = function (p) { - return common.mark(this, p) -} +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; -Glob.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} -Glob.prototype.abort = function () { - this.aborted = true - this.emit('abort') -} +/***/ }), +/* 77 */, +/* 78 */, +/* 79 */ +/***/ (function(module, exports) { -Glob.prototype.pause = function () { - if (!this.paused) { - this.paused = true - this.emit('pause') - } -} +module.exports = __webpack_require__(121); -Glob.prototype.resume = function () { - if (this.paused) { - this.emit('resume') - this.paused = false - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0) - this._emitQueue.length = 0 - for (var i = 0; i < eq.length; i ++) { - var e = eq[i] - this._emitMatch(e[0], e[1]) - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0) - this._processQueue.length = 0 - for (var i = 0; i < pq.length; i ++) { - var p = pq[i] - this._processing-- - this._process(p[0], p[1], p[2], p[3]) - } - } - } -} +/***/ }), +/* 80 */, +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { -Glob.prototype._process = function (pattern, index, inGlobStar, cb) { - assert(this instanceof Glob) - assert(typeof cb === 'function') +"use strict"; - if (this.aborted) - return - this._processing++ - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]) - return - } +Object.defineProperty(exports, "__esModule", { + value: true +}); - //console.error('PROCESS %d', this._processing, pattern) +exports.default = function (str, fileLoc = 'lockfile') { + str = (0, (_stripBom || _load_stripBom()).default)(str); + return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) }; +}; - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. +var _util; - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index, cb) - return +function _load_util() { + return _util = _interopRequireDefault(__webpack_require__(2)); +} - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break +var _invariant; - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(7)); +} - var remain = pattern.slice(n) +var _stripBom; - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix +function _load_stripBom() { + return _stripBom = _interopRequireDefault(__webpack_require__(122)); +} - var abs = this._makeAbs(read) +var _constants; - //if ignored, skip _processing - if (childrenIgnored(this, read)) - return cb() +function _load_constants() { + return _constants = __webpack_require__(6); +} - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(4); } -Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(20)); } -Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // if the abs isn't a dir, then nothing can match! - if (!entries) - return cb() +/* eslint quotes: 0 */ - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' +const VERSION_REGEX = /^yarn lockfile v(\d+)$/; - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } +const TOKEN_TYPES = { + boolean: 'BOOLEAN', + string: 'STRING', + identifier: 'IDENTIFIER', + eof: 'EOF', + colon: 'COLON', + newline: 'NEWLINE', + comment: 'COMMENT', + indent: 'INDENT', + invalid: 'INVALID', + number: 'NUMBER', + comma: 'COMMA' +}; - //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) +const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number]; - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return cb() +function isValidPropValueToken(token) { + return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0; +} - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. +function* tokenise(input) { + let lastNewline = false; + let line = 1; + let col = 0; - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) + function buildToken(type, value) { + return { line, col, type, value }; + } - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e + while (input.length) { + let chop = 0; + + if (input[0] === '\n' || input[0] === '\r') { + chop++; + // If this is a \r\n line, ignore both chars but only add one new line + if (input[1] === '\n') { + chop++; } + line++; + col = 0; + yield buildToken(TOKEN_TYPES.newline); + } else if (input[0] === '#') { + chop++; - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) + let val = ''; + while (input[chop] !== '\n') { + val += input[chop]; + chop++; } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return cb() - } + yield buildToken(TOKEN_TYPES.comment, val); + } else if (input[0] === ' ') { + if (lastNewline) { + let indent = ''; + for (let i = 0; input[i] === ' '; i++) { + indent += input[i]; + } - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - this._process([e].concat(remain), index, inGlobStar, cb) - } - cb() -} + if (indent.length % 2) { + throw new TypeError('Invalid number of spaces'); + } else { + chop = indent.length; + yield buildToken(TOKEN_TYPES.indent, indent.length / 2); + } + } else { + chop++; + } + } else if (input[0] === '"') { + let val = ''; -Glob.prototype._emitMatch = function (index, e) { - if (this.aborted) - return + for (let i = 0;; i++) { + const currentChar = input[i]; + val += currentChar; - if (isIgnored(this, e)) - return + if (i > 0 && currentChar === '"') { + const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\'; + if (!isEscaped) { + break; + } + } + } - if (this.paused) { - this._emitQueue.push([index, e]) - return - } + chop = val.length; - var abs = isAbsolute(e) ? e : this._makeAbs(e) + try { + yield buildToken(TOKEN_TYPES.string, JSON.parse(val)); + } catch (err) { + if (err instanceof SyntaxError) { + yield buildToken(TOKEN_TYPES.invalid); + } else { + throw err; + } + } + } else if (/^[0-9]/.test(input)) { + let val = ''; + for (let i = 0; /^[0-9]$/.test(input[i]); i++) { + val += input[i]; + } + chop = val.length; - if (this.mark) - e = this._mark(e) + yield buildToken(TOKEN_TYPES.number, +val); + } else if (/^true/.test(input)) { + yield buildToken(TOKEN_TYPES.boolean, true); + chop = 4; + } else if (/^false/.test(input)) { + yield buildToken(TOKEN_TYPES.boolean, false); + chop = 5; + } else if (input[0] === ':') { + yield buildToken(TOKEN_TYPES.colon); + chop++; + } else if (input[0] === ',') { + yield buildToken(TOKEN_TYPES.comma); + chop++; + } else if (/^[a-zA-Z\/-]/g.test(input)) { + let name = ''; + for (let i = 0; i < input.length; i++) { + const char = input[i]; + if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') { + break; + } else { + name += char; + } + } + chop = name.length; - if (this.absolute) - e = abs + yield buildToken(TOKEN_TYPES.string, name); + } else { + yield buildToken(TOKEN_TYPES.invalid); + } - if (this.matches[index][e]) - return + if (!chop) { + // will trigger infinite recursion + yield buildToken(TOKEN_TYPES.invalid); + } - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return + col += chop; + lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n'; + input = input.slice(chop); } - this.matches[index][e] = true - - var st = this.statCache[abs] - if (st) - this.emit('stat', e, st) - - this.emit('match', e) + yield buildToken(TOKEN_TYPES.eof); } -Glob.prototype._readdirInGlobStar = function (abs, cb) { - if (this.aborted) - return - - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false, cb) - - var lstatkey = 'lstat\0' + abs - var self = this - var lstatcb = inflight(lstatkey, lstatcb_) +class Parser { + constructor(input, fileLoc = 'lockfile') { + this.comments = []; + this.tokens = tokenise(input); + this.fileLoc = fileLoc; + } - if (lstatcb) - fs.lstat(abs, lstatcb) + onComment(token) { + const value = token.value; + (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string'); - function lstatcb_ (er, lstat) { - if (er && er.code === 'ENOENT') - return cb() + const comment = value.trim(); - var isSym = lstat && lstat.isSymbolicLink() - self.symlinks[abs] = isSym + const versionMatch = comment.match(VERSION_REGEX); + if (versionMatch) { + const version = +versionMatch[1]; + if (version > (_constants || _load_constants()).LOCKFILE_VERSION) { + throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`); + } + } - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && lstat && !lstat.isDirectory()) { - self.cache[abs] = 'FILE' - cb() - } else - self._readdir(abs, false, cb) + this.comments.push(comment); } -} - -Glob.prototype._readdir = function (abs, inGlobStar, cb) { - if (this.aborted) - return - - cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) - if (!cb) - return - //console.error('RD %j %j', +inGlobStar, abs) - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb) + next() { + const item = this.tokens.next(); + (0, (_invariant || _load_invariant()).default)(item, 'expected a token'); - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return cb() + const done = item.done, + value = item.value; - if (Array.isArray(c)) - return cb(null, c) + if (done || !value) { + throw new Error('No more tokens'); + } else if (value.type === TOKEN_TYPES.comment) { + this.onComment(value); + return this.next(); + } else { + return this.token = value; + } } - var self = this - fs.readdir(abs, readdirCb(this, abs, cb)) -} - -function readdirCb (self, abs, cb) { - return function (er, entries) { - if (er) - self._readdirError(abs, er, cb) - else - self._readdirEntries(abs, entries, cb) + unexpected(msg = 'Unexpected token') { + throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`); } -} -Glob.prototype._readdirEntries = function (abs, entries, cb) { - if (this.aborted) - return + expect(tokType) { + if (this.token.type === tokType) { + this.next(); + } else { + this.unexpected(); + } + } - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true + eat(tokType) { + if (this.token.type === tokType) { + this.next(); + return true; + } else { + return false; } } - this.cache[abs] = entries - return cb(null, entries) -} + parse(indent = 0) { + const obj = (0, (_map || _load_map()).default)(); -Glob.prototype._readdirError = function (f, er, cb) { - if (this.aborted) - return - - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - var abs = this._makeAbs(f) - this.cache[abs] = 'FILE' - if (abs === this.cwdAbs) { - var error = new Error(er.code + ' invalid cwd ' + this.cwd) - error.path = this.cwd - error.code = er.code - this.emit('error', error) - this.abort() - } - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) { - this.emit('error', er) - // If the error is handled, then we abort - // if not, we threw out of here - this.abort() - } - if (!this.silent) - console.error('glob error', er) - break - } - - return cb() -} - -Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - - -Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - //console.error('pgs2', prefix, remain[0], entries) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return cb() - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false, cb) - - var isSym = this.symlinks[abs] - var len = entries.length - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return cb() - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true, cb) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true, cb) - } - - cb() -} - -Glob.prototype._processSimple = function (prefix, index, cb) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var self = this - this._stat(prefix, function (er, exists) { - self._processSimple2(prefix, index, er, exists, cb) - }) -} -Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { - - //console.error('ps2', prefix, exists) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return cb() - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this._emitMatch(index, prefix) - cb() -} - -// Returns either 'DIR', 'FILE', or false -Glob.prototype._stat = function (f, cb) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return cb() - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return cb(null, c) - - if (needDir && c === 'FILE') - return cb() - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (stat !== undefined) { - if (stat === false) - return cb(null, stat) - else { - var type = stat.isDirectory() ? 'DIR' : 'FILE' - if (needDir && type === 'FILE') - return cb() - else - return cb(null, type, stat) - } - } - - var self = this - var statcb = inflight('stat\0' + abs, lstatcb_) - if (statcb) - fs.lstat(abs, statcb) - - function lstatcb_ (er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - // If it's a symlink, then treat it as the target, unless - // the target does not exist, then treat it as a file. - return fs.stat(abs, function (er, stat) { - if (er) - self._stat2(f, abs, null, lstat, cb) - else - self._stat2(f, abs, er, stat, cb) - }) - } else { - self._stat2(f, abs, er, lstat, cb) - } - } -} - -Glob.prototype._stat2 = function (f, abs, er, stat, cb) { - if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { - this.statCache[abs] = false - return cb() - } - - var needDir = f.slice(-1) === '/' - this.statCache[abs] = stat - - if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) - return cb(null, false, stat) - - var c = true - if (stat) - c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c === 'FILE') - return cb() - - return cb(null, c, stat) -} - - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function posix(path) { - return path.charAt(0) === '/'; -} - -function win32(path) { - // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ''; - var isUnc = Boolean(device && device.charAt(1) !== ':'); - - // UNC paths are always absolute - return Boolean(result[2] || isUnc); -} - -module.exports = process.platform === 'win32' ? win32 : posix; -module.exports.posix = posix; -module.exports.win32 = win32; - - -/***/ }), -/* 77 */, -/* 78 */, -/* 79 */ -/***/ (function(module, exports) { - -module.exports = __webpack_require__(121); - -/***/ }), -/* 80 */, -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (str, fileLoc = 'lockfile') { - str = (0, (_stripBom || _load_stripBom()).default)(str); - return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) }; -}; - -var _util; - -function _load_util() { - return _util = _interopRequireDefault(__webpack_require__(2)); -} - -var _invariant; - -function _load_invariant() { - return _invariant = _interopRequireDefault(__webpack_require__(7)); -} - -var _stripBom; - -function _load_stripBom() { - return _stripBom = _interopRequireDefault(__webpack_require__(122)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(6); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(4); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(20)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* eslint quotes: 0 */ - -const VERSION_REGEX = /^yarn lockfile v(\d+)$/; - -const TOKEN_TYPES = { - boolean: 'BOOLEAN', - string: 'STRING', - identifier: 'IDENTIFIER', - eof: 'EOF', - colon: 'COLON', - newline: 'NEWLINE', - comment: 'COMMENT', - indent: 'INDENT', - invalid: 'INVALID', - number: 'NUMBER', - comma: 'COMMA' -}; - -const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number]; - -function isValidPropValueToken(token) { - return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0; -} - -function* tokenise(input) { - let lastNewline = false; - let line = 1; - let col = 0; - - function buildToken(type, value) { - return { line, col, type, value }; - } - - while (input.length) { - let chop = 0; - - if (input[0] === '\n' || input[0] === '\r') { - chop++; - // If this is a \r\n line, ignore both chars but only add one new line - if (input[1] === '\n') { - chop++; - } - line++; - col = 0; - yield buildToken(TOKEN_TYPES.newline); - } else if (input[0] === '#') { - chop++; - - let val = ''; - while (input[chop] !== '\n') { - val += input[chop]; - chop++; - } - yield buildToken(TOKEN_TYPES.comment, val); - } else if (input[0] === ' ') { - if (lastNewline) { - let indent = ''; - for (let i = 0; input[i] === ' '; i++) { - indent += input[i]; - } - - if (indent.length % 2) { - throw new TypeError('Invalid number of spaces'); - } else { - chop = indent.length; - yield buildToken(TOKEN_TYPES.indent, indent.length / 2); - } - } else { - chop++; - } - } else if (input[0] === '"') { - let val = ''; - - for (let i = 0;; i++) { - const currentChar = input[i]; - val += currentChar; - - if (i > 0 && currentChar === '"') { - const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\'; - if (!isEscaped) { - break; - } - } - } - - chop = val.length; - - try { - yield buildToken(TOKEN_TYPES.string, JSON.parse(val)); - } catch (err) { - if (err instanceof SyntaxError) { - yield buildToken(TOKEN_TYPES.invalid); - } else { - throw err; - } - } - } else if (/^[0-9]/.test(input)) { - let val = ''; - for (let i = 0; /^[0-9]$/.test(input[i]); i++) { - val += input[i]; - } - chop = val.length; - - yield buildToken(TOKEN_TYPES.number, +val); - } else if (/^true/.test(input)) { - yield buildToken(TOKEN_TYPES.boolean, true); - chop = 4; - } else if (/^false/.test(input)) { - yield buildToken(TOKEN_TYPES.boolean, false); - chop = 5; - } else if (input[0] === ':') { - yield buildToken(TOKEN_TYPES.colon); - chop++; - } else if (input[0] === ',') { - yield buildToken(TOKEN_TYPES.comma); - chop++; - } else if (/^[a-zA-Z\/-]/g.test(input)) { - let name = ''; - for (let i = 0; i < input.length; i++) { - const char = input[i]; - if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') { - break; - } else { - name += char; - } - } - chop = name.length; - - yield buildToken(TOKEN_TYPES.string, name); - } else { - yield buildToken(TOKEN_TYPES.invalid); - } - - if (!chop) { - // will trigger infinite recursion - yield buildToken(TOKEN_TYPES.invalid); - } - - col += chop; - lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n'; - input = input.slice(chop); - } - - yield buildToken(TOKEN_TYPES.eof); -} - -class Parser { - constructor(input, fileLoc = 'lockfile') { - this.comments = []; - this.tokens = tokenise(input); - this.fileLoc = fileLoc; - } - - onComment(token) { - const value = token.value; - (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string'); - - const comment = value.trim(); - - const versionMatch = comment.match(VERSION_REGEX); - if (versionMatch) { - const version = +versionMatch[1]; - if (version > (_constants || _load_constants()).LOCKFILE_VERSION) { - throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`); - } - } - - this.comments.push(comment); - } - - next() { - const item = this.tokens.next(); - (0, (_invariant || _load_invariant()).default)(item, 'expected a token'); - - const done = item.done, - value = item.value; - - if (done || !value) { - throw new Error('No more tokens'); - } else if (value.type === TOKEN_TYPES.comment) { - this.onComment(value); - return this.next(); - } else { - return this.token = value; - } - } - - unexpected(msg = 'Unexpected token') { - throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`); - } - - expect(tokType) { - if (this.token.type === tokType) { - this.next(); - } else { - this.unexpected(); - } - } - - eat(tokType) { - if (this.token.type === tokType) { - this.next(); - return true; - } else { - return false; - } - } - - parse(indent = 0) { - const obj = (0, (_map || _load_map()).default)(); - - while (true) { - const propToken = this.token; + while (true) { + const propToken = this.token; if (propToken.type === TOKEN_TYPES.newline) { const nextToken = this.next(); @@ -39492,13 +38286,13 @@ module.exports = process && support(supportLevel); /******/ ]); /***/ }), -/* 285 */ +/* 281 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 286 */ +/* 282 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -39595,13 +38389,13 @@ class BootstrapCacheFile { } /***/ }), -/* 287 */ +/* 283 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateYarnLock", function() { return validateYarnLock; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(284); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(280); /* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__); @@ -39702,15 +38496,15 @@ async function validateYarnLock(kbn, yarnLock) { } /***/ }), -/* 288 */ +/* 284 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CleanCommand", function() { return CleanCommand; }); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(289); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(285); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(376); +/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(372); /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); @@ -39810,21 +38604,21 @@ const CleanCommand = { }; /***/ }), -/* 289 */ +/* 285 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const {promisify} = __webpack_require__(111); const path = __webpack_require__(4); -const globby = __webpack_require__(290); -const isGlob = __webpack_require__(368); -const slash = __webpack_require__(366); +const globby = __webpack_require__(286); +const isGlob = __webpack_require__(364); +const slash = __webpack_require__(362); const gracefulFs = __webpack_require__(132); -const isPathCwd = __webpack_require__(369); -const isPathInside = __webpack_require__(370); -const rimraf = __webpack_require__(371); -const pMap = __webpack_require__(372); +const isPathCwd = __webpack_require__(365); +const isPathInside = __webpack_require__(366); +const rimraf = __webpack_require__(367); +const pMap = __webpack_require__(368); const rimrafP = promisify(rimraf); @@ -39938,19 +38732,19 @@ module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options /***/ }), -/* 290 */ +/* 286 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const arrayUnion = __webpack_require__(291); -const merge2 = __webpack_require__(292); +const arrayUnion = __webpack_require__(287); +const merge2 = __webpack_require__(288); const glob = __webpack_require__(146); -const fastGlob = __webpack_require__(293); -const dirGlob = __webpack_require__(362); -const gitignore = __webpack_require__(364); -const {FilterStream, UniqueStream} = __webpack_require__(367); +const fastGlob = __webpack_require__(289); +const dirGlob = __webpack_require__(358); +const gitignore = __webpack_require__(360); +const {FilterStream, UniqueStream} = __webpack_require__(363); const DEFAULT_FILTER = () => false; @@ -40123,7 +38917,7 @@ module.exports.gitignore = gitignore; /***/ }), -/* 291 */ +/* 287 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40135,7 +38929,7 @@ module.exports = (...arguments_) => { /***/ }), -/* 292 */ +/* 288 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40286,17 +39080,17 @@ function pauseStreams (streams, options) { /***/ }), -/* 293 */ +/* 289 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(294); -const async_1 = __webpack_require__(323); -const stream_1 = __webpack_require__(358); -const sync_1 = __webpack_require__(359); -const settings_1 = __webpack_require__(361); -const utils = __webpack_require__(295); +const taskManager = __webpack_require__(290); +const async_1 = __webpack_require__(319); +const stream_1 = __webpack_require__(354); +const sync_1 = __webpack_require__(355); +const settings_1 = __webpack_require__(357); +const utils = __webpack_require__(291); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -40360,13 +39154,13 @@ module.exports = FastGlob; /***/ }), -/* 294 */ +/* 290 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); +const utils = __webpack_require__(291); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -40431,30 +39225,30 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 295 */ +/* 291 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const array = __webpack_require__(296); +const array = __webpack_require__(292); exports.array = array; -const errno = __webpack_require__(297); +const errno = __webpack_require__(293); exports.errno = errno; -const fs = __webpack_require__(298); +const fs = __webpack_require__(294); exports.fs = fs; -const path = __webpack_require__(299); +const path = __webpack_require__(295); exports.path = path; -const pattern = __webpack_require__(300); +const pattern = __webpack_require__(296); exports.pattern = pattern; -const stream = __webpack_require__(321); +const stream = __webpack_require__(317); exports.stream = stream; -const string = __webpack_require__(322); +const string = __webpack_require__(318); exports.string = string; /***/ }), -/* 296 */ +/* 292 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40482,7 +39276,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 297 */ +/* 293 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40495,7 +39289,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 298 */ +/* 294 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40520,7 +39314,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 299 */ +/* 295 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40559,16 +39353,16 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 300 */ +/* 296 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const globParent = __webpack_require__(301); -const micromatch = __webpack_require__(304); -const picomatch = __webpack_require__(315); +const globParent = __webpack_require__(297); +const micromatch = __webpack_require__(300); +const picomatch = __webpack_require__(311); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -40678,13 +39472,13 @@ exports.matchAny = matchAny; /***/ }), -/* 301 */ +/* 297 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isGlob = __webpack_require__(302); +var isGlob = __webpack_require__(298); var pathPosixDirname = __webpack_require__(4).posix.dirname; var isWin32 = __webpack_require__(120).platform() === 'win32'; @@ -40726,7 +39520,7 @@ module.exports = function globParent(str, opts) { /***/ }), -/* 302 */ +/* 298 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -40736,7 +39530,7 @@ module.exports = function globParent(str, opts) { * Released under the MIT License. */ -var isExtglob = __webpack_require__(303); +var isExtglob = __webpack_require__(299); var chars = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; @@ -40780,7 +39574,7 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 303 */ +/* 299 */ /***/ (function(module, exports) { /*! @@ -40806,16 +39600,16 @@ module.exports = function isExtglob(str) { /***/ }), -/* 304 */ +/* 300 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const util = __webpack_require__(111); -const braces = __webpack_require__(305); -const picomatch = __webpack_require__(315); -const utils = __webpack_require__(318); +const braces = __webpack_require__(301); +const picomatch = __webpack_require__(311); +const utils = __webpack_require__(314); const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); /** @@ -41280,16 +40074,16 @@ module.exports = micromatch; /***/ }), -/* 305 */ +/* 301 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(306); -const compile = __webpack_require__(308); -const expand = __webpack_require__(312); -const parse = __webpack_require__(313); +const stringify = __webpack_require__(302); +const compile = __webpack_require__(304); +const expand = __webpack_require__(308); +const parse = __webpack_require__(309); /** * Expand the given pattern or create a regex-compatible string. @@ -41457,13 +40251,13 @@ module.exports = braces; /***/ }), -/* 306 */ +/* 302 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(307); +const utils = __webpack_require__(303); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -41496,7 +40290,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 307 */ +/* 303 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41615,14 +40409,14 @@ exports.flatten = (...args) => { /***/ }), -/* 308 */ +/* 304 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(309); -const utils = __webpack_require__(307); +const fill = __webpack_require__(305); +const utils = __webpack_require__(303); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -41679,7 +40473,7 @@ module.exports = compile; /***/ }), -/* 309 */ +/* 305 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41693,7 +40487,7 @@ module.exports = compile; const util = __webpack_require__(111); -const toRegexRange = __webpack_require__(310); +const toRegexRange = __webpack_require__(306); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -41935,7 +40729,7 @@ module.exports = fill; /***/ }), -/* 310 */ +/* 306 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41948,7 +40742,7 @@ module.exports = fill; -const isNumber = __webpack_require__(311); +const isNumber = __webpack_require__(307); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -42230,7 +41024,7 @@ module.exports = toRegexRange; /***/ }), -/* 311 */ +/* 307 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42255,15 +41049,15 @@ module.exports = function(num) { /***/ }), -/* 312 */ +/* 308 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(309); -const stringify = __webpack_require__(306); -const utils = __webpack_require__(307); +const fill = __webpack_require__(305); +const stringify = __webpack_require__(302); +const utils = __webpack_require__(303); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -42375,13 +41169,13 @@ module.exports = expand; /***/ }), -/* 313 */ +/* 309 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(306); +const stringify = __webpack_require__(302); /** * Constants @@ -42403,7 +41197,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(314); +} = __webpack_require__(310); /** * parse @@ -42715,7 +41509,7 @@ module.exports = parse; /***/ }), -/* 314 */ +/* 310 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42779,27 +41573,27 @@ module.exports = { /***/ }), -/* 315 */ +/* 311 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(316); +module.exports = __webpack_require__(312); /***/ }), -/* 316 */ +/* 312 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const scan = __webpack_require__(317); -const parse = __webpack_require__(320); -const utils = __webpack_require__(318); -const constants = __webpack_require__(319); +const scan = __webpack_require__(313); +const parse = __webpack_require__(316); +const utils = __webpack_require__(314); +const constants = __webpack_require__(315); const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** @@ -43135,13 +41929,13 @@ module.exports = picomatch; /***/ }), -/* 317 */ +/* 313 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(318); +const utils = __webpack_require__(314); const { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ @@ -43158,7 +41952,7 @@ const { CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __webpack_require__(319); +} = __webpack_require__(315); const isPathSeparator = code => { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; @@ -43525,7 +42319,7 @@ module.exports = scan; /***/ }), -/* 318 */ +/* 314 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43538,7 +42332,7 @@ const { REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL -} = __webpack_require__(319); +} = __webpack_require__(315); exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); @@ -43596,7 +42390,7 @@ exports.wrapOutput = (input, state = {}, options = {}) => { /***/ }), -/* 319 */ +/* 315 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43782,14 +42576,14 @@ module.exports = { /***/ }), -/* 320 */ +/* 316 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const constants = __webpack_require__(319); -const utils = __webpack_require__(318); +const constants = __webpack_require__(315); +const utils = __webpack_require__(314); /** * Constants @@ -44867,13 +43661,13 @@ module.exports = parse; /***/ }), -/* 321 */ +/* 317 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const merge2 = __webpack_require__(292); +const merge2 = __webpack_require__(288); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -44890,7 +43684,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 322 */ +/* 318 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44907,14 +43701,14 @@ exports.isEmpty = isEmpty; /***/ }), -/* 323 */ +/* 319 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(324); -const provider_1 = __webpack_require__(351); +const stream_1 = __webpack_require__(320); +const provider_1 = __webpack_require__(347); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -44942,16 +43736,16 @@ exports.default = ProviderAsync; /***/ }), -/* 324 */ +/* 320 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(137); -const fsStat = __webpack_require__(325); -const fsWalk = __webpack_require__(330); -const reader_1 = __webpack_require__(350); +const fsStat = __webpack_require__(321); +const fsWalk = __webpack_require__(326); +const reader_1 = __webpack_require__(346); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -45004,15 +43798,15 @@ exports.default = ReaderStream; /***/ }), -/* 325 */ +/* 321 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(326); -const sync = __webpack_require__(327); -const settings_1 = __webpack_require__(328); +const async = __webpack_require__(322); +const sync = __webpack_require__(323); +const settings_1 = __webpack_require__(324); exports.Settings = settings_1.default; function stat(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -45035,7 +43829,7 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 326 */ +/* 322 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45073,7 +43867,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 327 */ +/* 323 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45102,13 +43896,13 @@ exports.read = read; /***/ }), -/* 328 */ +/* 324 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(329); +const fs = __webpack_require__(325); class Settings { constructor(_options = {}) { this._options = _options; @@ -45125,7 +43919,7 @@ exports.default = Settings; /***/ }), -/* 329 */ +/* 325 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45148,16 +43942,16 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 330 */ +/* 326 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(331); -const stream_1 = __webpack_require__(346); -const sync_1 = __webpack_require__(347); -const settings_1 = __webpack_require__(349); +const async_1 = __webpack_require__(327); +const stream_1 = __webpack_require__(342); +const sync_1 = __webpack_require__(343); +const settings_1 = __webpack_require__(345); exports.Settings = settings_1.default; function walk(directory, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -45187,13 +43981,13 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 331 */ +/* 327 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(332); +const async_1 = __webpack_require__(328); class AsyncProvider { constructor(_root, _settings) { this._root = _root; @@ -45224,17 +44018,17 @@ function callSuccessCallback(callback, entries) { /***/ }), -/* 332 */ +/* 328 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const events_1 = __webpack_require__(155); -const fsScandir = __webpack_require__(333); -const fastq = __webpack_require__(342); -const common = __webpack_require__(344); -const reader_1 = __webpack_require__(345); +const fsScandir = __webpack_require__(329); +const fastq = __webpack_require__(338); +const common = __webpack_require__(340); +const reader_1 = __webpack_require__(341); class AsyncReader extends reader_1.default { constructor(_root, _settings) { super(_root, _settings); @@ -45324,15 +44118,15 @@ exports.default = AsyncReader; /***/ }), -/* 333 */ +/* 329 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(334); -const sync = __webpack_require__(339); -const settings_1 = __webpack_require__(340); +const async = __webpack_require__(330); +const sync = __webpack_require__(335); +const settings_1 = __webpack_require__(336); exports.Settings = settings_1.default; function scandir(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -45355,16 +44149,16 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 334 */ +/* 330 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(325); -const rpl = __webpack_require__(335); -const constants_1 = __webpack_require__(336); -const utils = __webpack_require__(337); +const fsStat = __webpack_require__(321); +const rpl = __webpack_require__(331); +const constants_1 = __webpack_require__(332); +const utils = __webpack_require__(333); function read(directory, settings, callback) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings, callback); @@ -45452,7 +44246,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 335 */ +/* 331 */ /***/ (function(module, exports) { module.exports = runParallel @@ -45506,7 +44300,7 @@ function runParallel (tasks, cb) { /***/ }), -/* 336 */ +/* 332 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45526,18 +44320,18 @@ exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_B /***/ }), -/* 337 */ +/* 333 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(338); +const fs = __webpack_require__(334); exports.fs = fs; /***/ }), -/* 338 */ +/* 334 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45562,15 +44356,15 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 339 */ +/* 335 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(325); -const constants_1 = __webpack_require__(336); -const utils = __webpack_require__(337); +const fsStat = __webpack_require__(321); +const constants_1 = __webpack_require__(332); +const utils = __webpack_require__(333); function read(directory, settings) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings); @@ -45621,15 +44415,15 @@ exports.readdir = readdir; /***/ }), -/* 340 */ +/* 336 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(325); -const fs = __webpack_require__(341); +const fsStat = __webpack_require__(321); +const fs = __webpack_require__(337); class Settings { constructor(_options = {}) { this._options = _options; @@ -45652,7 +44446,7 @@ exports.default = Settings; /***/ }), -/* 341 */ +/* 337 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45677,13 +44471,13 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 342 */ +/* 338 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var reusify = __webpack_require__(343) +var reusify = __webpack_require__(339) function fastqueue (context, worker, concurrency) { if (typeof context === 'function') { @@ -45857,7 +44651,7 @@ module.exports = fastqueue /***/ }), -/* 343 */ +/* 339 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45897,7 +44691,7 @@ module.exports = reusify /***/ }), -/* 344 */ +/* 340 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45928,13 +44722,13 @@ exports.joinPathSegments = joinPathSegments; /***/ }), -/* 345 */ +/* 341 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const common = __webpack_require__(344); +const common = __webpack_require__(340); class Reader { constructor(_root, _settings) { this._root = _root; @@ -45946,14 +44740,14 @@ exports.default = Reader; /***/ }), -/* 346 */ +/* 342 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(137); -const async_1 = __webpack_require__(332); +const async_1 = __webpack_require__(328); class StreamProvider { constructor(_root, _settings) { this._root = _root; @@ -45983,13 +44777,13 @@ exports.default = StreamProvider; /***/ }), -/* 347 */ +/* 343 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(348); +const sync_1 = __webpack_require__(344); class SyncProvider { constructor(_root, _settings) { this._root = _root; @@ -46004,15 +44798,15 @@ exports.default = SyncProvider; /***/ }), -/* 348 */ +/* 344 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsScandir = __webpack_require__(333); -const common = __webpack_require__(344); -const reader_1 = __webpack_require__(345); +const fsScandir = __webpack_require__(329); +const common = __webpack_require__(340); +const reader_1 = __webpack_require__(341); class SyncReader extends reader_1.default { constructor() { super(...arguments); @@ -46070,14 +44864,14 @@ exports.default = SyncReader; /***/ }), -/* 349 */ +/* 345 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsScandir = __webpack_require__(333); +const fsScandir = __webpack_require__(329); class Settings { constructor(_options = {}) { this._options = _options; @@ -46103,15 +44897,15 @@ exports.default = Settings; /***/ }), -/* 350 */ +/* 346 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(325); -const utils = __webpack_require__(295); +const fsStat = __webpack_require__(321); +const utils = __webpack_require__(291); class Reader { constructor(_settings) { this._settings = _settings; @@ -46143,17 +44937,17 @@ exports.default = Reader; /***/ }), -/* 351 */ +/* 347 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(352); -const entry_1 = __webpack_require__(355); -const error_1 = __webpack_require__(356); -const entry_2 = __webpack_require__(357); +const deep_1 = __webpack_require__(348); +const entry_1 = __webpack_require__(351); +const error_1 = __webpack_require__(352); +const entry_2 = __webpack_require__(353); class Provider { constructor(_settings) { this._settings = _settings; @@ -46198,14 +44992,14 @@ exports.default = Provider; /***/ }), -/* 352 */ +/* 348 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); -const partial_1 = __webpack_require__(353); +const utils = __webpack_require__(291); +const partial_1 = __webpack_require__(349); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -46259,13 +45053,13 @@ exports.default = DeepFilter; /***/ }), -/* 353 */ +/* 349 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(354); +const matcher_1 = __webpack_require__(350); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -46304,13 +45098,13 @@ exports.default = PartialMatcher; /***/ }), -/* 354 */ +/* 350 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); +const utils = __webpack_require__(291); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -46361,13 +45155,13 @@ exports.default = Matcher; /***/ }), -/* 355 */ +/* 351 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); +const utils = __webpack_require__(291); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -46423,13 +45217,13 @@ exports.default = EntryFilter; /***/ }), -/* 356 */ +/* 352 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); +const utils = __webpack_require__(291); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -46445,13 +45239,13 @@ exports.default = ErrorFilter; /***/ }), -/* 357 */ +/* 353 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(295); +const utils = __webpack_require__(291); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -46478,15 +45272,15 @@ exports.default = EntryTransformer; /***/ }), -/* 358 */ +/* 354 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(137); -const stream_2 = __webpack_require__(324); -const provider_1 = __webpack_require__(351); +const stream_2 = __webpack_require__(320); +const provider_1 = __webpack_require__(347); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -46516,14 +45310,14 @@ exports.default = ProviderStream; /***/ }), -/* 359 */ +/* 355 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(360); -const provider_1 = __webpack_require__(351); +const sync_1 = __webpack_require__(356); +const provider_1 = __webpack_require__(347); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -46546,15 +45340,15 @@ exports.default = ProviderSync; /***/ }), -/* 360 */ +/* 356 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(325); -const fsWalk = __webpack_require__(330); -const reader_1 = __webpack_require__(350); +const fsStat = __webpack_require__(321); +const fsWalk = __webpack_require__(326); +const reader_1 = __webpack_require__(346); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -46596,7 +45390,7 @@ exports.default = ReaderSync; /***/ }), -/* 361 */ +/* 357 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46616,3466 +45410,2246 @@ exports.DEFAULT_FILE_SYSTEM_ADAPTER = { class Settings { constructor(_options = {}) { this._options = _options; - this.absolute = this._getValue(this._options.absolute, false); - this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); - this.braceExpansion = this._getValue(this._options.braceExpansion, true); - this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); - this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); - this.cwd = this._getValue(this._options.cwd, process.cwd()); - this.deep = this._getValue(this._options.deep, Infinity); - this.dot = this._getValue(this._options.dot, false); - this.extglob = this._getValue(this._options.extglob, true); - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); - this.fs = this._getFileSystemMethods(this._options.fs); - this.globstar = this._getValue(this._options.globstar, true); - this.ignore = this._getValue(this._options.ignore, []); - this.markDirectories = this._getValue(this._options.markDirectories, false); - this.objectMode = this._getValue(this._options.objectMode, false); - this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); - this.onlyFiles = this._getValue(this._options.onlyFiles, true); - this.stats = this._getValue(this._options.stats, false); - this.suppressErrors = this._getValue(this._options.suppressErrors, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); - this.unique = this._getValue(this._options.unique, true); - if (this.onlyDirectories) { - this.onlyFiles = false; - } - if (this.stats) { - this.objectMode = true; - } - } - _getValue(option, value) { - return option === undefined ? value : option; - } - _getFileSystemMethods(methods = {}) { - return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); - } -} -exports.default = Settings; - - -/***/ }), -/* 362 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__(4); -const pathType = __webpack_require__(363); - -const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; - -const getPath = (filepath, cwd) => { - const pth = filepath[0] === '!' ? filepath.slice(1) : filepath; - return path.isAbsolute(pth) ? pth : path.join(cwd, pth); -}; - -const addExtensions = (file, extensions) => { - if (path.extname(file)) { - return `**/${file}`; - } - - return `**/${file}.${getExtensions(extensions)}`; -}; - -const getGlob = (directory, options) => { - if (options.files && !Array.isArray(options.files)) { - throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof options.files}\``); - } - - if (options.extensions && !Array.isArray(options.extensions)) { - throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``); - } - - if (options.files && options.extensions) { - return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions))); - } - - if (options.files) { - return options.files.map(x => path.posix.join(directory, `**/${x}`)); - } - - if (options.extensions) { - return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)]; - } - - return [path.posix.join(directory, '**')]; -}; - -module.exports = async (input, options) => { - options = { - cwd: process.cwd(), - ...options - }; - - if (typeof options.cwd !== 'string') { - throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); - } - - const globs = await Promise.all([].concat(input).map(async x => { - const isDirectory = await pathType.isDirectory(getPath(x, options.cwd)); - return isDirectory ? getGlob(x, options) : x; - })); - - return [].concat.apply([], globs); // eslint-disable-line prefer-spread -}; - -module.exports.sync = (input, options) => { - options = { - cwd: process.cwd(), - ...options - }; - - if (typeof options.cwd !== 'string') { - throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); - } - - const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x); - - return [].concat.apply([], globs); // eslint-disable-line prefer-spread -}; - - -/***/ }), -/* 363 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(133); - -async function isType(fsStatType, statsMethodName, filePath) { - if (typeof filePath !== 'string') { - throw new TypeError(`Expected a string, got ${typeof filePath}`); - } - - try { - const stats = await promisify(fs[fsStatType])(filePath); - return stats[statsMethodName](); - } catch (error) { - if (error.code === 'ENOENT') { - return false; - } - - throw error; - } -} - -function isTypeSync(fsStatType, statsMethodName, filePath) { - if (typeof filePath !== 'string') { - throw new TypeError(`Expected a string, got ${typeof filePath}`); - } - - try { - return fs[fsStatType](filePath)[statsMethodName](); - } catch (error) { - if (error.code === 'ENOENT') { - return false; - } - - throw error; - } -} - -exports.isFile = isType.bind(null, 'stat', 'isFile'); -exports.isDirectory = isType.bind(null, 'stat', 'isDirectory'); -exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink'); -exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile'); -exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory'); -exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); - - -/***/ }), -/* 364 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(133); -const path = __webpack_require__(4); -const fastGlob = __webpack_require__(293); -const gitIgnore = __webpack_require__(365); -const slash = __webpack_require__(366); - -const DEFAULT_IGNORE = [ - '**/node_modules/**', - '**/flow-typed/**', - '**/coverage/**', - '**/.git' -]; - -const readFileP = promisify(fs.readFile); - -const mapGitIgnorePatternTo = base => ignore => { - if (ignore.startsWith('!')) { - return '!' + path.posix.join(base, ignore.slice(1)); - } - - return path.posix.join(base, ignore); -}; - -const parseGitIgnore = (content, options) => { - const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); - - return content - .split(/\r?\n/) - .filter(Boolean) - .filter(line => !line.startsWith('#')) - .map(mapGitIgnorePatternTo(base)); -}; - -const reduceIgnore = files => { - return files.reduce((ignores, file) => { - ignores.add(parseGitIgnore(file.content, { - cwd: file.cwd, - fileName: file.filePath - })); - return ignores; - }, gitIgnore()); -}; - -const ensureAbsolutePathForCwd = (cwd, p) => { - if (path.isAbsolute(p)) { - if (p.startsWith(cwd)) { - return p; - } - - throw new Error(`Path ${p} is not in cwd ${cwd}`); - } - - return path.join(cwd, p); -}; - -const getIsIgnoredPredecate = (ignores, cwd) => { - return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p)))); -}; - -const getFile = async (file, cwd) => { - const filePath = path.join(cwd, file); - const content = await readFileP(filePath, 'utf8'); - - return { - cwd, - filePath, - content - }; -}; - -const getFileSync = (file, cwd) => { - const filePath = path.join(cwd, file); - const content = fs.readFileSync(filePath, 'utf8'); - - return { - cwd, - filePath, - content - }; -}; - -const normalizeOptions = ({ - ignore = [], - cwd = slash(process.cwd()) -} = {}) => { - return {ignore, cwd}; -}; - -module.exports = async options => { - options = normalizeOptions(options); - - const paths = await fastGlob('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }); - - const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); - const ignores = reduceIgnore(files); - - return getIsIgnoredPredecate(ignores, options.cwd); -}; - -module.exports.sync = options => { - options = normalizeOptions(options); - - const paths = fastGlob.sync('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }); - - const files = paths.map(file => getFileSync(file, options.cwd)); - const ignores = reduceIgnore(files); - - return getIsIgnoredPredecate(ignores, options.cwd); -}; - - -/***/ }), -/* 365 */ -/***/ (function(module, exports) { - -// A simple implementation of make-array -function makeArray (subject) { - return Array.isArray(subject) - ? subject - : [subject] -} - -const EMPTY = '' -const SPACE = ' ' -const ESCAPE = '\\' -const REGEX_TEST_BLANK_LINE = /^\s+$/ -const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/ -const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/ -const REGEX_SPLITALL_CRLF = /\r?\n/g -// /foo, -// ./foo, -// ../foo, -// . -// .. -const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/ - -const SLASH = '/' -const KEY_IGNORE = typeof Symbol !== 'undefined' - ? Symbol.for('node-ignore') - /* istanbul ignore next */ - : 'node-ignore' - -const define = (object, key, value) => - Object.defineProperty(object, key, {value}) - -const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g - -// Sanitize the range of a regular expression -// The cases are complicated, see test cases for details -const sanitizeRange = range => range.replace( - REGEX_REGEXP_RANGE, - (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) - ? match - // Invalid range (out of order) which is ok for gitignore rules but - // fatal for JavaScript regular expression, so eliminate it. - : EMPTY -) - -// See fixtures #59 -const cleanRangeBackSlash = slashes => { - const {length} = slashes - return slashes.slice(0, length - length % 2) -} - -// > If the pattern ends with a slash, -// > it is removed for the purpose of the following description, -// > but it would only find a match with a directory. -// > In other words, foo/ will match a directory foo and paths underneath it, -// > but will not match a regular file or a symbolic link foo -// > (this is consistent with the way how pathspec works in general in Git). -// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`' -// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call -// you could use option `mark: true` with `glob` - -// '`foo/`' should not continue with the '`..`' -const REPLACERS = [ - - // > Trailing spaces are ignored unless they are quoted with backslash ("\") - [ - // (a\ ) -> (a ) - // (a ) -> (a) - // (a \ ) -> (a ) - /\\?\s+$/, - match => match.indexOf('\\') === 0 - ? SPACE - : EMPTY - ], - - // replace (\ ) with ' ' - [ - /\\\s/g, - () => SPACE - ], - - // Escape metacharacters - // which is written down by users but means special for regular expressions. - - // > There are 12 characters with special meanings: - // > - the backslash \, - // > - the caret ^, - // > - the dollar sign $, - // > - the period or dot ., - // > - the vertical bar or pipe symbol |, - // > - the question mark ?, - // > - the asterisk or star *, - // > - the plus sign +, - // > - the opening parenthesis (, - // > - the closing parenthesis ), - // > - and the opening square bracket [, - // > - the opening curly brace {, - // > These special characters are often called "metacharacters". - [ - /[\\$.|*+(){^]/g, - match => `\\${match}` - ], - - [ - // > a question mark (?) matches a single character - /(?!\\)\?/g, - () => '[^/]' - ], - - // leading slash - [ - - // > A leading slash matches the beginning of the pathname. - // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". - // A leading slash matches the beginning of the pathname - /^\//, - () => '^' - ], - - // replace special metacharacter slash after the leading slash - [ - /\//g, - () => '\\/' - ], - - [ - // > A leading "**" followed by a slash means match in all directories. - // > For example, "**/foo" matches file or directory "foo" anywhere, - // > the same as pattern "foo". - // > "**/foo/bar" matches file or directory "bar" anywhere that is directly - // > under directory "foo". - // Notice that the '*'s have been replaced as '\\*' - /^\^*\\\*\\\*\\\//, - - // '**/foo' <-> 'foo' - () => '^(?:.*\\/)?' - ], - - // starting - [ - // there will be no leading '/' - // (which has been replaced by section "leading slash") - // If starts with '**', adding a '^' to the regular expression also works - /^(?=[^^])/, - function startingReplacer () { - // If has a slash `/` at the beginning or middle - return !/\/(?!$)/.test(this) - // > Prior to 2.22.1 - // > If the pattern does not contain a slash /, - // > Git treats it as a shell glob pattern - // Actually, if there is only a trailing slash, - // git also treats it as a shell glob pattern - - // After 2.22.1 (compatible but clearer) - // > If there is a separator at the beginning or middle (or both) - // > of the pattern, then the pattern is relative to the directory - // > level of the particular .gitignore file itself. - // > Otherwise the pattern may also match at any level below - // > the .gitignore level. - ? '(?:^|\\/)' - - // > Otherwise, Git treats the pattern as a shell glob suitable for - // > consumption by fnmatch(3) - : '^' - } - ], - - // two globstars - [ - // Use lookahead assertions so that we could match more than one `'/**'` - /\\\/\\\*\\\*(?=\\\/|$)/g, - - // Zero, one or several directories - // should not use '*', or it will be replaced by the next replacer - - // Check if it is not the last `'/**'` - (_, index, str) => index + 6 < str.length - - // case: /**/ - // > A slash followed by two consecutive asterisks then a slash matches - // > zero or more directories. - // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. - // '/**/' - ? '(?:\\/[^\\/]+)*' - - // case: /** - // > A trailing `"/**"` matches everything inside. - - // #21: everything inside but it should not include the current folder - : '\\/.+' - ], - - // intermediate wildcards - [ - // Never replace escaped '*' - // ignore rule '\*' will match the path '*' - - // 'abc.*/' -> go - // 'abc.*' -> skip this rule - /(^|[^\\]+)\\\*(?=.+)/g, - - // '*.js' matches '.js' - // '*.js' doesn't match 'abc' - (_, p1) => `${p1}[^\\/]*` - ], - - [ - // unescape, revert step 3 except for back slash - // For example, if a user escape a '\\*', - // after step 3, the result will be '\\\\\\*' - /\\\\\\(?=[$.|*+(){^])/g, - () => ESCAPE - ], - - [ - // '\\\\' -> '\\' - /\\\\/g, - () => ESCAPE - ], - - [ - // > The range notation, e.g. [a-zA-Z], - // > can be used to match one of the characters in a range. - - // `\` is escaped by step 3 - /(\\)?\[([^\]/]*?)(\\*)($|\])/g, - (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE - // '\\[bar]' -> '\\\\[bar\\]' - ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` - : close === ']' - ? endEscape.length % 2 === 0 - // A normal case, and it is a range notation - // '[bar]' - // '[bar\\\\]' - ? `[${sanitizeRange(range)}${endEscape}]` - // Invalid range notaton - // '[bar\\]' -> '[bar\\\\]' - : '[]' - : '[]' - ], - - // ending - [ - // 'js' will not match 'js.' - // 'ab' will not match 'abc' - /(?:[^*])$/, - - // WTF! - // https://git-scm.com/docs/gitignore - // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) - // which re-fixes #24, #38 - - // > If there is a separator at the end of the pattern then the pattern - // > will only match directories, otherwise the pattern can match both - // > files and directories. - - // 'js*' will not match 'a.js' - // 'js/' will not match 'a.js' - // 'js' will match 'a.js' and 'a.js/' - match => /\/$/.test(match) - // foo/ will not match 'foo' - ? `${match}$` - // foo matches 'foo' and 'foo/' - : `${match}(?=$|\\/$)` - ], - - // trailing wildcard - [ - /(\^|\\\/)?\\\*$/, - (_, p1) => { - const prefix = p1 - // '\^': - // '/*' does not match EMPTY - // '/*' does not match everything - - // '\\\/': - // 'abc/*' does not match 'abc/' - ? `${p1}[^/]+` - - // 'a*' matches 'a' - // 'a*' matches 'aa' - : '[^/]*' - - return `${prefix}(?=$|\\/$)` - } - ], -] - -// A simple cache, because an ignore rule only has only one certain meaning -const regexCache = Object.create(null) - -// @param {pattern} -const makeRegex = (pattern, negative, ignorecase) => { - const r = regexCache[pattern] - if (r) { - return r - } - - // const replacers = negative - // ? NEGATIVE_REPLACERS - // : POSITIVE_REPLACERS - - const source = REPLACERS.reduce( - (prev, current) => prev.replace(current[0], current[1].bind(pattern)), - pattern - ) - - return regexCache[pattern] = ignorecase - ? new RegExp(source, 'i') - : new RegExp(source) -} - -const isString = subject => typeof subject === 'string' - -// > A blank line matches no files, so it can serve as a separator for readability. -const checkPattern = pattern => pattern - && isString(pattern) - && !REGEX_TEST_BLANK_LINE.test(pattern) - - // > A line starting with # serves as a comment. - && pattern.indexOf('#') !== 0 - -const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF) - -class IgnoreRule { - constructor ( - origin, - pattern, - negative, - regex - ) { - this.origin = origin - this.pattern = pattern - this.negative = negative - this.regex = regex - } -} - -const createRule = (pattern, ignorecase) => { - const origin = pattern - let negative = false - - // > An optional prefix "!" which negates the pattern; - if (pattern.indexOf('!') === 0) { - negative = true - pattern = pattern.substr(1) - } - - pattern = pattern - // > Put a backslash ("\") in front of the first "!" for patterns that - // > begin with a literal "!", for example, `"\!important!.txt"`. - .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') - // > Put a backslash ("\") in front of the first hash for patterns that - // > begin with a hash. - .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#') - - const regex = makeRegex(pattern, negative, ignorecase) - - return new IgnoreRule( - origin, - pattern, - negative, - regex - ) -} - -const throwError = (message, Ctor) => { - throw new Ctor(message) -} - -const checkPath = (path, originalPath, doThrow) => { - if (!isString(path)) { - return doThrow( - `path must be a string, but got \`${originalPath}\``, - TypeError - ) - } - - // We don't know if we should ignore EMPTY, so throw - if (!path) { - return doThrow(`path must not be empty`, TypeError) - } - - // Check if it is a relative path - if (checkPath.isNotRelative(path)) { - const r = '`path.relative()`d' - return doThrow( - `path should be a ${r} string, but got "${originalPath}"`, - RangeError - ) - } - - return true -} - -const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path) - -checkPath.isNotRelative = isNotRelative -checkPath.convert = p => p - -class Ignore { - constructor ({ - ignorecase = true - } = {}) { - this._rules = [] - this._ignorecase = ignorecase - define(this, KEY_IGNORE, true) - this._initCache() - } - - _initCache () { - this._ignoreCache = Object.create(null) - this._testCache = Object.create(null) - } - - _addPattern (pattern) { - // #32 - if (pattern && pattern[KEY_IGNORE]) { - this._rules = this._rules.concat(pattern._rules) - this._added = true - return - } - - if (checkPattern(pattern)) { - const rule = createRule(pattern, this._ignorecase) - this._added = true - this._rules.push(rule) - } - } - - // @param {Array | string | Ignore} pattern - add (pattern) { - this._added = false - - makeArray( - isString(pattern) - ? splitPattern(pattern) - : pattern - ).forEach(this._addPattern, this) - - // Some rules have just added to the ignore, - // making the behavior changed. - if (this._added) { - this._initCache() - } - - return this - } - - // legacy - addPattern (pattern) { - return this.add(pattern) - } - - // | ignored : unignored - // negative | 0:0 | 0:1 | 1:0 | 1:1 - // -------- | ------- | ------- | ------- | -------- - // 0 | TEST | TEST | SKIP | X - // 1 | TESTIF | SKIP | TEST | X - - // - SKIP: always skip - // - TEST: always test - // - TESTIF: only test if checkUnignored - // - X: that never happen - - // @param {boolean} whether should check if the path is unignored, - // setting `checkUnignored` to `false` could reduce additional - // path matching. - - // @returns {TestResult} true if a file is ignored - _testOne (path, checkUnignored) { - let ignored = false - let unignored = false - - this._rules.forEach(rule => { - const {negative} = rule - if ( - unignored === negative && ignored !== unignored - || negative && !ignored && !unignored && !checkUnignored - ) { - return - } - - const matched = rule.regex.test(path) - - if (matched) { - ignored = !negative - unignored = negative - } - }) - - return { - ignored, - unignored - } - } - - // @returns {TestResult} - _test (originalPath, cache, checkUnignored, slices) { - const path = originalPath - // Supports nullable path - && checkPath.convert(originalPath) - - checkPath(path, originalPath, throwError) - - return this._t(path, cache, checkUnignored, slices) - } - - _t (path, cache, checkUnignored, slices) { - if (path in cache) { - return cache[path] - } - - if (!slices) { - // path/to/a.js - // ['path', 'to', 'a.js'] - slices = path.split(SLASH) - } - - slices.pop() - - // If the path has no parent directory, just test it - if (!slices.length) { - return cache[path] = this._testOne(path, checkUnignored) - } - - const parent = this._t( - slices.join(SLASH) + SLASH, - cache, - checkUnignored, - slices - ) - - // If the path contains a parent directory, check the parent first - return cache[path] = parent.ignored - // > It is not possible to re-include a file if a parent directory of - // > that file is excluded. - ? parent - : this._testOne(path, checkUnignored) - } - - ignores (path) { - return this._test(path, this._ignoreCache, false).ignored - } - - createFilter () { - return path => !this.ignores(path) - } - - filter (paths) { - return makeArray(paths).filter(this.createFilter()) - } - - // @returns {TestResult} - test (path) { - return this._test(path, this._testCache, true) - } -} - -const factory = options => new Ignore(options) - -const returnFalse = () => false - -const isPathValid = path => - checkPath(path && checkPath.convert(path), path, returnFalse) - -factory.isPathValid = isPathValid - -// Fixes typescript -factory.default = factory - -module.exports = factory - -// Windows -// -------------------------------------------------------------- -/* istanbul ignore if */ -if ( - // Detect `process` so that it can run in browsers. - typeof process !== 'undefined' - && ( - process.env && process.env.IGNORE_TEST_WIN32 - || process.platform === 'win32' - ) -) { - /* eslint no-control-regex: "off" */ - const makePosix = str => /^\\\\\?\\/.test(str) - || /["<>|\u0000-\u001F]+/u.test(str) - ? str - : str.replace(/\\/g, '/') - - checkPath.convert = makePosix - - // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/' - // 'd:\\foo' - const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i - checkPath.isNotRelative = path => - REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) - || isNotRelative(path) -} - - -/***/ }), -/* 366 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = path => { - const isExtendedLengthPath = /^\\\\\?\\/.test(path); - const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex - - if (isExtendedLengthPath || hasNonAscii) { - return path; - } - - return path.replace(/\\/g, '/'); -}; - - -/***/ }), -/* 367 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const {Transform} = __webpack_require__(137); - -class ObjectTransform extends Transform { - constructor() { - super({ - objectMode: true - }); - } -} - -class FilterStream extends ObjectTransform { - constructor(filter) { - super(); - this._filter = filter; - } - - _transform(data, encoding, callback) { - if (this._filter(data)) { - this.push(data); - } - - callback(); - } -} - -class UniqueStream extends ObjectTransform { - constructor() { - super(); - this._pushed = new Set(); - } - - _transform(data, encoding, callback) { - if (!this._pushed.has(data)) { - this.push(data); - this._pushed.add(data); - } - - callback(); - } -} - -module.exports = { - FilterStream, - UniqueStream -}; - - -/***/ }), -/* 368 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -var isExtglob = __webpack_require__(303); -var chars = { '{': '}', '(': ')', '[': ']'}; -var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; -var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; - -module.exports = function isGlob(str, options) { - if (typeof str !== 'string' || str === '') { - return false; - } - - if (isExtglob(str)) { - return true; - } - - var regex = strictRegex; - var match; - - // optionally relax regex - if (options && options.strict === false) { - regex = relaxedRegex; - } - - while ((match = regex.exec(str))) { - if (match[2]) return true; - var idx = match.index + match[0].length; - - // if an open bracket/brace/paren is escaped, - // set the index to the next closing character - var open = match[1]; - var close = open ? chars[open] : null; - if (open && close) { - var n = str.indexOf(close, idx); - if (n !== -1) { - idx = n + 1; - } - } - - str = str.slice(idx); - } - return false; -}; - - -/***/ }), -/* 369 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__(4); - -module.exports = path_ => { - let cwd = process.cwd(); - - path_ = path.resolve(path_); - - if (process.platform === 'win32') { - cwd = cwd.toLowerCase(); - path_ = path_.toLowerCase(); - } - - return path_ === cwd; -}; - - -/***/ }), -/* 370 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__(4); - -module.exports = (childPath, parentPath) => { - childPath = path.resolve(childPath); - parentPath = path.resolve(parentPath); - - if (process.platform === 'win32') { - childPath = childPath.toLowerCase(); - parentPath = parentPath.toLowerCase(); - } - - if (childPath === parentPath) { - return false; - } - - childPath += path.sep; - parentPath += path.sep; - - return childPath.startsWith(parentPath); -}; - - -/***/ }), -/* 371 */ -/***/ (function(module, exports, __webpack_require__) { - -const assert = __webpack_require__(139) -const path = __webpack_require__(4) -const fs = __webpack_require__(133) -let glob = undefined -try { - glob = __webpack_require__(146) -} catch (_err) { - // treat glob as optional. -} - -const defaultGlobOpts = { - nosort: true, - silent: true -} - -// for EMFILE handling -let timeout = 0 - -const isWindows = (process.platform === "win32") - -const defaults = options => { - const methods = [ - 'unlink', - 'chmod', - 'stat', - 'lstat', - 'rmdir', - 'readdir' - ] - methods.forEach(m => { - options[m] = options[m] || fs[m] - m = m + 'Sync' - options[m] = options[m] || fs[m] - }) - - options.maxBusyTries = options.maxBusyTries || 3 - options.emfileWait = options.emfileWait || 1000 - if (options.glob === false) { - options.disableGlob = true - } - if (options.disableGlob !== true && glob === undefined) { - throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') - } - options.disableGlob = options.disableGlob || false - options.glob = options.glob || defaultGlobOpts -} - -const rimraf = (p, options, cb) => { - if (typeof options === 'function') { - cb = options - options = {} - } - - assert(p, 'rimraf: missing path') - assert.equal(typeof p, 'string', 'rimraf: path should be a string') - assert.equal(typeof cb, 'function', 'rimraf: callback function required') - assert(options, 'rimraf: invalid options argument provided') - assert.equal(typeof options, 'object', 'rimraf: options should be object') - - defaults(options) - - let busyTries = 0 - let errState = null - let n = 0 - - const next = (er) => { - errState = errState || er - if (--n === 0) - cb(errState) - } - - const afterGlob = (er, results) => { - if (er) - return cb(er) - - n = results.length - if (n === 0) - return cb() - - results.forEach(p => { - const CB = (er) => { - if (er) { - if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && - busyTries < options.maxBusyTries) { - busyTries ++ - // try again, with the same exact callback as this one. - return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) - } - - // this one won't happen if graceful-fs is used. - if (er.code === "EMFILE" && timeout < options.emfileWait) { - return setTimeout(() => rimraf_(p, options, CB), timeout ++) - } - - // already gone - if (er.code === "ENOENT") er = null - } - - timeout = 0 - next(er) - } - rimraf_(p, options, CB) - }) - } - - if (options.disableGlob || !glob.hasMagic(p)) - return afterGlob(null, [p]) - - options.lstat(p, (er, stat) => { - if (!er) - return afterGlob(null, [p]) - - glob(p, options.glob, afterGlob) - }) - -} - -// Two possible strategies. -// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR -// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR -// -// Both result in an extra syscall when you guess wrong. However, there -// are likely far more normal files in the world than directories. This -// is based on the assumption that a the average number of files per -// directory is >= 1. -// -// If anyone ever complains about this, then I guess the strategy could -// be made configurable somehow. But until then, YAGNI. -const rimraf_ = (p, options, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // sunos lets the root user unlink directories, which is... weird. - // so we have to lstat here and make sure it's not a dir. - options.lstat(p, (er, st) => { - if (er && er.code === "ENOENT") - return cb(null) - - // Windows can EPERM on stat. Life is suffering. - if (er && er.code === "EPERM" && isWindows) - fixWinEPERM(p, options, er, cb) - - if (st && st.isDirectory()) - return rmdir(p, options, er, cb) - - options.unlink(p, er => { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) - ? fixWinEPERM(p, options, er, cb) - : rmdir(p, options, er, cb) - if (er.code === "EISDIR") - return rmdir(p, options, er, cb) - } - return cb(er) - }) - }) -} - -const fixWinEPERM = (p, options, er, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.chmod(p, 0o666, er2 => { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - options.stat(p, (er3, stats) => { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, options, er, cb) - else - options.unlink(p, cb) - }) - }) -} - -const fixWinEPERMSync = (p, options, er) => { - assert(p) - assert(options) - - try { - options.chmodSync(p, 0o666) - } catch (er2) { - if (er2.code === "ENOENT") - return - else - throw er - } - - let stats - try { - stats = options.statSync(p) - } catch (er3) { - if (er3.code === "ENOENT") - return - else - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, options, er) - else - options.unlinkSync(p) -} - -const rmdir = (p, options, originalEr, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) - // if we guessed wrong, and it's not a directory, then - // raise the original error. - options.rmdir(p, er => { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, options, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -const rmkids = (p, options, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.readdir(p, (er, files) => { - if (er) - return cb(er) - let n = files.length - if (n === 0) - return options.rmdir(p, cb) - let errState - files.forEach(f => { - rimraf(path.join(p, f), options, er => { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - options.rmdir(p, cb) - }) - }) - }) -} - -// this looks simpler, and is strictly *faster*, but will -// tie up the JavaScript thread and fail on excessively -// deep directory trees. -const rimrafSync = (p, options) => { - options = options || {} - defaults(options) - - assert(p, 'rimraf: missing path') - assert.equal(typeof p, 'string', 'rimraf: path should be a string') - assert(options, 'rimraf: missing options') - assert.equal(typeof options, 'object', 'rimraf: options should be object') - - let results - - if (options.disableGlob || !glob.hasMagic(p)) { - results = [p] - } else { - try { - options.lstatSync(p) - results = [p] - } catch (er) { - results = glob.sync(p, options.glob) - } - } - - if (!results.length) - return - - for (let i = 0; i < results.length; i++) { - const p = results[i] - - let st - try { - st = options.lstatSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - - // Windows can EPERM on stat. Life is suffering. - if (er.code === "EPERM" && isWindows) - fixWinEPERMSync(p, options, er) - } - - try { - // sunos lets the root user unlink directories, which is... weird. - if (st && st.isDirectory()) - rmdirSync(p, options, null) - else - options.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) - if (er.code !== "EISDIR") - throw er + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } +} +exports.default = Settings; - rmdirSync(p, options, er) - } - } -} -const rmdirSync = (p, options, originalEr) => { - assert(p) - assert(options) +/***/ }), +/* 358 */ +/***/ (function(module, exports, __webpack_require__) { - try { - options.rmdirSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "ENOTDIR") - throw originalEr - if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") - rmkidsSync(p, options) - } -} +"use strict"; -const rmkidsSync = (p, options) => { - assert(p) - assert(options) - options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) +const path = __webpack_require__(4); +const pathType = __webpack_require__(359); - // We only end up here once we got ENOTEMPTY at least once, and - // at this point, we are guaranteed to have removed all the kids. - // So, we know that it won't be ENOENT or ENOTDIR or anything else. - // try really hard to delete stuff on windows, because it has a - // PROFOUNDLY annoying habit of not closing handles promptly when - // files are deleted, resulting in spurious ENOTEMPTY errors. - const retries = isWindows ? 100 : 1 - let i = 0 - do { - let threw = true - try { - const ret = options.rmdirSync(p, options) - threw = false - return ret - } finally { - if (++i < retries && threw) - continue - } - } while (true) -} +const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; -module.exports = rimraf -rimraf.sync = rimrafSync +const getPath = (filepath, cwd) => { + const pth = filepath[0] === '!' ? filepath.slice(1) : filepath; + return path.isAbsolute(pth) ? pth : path.join(cwd, pth); +}; +const addExtensions = (file, extensions) => { + if (path.extname(file)) { + return `**/${file}`; + } -/***/ }), -/* 372 */ -/***/ (function(module, exports, __webpack_require__) { + return `**/${file}.${getExtensions(extensions)}`; +}; -"use strict"; +const getGlob = (directory, options) => { + if (options.files && !Array.isArray(options.files)) { + throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof options.files}\``); + } -const AggregateError = __webpack_require__(373); + if (options.extensions && !Array.isArray(options.extensions)) { + throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``); + } -module.exports = async ( - iterable, - mapper, - { - concurrency = Infinity, - stopOnError = true - } = {} -) => { - return new Promise((resolve, reject) => { - if (typeof mapper !== 'function') { - throw new TypeError('Mapper function is required'); - } + if (options.files && options.extensions) { + return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions))); + } - if (!(typeof concurrency === 'number' && concurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); - } + if (options.files) { + return options.files.map(x => path.posix.join(directory, `**/${x}`)); + } - const ret = []; - const errors = []; - const iterator = iterable[Symbol.iterator](); - let isRejected = false; - let isIterableDone = false; - let resolvingCount = 0; - let currentIndex = 0; + if (options.extensions) { + return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)]; + } - const next = () => { - if (isRejected) { - return; - } + return [path.posix.join(directory, '**')]; +}; - const nextItem = iterator.next(); - const i = currentIndex; - currentIndex++; +module.exports = async (input, options) => { + options = { + cwd: process.cwd(), + ...options + }; - if (nextItem.done) { - isIterableDone = true; + if (typeof options.cwd !== 'string') { + throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); + } - if (resolvingCount === 0) { - if (!stopOnError && errors.length !== 0) { - reject(new AggregateError(errors)); - } else { - resolve(ret); - } - } + const globs = await Promise.all([].concat(input).map(async x => { + const isDirectory = await pathType.isDirectory(getPath(x, options.cwd)); + return isDirectory ? getGlob(x, options) : x; + })); - return; - } + return [].concat.apply([], globs); // eslint-disable-line prefer-spread +}; - resolvingCount++; +module.exports.sync = (input, options) => { + options = { + cwd: process.cwd(), + ...options + }; - (async () => { - try { - const element = await nextItem.value; - ret[i] = await mapper(element, i); - resolvingCount--; - next(); - } catch (error) { - if (stopOnError) { - isRejected = true; - reject(error); - } else { - errors.push(error); - resolvingCount--; - next(); - } - } - })(); - }; + if (typeof options.cwd !== 'string') { + throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); + } - for (let i = 0; i < concurrency; i++) { - next(); + const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x); - if (isIterableDone) { - break; - } - } - }); + return [].concat.apply([], globs); // eslint-disable-line prefer-spread }; /***/ }), -/* 373 */ +/* 359 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(374); -const cleanStack = __webpack_require__(375); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); -const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); +async function isType(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== 'string') { + throw new TypeError(`Expected a string, got ${typeof filePath}`); + } -class AggregateError extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); + try { + const stats = await promisify(fs[fsStatType])(filePath); + return stats[statsMethodName](); + } catch (error) { + if (error.code === 'ENOENT') { + return false; } - errors = [...errors].map(error => { - if (error instanceof Error) { - return error; - } - - if (error !== null && typeof error === 'object') { - // Handle plain error objects with message property and/or possibly other metadata - return Object.assign(new Error(error.message), error); - } - - return new Error(error); - }); - - let message = errors - .map(error => { - // The `stack` property is not standardized, so we can't assume it exists - return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error); - }) - .join('\n'); - message = '\n' + indentString(message, 4); - super(message); - - this.name = 'AggregateError'; + throw error; + } +} - Object.defineProperty(this, '_errors', {value: errors}); +function isTypeSync(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== 'string') { + throw new TypeError(`Expected a string, got ${typeof filePath}`); } - * [Symbol.iterator]() { - for (const error of this._errors) { - yield error; + try { + return fs[fsStatType](filePath)[statsMethodName](); + } catch (error) { + if (error.code === 'ENOENT') { + return false; } + + throw error; } } -module.exports = AggregateError; +exports.isFile = isType.bind(null, 'stat', 'isFile'); +exports.isDirectory = isType.bind(null, 'stat', 'isDirectory'); +exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink'); +exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile'); +exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory'); +exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 374 */ +/* 360 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); +const path = __webpack_require__(4); +const fastGlob = __webpack_require__(289); +const gitIgnore = __webpack_require__(361); +const slash = __webpack_require__(362); -module.exports = (string, count = 1, options) => { - options = { - indent: ' ', - includeEmptyLines: false, - ...options - }; +const DEFAULT_IGNORE = [ + '**/node_modules/**', + '**/flow-typed/**', + '**/coverage/**', + '**/.git' +]; - if (typeof string !== 'string') { - throw new TypeError( - `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` - ); - } +const readFileP = promisify(fs.readFile); - if (typeof count !== 'number') { - throw new TypeError( - `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` - ); +const mapGitIgnorePatternTo = base => ignore => { + if (ignore.startsWith('!')) { + return '!' + path.posix.join(base, ignore.slice(1)); } - if (typeof options.indent !== 'string') { - throw new TypeError( - `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` - ); - } + return path.posix.join(base, ignore); +}; - if (count === 0) { - return string; +const parseGitIgnore = (content, options) => { + const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); + + return content + .split(/\r?\n/) + .filter(Boolean) + .filter(line => !line.startsWith('#')) + .map(mapGitIgnorePatternTo(base)); +}; + +const reduceIgnore = files => { + return files.reduce((ignores, file) => { + ignores.add(parseGitIgnore(file.content, { + cwd: file.cwd, + fileName: file.filePath + })); + return ignores; + }, gitIgnore()); +}; + +const ensureAbsolutePathForCwd = (cwd, p) => { + if (path.isAbsolute(p)) { + if (p.startsWith(cwd)) { + return p; + } + + throw new Error(`Path ${p} is not in cwd ${cwd}`); } - const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; + return path.join(cwd, p); +}; - return string.replace(regex, options.indent.repeat(count)); +const getIsIgnoredPredecate = (ignores, cwd) => { + return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p)))); }; +const getFile = async (file, cwd) => { + const filePath = path.join(cwd, file); + const content = await readFileP(filePath, 'utf8'); -/***/ }), -/* 375 */ -/***/ (function(module, exports, __webpack_require__) { + return { + cwd, + filePath, + content + }; +}; -"use strict"; +const getFileSync = (file, cwd) => { + const filePath = path.join(cwd, file); + const content = fs.readFileSync(filePath, 'utf8'); -const os = __webpack_require__(120); + return { + cwd, + filePath, + content + }; +}; -const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/; -const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/; -const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir(); +const normalizeOptions = ({ + ignore = [], + cwd = slash(process.cwd()) +} = {}) => { + return {ignore, cwd}; +}; -module.exports = (stack, options) => { - options = Object.assign({pretty: false}, options); +module.exports = async options => { + options = normalizeOptions(options); - return stack.replace(/\\/g, '/') - .split('\n') - .filter(line => { - const pathMatches = line.match(extractPathRegex); - if (pathMatches === null || !pathMatches[1]) { - return true; - } + const paths = await fastGlob('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); - const match = pathMatches[1]; + const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); + const ignores = reduceIgnore(files); - // Electron - if ( - match.includes('.app/Contents/Resources/electron.asar') || - match.includes('.app/Contents/Resources/default_app.asar') - ) { - return false; - } + return getIsIgnoredPredecate(ignores, options.cwd); +}; - return !pathRegex.test(match); - }) - .filter(line => line.trim() !== '') - .map(line => { - if (options.pretty) { - return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~'))); - } +module.exports.sync = options => { + options = normalizeOptions(options); - return line; - }) - .join('\n'); + const paths = fastGlob.sync('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); + + const files = paths.map(file => getFileSync(file, options.cwd)); + const ignores = reduceIgnore(files); + + return getIsIgnoredPredecate(ignores, options.cwd); }; /***/ }), -/* 376 */ -/***/ (function(module, exports, __webpack_require__) { +/* 361 */ +/***/ (function(module, exports) { -"use strict"; +// A simple implementation of make-array +function makeArray (subject) { + return Array.isArray(subject) + ? subject + : [subject] +} -const chalk = __webpack_require__(377); -const cliCursor = __webpack_require__(386); -const cliSpinners = __webpack_require__(390); -const logSymbols = __webpack_require__(392); +const EMPTY = '' +const SPACE = ' ' +const ESCAPE = '\\' +const REGEX_TEST_BLANK_LINE = /^\s+$/ +const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/ +const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/ +const REGEX_SPLITALL_CRLF = /\r?\n/g +// /foo, +// ./foo, +// ../foo, +// . +// .. +const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/ -class Ora { - constructor(options) { - if (typeof options === 'string') { - options = { - text: options - }; - } +const SLASH = '/' +const KEY_IGNORE = typeof Symbol !== 'undefined' + ? Symbol.for('node-ignore') + /* istanbul ignore next */ + : 'node-ignore' - this.options = Object.assign({ - text: '', - color: 'cyan', - stream: process.stderr - }, options); +const define = (object, key, value) => + Object.defineProperty(object, key, {value}) - const sp = this.options.spinner; - this.spinner = typeof sp === 'object' ? sp : (process.platform === 'win32' ? cliSpinners.line : (cliSpinners[sp] || cliSpinners.dots)); // eslint-disable-line no-nested-ternary +const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g - if (this.spinner.frames === undefined) { - throw new Error('Spinner must define `frames`'); - } +// Sanitize the range of a regular expression +// The cases are complicated, see test cases for details +const sanitizeRange = range => range.replace( + REGEX_REGEXP_RANGE, + (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) + ? match + // Invalid range (out of order) which is ok for gitignore rules but + // fatal for JavaScript regular expression, so eliminate it. + : EMPTY +) - this.text = this.options.text; - this.color = this.options.color; - this.interval = this.options.interval || this.spinner.interval || 100; - this.stream = this.options.stream; - this.id = null; - this.frameIndex = 0; - this.enabled = typeof this.options.enabled === 'boolean' ? this.options.enabled : ((this.stream && this.stream.isTTY) && !process.env.CI); - } - frame() { - const frames = this.spinner.frames; - let frame = frames[this.frameIndex]; +// See fixtures #59 +const cleanRangeBackSlash = slashes => { + const {length} = slashes + return slashes.slice(0, length - length % 2) +} - if (this.color) { - frame = chalk[this.color](frame); - } +// > If the pattern ends with a slash, +// > it is removed for the purpose of the following description, +// > but it would only find a match with a directory. +// > In other words, foo/ will match a directory foo and paths underneath it, +// > but will not match a regular file or a symbolic link foo +// > (this is consistent with the way how pathspec works in general in Git). +// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`' +// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call +// you could use option `mark: true` with `glob` - this.frameIndex = ++this.frameIndex % frames.length; +// '`foo/`' should not continue with the '`..`' +const REPLACERS = [ - return frame + ' ' + this.text; - } - clear() { - if (!this.enabled) { - return this; - } + // > Trailing spaces are ignored unless they are quoted with backslash ("\") + [ + // (a\ ) -> (a ) + // (a ) -> (a) + // (a \ ) -> (a ) + /\\?\s+$/, + match => match.indexOf('\\') === 0 + ? SPACE + : EMPTY + ], - this.stream.clearLine(); - this.stream.cursorTo(0); + // replace (\ ) with ' ' + [ + /\\\s/g, + () => SPACE + ], - return this; - } - render() { - this.clear(); - this.stream.write(this.frame()); + // Escape metacharacters + // which is written down by users but means special for regular expressions. - return this; - } - start(text) { - if (text) { - this.text = text; - } + // > There are 12 characters with special meanings: + // > - the backslash \, + // > - the caret ^, + // > - the dollar sign $, + // > - the period or dot ., + // > - the vertical bar or pipe symbol |, + // > - the question mark ?, + // > - the asterisk or star *, + // > - the plus sign +, + // > - the opening parenthesis (, + // > - the closing parenthesis ), + // > - and the opening square bracket [, + // > - the opening curly brace {, + // > These special characters are often called "metacharacters". + [ + /[\\$.|*+(){^]/g, + match => `\\${match}` + ], - if (!this.enabled || this.id) { - return this; - } + [ + // > a question mark (?) matches a single character + /(?!\\)\?/g, + () => '[^/]' + ], - cliCursor.hide(this.stream); - this.render(); - this.id = setInterval(this.render.bind(this), this.interval); + // leading slash + [ - return this; - } - stop() { - if (!this.enabled) { - return this; - } + // > A leading slash matches the beginning of the pathname. + // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". + // A leading slash matches the beginning of the pathname + /^\//, + () => '^' + ], - clearInterval(this.id); - this.id = null; - this.frameIndex = 0; - this.clear(); - cliCursor.show(this.stream); + // replace special metacharacter slash after the leading slash + [ + /\//g, + () => '\\/' + ], - return this; - } - succeed(text) { - return this.stopAndPersist({symbol: logSymbols.success, text}); - } - fail(text) { - return this.stopAndPersist({symbol: logSymbols.error, text}); - } - warn(text) { - return this.stopAndPersist({symbol: logSymbols.warning, text}); - } - info(text) { - return this.stopAndPersist({symbol: logSymbols.info, text}); - } - stopAndPersist(options) { - if (!this.enabled) { - return this; - } + [ + // > A leading "**" followed by a slash means match in all directories. + // > For example, "**/foo" matches file or directory "foo" anywhere, + // > the same as pattern "foo". + // > "**/foo/bar" matches file or directory "bar" anywhere that is directly + // > under directory "foo". + // Notice that the '*'s have been replaced as '\\*' + /^\^*\\\*\\\*\\\//, - // Legacy argument - // TODO: Deprecate sometime in the future - if (typeof options === 'string') { - options = { - symbol: options - }; - } + // '**/foo' <-> 'foo' + () => '^(?:.*\\/)?' + ], - options = options || {}; + // starting + [ + // there will be no leading '/' + // (which has been replaced by section "leading slash") + // If starts with '**', adding a '^' to the regular expression also works + /^(?=[^^])/, + function startingReplacer () { + // If has a slash `/` at the beginning or middle + return !/\/(?!$)/.test(this) + // > Prior to 2.22.1 + // > If the pattern does not contain a slash /, + // > Git treats it as a shell glob pattern + // Actually, if there is only a trailing slash, + // git also treats it as a shell glob pattern - this.stop(); - this.stream.write(`${options.symbol || ' '} ${options.text || this.text}\n`); + // After 2.22.1 (compatible but clearer) + // > If there is a separator at the beginning or middle (or both) + // > of the pattern, then the pattern is relative to the directory + // > level of the particular .gitignore file itself. + // > Otherwise the pattern may also match at any level below + // > the .gitignore level. + ? '(?:^|\\/)' - return this; - } -} + // > Otherwise, Git treats the pattern as a shell glob suitable for + // > consumption by fnmatch(3) + : '^' + } + ], -module.exports = function (opts) { - return new Ora(opts); -}; + // two globstars + [ + // Use lookahead assertions so that we could match more than one `'/**'` + /\\\/\\\*\\\*(?=\\\/|$)/g, -module.exports.promise = (action, options) => { - if (typeof action.then !== 'function') { - throw new TypeError('Parameter `action` must be a Promise'); - } + // Zero, one or several directories + // should not use '*', or it will be replaced by the next replacer - const spinner = new Ora(options); - spinner.start(); + // Check if it is not the last `'/**'` + (_, index, str) => index + 6 < str.length - action.then( - () => { - spinner.succeed(); - }, - () => { - spinner.fail(); - } - ); + // case: /**/ + // > A slash followed by two consecutive asterisks then a slash matches + // > zero or more directories. + // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. + // '/**/' + ? '(?:\\/[^\\/]+)*' - return spinner; -}; + // case: /** + // > A trailing `"/**"` matches everything inside. + // #21: everything inside but it should not include the current folder + : '\\/.+' + ], -/***/ }), -/* 377 */ -/***/ (function(module, exports, __webpack_require__) { + // intermediate wildcards + [ + // Never replace escaped '*' + // ignore rule '\*' will match the path '*' -"use strict"; + // 'abc.*/' -> go + // 'abc.*' -> skip this rule + /(^|[^\\]+)\\\*(?=.+)/g, -const escapeStringRegexp = __webpack_require__(178); -const ansiStyles = __webpack_require__(378); -const stdoutColor = __webpack_require__(383).stdout; + // '*.js' matches '.js' + // '*.js' doesn't match 'abc' + (_, p1) => `${p1}[^\\/]*` + ], -const template = __webpack_require__(385); + [ + // unescape, revert step 3 except for back slash + // For example, if a user escape a '\\*', + // after step 3, the result will be '\\\\\\*' + /\\\\\\(?=[$.|*+(){^])/g, + () => ESCAPE + ], -const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); + [ + // '\\\\' -> '\\' + /\\\\/g, + () => ESCAPE + ], -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; + [ + // > The range notation, e.g. [a-zA-Z], + // > can be used to match one of the characters in a range. -// `color-convert` models to exclude from the Chalk API due to conflicts and such -const skipModels = new Set(['gray']); + // `\` is escaped by step 3 + /(\\)?\[([^\]/]*?)(\\*)($|\])/g, + (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE + // '\\[bar]' -> '\\\\[bar\\]' + ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` + : close === ']' + ? endEscape.length % 2 === 0 + // A normal case, and it is a range notation + // '[bar]' + // '[bar\\\\]' + ? `[${sanitizeRange(range)}${endEscape}]` + // Invalid range notaton + // '[bar\\]' -> '[bar\\\\]' + : '[]' + : '[]' + ], -const styles = Object.create(null); + // ending + [ + // 'js' will not match 'js.' + // 'ab' will not match 'abc' + /(?:[^*])$/, -function applyOptions(obj, options) { - options = options || {}; + // WTF! + // https://git-scm.com/docs/gitignore + // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) + // which re-fixes #24, #38 - // Detect level if not set manually - const scLevel = stdoutColor ? stdoutColor.level : 0; - obj.level = options.level === undefined ? scLevel : options.level; - obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; -} + // > If there is a separator at the end of the pattern then the pattern + // > will only match directories, otherwise the pattern can match both + // > files and directories. -function Chalk(options) { - // We check for this.template here since calling `chalk.constructor()` - // by itself will have a `this` of a previously constructed chalk object - if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); + // 'js*' will not match 'a.js' + // 'js/' will not match 'a.js' + // 'js' will match 'a.js' and 'a.js/' + match => /\/$/.test(match) + // foo/ will not match 'foo' + ? `${match}$` + // foo matches 'foo' and 'foo/' + : `${match}(?=$|\\/$)` + ], - chalk.template = function () { - const args = [].slice.call(arguments); - return chalkTag.apply(null, [chalk.template].concat(args)); - }; + // trailing wildcard + [ + /(\^|\\\/)?\\\*$/, + (_, p1) => { + const prefix = p1 + // '\^': + // '/*' does not match EMPTY + // '/*' does not match everything - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); + // '\\\/': + // 'abc/*' does not match 'abc/' + ? `${p1}[^/]+` - chalk.template.constructor = Chalk; + // 'a*' matches 'a' + // 'a*' matches 'aa' + : '[^/]*' - return chalk.template; - } + return `${prefix}(?=$|\\/$)` + } + ], +] - applyOptions(this, options); -} +// A simple cache, because an ignore rule only has only one certain meaning +const regexCache = Object.create(null) -// Use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001B[94m'; -} +// @param {pattern} +const makeRegex = (pattern, negative, ignorecase) => { + const r = regexCache[pattern] + if (r) { + return r + } -for (const key of Object.keys(ansiStyles)) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + // const replacers = negative + // ? NEGATIVE_REPLACERS + // : POSITIVE_REPLACERS - styles[key] = { - get() { - const codes = ansiStyles[key]; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); - } - }; + const source = REPLACERS.reduce( + (prev, current) => prev.replace(current[0], current[1].bind(pattern)), + pattern + ) + + return regexCache[pattern] = ignorecase + ? new RegExp(source, 'i') + : new RegExp(source) } -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; +const isString = subject => typeof subject === 'string' -ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); -for (const model of Object.keys(ansiStyles.color.ansi)) { - if (skipModels.has(model)) { - continue; - } +// > A blank line matches no files, so it can serve as a separator for readability. +const checkPattern = pattern => pattern + && isString(pattern) + && !REGEX_TEST_BLANK_LINE.test(pattern) - styles[model] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.color.close, - closeRe: ansiStyles.color.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} + // > A line starting with # serves as a comment. + && pattern.indexOf('#') !== 0 -ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); -for (const model of Object.keys(ansiStyles.bgColor.ansi)) { - if (skipModels.has(model)) { - continue; - } +const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF) - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.bgColor.close, - closeRe: ansiStyles.bgColor.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; +class IgnoreRule { + constructor ( + origin, + pattern, + negative, + regex + ) { + this.origin = origin + this.pattern = pattern + this.negative = negative + this.regex = regex + } } -const proto = Object.defineProperties(() => {}, styles); - -function build(_styles, _empty, key) { - const builder = function () { - return applyStyle.apply(builder, arguments); - }; +const createRule = (pattern, ignorecase) => { + const origin = pattern + let negative = false - builder._styles = _styles; - builder._empty = _empty; + // > An optional prefix "!" which negates the pattern; + if (pattern.indexOf('!') === 0) { + negative = true + pattern = pattern.substr(1) + } - const self = this; + pattern = pattern + // > Put a backslash ("\") in front of the first "!" for patterns that + // > begin with a literal "!", for example, `"\!important!.txt"`. + .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') + // > Put a backslash ("\") in front of the first hash for patterns that + // > begin with a hash. + .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#') - Object.defineProperty(builder, 'level', { - enumerable: true, - get() { - return self.level; - }, - set(level) { - self.level = level; - } - }); + const regex = makeRegex(pattern, negative, ignorecase) - Object.defineProperty(builder, 'enabled', { - enumerable: true, - get() { - return self.enabled; - }, - set(enabled) { - self.enabled = enabled; - } - }); + return new IgnoreRule( + origin, + pattern, + negative, + regex + ) +} - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; +const throwError = (message, Ctor) => { + throw new Ctor(message) +} - // `__proto__` is used because we must return a function, but there is - // no way to create a function with a different prototype - builder.__proto__ = proto; // eslint-disable-line no-proto +const checkPath = (path, originalPath, doThrow) => { + if (!isString(path)) { + return doThrow( + `path must be a string, but got \`${originalPath}\``, + TypeError + ) + } - return builder; -} + // We don't know if we should ignore EMPTY, so throw + if (!path) { + return doThrow(`path must not be empty`, TypeError) + } -function applyStyle() { - // Support varags, but simply cast to string in case there's only one arg - const args = arguments; - const argsLen = args.length; - let str = String(arguments[0]); + // Check if it is a relative path + if (checkPath.isNotRelative(path)) { + const r = '`path.relative()`d' + return doThrow( + `path should be a ${r} string, but got "${originalPath}"`, + RangeError + ) + } - if (argsLen === 0) { - return ''; - } + return true +} - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } +const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path) - if (!this.enabled || this.level <= 0 || !str) { - return this._empty ? '' : str; - } +checkPath.isNotRelative = isNotRelative +checkPath.convert = p => p - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - const originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && this.hasGrey) { - ansiStyles.dim.open = ''; - } +class Ignore { + constructor ({ + ignorecase = true + } = {}) { + this._rules = [] + this._ignorecase = ignorecase + define(this, KEY_IGNORE, true) + this._initCache() + } - for (const code of this._styles.slice().reverse()) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; + _initCache () { + this._ignoreCache = Object.create(null) + this._testCache = Object.create(null) + } - // Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS - // https://github.com/chalk/chalk/pull/92 - str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); - } + _addPattern (pattern) { + // #32 + if (pattern && pattern[KEY_IGNORE]) { + this._rules = this._rules.concat(pattern._rules) + this._added = true + return + } - // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue - ansiStyles.dim.open = originalDim; + if (checkPattern(pattern)) { + const rule = createRule(pattern, this._ignorecase) + this._added = true + this._rules.push(rule) + } + } - return str; -} + // @param {Array | string | Ignore} pattern + add (pattern) { + this._added = false -function chalkTag(chalk, strings) { - if (!Array.isArray(strings)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return [].slice.call(arguments, 1).join(' '); - } + makeArray( + isString(pattern) + ? splitPattern(pattern) + : pattern + ).forEach(this._addPattern, this) - const args = [].slice.call(arguments, 2); - const parts = [strings.raw[0]]; + // Some rules have just added to the ignore, + // making the behavior changed. + if (this._added) { + this._initCache() + } - for (let i = 1; i < strings.length; i++) { - parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); - parts.push(String(strings.raw[i])); - } + return this + } - return template(chalk, parts.join('')); -} + // legacy + addPattern (pattern) { + return this.add(pattern) + } -Object.defineProperties(Chalk.prototype, styles); + // | ignored : unignored + // negative | 0:0 | 0:1 | 1:0 | 1:1 + // -------- | ------- | ------- | ------- | -------- + // 0 | TEST | TEST | SKIP | X + // 1 | TESTIF | SKIP | TEST | X -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript + // - SKIP: always skip + // - TEST: always test + // - TESTIF: only test if checkUnignored + // - X: that never happen + // @param {boolean} whether should check if the path is unignored, + // setting `checkUnignored` to `false` could reduce additional + // path matching. -/***/ }), -/* 378 */ -/***/ (function(module, exports, __webpack_require__) { + // @returns {TestResult} true if a file is ignored + _testOne (path, checkUnignored) { + let ignored = false + let unignored = false -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(379); + this._rules.forEach(rule => { + const {negative} = rule + if ( + unignored === negative && ignored !== unignored + || negative && !ignored && !unignored && !checkUnignored + ) { + return + } -const wrapAnsi16 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${code + offset}m`; -}; + const matched = rule.regex.test(path) -const wrapAnsi256 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};5;${code}m`; -}; + if (matched) { + ignored = !negative + unignored = negative + } + }) -const wrapAnsi16m = (fn, offset) => function () { - const rgb = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; + return { + ignored, + unignored + } + } -function assembleStyles() { - const codes = new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], + // @returns {TestResult} + _test (originalPath, cache, checkUnignored, slices) { + const path = originalPath + // Supports nullable path + && checkPath.convert(originalPath) - // Bright color - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], + checkPath(path, originalPath, throwError) - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] - } - }; + return this._t(path, cache, checkUnignored, slices) + } - // Fix humans - styles.color.grey = styles.color.gray; + _t (path, cache, checkUnignored, slices) { + if (path in cache) { + return cache[path] + } - for (const groupName of Object.keys(styles)) { - const group = styles[groupName]; + if (!slices) { + // path/to/a.js + // ['path', 'to', 'a.js'] + slices = path.split(SLASH) + } - for (const styleName of Object.keys(group)) { - const style = group[styleName]; + slices.pop() - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; + // If the path has no parent directory, just test it + if (!slices.length) { + return cache[path] = this._testOne(path, checkUnignored) + } - group[styleName] = styles[styleName]; + const parent = this._t( + slices.join(SLASH) + SLASH, + cache, + checkUnignored, + slices + ) - codes.set(style[0], style[1]); - } + // If the path contains a parent directory, check the parent first + return cache[path] = parent.ignored + // > It is not possible to re-include a file if a parent directory of + // > that file is excluded. + ? parent + : this._testOne(path, checkUnignored) + } - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); + ignores (path) { + return this._test(path, this._ignoreCache, false).ignored + } - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false - }); - } + createFilter () { + return path => !this.ignores(path) + } - const ansi2ansi = n => n; - const rgb2rgb = (r, g, b) => [r, g, b]; + filter (paths) { + return makeArray(paths).filter(this.createFilter()) + } - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; + // @returns {TestResult} + test (path) { + return this._test(path, this._testCache, true) + } +} - styles.color.ansi = { - ansi: wrapAnsi16(ansi2ansi, 0) - }; - styles.color.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 0) - }; - styles.color.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 0) - }; +const factory = options => new Ignore(options) - styles.bgColor.ansi = { - ansi: wrapAnsi16(ansi2ansi, 10) - }; - styles.bgColor.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 10) - }; - styles.bgColor.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 10) - }; +const returnFalse = () => false - for (let key of Object.keys(colorConvert)) { - if (typeof colorConvert[key] !== 'object') { - continue; - } +const isPathValid = path => + checkPath(path && checkPath.convert(path), path, returnFalse) - const suite = colorConvert[key]; +factory.isPathValid = isPathValid - if (key === 'ansi16') { - key = 'ansi'; - } +// Fixes typescript +factory.default = factory - if ('ansi16' in suite) { - styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); - styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); - } +module.exports = factory - if ('ansi256' in suite) { - styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); - styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); - } +// Windows +// -------------------------------------------------------------- +/* istanbul ignore if */ +if ( + // Detect `process` so that it can run in browsers. + typeof process !== 'undefined' + && ( + process.env && process.env.IGNORE_TEST_WIN32 + || process.platform === 'win32' + ) +) { + /* eslint no-control-regex: "off" */ + const makePosix = str => /^\\\\\?\\/.test(str) + || /["<>|\u0000-\u001F]+/u.test(str) + ? str + : str.replace(/\\/g, '/') - if ('rgb' in suite) { - styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); - styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); - } - } + checkPath.convert = makePosix - return styles; + // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/' + // 'd:\\foo' + const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i + checkPath.isNotRelative = path => + REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) + || isNotRelative(path) } -// Make the export immutable -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 379 */ +/* 362 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(380); -var route = __webpack_require__(382); +"use strict"; -var convert = {}; +module.exports = path => { + const isExtendedLengthPath = /^\\\\\?\\/.test(path); + const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex -var models = Object.keys(conversions); + if (isExtendedLengthPath || hasNonAscii) { + return path; + } -function wrapRaw(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } + return path.replace(/\\/g, '/'); +}; - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); - } - return fn(args); - }; +/***/ }), +/* 363 */ +/***/ (function(module, exports, __webpack_require__) { - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } +"use strict"; - return wrappedFn; +const {Transform} = __webpack_require__(137); + +class ObjectTransform extends Transform { + constructor() { + super({ + objectMode: true + }); + } } -function wrapRounded(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } +class FilterStream extends ObjectTransform { + constructor(filter) { + super(); + this._filter = filter; + } - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); + _transform(data, encoding, callback) { + if (this._filter(data)) { + this.push(data); } - var result = fn(args); + callback(); + } +} - // we're assuming the result is an array here. - // see notice in conversions.js; don't use box types - // in conversion functions. - if (typeof result === 'object') { - for (var len = result.length, i = 0; i < len; i++) { - result[i] = Math.round(result[i]); - } - } +class UniqueStream extends ObjectTransform { + constructor() { + super(); + this._pushed = new Set(); + } - return result; - }; + _transform(data, encoding, callback) { + if (!this._pushed.has(data)) { + this.push(data); + this._pushed.add(data); + } - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; + callback(); } - - return wrappedFn; } -models.forEach(function (fromModel) { - convert[fromModel] = {}; - - Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); - Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); +module.exports = { + FilterStream, + UniqueStream +}; - var routes = route(fromModel); - var routeModels = Object.keys(routes); - routeModels.forEach(function (toModel) { - var fn = routes[toModel]; +/***/ }), +/* 364 */ +/***/ (function(module, exports, __webpack_require__) { - convert[fromModel][toModel] = wrapRounded(fn); - convert[fromModel][toModel].raw = wrapRaw(fn); - }); -}); +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ -module.exports = convert; +var isExtglob = __webpack_require__(299); +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; +var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; +module.exports = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } -/***/ }), -/* 380 */ -/***/ (function(module, exports, __webpack_require__) { + if (isExtglob(str)) { + return true; + } -/* MIT license */ -var cssKeywords = __webpack_require__(381); + var regex = strictRegex; + var match; -// NOTE: conversions should only return primitive values (i.e. arrays, or -// values that give correct `typeof` results). -// do not use box values types (i.e. Number(), String(), etc.) + // optionally relax regex + if (options && options.strict === false) { + regex = relaxedRegex; + } -var reverseKeywords = {}; -for (var key in cssKeywords) { - if (cssKeywords.hasOwnProperty(key)) { - reverseKeywords[cssKeywords[key]] = key; - } -} + while ((match = regex.exec(str))) { + if (match[2]) return true; + var idx = match.index + match[0].length; -var convert = module.exports = { - rgb: {channels: 3, labels: 'rgb'}, - hsl: {channels: 3, labels: 'hsl'}, - hsv: {channels: 3, labels: 'hsv'}, - hwb: {channels: 3, labels: 'hwb'}, - cmyk: {channels: 4, labels: 'cmyk'}, - xyz: {channels: 3, labels: 'xyz'}, - lab: {channels: 3, labels: 'lab'}, - lch: {channels: 3, labels: 'lch'}, - hex: {channels: 1, labels: ['hex']}, - keyword: {channels: 1, labels: ['keyword']}, - ansi16: {channels: 1, labels: ['ansi16']}, - ansi256: {channels: 1, labels: ['ansi256']}, - hcg: {channels: 3, labels: ['h', 'c', 'g']}, - apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, - gray: {channels: 1, labels: ['gray']} -}; + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + var open = match[1]; + var close = open ? chars[open] : null; + if (open && close) { + var n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } -// hide .channels and .labels properties -for (var model in convert) { - if (convert.hasOwnProperty(model)) { - if (!('channels' in convert[model])) { - throw new Error('missing channels property: ' + model); - } + str = str.slice(idx); + } + return false; +}; - if (!('labels' in convert[model])) { - throw new Error('missing channel labels property: ' + model); - } - if (convert[model].labels.length !== convert[model].channels) { - throw new Error('channel and label counts mismatch: ' + model); - } +/***/ }), +/* 365 */ +/***/ (function(module, exports, __webpack_require__) { - var channels = convert[model].channels; - var labels = convert[model].labels; - delete convert[model].channels; - delete convert[model].labels; - Object.defineProperty(convert[model], 'channels', {value: channels}); - Object.defineProperty(convert[model], 'labels', {value: labels}); - } -} +"use strict"; -convert.rgb.hsl = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var h; - var s; - var l; +const path = __webpack_require__(4); - if (max === min) { - h = 0; - } else if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else if (b === max) { - h = 4 + (r - g) / delta; - } +module.exports = path_ => { + let cwd = process.cwd(); - h = Math.min(h * 60, 360); + path_ = path.resolve(path_); - if (h < 0) { - h += 360; + if (process.platform === 'win32') { + cwd = cwd.toLowerCase(); + path_ = path_.toLowerCase(); } - l = (min + max) / 2; + return path_ === cwd; +}; - if (max === min) { - s = 0; - } else if (l <= 0.5) { - s = delta / (max + min); - } else { - s = delta / (2 - max - min); - } - return [h, s * 100, l * 100]; -}; +/***/ }), +/* 366 */ +/***/ (function(module, exports, __webpack_require__) { -convert.rgb.hsv = function (rgb) { - var rdif; - var gdif; - var bdif; - var h; - var s; +"use strict"; - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var v = Math.max(r, g, b); - var diff = v - Math.min(r, g, b); - var diffc = function (c) { - return (v - c) / 6 / diff + 1 / 2; - }; +const path = __webpack_require__(4); - if (diff === 0) { - h = s = 0; - } else { - s = diff / v; - rdif = diffc(r); - gdif = diffc(g); - bdif = diffc(b); +module.exports = (childPath, parentPath) => { + childPath = path.resolve(childPath); + parentPath = path.resolve(parentPath); - if (r === v) { - h = bdif - gdif; - } else if (g === v) { - h = (1 / 3) + rdif - bdif; - } else if (b === v) { - h = (2 / 3) + gdif - rdif; - } - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } + if (process.platform === 'win32') { + childPath = childPath.toLowerCase(); + parentPath = parentPath.toLowerCase(); } - return [ - h * 360, - s * 100, - v * 100 - ]; + if (childPath === parentPath) { + return false; + } + + childPath += path.sep; + parentPath += path.sep; + + return childPath.startsWith(parentPath); }; -convert.rgb.hwb = function (rgb) { - var r = rgb[0]; - var g = rgb[1]; - var b = rgb[2]; - var h = convert.rgb.hsl(rgb)[0]; - var w = 1 / 255 * Math.min(r, Math.min(g, b)); - b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); +/***/ }), +/* 367 */ +/***/ (function(module, exports, __webpack_require__) { - return [h, w * 100, b * 100]; -}; +const assert = __webpack_require__(139) +const path = __webpack_require__(4) +const fs = __webpack_require__(133) +let glob = undefined +try { + glob = __webpack_require__(146) +} catch (_err) { + // treat glob as optional. +} -convert.rgb.cmyk = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var c; - var m; - var y; - var k; +const defaultGlobOpts = { + nosort: true, + silent: true +} - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; +// for EMFILE handling +let timeout = 0 - return [c * 100, m * 100, y * 100, k * 100]; -}; +const isWindows = (process.platform === "win32") -/** - * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance - * */ -function comparativeDistance(x, y) { - return ( - Math.pow(x[0] - y[0], 2) + - Math.pow(x[1] - y[1], 2) + - Math.pow(x[2] - y[2], 2) - ); +const defaults = options => { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 + options.emfileWait = options.emfileWait || 1000 + if (options.glob === false) { + options.disableGlob = true + } + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') + } + options.disableGlob = options.disableGlob || false + options.glob = options.glob || defaultGlobOpts } -convert.rgb.keyword = function (rgb) { - var reversed = reverseKeywords[rgb]; - if (reversed) { - return reversed; - } +const rimraf = (p, options, cb) => { + if (typeof options === 'function') { + cb = options + options = {} + } - var currentClosestDistance = Infinity; - var currentClosestKeyword; + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') - for (var keyword in cssKeywords) { - if (cssKeywords.hasOwnProperty(keyword)) { - var value = cssKeywords[keyword]; + defaults(options) - // Compute comparative distance - var distance = comparativeDistance(rgb, value); + let busyTries = 0 + let errState = null + let n = 0 - // Check if its less, if so set as closest - if (distance < currentClosestDistance) { - currentClosestDistance = distance; - currentClosestKeyword = keyword; - } - } - } + const next = (er) => { + errState = errState || er + if (--n === 0) + cb(errState) + } - return currentClosestKeyword; -}; + const afterGlob = (er, results) => { + if (er) + return cb(er) -convert.keyword.rgb = function (keyword) { - return cssKeywords[keyword]; -}; + n = results.length + if (n === 0) + return cb() -convert.rgb.xyz = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; + results.forEach(p => { + const CB = (er) => { + if (er) { + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + busyTries < options.maxBusyTries) { + busyTries ++ + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) + } - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < options.emfileWait) { + return setTimeout(() => rimraf_(p, options, CB), timeout ++) + } - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + // already gone + if (er.code === "ENOENT") er = null + } - return [x * 100, y * 100, z * 100]; -}; + timeout = 0 + next(er) + } + rimraf_(p, options, CB) + }) + } -convert.rgb.lab = function (rgb) { - var xyz = convert.rgb.xyz(rgb); - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; + if (options.disableGlob || !glob.hasMagic(p)) + return afterGlob(null, [p]) - x /= 95.047; - y /= 100; - z /= 108.883; + options.lstat(p, (er, stat) => { + if (!er) + return afterGlob(null, [p]) - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + glob(p, options.glob, afterGlob) + }) - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); +} - return [l, a, b]; -}; +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +const rimraf_ = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') -convert.hsl.rgb = function (hsl) { - var h = hsl[0] / 360; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var t1; - var t2; - var t3; - var rgb; - var val; + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === "ENOENT") + return cb(null) - if (s === 0) { - val = l * 255; - return [val, val, val]; - } + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === "EPERM" && isWindows) + fixWinEPERM(p, options, er, cb) - if (l < 0.5) { - t2 = l * (1 + s); - } else { - t2 = l + s - l * s; - } + if (st && st.isDirectory()) + return rmdir(p, options, er, cb) - t1 = 2 * l - t2; + options.unlink(p, er => { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) + }) +} - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * -(i - 1); - if (t3 < 0) { - t3++; - } - if (t3 > 1) { - t3--; - } +const fixWinEPERM = (p, options, er, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') - if (6 * t3 < 1) { - val = t1 + (t2 - t1) * 6 * t3; - } else if (2 * t3 < 1) { - val = t2; - } else if (3 * t3 < 2) { - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - } else { - val = t1; - } + options.chmod(p, 0o666, er2 => { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, (er3, stats) => { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} - rgb[i] = val * 255; - } +const fixWinEPERMSync = (p, options, er) => { + assert(p) + assert(options) - return rgb; -}; + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er + } -convert.hsl.hsv = function (hsl) { - var h = hsl[0]; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var smin = s; - var lmin = Math.max(l, 0.01); - var sv; - var v; + let stats + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er + } + + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} + +const rmdir = (p, options, originalEr, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} + +const rmkids = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, (er, files) => { + if (er) + return cb(er) + let n = files.length + if (n === 0) + return options.rmdir(p, cb) + let errState + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +const rimrafSync = (p, options) => { + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + let results + + if (options.disableGlob || !glob.hasMagic(p)) { + results = [p] + } else { + try { + options.lstatSync(p) + results = [p] + } catch (er) { + results = glob.sync(p, options.glob) + } + } - l *= 2; - s *= (l <= 1) ? l : 2 - l; - smin *= lmin <= 1 ? lmin : 2 - lmin; - v = (l + s) / 2; - sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + if (!results.length) + return - return [h, sv * 100, v * 100]; -}; + for (let i = 0; i < results.length; i++) { + const p = results[i] -convert.hsv.rgb = function (hsv) { - var h = hsv[0] / 60; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var hi = Math.floor(h) % 6; + let st + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === "ENOENT") + return - var f = h - Math.floor(h); - var p = 255 * v * (1 - s); - var q = 255 * v * (1 - (s * f)); - var t = 255 * v * (1 - (s * (1 - f))); - v *= 255; + // Windows can EPERM on stat. Life is suffering. + if (er.code === "EPERM" && isWindows) + fixWinEPERMSync(p, options, er) + } - switch (hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -}; + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) + rmdirSync(p, options, null) + else + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er -convert.hsv.hsl = function (hsv) { - var h = hsv[0]; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var vmin = Math.max(v, 0.01); - var lmin; - var sl; - var l; + rmdirSync(p, options, er) + } + } +} - l = (2 - s) * v; - lmin = (2 - s) * vmin; - sl = s * vmin; - sl /= (lmin <= 1) ? lmin : 2 - lmin; - sl = sl || 0; - l /= 2; +const rmdirSync = (p, options, originalEr) => { + assert(p) + assert(options) - return [h, sl * 100, l * 100]; -}; + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -convert.hwb.rgb = function (hwb) { - var h = hwb[0] / 360; - var wh = hwb[1] / 100; - var bl = hwb[2] / 100; - var ratio = wh + bl; - var i; - var v; - var f; - var n; +const rmkidsSync = (p, options) => { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue + } + } while (true) +} - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; +module.exports = rimraf +rimraf.sync = rimrafSync - if ((i & 0x01) !== 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation +/***/ }), +/* 368 */ +/***/ (function(module, exports, __webpack_require__) { - var r; - var g; - var b; - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } +"use strict"; - return [r * 255, g * 255, b * 255]; -}; +const AggregateError = __webpack_require__(369); -convert.cmyk.rgb = function (cmyk) { - var c = cmyk[0] / 100; - var m = cmyk[1] / 100; - var y = cmyk[2] / 100; - var k = cmyk[3] / 100; - var r; - var g; - var b; +module.exports = async ( + iterable, + mapper, + { + concurrency = Infinity, + stopOnError = true + } = {} +) => { + return new Promise((resolve, reject) => { + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); + if (!(typeof concurrency === 'number' && concurrency >= 1)) { + throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); + } - return [r * 255, g * 255, b * 255]; -}; + const ret = []; + const errors = []; + const iterator = iterable[Symbol.iterator](); + let isRejected = false; + let isIterableDone = false; + let resolvingCount = 0; + let currentIndex = 0; -convert.xyz.rgb = function (xyz) { - var x = xyz[0] / 100; - var y = xyz[1] / 100; - var z = xyz[2] / 100; - var r; - var g; - var b; + const next = () => { + if (isRejected) { + return; + } - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + const nextItem = iterator.next(); + const i = currentIndex; + currentIndex++; - // assume sRGB - r = r > 0.0031308 - ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r * 12.92; + if (nextItem.done) { + isIterableDone = true; - g = g > 0.0031308 - ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g * 12.92; + if (resolvingCount === 0) { + if (!stopOnError && errors.length !== 0) { + reject(new AggregateError(errors)); + } else { + resolve(ret); + } + } - b = b > 0.0031308 - ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b * 12.92; + return; + } - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); + resolvingCount++; - return [r * 255, g * 255, b * 255]; + (async () => { + try { + const element = await nextItem.value; + ret[i] = await mapper(element, i); + resolvingCount--; + next(); + } catch (error) { + if (stopOnError) { + isRejected = true; + reject(error); + } else { + errors.push(error); + resolvingCount--; + next(); + } + } + })(); + }; + + for (let i = 0; i < concurrency; i++) { + next(); + + if (isIterableDone) { + break; + } + } + }); }; -convert.xyz.lab = function (xyz) { - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; - x /= 95.047; - y /= 100; - z /= 108.883; +/***/ }), +/* 369 */ +/***/ (function(module, exports, __webpack_require__) { - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); +"use strict"; - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); +const indentString = __webpack_require__(370); +const cleanStack = __webpack_require__(371); - return [l, a, b]; -}; +const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); -convert.lab.xyz = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var x; - var y; - var z; +class AggregateError extends Error { + constructor(errors) { + if (!Array.isArray(errors)) { + throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); + } - y = (l + 16) / 116; - x = a / 500 + y; - z = y - b / 200; + errors = [...errors].map(error => { + if (error instanceof Error) { + return error; + } - var y2 = Math.pow(y, 3); - var x2 = Math.pow(x, 3); - var z2 = Math.pow(z, 3); - y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; - x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; - z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + if (error !== null && typeof error === 'object') { + // Handle plain error objects with message property and/or possibly other metadata + return Object.assign(new Error(error.message), error); + } - x *= 95.047; - y *= 100; - z *= 108.883; + return new Error(error); + }); - return [x, y, z]; -}; + let message = errors + .map(error => { + // The `stack` property is not standardized, so we can't assume it exists + return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error); + }) + .join('\n'); + message = '\n' + indentString(message, 4); + super(message); -convert.lab.lch = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var hr; - var h; - var c; + this.name = 'AggregateError'; - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; + Object.defineProperty(this, '_errors', {value: errors}); + } - if (h < 0) { - h += 360; + * [Symbol.iterator]() { + for (const error of this._errors) { + yield error; + } } +} - c = Math.sqrt(a * a + b * b); +module.exports = AggregateError; - return [l, c, h]; -}; -convert.lch.lab = function (lch) { - var l = lch[0]; - var c = lch[1]; - var h = lch[2]; - var a; - var b; - var hr; +/***/ }), +/* 370 */ +/***/ (function(module, exports, __webpack_require__) { - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); +"use strict"; - return [l, a, b]; -}; -convert.rgb.ansi16 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization +module.exports = (string, count = 1, options) => { + options = { + indent: ' ', + includeEmptyLines: false, + ...options + }; - value = Math.round(value / 50); + if (typeof string !== 'string') { + throw new TypeError( + `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` + ); + } - if (value === 0) { - return 30; + if (typeof count !== 'number') { + throw new TypeError( + `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` + ); } - var ansi = 30 - + ((Math.round(b / 255) << 2) - | (Math.round(g / 255) << 1) - | Math.round(r / 255)); + if (typeof options.indent !== 'string') { + throw new TypeError( + `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` + ); + } - if (value === 2) { - ansi += 60; + if (count === 0) { + return string; } - return ansi; -}; + const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; -convert.hsv.ansi16 = function (args) { - // optimization here; we already know the value and don't need to get - // it converted for us. - return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); + return string.replace(regex, options.indent.repeat(count)); }; -convert.rgb.ansi256 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - - // we use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - if (r === g && g === b) { - if (r < 8) { - return 16; - } - if (r > 248) { - return 231; - } +/***/ }), +/* 371 */ +/***/ (function(module, exports, __webpack_require__) { - return Math.round(((r - 8) / 247) * 24) + 232; - } +"use strict"; - var ansi = 16 - + (36 * Math.round(r / 255 * 5)) - + (6 * Math.round(g / 255 * 5)) - + Math.round(b / 255 * 5); +const os = __webpack_require__(120); - return ansi; -}; +const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/; +const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/; +const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir(); -convert.ansi16.rgb = function (args) { - var color = args % 10; +module.exports = (stack, options) => { + options = Object.assign({pretty: false}, options); - // handle greyscale - if (color === 0 || color === 7) { - if (args > 50) { - color += 3.5; - } + return stack.replace(/\\/g, '/') + .split('\n') + .filter(line => { + const pathMatches = line.match(extractPathRegex); + if (pathMatches === null || !pathMatches[1]) { + return true; + } - color = color / 10.5 * 255; + const match = pathMatches[1]; - return [color, color, color]; - } + // Electron + if ( + match.includes('.app/Contents/Resources/electron.asar') || + match.includes('.app/Contents/Resources/default_app.asar') + ) { + return false; + } - var mult = (~~(args > 50) + 1) * 0.5; - var r = ((color & 1) * mult) * 255; - var g = (((color >> 1) & 1) * mult) * 255; - var b = (((color >> 2) & 1) * mult) * 255; + return !pathRegex.test(match); + }) + .filter(line => line.trim() !== '') + .map(line => { + if (options.pretty) { + return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~'))); + } - return [r, g, b]; + return line; + }) + .join('\n'); }; -convert.ansi256.rgb = function (args) { - // handle greyscale - if (args >= 232) { - var c = (args - 232) * 10 + 8; - return [c, c, c]; - } - args -= 16; +/***/ }), +/* 372 */ +/***/ (function(module, exports, __webpack_require__) { - var rem; - var r = Math.floor(args / 36) / 5 * 255; - var g = Math.floor((rem = args % 36) / 6) / 5 * 255; - var b = (rem % 6) / 5 * 255; +"use strict"; + +const chalk = __webpack_require__(373); +const cliCursor = __webpack_require__(378); +const cliSpinners = __webpack_require__(382); +const logSymbols = __webpack_require__(384); + +class Ora { + constructor(options) { + if (typeof options === 'string') { + options = { + text: options + }; + } - return [r, g, b]; -}; + this.options = Object.assign({ + text: '', + color: 'cyan', + stream: process.stderr + }, options); -convert.rgb.hex = function (args) { - var integer = ((Math.round(args[0]) & 0xFF) << 16) - + ((Math.round(args[1]) & 0xFF) << 8) - + (Math.round(args[2]) & 0xFF); + const sp = this.options.spinner; + this.spinner = typeof sp === 'object' ? sp : (process.platform === 'win32' ? cliSpinners.line : (cliSpinners[sp] || cliSpinners.dots)); // eslint-disable-line no-nested-ternary - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; + if (this.spinner.frames === undefined) { + throw new Error('Spinner must define `frames`'); + } -convert.hex.rgb = function (args) { - var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); - if (!match) { - return [0, 0, 0]; + this.text = this.options.text; + this.color = this.options.color; + this.interval = this.options.interval || this.spinner.interval || 100; + this.stream = this.options.stream; + this.id = null; + this.frameIndex = 0; + this.enabled = typeof this.options.enabled === 'boolean' ? this.options.enabled : ((this.stream && this.stream.isTTY) && !process.env.CI); } + frame() { + const frames = this.spinner.frames; + let frame = frames[this.frameIndex]; - var colorString = match[0]; - - if (match[0].length === 3) { - colorString = colorString.split('').map(function (char) { - return char + char; - }).join(''); - } + if (this.color) { + frame = chalk[this.color](frame); + } - var integer = parseInt(colorString, 16); - var r = (integer >> 16) & 0xFF; - var g = (integer >> 8) & 0xFF; - var b = integer & 0xFF; + this.frameIndex = ++this.frameIndex % frames.length; - return [r, g, b]; -}; + return frame + ' ' + this.text; + } + clear() { + if (!this.enabled) { + return this; + } -convert.rgb.hcg = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var max = Math.max(Math.max(r, g), b); - var min = Math.min(Math.min(r, g), b); - var chroma = (max - min); - var grayscale; - var hue; + this.stream.clearLine(); + this.stream.cursorTo(0); - if (chroma < 1) { - grayscale = min / (1 - chroma); - } else { - grayscale = 0; + return this; } + render() { + this.clear(); + this.stream.write(this.frame()); - if (chroma <= 0) { - hue = 0; - } else - if (max === r) { - hue = ((g - b) / chroma) % 6; - } else - if (max === g) { - hue = 2 + (b - r) / chroma; - } else { - hue = 4 + (r - g) / chroma + 4; + return this; } + start(text) { + if (text) { + this.text = text; + } - hue /= 6; - hue %= 1; - - return [hue * 360, chroma * 100, grayscale * 100]; -}; + if (!this.enabled || this.id) { + return this; + } -convert.hsl.hcg = function (hsl) { - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var c = 1; - var f = 0; + cliCursor.hide(this.stream); + this.render(); + this.id = setInterval(this.render.bind(this), this.interval); - if (l < 0.5) { - c = 2.0 * s * l; - } else { - c = 2.0 * s * (1.0 - l); + return this; } + stop() { + if (!this.enabled) { + return this; + } - if (c < 1.0) { - f = (l - 0.5 * c) / (1.0 - c); + clearInterval(this.id); + this.id = null; + this.frameIndex = 0; + this.clear(); + cliCursor.show(this.stream); + + return this; + } + succeed(text) { + return this.stopAndPersist({symbol: logSymbols.success, text}); + } + fail(text) { + return this.stopAndPersist({symbol: logSymbols.error, text}); + } + warn(text) { + return this.stopAndPersist({symbol: logSymbols.warning, text}); + } + info(text) { + return this.stopAndPersist({symbol: logSymbols.info, text}); } + stopAndPersist(options) { + if (!this.enabled) { + return this; + } - return [hsl[0], c * 100, f * 100]; -}; + // Legacy argument + // TODO: Deprecate sometime in the future + if (typeof options === 'string') { + options = { + symbol: options + }; + } -convert.hsv.hcg = function (hsv) { - var s = hsv[1] / 100; - var v = hsv[2] / 100; + options = options || {}; - var c = s * v; - var f = 0; + this.stop(); + this.stream.write(`${options.symbol || ' '} ${options.text || this.text}\n`); - if (c < 1.0) { - f = (v - c) / (1 - c); + return this; } +} - return [hsv[0], c * 100, f * 100]; +module.exports = function (opts) { + return new Ora(opts); }; -convert.hcg.rgb = function (hcg) { - var h = hcg[0] / 360; - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - if (c === 0.0) { - return [g * 255, g * 255, g * 255]; +module.exports.promise = (action, options) => { + if (typeof action.then !== 'function') { + throw new TypeError('Parameter `action` must be a Promise'); } - var pure = [0, 0, 0]; - var hi = (h % 1) * 6; - var v = hi % 1; - var w = 1 - v; - var mg = 0; - - switch (Math.floor(hi)) { - case 0: - pure[0] = 1; pure[1] = v; pure[2] = 0; break; - case 1: - pure[0] = w; pure[1] = 1; pure[2] = 0; break; - case 2: - pure[0] = 0; pure[1] = 1; pure[2] = v; break; - case 3: - pure[0] = 0; pure[1] = w; pure[2] = 1; break; - case 4: - pure[0] = v; pure[1] = 0; pure[2] = 1; break; - default: - pure[0] = 1; pure[1] = 0; pure[2] = w; - } + const spinner = new Ora(options); + spinner.start(); - mg = (1.0 - c) * g; + action.then( + () => { + spinner.succeed(); + }, + () => { + spinner.fail(); + } + ); - return [ - (c * pure[0] + mg) * 255, - (c * pure[1] + mg) * 255, - (c * pure[2] + mg) * 255 - ]; + return spinner; }; -convert.hcg.hsv = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - var v = c + g * (1.0 - c); - var f = 0; - if (v > 0.0) { - f = c / v; - } +/***/ }), +/* 373 */ +/***/ (function(module, exports, __webpack_require__) { - return [hcg[0], f * 100, v * 100]; -}; +"use strict"; -convert.hcg.hsl = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; +const escapeStringRegexp = __webpack_require__(178); +const ansiStyles = __webpack_require__(374); +const stdoutColor = __webpack_require__(375).stdout; - var l = g * (1.0 - c) + 0.5 * c; - var s = 0; +const template = __webpack_require__(377); - if (l > 0.0 && l < 0.5) { - s = c / (2 * l); - } else - if (l >= 0.5 && l < 1.0) { - s = c / (2 * (1 - l)); - } +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); - return [hcg[0], s * 100, l * 100]; -}; +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; -convert.hcg.hwb = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - var v = c + g * (1.0 - c); - return [hcg[0], (v - c) * 100, (1 - v) * 100]; -}; +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); -convert.hwb.hcg = function (hwb) { - var w = hwb[1] / 100; - var b = hwb[2] / 100; - var v = 1 - b; - var c = v - w; - var g = 0; +const styles = Object.create(null); - if (c < 1) { - g = (v - c) / (1 - c); - } +function applyOptions(obj, options) { + options = options || {}; - return [hwb[0], c * 100, g * 100]; -}; + // Detect level if not set manually + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === undefined ? scLevel : options.level; + obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; +} -convert.apple.rgb = function (apple) { - return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; -}; +function Chalk(options) { + // We check for this.template here since calling `chalk.constructor()` + // by itself will have a `this` of a previously constructed chalk object + if (!this || !(this instanceof Chalk) || this.template) { + const chalk = {}; + applyOptions(chalk, options); -convert.rgb.apple = function (rgb) { - return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; -}; + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; -convert.gray.rgb = function (args) { - return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; -}; + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); -convert.gray.hsl = convert.gray.hsv = function (args) { - return [0, 0, args[0]]; -}; + chalk.template.constructor = Chalk; -convert.gray.hwb = function (gray) { - return [0, 100, gray[0]]; -}; + return chalk.template; + } -convert.gray.cmyk = function (gray) { - return [0, 0, 0, gray[0]]; -}; + applyOptions(this, options); +} -convert.gray.lab = function (gray) { - return [gray[0], 0, 0]; -}; +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; +} -convert.gray.hex = function (gray) { - var val = Math.round(gray[0] / 100 * 255) & 0xFF; - var integer = (val << 16) + (val << 8) + val; +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; +} -convert.rgb.gray = function (rgb) { - var val = (rgb[0] + rgb[1] + rgb[2]) / 3; - return [val / 255 * 100]; +styles.visible = { + get() { + return build.call(this, this._styles || [], true, 'visible'); + } }; +ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); +for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } -/***/ }), -/* 381 */ -/***/ (function(module, exports, __webpack_require__) { + styles[model] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} -"use strict"; - - -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; +ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); +for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} -/***/ }), -/* 382 */ -/***/ (function(module, exports, __webpack_require__) { +const proto = Object.defineProperties(() => {}, styles); -var conversions = __webpack_require__(380); +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; -/* - this function routes a model to all other models. + builder._styles = _styles; + builder._empty = _empty; - all functions that are routed have a property `.conversion` attached - to the returned synthetic function. This property is an array - of strings, each with the steps in between the 'from' and 'to' - color models (inclusive). + const self = this; - conversions that are not possible simply are not included. -*/ + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); -function buildGraph() { - var graph = {}; - // https://jsperf.com/object-keys-vs-for-in-with-closure/3 - var models = Object.keys(conversions); + Object.defineProperty(builder, 'enabled', { + enumerable: true, + get() { + return self.enabled; + }, + set(enabled) { + self.enabled = enabled; + } + }); - for (var len = models.length, i = 0; i < len; i++) { - graph[models[i]] = { - // http://jsperf.com/1-vs-infinity - // micro-opt, but this is simple. - distance: -1, - parent: null - }; - } + // See below for fix regarding invisible grey/dim combination on Windows + builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; - return graph; + // `__proto__` is used because we must return a function, but there is + // no way to create a function with a different prototype + builder.__proto__ = proto; // eslint-disable-line no-proto + + return builder; } -// https://en.wikipedia.org/wiki/Breadth-first_search -function deriveBFS(fromModel) { - var graph = buildGraph(); - var queue = [fromModel]; // unshift -> queue -> pop +function applyStyle() { + // Support varags, but simply cast to string in case there's only one arg + const args = arguments; + const argsLen = args.length; + let str = String(arguments[0]); - graph[fromModel].distance = 0; + if (argsLen === 0) { + return ''; + } - while (queue.length) { - var current = queue.pop(); - var adjacents = Object.keys(conversions[current]); + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } - for (var len = adjacents.length, i = 0; i < len; i++) { - var adjacent = adjacents[i]; - var node = graph[adjacent]; + if (!this.enabled || this.level <= 0 || !str) { + return this._empty ? '' : str; + } - if (node.distance === -1) { - node.distance = graph[current].distance + 1; - node.parent = current; - queue.unshift(adjacent); - } - } + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ''; } - return graph; -} + for (const code of this._styles.slice().reverse()) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; -function link(from, to) { - return function (args) { - return to(from(args)); - }; + // Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS + // https://github.com/chalk/chalk/pull/92 + str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; + + return str; } -function wrapConversion(toModel, graph) { - var path = [graph[toModel].parent, toModel]; - var fn = conversions[graph[toModel].parent][toModel]; +function chalkTag(chalk, strings) { + if (!Array.isArray(strings)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return [].slice.call(arguments, 1).join(' '); + } - var cur = graph[toModel].parent; - while (graph[cur].parent) { - path.unshift(graph[cur].parent); - fn = link(conversions[graph[cur].parent][cur], fn); - cur = graph[cur].parent; + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); } - fn.conversion = path; - return fn; + return template(chalk, parts.join('')); } -module.exports = function (fromModel) { - var graph = deriveBFS(fromModel); - var conversion = {}; +Object.defineProperties(Chalk.prototype, styles); - var models = Object.keys(graph); - for (var len = models.length, i = 0; i < len; i++) { - var toModel = models[i]; - var node = graph[toModel]; +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports.default = module.exports; // For TypeScript - if (node.parent === null) { - // no possible conversion, or this node is the source model. + +/***/ }), +/* 374 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) { +const colorConvert = __webpack_require__(180); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { continue; } - conversion[toModel] = wrapConversion(toModel, graph); + const suite = colorConvert[key]; + + if (key === 'ansi16') { + key = 'ansi'; + } + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } } - return conversion; -}; + return styles; +} +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 383 */ +/* 375 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const os = __webpack_require__(120); -const hasFlag = __webpack_require__(384); +const hasFlag = __webpack_require__(376); const env = process.env; @@ -50207,7 +47781,7 @@ module.exports = { /***/ }), -/* 384 */ +/* 376 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50222,7 +47796,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 385 */ +/* 377 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50357,12 +47931,12 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 386 */ +/* 378 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const restoreCursor = __webpack_require__(387); +const restoreCursor = __webpack_require__(379); let hidden = false; @@ -50403,12 +47977,12 @@ exports.toggle = (force, stream) => { /***/ }), -/* 387 */ +/* 379 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const onetime = __webpack_require__(388); +const onetime = __webpack_require__(380); const signalExit = __webpack_require__(217); module.exports = onetime(() => { @@ -50419,12 +47993,12 @@ module.exports = onetime(() => { /***/ }), -/* 388 */ +/* 380 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const mimicFn = __webpack_require__(389); +const mimicFn = __webpack_require__(381); module.exports = (fn, opts) => { // TODO: Remove this in v3 @@ -50465,7 +48039,7 @@ module.exports = (fn, opts) => { /***/ }), -/* 389 */ +/* 381 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50481,27 +48055,27 @@ module.exports = (to, from) => { /***/ }), -/* 390 */ +/* 382 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(391); +module.exports = __webpack_require__(383); /***/ }), -/* 391 */ +/* 383 */ /***/ (function(module) { module.exports = JSON.parse("{\"dots\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠹\",\"⠸\",\"⠼\",\"⠴\",\"⠦\",\"⠧\",\"⠇\",\"⠏\"]},\"dots2\":{\"interval\":80,\"frames\":[\"⣾\",\"⣽\",\"⣻\",\"⢿\",\"⡿\",\"⣟\",\"⣯\",\"⣷\"]},\"dots3\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠞\",\"⠖\",\"⠦\",\"⠴\",\"⠲\",\"⠳\",\"⠓\"]},\"dots4\":{\"interval\":80,\"frames\":[\"⠄\",\"⠆\",\"⠇\",\"⠋\",\"⠙\",\"⠸\",\"⠰\",\"⠠\",\"⠰\",\"⠸\",\"⠙\",\"⠋\",\"⠇\",\"⠆\"]},\"dots5\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\"]},\"dots6\":{\"interval\":80,\"frames\":[\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠴\",\"⠲\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠚\",\"⠙\",\"⠉\",\"⠁\"]},\"dots7\":{\"interval\":80,\"frames\":[\"⠈\",\"⠉\",\"⠋\",\"⠓\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠖\",\"⠦\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\"]},\"dots8\":{\"interval\":80,\"frames\":[\"⠁\",\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\",\"⠈\"]},\"dots9\":{\"interval\":80,\"frames\":[\"⢹\",\"⢺\",\"⢼\",\"⣸\",\"⣇\",\"⡧\",\"⡗\",\"⡏\"]},\"dots10\":{\"interval\":80,\"frames\":[\"⢄\",\"⢂\",\"⢁\",\"⡁\",\"⡈\",\"⡐\",\"⡠\"]},\"dots11\":{\"interval\":100,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⡀\",\"⢀\",\"⠠\",\"⠐\",\"⠈\"]},\"dots12\":{\"interval\":80,\"frames\":[\"⢀⠀\",\"⡀⠀\",\"⠄⠀\",\"⢂⠀\",\"⡂⠀\",\"⠅⠀\",\"⢃⠀\",\"⡃⠀\",\"⠍⠀\",\"⢋⠀\",\"⡋⠀\",\"⠍⠁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⢈⠩\",\"⡀⢙\",\"⠄⡙\",\"⢂⠩\",\"⡂⢘\",\"⠅⡘\",\"⢃⠨\",\"⡃⢐\",\"⠍⡐\",\"⢋⠠\",\"⡋⢀\",\"⠍⡁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⠈⠩\",\"⠀⢙\",\"⠀⡙\",\"⠀⠩\",\"⠀⢘\",\"⠀⡘\",\"⠀⠨\",\"⠀⢐\",\"⠀⡐\",\"⠀⠠\",\"⠀⢀\",\"⠀⡀\"]},\"line\":{\"interval\":130,\"frames\":[\"-\",\"\\\\\",\"|\",\"/\"]},\"line2\":{\"interval\":100,\"frames\":[\"⠂\",\"-\",\"–\",\"—\",\"–\",\"-\"]},\"pipe\":{\"interval\":100,\"frames\":[\"┤\",\"┘\",\"┴\",\"└\",\"├\",\"┌\",\"┬\",\"┐\"]},\"simpleDots\":{\"interval\":400,\"frames\":[\". \",\".. \",\"...\",\" \"]},\"simpleDotsScrolling\":{\"interval\":200,\"frames\":[\". \",\".. \",\"...\",\" ..\",\" .\",\" \"]},\"star\":{\"interval\":70,\"frames\":[\"✶\",\"✸\",\"✹\",\"✺\",\"✹\",\"✷\"]},\"star2\":{\"interval\":80,\"frames\":[\"+\",\"x\",\"*\"]},\"flip\":{\"interval\":70,\"frames\":[\"_\",\"_\",\"_\",\"-\",\"`\",\"`\",\"'\",\"´\",\"-\",\"_\",\"_\",\"_\"]},\"hamburger\":{\"interval\":100,\"frames\":[\"☱\",\"☲\",\"☴\"]},\"growVertical\":{\"interval\":120,\"frames\":[\"▁\",\"▃\",\"▄\",\"▅\",\"▆\",\"▇\",\"▆\",\"▅\",\"▄\",\"▃\"]},\"growHorizontal\":{\"interval\":120,\"frames\":[\"▏\",\"▎\",\"▍\",\"▌\",\"▋\",\"▊\",\"▉\",\"▊\",\"▋\",\"▌\",\"▍\",\"▎\"]},\"balloon\":{\"interval\":140,\"frames\":[\" \",\".\",\"o\",\"O\",\"@\",\"*\",\" \"]},\"balloon2\":{\"interval\":120,\"frames\":[\".\",\"o\",\"O\",\"°\",\"O\",\"o\",\".\"]},\"noise\":{\"interval\":100,\"frames\":[\"▓\",\"▒\",\"░\"]},\"bounce\":{\"interval\":120,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⠂\"]},\"boxBounce\":{\"interval\":120,\"frames\":[\"▖\",\"▘\",\"▝\",\"▗\"]},\"boxBounce2\":{\"interval\":100,\"frames\":[\"▌\",\"▀\",\"▐\",\"▄\"]},\"triangle\":{\"interval\":50,\"frames\":[\"◢\",\"◣\",\"◤\",\"◥\"]},\"arc\":{\"interval\":100,\"frames\":[\"◜\",\"◠\",\"◝\",\"◞\",\"◡\",\"◟\"]},\"circle\":{\"interval\":120,\"frames\":[\"◡\",\"⊙\",\"◠\"]},\"squareCorners\":{\"interval\":180,\"frames\":[\"◰\",\"◳\",\"◲\",\"◱\"]},\"circleQuarters\":{\"interval\":120,\"frames\":[\"◴\",\"◷\",\"◶\",\"◵\"]},\"circleHalves\":{\"interval\":50,\"frames\":[\"◐\",\"◓\",\"◑\",\"◒\"]},\"squish\":{\"interval\":100,\"frames\":[\"╫\",\"╪\"]},\"toggle\":{\"interval\":250,\"frames\":[\"⊶\",\"⊷\"]},\"toggle2\":{\"interval\":80,\"frames\":[\"▫\",\"▪\"]},\"toggle3\":{\"interval\":120,\"frames\":[\"□\",\"■\"]},\"toggle4\":{\"interval\":100,\"frames\":[\"■\",\"□\",\"▪\",\"▫\"]},\"toggle5\":{\"interval\":100,\"frames\":[\"▮\",\"▯\"]},\"toggle6\":{\"interval\":300,\"frames\":[\"ဝ\",\"၀\"]},\"toggle7\":{\"interval\":80,\"frames\":[\"⦾\",\"⦿\"]},\"toggle8\":{\"interval\":100,\"frames\":[\"◍\",\"◌\"]},\"toggle9\":{\"interval\":100,\"frames\":[\"◉\",\"◎\"]},\"toggle10\":{\"interval\":100,\"frames\":[\"㊂\",\"㊀\",\"㊁\"]},\"toggle11\":{\"interval\":50,\"frames\":[\"⧇\",\"⧆\"]},\"toggle12\":{\"interval\":120,\"frames\":[\"☗\",\"☖\"]},\"toggle13\":{\"interval\":80,\"frames\":[\"=\",\"*\",\"-\"]},\"arrow\":{\"interval\":100,\"frames\":[\"←\",\"↖\",\"↑\",\"↗\",\"→\",\"↘\",\"↓\",\"↙\"]},\"arrow2\":{\"interval\":80,\"frames\":[\"⬆️ \",\"↗️ \",\"➡️ \",\"↘️ \",\"⬇️ \",\"↙️ \",\"⬅️ \",\"↖️ \"]},\"arrow3\":{\"interval\":120,\"frames\":[\"▹▹▹▹▹\",\"▸▹▹▹▹\",\"▹▸▹▹▹\",\"▹▹▸▹▹\",\"▹▹▹▸▹\",\"▹▹▹▹▸\"]},\"bouncingBar\":{\"interval\":80,\"frames\":[\"[ ]\",\"[= ]\",\"[== ]\",\"[=== ]\",\"[ ===]\",\"[ ==]\",\"[ =]\",\"[ ]\",\"[ =]\",\"[ ==]\",\"[ ===]\",\"[====]\",\"[=== ]\",\"[== ]\",\"[= ]\"]},\"bouncingBall\":{\"interval\":80,\"frames\":[\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ●)\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"(● )\"]},\"smiley\":{\"interval\":200,\"frames\":[\"😄 \",\"😝 \"]},\"monkey\":{\"interval\":300,\"frames\":[\"🙈 \",\"🙈 \",\"🙉 \",\"🙊 \"]},\"hearts\":{\"interval\":100,\"frames\":[\"💛 \",\"💙 \",\"💜 \",\"💚 \",\"❤️ \"]},\"clock\":{\"interval\":100,\"frames\":[\"🕐 \",\"🕑 \",\"🕒 \",\"🕓 \",\"🕔 \",\"🕕 \",\"🕖 \",\"🕗 \",\"🕘 \",\"🕙 \",\"🕚 \"]},\"earth\":{\"interval\":180,\"frames\":[\"🌍 \",\"🌎 \",\"🌏 \"]},\"moon\":{\"interval\":80,\"frames\":[\"🌑 \",\"🌒 \",\"🌓 \",\"🌔 \",\"🌕 \",\"🌖 \",\"🌗 \",\"🌘 \"]},\"runner\":{\"interval\":140,\"frames\":[\"🚶 \",\"🏃 \"]},\"pong\":{\"interval\":80,\"frames\":[\"▐⠂ ▌\",\"▐⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂▌\",\"▐ ⠠▌\",\"▐ ⡀▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐⠠ ▌\"]},\"shark\":{\"interval\":120,\"frames\":[\"▐|\\\\____________▌\",\"▐_|\\\\___________▌\",\"▐__|\\\\__________▌\",\"▐___|\\\\_________▌\",\"▐____|\\\\________▌\",\"▐_____|\\\\_______▌\",\"▐______|\\\\______▌\",\"▐_______|\\\\_____▌\",\"▐________|\\\\____▌\",\"▐_________|\\\\___▌\",\"▐__________|\\\\__▌\",\"▐___________|\\\\_▌\",\"▐____________|\\\\▌\",\"▐____________/|▌\",\"▐___________/|_▌\",\"▐__________/|__▌\",\"▐_________/|___▌\",\"▐________/|____▌\",\"▐_______/|_____▌\",\"▐______/|______▌\",\"▐_____/|_______▌\",\"▐____/|________▌\",\"▐___/|_________▌\",\"▐__/|__________▌\",\"▐_/|___________▌\",\"▐/|____________▌\"]},\"dqpb\":{\"interval\":100,\"frames\":[\"d\",\"q\",\"p\",\"b\"]},\"weather\":{\"interval\":100,\"frames\":[\"☀️ \",\"☀️ \",\"☀️ \",\"🌤 \",\"⛅️ \",\"🌥 \",\"☁️ \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"⛈ \",\"🌨 \",\"🌧 \",\"🌨 \",\"☁️ \",\"🌥 \",\"⛅️ \",\"🌤 \",\"☀️ \",\"☀️ \"]},\"christmas\":{\"interval\":400,\"frames\":[\"🌲\",\"🎄\"]}}"); /***/ }), -/* 392 */ +/* 384 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const chalk = __webpack_require__(393); +const chalk = __webpack_require__(385); const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; @@ -50523,16 +48097,16 @@ module.exports = isSupported ? main : fallbacks; /***/ }), -/* 393 */ +/* 385 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const escapeStringRegexp = __webpack_require__(178); -const ansiStyles = __webpack_require__(394); +const ansiStyles = __webpack_require__(386); const stdoutColor = __webpack_require__(184).stdout; -const template = __webpack_require__(395); +const template = __webpack_require__(387); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -50758,7 +48332,7 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 394 */ +/* 386 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50931,7 +48505,7 @@ Object.defineProperty(module, 'exports', { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 395 */ +/* 387 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51066,7 +48640,7 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 396 */ +/* 388 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51127,7 +48701,7 @@ const RunCommand = { }; /***/ }), -/* 397 */ +/* 389 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51137,7 +48711,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); /* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(144); /* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(145); -/* harmony import */ var _utils_watch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(398); +/* harmony import */ var _utils_watch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(390); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -51222,14 +48796,14 @@ const WatchCommand = { }; /***/ }), -/* 398 */ +/* 390 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "waitUntilWatchIsReady", function() { return waitUntilWatchIsReady; }); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(399); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(391); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -51296,141 +48870,141 @@ function waitUntilWatchIsReady(stream, opts = {}) { } /***/ }), -/* 399 */ +/* 391 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(400); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(392); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(401); +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(393); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(402); +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(394); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(403); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(395); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(404); +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(396); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(405); +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(397); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(406); +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(398); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(407); +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(399); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(408); +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(400); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(409); +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(401); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(410); +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(402); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); /* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(80); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(411); +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(403); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(412); +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(404); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(413); +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(405); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(414); +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(406); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(415); +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(407); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(416); +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(408); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(417); +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(409); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(419); +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(411); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(420); +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(412); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(421); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(413); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(422); +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(414); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(423); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(415); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(424); +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(416); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(427); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(419); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(428); +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(420); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(429); +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(421); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(430); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(422); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(431); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(423); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); /* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(104); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(432); +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(424); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(433); +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(425); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(434); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(426); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(435); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(427); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); /* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(31); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(436); +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(428); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(437); +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(429); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(438); +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(430); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); /* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(66); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(440); +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(432); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(441); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(433); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(442); +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(434); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(445); +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(437); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); /* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(81); @@ -51441,175 +49015,175 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(446); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(438); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(447); +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(439); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(448); +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(440); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(449); +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(441); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); /* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(41); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(450); +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(442); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(451); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(443); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(452); +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(444); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(453); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(445); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(454); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(446); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(455); +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(447); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(456); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(448); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(457); +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(449); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(458); +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(450); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(443); +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(435); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(459); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(451); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(460); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(452); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(461); +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(453); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(462); +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(454); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); /* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(30); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(463); +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(455); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(464); +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(456); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(444); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(436); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(465); +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(457); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(466); +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(458); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(467); +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(459); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(468); +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(460); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(469); +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(461); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(470); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(462); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(471); +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(463); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(472); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(464); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(473); +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(465); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(474); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(466); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(476); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(468); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(477); +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(469); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(478); +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(470); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(426); +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(418); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(439); +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(431); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(479); +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(471); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(480); +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(472); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(481); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(473); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(482); +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(474); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(483); +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(475); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(425); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(417); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(484); +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(476); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(485); +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(477); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(486); +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(478); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(487); +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(479); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(488); +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(480); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(489); +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(481); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(490); +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(482); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(491); +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(483); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(492); +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(484); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(493); +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(485); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(494); +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(486); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(495); +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(487); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(496); +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(488); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -51721,7 +49295,7 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 400 */ +/* 392 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51802,14 +49376,14 @@ var AuditSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 401 */ +/* 393 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(400); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(392); /* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(107); /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ @@ -51825,7 +49399,7 @@ function auditTime(duration, scheduler) { /***/ }), -/* 402 */ +/* 394 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51874,7 +49448,7 @@ var BufferSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 403 */ +/* 395 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51975,7 +49549,7 @@ var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 404 */ +/* 396 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52136,7 +49710,7 @@ function dispatchBufferClose(arg) { /***/ }), -/* 405 */ +/* 397 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52256,7 +49830,7 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 406 */ +/* 398 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52351,7 +49925,7 @@ var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 407 */ +/* 399 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52415,7 +49989,7 @@ var CatchSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 408 */ +/* 400 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52431,7 +50005,7 @@ function combineAll(project) { /***/ }), -/* 409 */ +/* 401 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52463,7 +50037,7 @@ function combineLatest() { /***/ }), -/* 410 */ +/* 402 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52483,7 +50057,7 @@ function concat() { /***/ }), -/* 411 */ +/* 403 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52499,13 +50073,13 @@ function concatMap(project, resultSelector) { /***/ }), -/* 412 */ +/* 404 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(411); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(403); /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ function concatMapTo(innerObservable, resultSelector) { @@ -52515,7 +50089,7 @@ function concatMapTo(innerObservable, resultSelector) { /***/ }), -/* 413 */ +/* 405 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52580,7 +50154,7 @@ var CountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 414 */ +/* 406 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52668,7 +50242,7 @@ var DebounceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 415 */ +/* 407 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52744,7 +50318,7 @@ function dispatchNext(subscriber) { /***/ }), -/* 416 */ +/* 408 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52794,7 +50368,7 @@ var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 417 */ +/* 409 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52802,7 +50376,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(418); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(410); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); /* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -52901,7 +50475,7 @@ var DelayMessage = /*@__PURE__*/ (function () { /***/ }), -/* 418 */ +/* 410 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52915,7 +50489,7 @@ function isDate(value) { /***/ }), -/* 419 */ +/* 411 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53061,7 +50635,7 @@ var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 420 */ +/* 412 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53099,7 +50673,7 @@ var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 421 */ +/* 413 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53177,7 +50751,7 @@ var DistinctSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 422 */ +/* 414 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53248,13 +50822,13 @@ var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 423 */ +/* 415 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(422); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(414); /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ function distinctUntilKeyChanged(key, compare) { @@ -53264,7 +50838,7 @@ function distinctUntilKeyChanged(key, compare) { /***/ }), -/* 424 */ +/* 416 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53272,9 +50846,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); /* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(425); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(416); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(426); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(417); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(408); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(418); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -53296,7 +50870,7 @@ function elementAt(index, defaultValue) { /***/ }), -/* 425 */ +/* 417 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53362,7 +50936,7 @@ function defaultErrorFactory() { /***/ }), -/* 426 */ +/* 418 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53424,7 +50998,7 @@ var TakeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 427 */ +/* 419 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53446,7 +51020,7 @@ function endWith() { /***/ }), -/* 428 */ +/* 420 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53508,7 +51082,7 @@ var EverySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 429 */ +/* 421 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53565,7 +51139,7 @@ var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 430 */ +/* 422 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53665,7 +51239,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 431 */ +/* 423 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53784,7 +51358,7 @@ var ExpandSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 432 */ +/* 424 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53822,7 +51396,7 @@ var FinallySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 433 */ +/* 425 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53894,13 +51468,13 @@ var FindValueSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 434 */ +/* 426 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); -/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(433); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(425); /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ function findIndex(predicate, thisArg) { @@ -53910,7 +51484,7 @@ function findIndex(predicate, thisArg) { /***/ }), -/* 435 */ +/* 427 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53918,9 +51492,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); /* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(426); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(416); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(425); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(418); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(408); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(417); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -53937,7 +51511,7 @@ function first(predicate, defaultValue) { /***/ }), -/* 436 */ +/* 428 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53974,7 +51548,7 @@ var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 437 */ +/* 429 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54018,7 +51592,7 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 438 */ +/* 430 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54026,9 +51600,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); /* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(439); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(425); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(416); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(431); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(417); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(408); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -54045,7 +51619,7 @@ function last(predicate, defaultValue) { /***/ }), -/* 439 */ +/* 431 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54122,7 +51696,7 @@ var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 440 */ +/* 432 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54161,7 +51735,7 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 441 */ +/* 433 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54211,13 +51785,13 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 442 */ +/* 434 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(443); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(435); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -54230,15 +51804,15 @@ function max(comparer) { /***/ }), -/* 443 */ +/* 435 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(444); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(439); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(416); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(436); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(431); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(408); /* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ @@ -54259,7 +51833,7 @@ function reduce(accumulator, seed) { /***/ }), -/* 444 */ +/* 436 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54341,7 +51915,7 @@ var ScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 445 */ +/* 437 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54361,7 +51935,7 @@ function merge() { /***/ }), -/* 446 */ +/* 438 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54386,7 +51960,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /***/ }), -/* 447 */ +/* 439 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54501,13 +52075,13 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 448 */ +/* 440 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(443); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(435); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -54520,7 +52094,7 @@ function min(comparer) { /***/ }), -/* 449 */ +/* 441 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54569,7 +52143,7 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 450 */ +/* 442 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54663,7 +52237,7 @@ var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 451 */ +/* 443 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54711,7 +52285,7 @@ var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 452 */ +/* 444 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54734,7 +52308,7 @@ function partition(predicate, thisArg) { /***/ }), -/* 453 */ +/* 445 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54774,14 +52348,14 @@ function plucker(props, length) { /***/ }), -/* 454 */ +/* 446 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(449); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(441); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -54794,14 +52368,14 @@ function publish(selector) { /***/ }), -/* 455 */ +/* 447 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); /* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(449); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(441); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -54812,14 +52386,14 @@ function publishBehavior(value) { /***/ }), -/* 456 */ +/* 448 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); /* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(449); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(441); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -54830,14 +52404,14 @@ function publishLast() { /***/ }), -/* 457 */ +/* 449 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); /* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(449); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(441); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -54853,7 +52427,7 @@ function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { /***/ }), -/* 458 */ +/* 450 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54880,7 +52454,7 @@ function race() { /***/ }), -/* 459 */ +/* 451 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54945,7 +52519,7 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 460 */ +/* 452 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55041,7 +52615,7 @@ var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 461 */ +/* 453 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55094,7 +52668,7 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 462 */ +/* 454 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55182,7 +52756,7 @@ var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 463 */ +/* 455 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55239,7 +52813,7 @@ var SampleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 464 */ +/* 456 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55299,7 +52873,7 @@ function dispatchNotification(state) { /***/ }), -/* 465 */ +/* 457 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55422,13 +52996,13 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 466 */ +/* 458 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(449); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(441); /* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -55445,7 +53019,7 @@ function share() { /***/ }), -/* 467 */ +/* 459 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55510,7 +53084,7 @@ function shareReplayOperator(_a) { /***/ }), -/* 468 */ +/* 460 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55590,7 +53164,7 @@ var SingleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 469 */ +/* 461 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55632,7 +53206,7 @@ var SkipSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 470 */ +/* 462 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55694,7 +53268,7 @@ var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 471 */ +/* 463 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55755,7 +53329,7 @@ var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 472 */ +/* 464 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55811,7 +53385,7 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 473 */ +/* 465 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55840,13 +53414,13 @@ function startWith() { /***/ }), -/* 474 */ +/* 466 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); -/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(475); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(467); /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ function subscribeOn(scheduler, delay) { @@ -55871,7 +53445,7 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { /***/ }), -/* 475 */ +/* 467 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55935,13 +53509,13 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { /***/ }), -/* 476 */ +/* 468 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(477); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(469); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -55953,7 +53527,7 @@ function switchAll() { /***/ }), -/* 477 */ +/* 469 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56047,13 +53621,13 @@ var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 478 */ +/* 470 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(477); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(469); /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ function switchMapTo(innerObservable, resultSelector) { @@ -56063,7 +53637,7 @@ function switchMapTo(innerObservable, resultSelector) { /***/ }), -/* 479 */ +/* 471 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56113,7 +53687,7 @@ var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 480 */ +/* 472 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56181,7 +53755,7 @@ var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 481 */ +/* 473 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56269,7 +53843,7 @@ var TapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 482 */ +/* 474 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56373,7 +53947,7 @@ var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 483 */ +/* 475 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56382,7 +53956,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(482); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(474); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ @@ -56471,7 +54045,7 @@ function dispatchNext(arg) { /***/ }), -/* 484 */ +/* 476 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56479,7 +54053,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(444); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(436); /* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); /* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66); /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ @@ -56515,7 +54089,7 @@ var TimeInterval = /*@__PURE__*/ (function () { /***/ }), -/* 485 */ +/* 477 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56523,7 +54097,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); /* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(486); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(478); /* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49); /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ @@ -56540,7 +54114,7 @@ function timeout(due, scheduler) { /***/ }), -/* 486 */ +/* 478 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56548,7 +54122,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(418); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(410); /* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); /* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -56622,7 +54196,7 @@ var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 487 */ +/* 479 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56652,13 +54226,13 @@ var Timestamp = /*@__PURE__*/ (function () { /***/ }), -/* 488 */ +/* 480 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(443); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(435); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -56675,7 +54249,7 @@ function toArray() { /***/ }), -/* 489 */ +/* 481 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56755,7 +54329,7 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 490 */ +/* 482 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56845,7 +54419,7 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 491 */ +/* 483 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57015,7 +54589,7 @@ function dispatchWindowClose(state) { /***/ }), -/* 492 */ +/* 484 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57158,7 +54732,7 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 493 */ +/* 485 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57255,7 +54829,7 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 494 */ +/* 486 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57350,7 +54924,7 @@ var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 495 */ +/* 487 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57372,7 +54946,7 @@ function zip() { /***/ }), -/* 496 */ +/* 488 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57388,7 +54962,7 @@ function zipAll(project) { /***/ }), -/* 497 */ +/* 489 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57397,8 +54971,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); /* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(145); -/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(498); -/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(499); +/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(490); +/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(491); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -57480,7 +55054,7 @@ function toArray(value) { } /***/ }), -/* 498 */ +/* 490 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57633,7 +55207,7 @@ function addProjectToTree(tree, pathParts, project) { } /***/ }), -/* 499 */ +/* 491 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -57641,13 +55215,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Kibana", function() { return Kibana; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(500); +/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(492); /* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(multimatch__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(370); +/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(366); /* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(is_path_inside__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(283); +/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(279); /* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(145); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(280); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(276); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -57809,15 +55383,15 @@ class Kibana { } /***/ }), -/* 500 */ +/* 492 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const minimatch = __webpack_require__(149); -const arrayUnion = __webpack_require__(501); -const arrayDiffer = __webpack_require__(502); -const arrify = __webpack_require__(503); +const arrayUnion = __webpack_require__(493); +const arrayDiffer = __webpack_require__(494); +const arrify = __webpack_require__(495); module.exports = (list, patterns, options = {}) => { list = arrify(list); @@ -57841,7 +55415,7 @@ module.exports = (list, patterns, options = {}) => { /***/ }), -/* 501 */ +/* 493 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57853,7 +55427,7 @@ module.exports = (...arguments_) => { /***/ }), -/* 502 */ +/* 494 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57868,7 +55442,7 @@ module.exports = arrayDiffer; /***/ }), -/* 503 */ +/* 495 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57898,12 +55472,12 @@ module.exports = arrify; /***/ }), -/* 504 */ +/* 496 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _build_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(505); +/* harmony import */ var _build_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(497); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return _build_production_projects__WEBPACK_IMPORTED_MODULE_0__["buildProductionProjects"]; }); /* @@ -57927,19 +55501,19 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 505 */ +/* 497 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return buildProductionProjects; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(506); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(498); /* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(289); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(285); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(280); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(276); /* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(143); /* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(164); @@ -58075,7 +55649,7 @@ async function copyToBuild(project, kibanaRoot, buildRoot) { } /***/ }), -/* 506 */ +/* 498 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58083,13 +55657,13 @@ async function copyToBuild(project, kibanaRoot, buildRoot) { const EventEmitter = __webpack_require__(155); const path = __webpack_require__(4); const os = __webpack_require__(120); -const pAll = __webpack_require__(507); -const arrify = __webpack_require__(509); -const globby = __webpack_require__(510); -const isGlob = __webpack_require__(708); -const cpFile = __webpack_require__(709); -const junk = __webpack_require__(721); -const CpyError = __webpack_require__(722); +const pAll = __webpack_require__(499); +const arrify = __webpack_require__(501); +const globby = __webpack_require__(502); +const isGlob = __webpack_require__(700); +const cpFile = __webpack_require__(701); +const junk = __webpack_require__(713); +const CpyError = __webpack_require__(714); const defaultOptions = { ignoreJunk: true @@ -58208,12 +55782,12 @@ module.exports = (source, destination, { /***/ }), -/* 507 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pMap = __webpack_require__(508); +const pMap = __webpack_require__(500); module.exports = (iterable, options) => pMap(iterable, element => element(), options); // TODO: Remove this for the next major release @@ -58221,7 +55795,7 @@ module.exports.default = module.exports; /***/ }), -/* 508 */ +/* 500 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58300,7 +55874,7 @@ module.exports.default = pMap; /***/ }), -/* 509 */ +/* 501 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58330,17 +55904,17 @@ module.exports = arrify; /***/ }), -/* 510 */ +/* 502 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const arrayUnion = __webpack_require__(511); +const arrayUnion = __webpack_require__(503); const glob = __webpack_require__(146); -const fastGlob = __webpack_require__(513); -const dirGlob = __webpack_require__(701); -const gitignore = __webpack_require__(704); +const fastGlob = __webpack_require__(505); +const dirGlob = __webpack_require__(693); +const gitignore = __webpack_require__(696); const DEFAULT_FILTER = () => false; @@ -58485,12 +56059,12 @@ module.exports.gitignore = gitignore; /***/ }), -/* 511 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var arrayUniq = __webpack_require__(512); +var arrayUniq = __webpack_require__(504); module.exports = function () { return arrayUniq([].concat.apply([], arguments)); @@ -58498,7 +56072,7 @@ module.exports = function () { /***/ }), -/* 512 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58567,10 +56141,10 @@ if ('Set' in global) { /***/ }), -/* 513 */ +/* 505 */ /***/ (function(module, exports, __webpack_require__) { -const pkg = __webpack_require__(514); +const pkg = __webpack_require__(506); module.exports = pkg.async; module.exports.default = pkg.async; @@ -58583,19 +56157,19 @@ module.exports.generateTasks = pkg.generateTasks; /***/ }), -/* 514 */ +/* 506 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var optionsManager = __webpack_require__(515); -var taskManager = __webpack_require__(516); -var reader_async_1 = __webpack_require__(672); -var reader_stream_1 = __webpack_require__(696); -var reader_sync_1 = __webpack_require__(697); -var arrayUtils = __webpack_require__(699); -var streamUtils = __webpack_require__(700); +var optionsManager = __webpack_require__(507); +var taskManager = __webpack_require__(508); +var reader_async_1 = __webpack_require__(664); +var reader_stream_1 = __webpack_require__(688); +var reader_sync_1 = __webpack_require__(689); +var arrayUtils = __webpack_require__(691); +var streamUtils = __webpack_require__(692); /** * Synchronous API. */ @@ -58661,7 +56235,7 @@ function isString(source) { /***/ }), -/* 515 */ +/* 507 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58699,13 +56273,13 @@ exports.prepare = prepare; /***/ }), -/* 516 */ +/* 508 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__(517); +var patternUtils = __webpack_require__(509); /** * Generate tasks based on parent directory of each pattern. */ @@ -58796,16 +56370,16 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 517 */ +/* 509 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var globParent = __webpack_require__(518); -var isGlob = __webpack_require__(521); -var micromatch = __webpack_require__(522); +var globParent = __webpack_require__(510); +var isGlob = __webpack_require__(513); +var micromatch = __webpack_require__(514); var GLOBSTAR = '**'; /** * Return true for static pattern. @@ -58951,15 +56525,15 @@ exports.matchAny = matchAny; /***/ }), -/* 518 */ +/* 510 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(4); -var isglob = __webpack_require__(519); -var pathDirname = __webpack_require__(520); +var isglob = __webpack_require__(511); +var pathDirname = __webpack_require__(512); var isWin32 = __webpack_require__(120).platform() === 'win32'; module.exports = function globParent(str) { @@ -58982,7 +56556,7 @@ module.exports = function globParent(str) { /***/ }), -/* 519 */ +/* 511 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -58992,7 +56566,7 @@ module.exports = function globParent(str) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(303); +var isExtglob = __webpack_require__(299); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -59013,7 +56587,7 @@ module.exports = function isGlob(str) { /***/ }), -/* 520 */ +/* 512 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59163,7 +56737,7 @@ module.exports.win32 = win32; /***/ }), -/* 521 */ +/* 513 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -59173,7 +56747,7 @@ module.exports.win32 = win32; * Released under the MIT License. */ -var isExtglob = __webpack_require__(303); +var isExtglob = __webpack_require__(299); var chars = { '{': '}', '(': ')', '[': ']'}; module.exports = function isGlob(str, options) { @@ -59215,7 +56789,7 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 522 */ +/* 514 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59226,18 +56800,18 @@ module.exports = function isGlob(str, options) { */ var util = __webpack_require__(111); -var braces = __webpack_require__(523); -var toRegex = __webpack_require__(625); -var extend = __webpack_require__(633); +var braces = __webpack_require__(515); +var toRegex = __webpack_require__(617); +var extend = __webpack_require__(625); /** * Local dependencies */ -var compilers = __webpack_require__(636); -var parsers = __webpack_require__(668); -var cache = __webpack_require__(669); -var utils = __webpack_require__(670); +var compilers = __webpack_require__(628); +var parsers = __webpack_require__(660); +var cache = __webpack_require__(661); +var utils = __webpack_require__(662); var MAX_LENGTH = 1024 * 64; /** @@ -60099,7 +57673,7 @@ module.exports = micromatch; /***/ }), -/* 523 */ +/* 515 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60109,18 +57683,18 @@ module.exports = micromatch; * Module dependencies */ -var toRegex = __webpack_require__(524); -var unique = __webpack_require__(536); -var extend = __webpack_require__(533); +var toRegex = __webpack_require__(516); +var unique = __webpack_require__(528); +var extend = __webpack_require__(525); /** * Local dependencies */ -var compilers = __webpack_require__(537); -var parsers = __webpack_require__(552); -var Braces = __webpack_require__(562); -var utils = __webpack_require__(538); +var compilers = __webpack_require__(529); +var parsers = __webpack_require__(544); +var Braces = __webpack_require__(554); +var utils = __webpack_require__(530); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -60424,15 +57998,15 @@ module.exports = braces; /***/ }), -/* 524 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(525); -var extend = __webpack_require__(533); -var not = __webpack_require__(535); +var define = __webpack_require__(517); +var extend = __webpack_require__(525); +var not = __webpack_require__(527); var MAX_LENGTH = 1024 * 64; /** @@ -60579,7 +58153,7 @@ module.exports.makeRe = makeRe; /***/ }), -/* 525 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60592,7 +58166,7 @@ module.exports.makeRe = makeRe; -var isDescriptor = __webpack_require__(526); +var isDescriptor = __webpack_require__(518); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -60617,7 +58191,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 526 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60630,9 +58204,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(527); -var isAccessor = __webpack_require__(528); -var isData = __webpack_require__(531); +var typeOf = __webpack_require__(519); +var isAccessor = __webpack_require__(520); +var isData = __webpack_require__(523); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -60646,7 +58220,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 527 */ +/* 519 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -60799,7 +58373,7 @@ function isBuffer(val) { /***/ }), -/* 528 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60812,7 +58386,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(529); +var typeOf = __webpack_require__(521); // accessor descriptor properties var accessor = { @@ -60875,10 +58449,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 529 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(530); +var isBuffer = __webpack_require__(522); var toString = Object.prototype.toString; /** @@ -60997,7 +58571,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 530 */ +/* 522 */ /***/ (function(module, exports) { /*! @@ -61024,7 +58598,7 @@ function isSlowBuffer (obj) { /***/ }), -/* 531 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61037,7 +58611,7 @@ function isSlowBuffer (obj) { -var typeOf = __webpack_require__(532); +var typeOf = __webpack_require__(524); // data descriptor properties var data = { @@ -61086,10 +58660,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 532 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(530); +var isBuffer = __webpack_require__(522); var toString = Object.prototype.toString; /** @@ -61208,13 +58782,13 @@ module.exports = function kindOf(val) { /***/ }), -/* 533 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(534); +var isObject = __webpack_require__(526); module.exports = function extend(o/*, objects*/) { if (!isObject(o)) { o = {}; } @@ -61248,7 +58822,7 @@ function hasOwn(obj, key) { /***/ }), -/* 534 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61268,13 +58842,13 @@ module.exports = function isExtendable(val) { /***/ }), -/* 535 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(533); +var extend = __webpack_require__(525); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -61341,7 +58915,7 @@ module.exports = toRegex; /***/ }), -/* 536 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61391,13 +58965,13 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 537 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(538); +var utils = __webpack_require__(530); module.exports = function(braces, options) { braces.compiler @@ -61680,25 +59254,25 @@ function hasQueue(node) { /***/ }), -/* 538 */ +/* 530 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(539); +var splitString = __webpack_require__(531); var utils = module.exports; /** * Module dependencies */ -utils.extend = __webpack_require__(533); -utils.flatten = __webpack_require__(545); -utils.isObject = __webpack_require__(543); -utils.fillRange = __webpack_require__(546); -utils.repeat = __webpack_require__(551); -utils.unique = __webpack_require__(536); +utils.extend = __webpack_require__(525); +utils.flatten = __webpack_require__(537); +utils.isObject = __webpack_require__(535); +utils.fillRange = __webpack_require__(538); +utils.repeat = __webpack_require__(543); +utils.unique = __webpack_require__(528); utils.define = function(obj, key, val) { Object.defineProperty(obj, key, { @@ -62030,7 +59604,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 539 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62043,7 +59617,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(540); +var extend = __webpack_require__(532); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -62208,14 +59782,14 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 540 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(541); -var assignSymbols = __webpack_require__(544); +var isExtendable = __webpack_require__(533); +var assignSymbols = __webpack_require__(536); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -62275,7 +59849,7 @@ function isEnum(obj, key) { /***/ }), -/* 541 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62288,7 +59862,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(542); +var isPlainObject = __webpack_require__(534); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -62296,7 +59870,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 542 */ +/* 534 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62309,7 +59883,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(543); +var isObject = __webpack_require__(535); function isObjectObject(o) { return isObject(o) === true @@ -62340,7 +59914,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 543 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62359,7 +59933,7 @@ module.exports = function isObject(val) { /***/ }), -/* 544 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62406,7 +59980,7 @@ module.exports = function(receiver, objects) { /***/ }), -/* 545 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62435,7 +60009,7 @@ function flat(arr, res) { /***/ }), -/* 546 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62449,10 +60023,10 @@ function flat(arr, res) { var util = __webpack_require__(111); -var isNumber = __webpack_require__(547); -var extend = __webpack_require__(533); -var repeat = __webpack_require__(549); -var toRegex = __webpack_require__(550); +var isNumber = __webpack_require__(539); +var extend = __webpack_require__(525); +var repeat = __webpack_require__(541); +var toRegex = __webpack_require__(542); /** * Return a range of numbers or letters. @@ -62650,7 +60224,7 @@ module.exports = fillRange; /***/ }), -/* 547 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62663,7 +60237,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(548); +var typeOf = __webpack_require__(540); module.exports = function isNumber(num) { var type = typeOf(num); @@ -62679,10 +60253,10 @@ module.exports = function isNumber(num) { /***/ }), -/* 548 */ +/* 540 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(530); +var isBuffer = __webpack_require__(522); var toString = Object.prototype.toString; /** @@ -62801,7 +60375,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 549 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62878,7 +60452,7 @@ function repeat(str, num) { /***/ }), -/* 550 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62891,8 +60465,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(549); -var isNumber = __webpack_require__(547); +var repeat = __webpack_require__(541); +var isNumber = __webpack_require__(539); var cache = {}; function toRegexRange(min, max, options) { @@ -63179,7 +60753,7 @@ module.exports = toRegexRange; /***/ }), -/* 551 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63204,14 +60778,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 552 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(553); -var utils = __webpack_require__(538); +var Node = __webpack_require__(545); +var utils = __webpack_require__(530); /** * Braces parsers @@ -63571,15 +61145,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 553 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(543); -var define = __webpack_require__(554); -var utils = __webpack_require__(561); +var isObject = __webpack_require__(535); +var define = __webpack_require__(546); +var utils = __webpack_require__(553); var ownNames; /** @@ -64070,7 +61644,7 @@ exports = module.exports = Node; /***/ }), -/* 554 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64083,7 +61657,7 @@ exports = module.exports = Node; -var isDescriptor = __webpack_require__(555); +var isDescriptor = __webpack_require__(547); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -64108,7 +61682,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 555 */ +/* 547 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64121,9 +61695,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(556); -var isAccessor = __webpack_require__(557); -var isData = __webpack_require__(559); +var typeOf = __webpack_require__(548); +var isAccessor = __webpack_require__(549); +var isData = __webpack_require__(551); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -64137,7 +61711,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 556 */ +/* 548 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64272,7 +61846,7 @@ function isBuffer(val) { /***/ }), -/* 557 */ +/* 549 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64285,7 +61859,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(558); +var typeOf = __webpack_require__(550); // accessor descriptor properties var accessor = { @@ -64348,7 +61922,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 558 */ +/* 550 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64483,7 +62057,7 @@ function isBuffer(val) { /***/ }), -/* 559 */ +/* 551 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64496,7 +62070,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(560); +var typeOf = __webpack_require__(552); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -64539,7 +62113,7 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 560 */ +/* 552 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -64674,13 +62248,13 @@ function isBuffer(val) { /***/ }), -/* 561 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(548); +var typeOf = __webpack_require__(540); var utils = module.exports; /** @@ -65700,17 +63274,17 @@ function assert(val, message) { /***/ }), -/* 562 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(533); -var Snapdragon = __webpack_require__(563); -var compilers = __webpack_require__(537); -var parsers = __webpack_require__(552); -var utils = __webpack_require__(538); +var extend = __webpack_require__(525); +var Snapdragon = __webpack_require__(555); +var compilers = __webpack_require__(529); +var parsers = __webpack_require__(544); +var utils = __webpack_require__(530); /** * Customize Snapdragon parser and renderer @@ -65811,17 +63385,17 @@ module.exports = Braces; /***/ }), -/* 563 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(564); -var define = __webpack_require__(525); -var Compiler = __webpack_require__(593); -var Parser = __webpack_require__(622); -var utils = __webpack_require__(602); +var Base = __webpack_require__(556); +var define = __webpack_require__(517); +var Compiler = __webpack_require__(585); +var Parser = __webpack_require__(614); +var utils = __webpack_require__(594); var regexCache = {}; var cache = {}; @@ -65992,20 +63566,20 @@ module.exports.Parser = Parser; /***/ }), -/* 564 */ +/* 556 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var define = __webpack_require__(565); -var CacheBase = __webpack_require__(566); -var Emitter = __webpack_require__(567); -var isObject = __webpack_require__(543); -var merge = __webpack_require__(584); -var pascal = __webpack_require__(587); -var cu = __webpack_require__(588); +var define = __webpack_require__(557); +var CacheBase = __webpack_require__(558); +var Emitter = __webpack_require__(559); +var isObject = __webpack_require__(535); +var merge = __webpack_require__(576); +var pascal = __webpack_require__(579); +var cu = __webpack_require__(580); /** * Optionally define a custom `cache` namespace to use. @@ -66434,7 +64008,7 @@ module.exports.namespace = namespace; /***/ }), -/* 565 */ +/* 557 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66447,7 +64021,7 @@ module.exports.namespace = namespace; -var isDescriptor = __webpack_require__(555); +var isDescriptor = __webpack_require__(547); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -66472,21 +64046,21 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 566 */ +/* 558 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(543); -var Emitter = __webpack_require__(567); -var visit = __webpack_require__(568); -var toPath = __webpack_require__(571); -var union = __webpack_require__(572); -var del = __webpack_require__(576); -var get = __webpack_require__(574); -var has = __webpack_require__(581); -var set = __webpack_require__(575); +var isObject = __webpack_require__(535); +var Emitter = __webpack_require__(559); +var visit = __webpack_require__(560); +var toPath = __webpack_require__(563); +var union = __webpack_require__(564); +var del = __webpack_require__(568); +var get = __webpack_require__(566); +var has = __webpack_require__(573); +var set = __webpack_require__(567); /** * Create a `Cache` constructor that when instantiated will @@ -66740,7 +64314,7 @@ module.exports.namespace = namespace; /***/ }), -/* 567 */ +/* 559 */ /***/ (function(module, exports, __webpack_require__) { @@ -66909,7 +64483,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 568 */ +/* 560 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66922,8 +64496,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(569); -var mapVisit = __webpack_require__(570); +var visit = __webpack_require__(561); +var mapVisit = __webpack_require__(562); module.exports = function(collection, method, val) { var result; @@ -66946,7 +64520,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 569 */ +/* 561 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66959,7 +64533,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(543); +var isObject = __webpack_require__(535); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -66986,14 +64560,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 570 */ +/* 562 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var visit = __webpack_require__(569); +var visit = __webpack_require__(561); /** * Map `visit` over an array of objects. @@ -67030,7 +64604,7 @@ function isObject(val) { /***/ }), -/* 571 */ +/* 563 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67043,7 +64617,7 @@ function isObject(val) { -var typeOf = __webpack_require__(548); +var typeOf = __webpack_require__(540); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -67070,16 +64644,16 @@ function filter(arr) { /***/ }), -/* 572 */ +/* 564 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(534); -var union = __webpack_require__(573); -var get = __webpack_require__(574); -var set = __webpack_require__(575); +var isObject = __webpack_require__(526); +var union = __webpack_require__(565); +var get = __webpack_require__(566); +var set = __webpack_require__(567); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -67107,7 +64681,7 @@ function arrayify(val) { /***/ }), -/* 573 */ +/* 565 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67143,7 +64717,7 @@ module.exports = function union(init) { /***/ }), -/* 574 */ +/* 566 */ /***/ (function(module, exports) { /*! @@ -67199,7 +64773,7 @@ function toString(val) { /***/ }), -/* 575 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67212,10 +64786,10 @@ function toString(val) { -var split = __webpack_require__(539); -var extend = __webpack_require__(533); -var isPlainObject = __webpack_require__(542); -var isObject = __webpack_require__(534); +var split = __webpack_require__(531); +var extend = __webpack_require__(525); +var isPlainObject = __webpack_require__(534); +var isObject = __webpack_require__(526); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -67261,7 +64835,7 @@ function isValidKey(key) { /***/ }), -/* 576 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67274,8 +64848,8 @@ function isValidKey(key) { -var isObject = __webpack_require__(543); -var has = __webpack_require__(577); +var isObject = __webpack_require__(535); +var has = __webpack_require__(569); module.exports = function unset(obj, prop) { if (!isObject(obj)) { @@ -67300,7 +64874,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 577 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67313,9 +64887,9 @@ module.exports = function unset(obj, prop) { -var isObject = __webpack_require__(578); -var hasValues = __webpack_require__(580); -var get = __webpack_require__(574); +var isObject = __webpack_require__(570); +var hasValues = __webpack_require__(572); +var get = __webpack_require__(566); module.exports = function(obj, prop, noZero) { if (isObject(obj)) { @@ -67326,7 +64900,7 @@ module.exports = function(obj, prop, noZero) { /***/ }), -/* 578 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67339,7 +64913,7 @@ module.exports = function(obj, prop, noZero) { -var isArray = __webpack_require__(579); +var isArray = __webpack_require__(571); module.exports = function isObject(val) { return val != null && typeof val === 'object' && isArray(val) === false; @@ -67347,7 +64921,7 @@ module.exports = function isObject(val) { /***/ }), -/* 579 */ +/* 571 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -67358,7 +64932,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 580 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67401,7 +64975,7 @@ module.exports = function hasValue(o, noZero) { /***/ }), -/* 581 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67414,9 +64988,9 @@ module.exports = function hasValue(o, noZero) { -var isObject = __webpack_require__(543); -var hasValues = __webpack_require__(582); -var get = __webpack_require__(574); +var isObject = __webpack_require__(535); +var hasValues = __webpack_require__(574); +var get = __webpack_require__(566); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -67424,7 +64998,7 @@ module.exports = function(val, prop) { /***/ }), -/* 582 */ +/* 574 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67437,8 +65011,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(583); -var isNumber = __webpack_require__(547); +var typeOf = __webpack_require__(575); +var isNumber = __webpack_require__(539); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -67491,10 +65065,10 @@ module.exports = function hasValue(val) { /***/ }), -/* 583 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(530); +var isBuffer = __webpack_require__(522); var toString = Object.prototype.toString; /** @@ -67616,14 +65190,14 @@ module.exports = function kindOf(val) { /***/ }), -/* 584 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(585); -var forIn = __webpack_require__(586); +var isExtendable = __webpack_require__(577); +var forIn = __webpack_require__(578); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -67687,7 +65261,7 @@ module.exports = mixinDeep; /***/ }), -/* 585 */ +/* 577 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67700,7 +65274,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(542); +var isPlainObject = __webpack_require__(534); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67708,7 +65282,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 586 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67731,7 +65305,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 587 */ +/* 579 */ /***/ (function(module, exports) { /*! @@ -67758,14 +65332,14 @@ module.exports = pascalcase; /***/ }), -/* 588 */ +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(111); -var utils = __webpack_require__(589); +var utils = __webpack_require__(581); /** * Expose class utils @@ -68130,7 +65704,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 589 */ +/* 581 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68144,10 +65718,10 @@ var utils = {}; * Lazily required module dependencies */ -utils.union = __webpack_require__(573); -utils.define = __webpack_require__(525); -utils.isObj = __webpack_require__(543); -utils.staticExtend = __webpack_require__(590); +utils.union = __webpack_require__(565); +utils.define = __webpack_require__(517); +utils.isObj = __webpack_require__(535); +utils.staticExtend = __webpack_require__(582); /** @@ -68158,7 +65732,7 @@ module.exports = utils; /***/ }), -/* 590 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68171,8 +65745,8 @@ module.exports = utils; -var copy = __webpack_require__(591); -var define = __webpack_require__(525); +var copy = __webpack_require__(583); +var define = __webpack_require__(517); var util = __webpack_require__(111); /** @@ -68255,15 +65829,15 @@ module.exports = extend; /***/ }), -/* 591 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(548); -var copyDescriptor = __webpack_require__(592); -var define = __webpack_require__(525); +var typeOf = __webpack_require__(540); +var copyDescriptor = __webpack_require__(584); +var define = __webpack_require__(517); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -68436,7 +66010,7 @@ module.exports.has = has; /***/ }), -/* 592 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68524,16 +66098,16 @@ function isObject(val) { /***/ }), -/* 593 */ +/* 585 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(594); -var define = __webpack_require__(525); -var debug = __webpack_require__(596)('snapdragon:compiler'); -var utils = __webpack_require__(602); +var use = __webpack_require__(586); +var define = __webpack_require__(517); +var debug = __webpack_require__(588)('snapdragon:compiler'); +var utils = __webpack_require__(594); /** * Create a new `Compiler` with the given `options`. @@ -68687,7 +66261,7 @@ Compiler.prototype = { // source map support if (opts.sourcemap) { - var sourcemaps = __webpack_require__(621); + var sourcemaps = __webpack_require__(613); sourcemaps(this); this.mapVisit(this.ast.nodes); this.applySourceMaps(); @@ -68708,7 +66282,7 @@ module.exports = Compiler; /***/ }), -/* 594 */ +/* 586 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68721,7 +66295,7 @@ module.exports = Compiler; -var utils = __webpack_require__(595); +var utils = __webpack_require__(587); module.exports = function base(app, opts) { if (!utils.isObject(app) && typeof app !== 'function') { @@ -68836,7 +66410,7 @@ module.exports = function base(app, opts) { /***/ }), -/* 595 */ +/* 587 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68850,8 +66424,8 @@ var utils = {}; * Lazily required module dependencies */ -utils.define = __webpack_require__(525); -utils.isObject = __webpack_require__(543); +utils.define = __webpack_require__(517); +utils.isObject = __webpack_require__(535); utils.isString = function(val) { @@ -68866,7 +66440,7 @@ module.exports = utils; /***/ }), -/* 596 */ +/* 588 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -68875,14 +66449,14 @@ module.exports = utils; */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(597); + module.exports = __webpack_require__(589); } else { - module.exports = __webpack_require__(600); + module.exports = __webpack_require__(592); } /***/ }), -/* 597 */ +/* 589 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -68891,7 +66465,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(598); +exports = module.exports = __webpack_require__(590); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -69073,7 +66647,7 @@ function localstorage() { /***/ }), -/* 598 */ +/* 590 */ /***/ (function(module, exports, __webpack_require__) { @@ -69089,7 +66663,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(599); +exports.humanize = __webpack_require__(591); /** * The currently active debug mode names, and names to skip. @@ -69281,7 +66855,7 @@ function coerce(val) { /***/ }), -/* 599 */ +/* 591 */ /***/ (function(module, exports) { /** @@ -69439,7 +67013,7 @@ function plural(ms, n, name) { /***/ }), -/* 600 */ +/* 592 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -69455,7 +67029,7 @@ var util = __webpack_require__(111); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(598); +exports = module.exports = __webpack_require__(590); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -69634,7 +67208,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(601); + var net = __webpack_require__(593); stream = new net.Socket({ fd: fd, readable: false, @@ -69693,13 +67267,13 @@ exports.enable(load()); /***/ }), -/* 601 */ +/* 593 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 602 */ +/* 594 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69709,9 +67283,9 @@ module.exports = require("net"); * Module dependencies */ -exports.extend = __webpack_require__(533); -exports.SourceMap = __webpack_require__(603); -exports.sourceMapResolve = __webpack_require__(614); +exports.extend = __webpack_require__(525); +exports.SourceMap = __webpack_require__(595); +exports.sourceMapResolve = __webpack_require__(606); /** * Convert backslash in the given string to forward slashes @@ -69754,7 +67328,7 @@ exports.last = function(arr, n) { /***/ }), -/* 603 */ +/* 595 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -69762,13 +67336,13 @@ exports.last = function(arr, n) { * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */ -exports.SourceMapGenerator = __webpack_require__(604).SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__(610).SourceMapConsumer; -exports.SourceNode = __webpack_require__(613).SourceNode; +exports.SourceMapGenerator = __webpack_require__(596).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(602).SourceMapConsumer; +exports.SourceNode = __webpack_require__(605).SourceNode; /***/ }), -/* 604 */ +/* 596 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -69778,10 +67352,10 @@ exports.SourceNode = __webpack_require__(613).SourceNode; * http://opensource.org/licenses/BSD-3-Clause */ -var base64VLQ = __webpack_require__(605); -var util = __webpack_require__(607); -var ArraySet = __webpack_require__(608).ArraySet; -var MappingList = __webpack_require__(609).MappingList; +var base64VLQ = __webpack_require__(597); +var util = __webpack_require__(599); +var ArraySet = __webpack_require__(600).ArraySet; +var MappingList = __webpack_require__(601).MappingList; /** * An instance of the SourceMapGenerator represents a source map which is @@ -70190,7 +67764,7 @@ exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/* 605 */ +/* 597 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70230,7 +67804,7 @@ exports.SourceMapGenerator = SourceMapGenerator; * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var base64 = __webpack_require__(606); +var base64 = __webpack_require__(598); // A single base 64 digit can contain 6 bits of data. For the base 64 variable // length quantities we use in the source map spec, the first bit is the sign, @@ -70336,7 +67910,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { /***/ }), -/* 606 */ +/* 598 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70409,7 +67983,7 @@ exports.decode = function (charCode) { /***/ }), -/* 607 */ +/* 599 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70832,7 +68406,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate /***/ }), -/* 608 */ +/* 600 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70842,7 +68416,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(607); +var util = __webpack_require__(599); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; @@ -70959,7 +68533,7 @@ exports.ArraySet = ArraySet; /***/ }), -/* 609 */ +/* 601 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -70969,7 +68543,7 @@ exports.ArraySet = ArraySet; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(607); +var util = __webpack_require__(599); /** * Determine whether mappingB is after mappingA with respect to generated @@ -71044,7 +68618,7 @@ exports.MappingList = MappingList; /***/ }), -/* 610 */ +/* 602 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -71054,11 +68628,11 @@ exports.MappingList = MappingList; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(607); -var binarySearch = __webpack_require__(611); -var ArraySet = __webpack_require__(608).ArraySet; -var base64VLQ = __webpack_require__(605); -var quickSort = __webpack_require__(612).quickSort; +var util = __webpack_require__(599); +var binarySearch = __webpack_require__(603); +var ArraySet = __webpack_require__(600).ArraySet; +var base64VLQ = __webpack_require__(597); +var quickSort = __webpack_require__(604).quickSort; function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; @@ -72132,7 +69706,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; /***/ }), -/* 611 */ +/* 603 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -72249,7 +69823,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { /***/ }), -/* 612 */ +/* 604 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -72369,7 +69943,7 @@ exports.quickSort = function (ary, comparator) { /***/ }), -/* 613 */ +/* 605 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -72379,8 +69953,8 @@ exports.quickSort = function (ary, comparator) { * http://opensource.org/licenses/BSD-3-Clause */ -var SourceMapGenerator = __webpack_require__(604).SourceMapGenerator; -var util = __webpack_require__(607); +var SourceMapGenerator = __webpack_require__(596).SourceMapGenerator; +var util = __webpack_require__(599); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). @@ -72788,17 +70362,17 @@ exports.SourceNode = SourceNode; /***/ }), -/* 614 */ +/* 606 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = __webpack_require__(615) -var resolveUrl = __webpack_require__(616) -var decodeUriComponent = __webpack_require__(617) -var urix = __webpack_require__(619) -var atob = __webpack_require__(620) +var sourceMappingURL = __webpack_require__(607) +var resolveUrl = __webpack_require__(608) +var decodeUriComponent = __webpack_require__(609) +var urix = __webpack_require__(611) +var atob = __webpack_require__(612) @@ -73096,7 +70670,7 @@ module.exports = { /***/ }), -/* 615 */ +/* 607 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell @@ -73159,7 +70733,7 @@ void (function(root, factory) { /***/ }), -/* 616 */ +/* 608 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -73177,13 +70751,13 @@ module.exports = resolveUrl /***/ }), -/* 617 */ +/* 609 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var decodeUriComponent = __webpack_require__(618) +var decodeUriComponent = __webpack_require__(610) function customDecodeUriComponent(string) { // `decodeUriComponent` turns `+` into ` `, but that's not wanted. @@ -73194,7 +70768,7 @@ module.exports = customDecodeUriComponent /***/ }), -/* 618 */ +/* 610 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73295,7 +70869,7 @@ module.exports = function (encodedURI) { /***/ }), -/* 619 */ +/* 611 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -73318,7 +70892,7 @@ module.exports = urix /***/ }), -/* 620 */ +/* 612 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73332,7 +70906,7 @@ module.exports = atob.atob = atob; /***/ }), -/* 621 */ +/* 613 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73340,8 +70914,8 @@ module.exports = atob.atob = atob; var fs = __webpack_require__(133); var path = __webpack_require__(4); -var define = __webpack_require__(525); -var utils = __webpack_require__(602); +var define = __webpack_require__(517); +var utils = __webpack_require__(594); /** * Expose `mixin()`. @@ -73484,19 +71058,19 @@ exports.comment = function(node) { /***/ }), -/* 622 */ +/* 614 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(594); +var use = __webpack_require__(586); var util = __webpack_require__(111); -var Cache = __webpack_require__(623); -var define = __webpack_require__(525); -var debug = __webpack_require__(596)('snapdragon:parser'); -var Position = __webpack_require__(624); -var utils = __webpack_require__(602); +var Cache = __webpack_require__(615); +var define = __webpack_require__(517); +var debug = __webpack_require__(588)('snapdragon:parser'); +var Position = __webpack_require__(616); +var utils = __webpack_require__(594); /** * Create a new `Parser` with the given `input` and `options`. @@ -74024,7 +71598,7 @@ module.exports = Parser; /***/ }), -/* 623 */ +/* 615 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74131,13 +71705,13 @@ MapCache.prototype.del = function mapDelete(key) { /***/ }), -/* 624 */ +/* 616 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(525); +var define = __webpack_require__(517); /** * Store position for a node @@ -74152,16 +71726,16 @@ module.exports = function Position(start, parser) { /***/ }), -/* 625 */ +/* 617 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var safe = __webpack_require__(626); -var define = __webpack_require__(632); -var extend = __webpack_require__(633); -var not = __webpack_require__(635); +var safe = __webpack_require__(618); +var define = __webpack_require__(624); +var extend = __webpack_require__(625); +var not = __webpack_require__(627); var MAX_LENGTH = 1024 * 64; /** @@ -74314,10 +71888,10 @@ module.exports.makeRe = makeRe; /***/ }), -/* 626 */ +/* 618 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(627); +var parse = __webpack_require__(619); var types = parse.types; module.exports = function (re, opts) { @@ -74363,13 +71937,13 @@ function isRegExp (x) { /***/ }), -/* 627 */ +/* 619 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(628); -var types = __webpack_require__(629); -var sets = __webpack_require__(630); -var positions = __webpack_require__(631); +var util = __webpack_require__(620); +var types = __webpack_require__(621); +var sets = __webpack_require__(622); +var positions = __webpack_require__(623); module.exports = function(regexpStr) { @@ -74651,11 +72225,11 @@ module.exports.types = types; /***/ }), -/* 628 */ +/* 620 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(629); -var sets = __webpack_require__(630); +var types = __webpack_require__(621); +var sets = __webpack_require__(622); // All of these are private and only used by randexp. @@ -74768,7 +72342,7 @@ exports.error = function(regexp, msg) { /***/ }), -/* 629 */ +/* 621 */ /***/ (function(module, exports) { module.exports = { @@ -74784,10 +72358,10 @@ module.exports = { /***/ }), -/* 630 */ +/* 622 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(629); +var types = __webpack_require__(621); var INTS = function() { return [{ type: types.RANGE , from: 48, to: 57 }]; @@ -74872,10 +72446,10 @@ exports.anyChar = function() { /***/ }), -/* 631 */ +/* 623 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(629); +var types = __webpack_require__(621); exports.wordBoundary = function() { return { type: types.POSITION, value: 'b' }; @@ -74895,7 +72469,7 @@ exports.end = function() { /***/ }), -/* 632 */ +/* 624 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74908,8 +72482,8 @@ exports.end = function() { -var isobject = __webpack_require__(543); -var isDescriptor = __webpack_require__(555); +var isobject = __webpack_require__(535); +var isDescriptor = __webpack_require__(547); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -74940,14 +72514,14 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 633 */ +/* 625 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(634); -var assignSymbols = __webpack_require__(544); +var isExtendable = __webpack_require__(626); +var assignSymbols = __webpack_require__(536); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -75007,7 +72581,7 @@ function isEnum(obj, key) { /***/ }), -/* 634 */ +/* 626 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75020,7 +72594,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(542); +var isPlainObject = __webpack_require__(534); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -75028,14 +72602,14 @@ module.exports = function isExtendable(val) { /***/ }), -/* 635 */ +/* 627 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(633); -var safe = __webpack_require__(626); +var extend = __webpack_require__(625); +var safe = __webpack_require__(618); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -75107,14 +72681,14 @@ module.exports = toRegex; /***/ }), -/* 636 */ +/* 628 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var nanomatch = __webpack_require__(637); -var extglob = __webpack_require__(652); +var nanomatch = __webpack_require__(629); +var extglob = __webpack_require__(644); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -75191,7 +72765,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 637 */ +/* 629 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75202,17 +72776,17 @@ function escapeExtglobs(compiler) { */ var util = __webpack_require__(111); -var toRegex = __webpack_require__(524); -var extend = __webpack_require__(638); +var toRegex = __webpack_require__(516); +var extend = __webpack_require__(630); /** * Local dependencies */ -var compilers = __webpack_require__(640); -var parsers = __webpack_require__(641); -var cache = __webpack_require__(644); -var utils = __webpack_require__(646); +var compilers = __webpack_require__(632); +var parsers = __webpack_require__(633); +var cache = __webpack_require__(636); +var utils = __webpack_require__(638); var MAX_LENGTH = 1024 * 64; /** @@ -76036,14 +73610,14 @@ module.exports = nanomatch; /***/ }), -/* 638 */ +/* 630 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(639); -var assignSymbols = __webpack_require__(544); +var isExtendable = __webpack_require__(631); +var assignSymbols = __webpack_require__(536); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -76103,7 +73677,7 @@ function isEnum(obj, key) { /***/ }), -/* 639 */ +/* 631 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76116,7 +73690,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(542); +var isPlainObject = __webpack_require__(534); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -76124,7 +73698,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 640 */ +/* 632 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76470,15 +74044,15 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 641 */ +/* 633 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regexNot = __webpack_require__(535); -var toRegex = __webpack_require__(524); -var isOdd = __webpack_require__(642); +var regexNot = __webpack_require__(527); +var toRegex = __webpack_require__(516); +var isOdd = __webpack_require__(634); /** * Characters to use in negation regex (we want to "not" match @@ -76864,7 +74438,7 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 642 */ +/* 634 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76877,7 +74451,7 @@ module.exports.not = NOT_REGEX; -var isNumber = __webpack_require__(643); +var isNumber = __webpack_require__(635); module.exports = function isOdd(i) { if (!isNumber(i)) { @@ -76891,7 +74465,7 @@ module.exports = function isOdd(i) { /***/ }), -/* 643 */ +/* 635 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76919,14 +74493,14 @@ module.exports = function isNumber(num) { /***/ }), -/* 644 */ +/* 636 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(645))(); +module.exports = new (__webpack_require__(637))(); /***/ }), -/* 645 */ +/* 637 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76939,7 +74513,7 @@ module.exports = new (__webpack_require__(645))(); -var MapCache = __webpack_require__(623); +var MapCache = __webpack_require__(615); /** * Create a new `FragmentCache` with an optional object to use for `caches`. @@ -77061,7 +74635,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 646 */ +/* 638 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77074,14 +74648,14 @@ var path = __webpack_require__(4); * Module dependencies */ -var isWindows = __webpack_require__(647)(); -var Snapdragon = __webpack_require__(563); -utils.define = __webpack_require__(648); -utils.diff = __webpack_require__(649); -utils.extend = __webpack_require__(638); -utils.pick = __webpack_require__(650); -utils.typeOf = __webpack_require__(651); -utils.unique = __webpack_require__(536); +var isWindows = __webpack_require__(639)(); +var Snapdragon = __webpack_require__(555); +utils.define = __webpack_require__(640); +utils.diff = __webpack_require__(641); +utils.extend = __webpack_require__(630); +utils.pick = __webpack_require__(642); +utils.typeOf = __webpack_require__(643); +utils.unique = __webpack_require__(528); /** * Returns true if the given value is effectively an empty string @@ -77447,7 +75021,7 @@ utils.unixify = function(options) { /***/ }), -/* 647 */ +/* 639 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -77475,7 +75049,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 648 */ +/* 640 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77488,8 +75062,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ -var isobject = __webpack_require__(543); -var isDescriptor = __webpack_require__(555); +var isobject = __webpack_require__(535); +var isDescriptor = __webpack_require__(547); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -77520,7 +75094,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 649 */ +/* 641 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77574,7 +75148,7 @@ function diffArray(one, two) { /***/ }), -/* 650 */ +/* 642 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77587,7 +75161,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(543); +var isObject = __webpack_require__(535); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -77616,7 +75190,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 651 */ +/* 643 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -77751,7 +75325,7 @@ function isBuffer(val) { /***/ }), -/* 652 */ +/* 644 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77761,18 +75335,18 @@ function isBuffer(val) { * Module dependencies */ -var extend = __webpack_require__(533); -var unique = __webpack_require__(536); -var toRegex = __webpack_require__(524); +var extend = __webpack_require__(525); +var unique = __webpack_require__(528); +var toRegex = __webpack_require__(516); /** * Local dependencies */ -var compilers = __webpack_require__(653); -var parsers = __webpack_require__(664); -var Extglob = __webpack_require__(667); -var utils = __webpack_require__(666); +var compilers = __webpack_require__(645); +var parsers = __webpack_require__(656); +var Extglob = __webpack_require__(659); +var utils = __webpack_require__(658); var MAX_LENGTH = 1024 * 64; /** @@ -78089,13 +75663,13 @@ module.exports = extglob; /***/ }), -/* 653 */ +/* 645 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(654); +var brackets = __webpack_require__(646); /** * Extglob compilers @@ -78265,7 +75839,7 @@ module.exports = function(extglob) { /***/ }), -/* 654 */ +/* 646 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78275,17 +75849,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(655); -var parsers = __webpack_require__(657); +var compilers = __webpack_require__(647); +var parsers = __webpack_require__(649); /** * Module dependencies */ -var debug = __webpack_require__(659)('expand-brackets'); -var extend = __webpack_require__(533); -var Snapdragon = __webpack_require__(563); -var toRegex = __webpack_require__(524); +var debug = __webpack_require__(651)('expand-brackets'); +var extend = __webpack_require__(525); +var Snapdragon = __webpack_require__(555); +var toRegex = __webpack_require__(516); /** * Parses the given POSIX character class `pattern` and returns a @@ -78483,13 +76057,13 @@ module.exports = brackets; /***/ }), -/* 655 */ +/* 647 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(656); +var posix = __webpack_require__(648); module.exports = function(brackets) { brackets.compiler @@ -78577,7 +76151,7 @@ module.exports = function(brackets) { /***/ }), -/* 656 */ +/* 648 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78606,14 +76180,14 @@ module.exports = { /***/ }), -/* 657 */ +/* 649 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(658); -var define = __webpack_require__(525); +var utils = __webpack_require__(650); +var define = __webpack_require__(517); /** * Text regex @@ -78832,14 +76406,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 658 */ +/* 650 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(524); -var regexNot = __webpack_require__(535); +var toRegex = __webpack_require__(516); +var regexNot = __webpack_require__(527); var cached; /** @@ -78873,7 +76447,7 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 659 */ +/* 651 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -78882,14 +76456,14 @@ exports.createRegex = function(pattern, include) { */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(660); + module.exports = __webpack_require__(652); } else { - module.exports = __webpack_require__(663); + module.exports = __webpack_require__(655); } /***/ }), -/* 660 */ +/* 652 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -78898,7 +76472,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(661); +exports = module.exports = __webpack_require__(653); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -79080,7 +76654,7 @@ function localstorage() { /***/ }), -/* 661 */ +/* 653 */ /***/ (function(module, exports, __webpack_require__) { @@ -79096,7 +76670,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(662); +exports.humanize = __webpack_require__(654); /** * The currently active debug mode names, and names to skip. @@ -79288,7 +76862,7 @@ function coerce(val) { /***/ }), -/* 662 */ +/* 654 */ /***/ (function(module, exports) { /** @@ -79446,7 +77020,7 @@ function plural(ms, n, name) { /***/ }), -/* 663 */ +/* 655 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -79462,7 +77036,7 @@ var util = __webpack_require__(111); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(661); +exports = module.exports = __webpack_require__(653); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -79641,7 +77215,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(601); + var net = __webpack_require__(593); stream = new net.Socket({ fd: fd, readable: false, @@ -79700,15 +77274,15 @@ exports.enable(load()); /***/ }), -/* 664 */ +/* 656 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(654); -var define = __webpack_require__(665); -var utils = __webpack_require__(666); +var brackets = __webpack_require__(646); +var define = __webpack_require__(657); +var utils = __webpack_require__(658); /** * Characters to use in text regex (we want to "not" match @@ -79863,7 +77437,7 @@ module.exports = parsers; /***/ }), -/* 665 */ +/* 657 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79876,7 +77450,7 @@ module.exports = parsers; -var isDescriptor = __webpack_require__(555); +var isDescriptor = __webpack_require__(547); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -79901,14 +77475,14 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 666 */ +/* 658 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regex = __webpack_require__(535); -var Cache = __webpack_require__(645); +var regex = __webpack_require__(527); +var Cache = __webpack_require__(637); /** * Utils @@ -79977,7 +77551,7 @@ utils.createRegex = function(str) { /***/ }), -/* 667 */ +/* 659 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79987,16 +77561,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(563); -var define = __webpack_require__(665); -var extend = __webpack_require__(533); +var Snapdragon = __webpack_require__(555); +var define = __webpack_require__(657); +var extend = __webpack_require__(525); /** * Local dependencies */ -var compilers = __webpack_require__(653); -var parsers = __webpack_require__(664); +var compilers = __webpack_require__(645); +var parsers = __webpack_require__(656); /** * Customize Snapdragon parser and renderer @@ -80062,16 +77636,16 @@ module.exports = Extglob; /***/ }), -/* 668 */ +/* 660 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(652); -var nanomatch = __webpack_require__(637); -var regexNot = __webpack_require__(535); -var toRegex = __webpack_require__(625); +var extglob = __webpack_require__(644); +var nanomatch = __webpack_require__(629); +var regexNot = __webpack_require__(527); +var toRegex = __webpack_require__(617); var not; /** @@ -80152,14 +77726,14 @@ function textRegex(pattern) { /***/ }), -/* 669 */ +/* 661 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(645))(); +module.exports = new (__webpack_require__(637))(); /***/ }), -/* 670 */ +/* 662 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80172,13 +77746,13 @@ var path = __webpack_require__(4); * Module dependencies */ -var Snapdragon = __webpack_require__(563); -utils.define = __webpack_require__(632); -utils.diff = __webpack_require__(649); -utils.extend = __webpack_require__(633); -utils.pick = __webpack_require__(650); -utils.typeOf = __webpack_require__(671); -utils.unique = __webpack_require__(536); +var Snapdragon = __webpack_require__(555); +utils.define = __webpack_require__(624); +utils.diff = __webpack_require__(641); +utils.extend = __webpack_require__(625); +utils.pick = __webpack_require__(642); +utils.typeOf = __webpack_require__(663); +utils.unique = __webpack_require__(528); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -80475,7 +78049,7 @@ utils.unixify = function(options) { /***/ }), -/* 671 */ +/* 663 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -80610,7 +78184,7 @@ function isBuffer(val) { /***/ }), -/* 672 */ +/* 664 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80629,9 +78203,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(673); -var reader_1 = __webpack_require__(686); -var fs_stream_1 = __webpack_require__(690); +var readdir = __webpack_require__(665); +var reader_1 = __webpack_require__(678); +var fs_stream_1 = __webpack_require__(682); var ReaderAsync = /** @class */ (function (_super) { __extends(ReaderAsync, _super); function ReaderAsync() { @@ -80692,15 +78266,15 @@ exports.default = ReaderAsync; /***/ }), -/* 673 */ +/* 665 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(674); -const readdirAsync = __webpack_require__(682); -const readdirStream = __webpack_require__(685); +const readdirSync = __webpack_require__(666); +const readdirAsync = __webpack_require__(674); +const readdirStream = __webpack_require__(677); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -80784,7 +78358,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 674 */ +/* 666 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80792,11 +78366,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(675); +const DirectoryReader = __webpack_require__(667); let syncFacade = { - fs: __webpack_require__(680), - forEach: __webpack_require__(681), + fs: __webpack_require__(672), + forEach: __webpack_require__(673), sync: true }; @@ -80825,7 +78399,7 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 675 */ +/* 667 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80834,9 +78408,9 @@ function readdirSync (dir, options, internalOptions) { const Readable = __webpack_require__(137).Readable; const EventEmitter = __webpack_require__(155).EventEmitter; const path = __webpack_require__(4); -const normalizeOptions = __webpack_require__(676); -const stat = __webpack_require__(678); -const call = __webpack_require__(679); +const normalizeOptions = __webpack_require__(668); +const stat = __webpack_require__(670); +const call = __webpack_require__(671); /** * Asynchronously reads the contents of a directory and streams the results @@ -81212,14 +78786,14 @@ module.exports = DirectoryReader; /***/ }), -/* 676 */ +/* 668 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const globToRegExp = __webpack_require__(677); +const globToRegExp = __webpack_require__(669); module.exports = normalizeOptions; @@ -81396,7 +78970,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 677 */ +/* 669 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -81533,13 +79107,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 678 */ +/* 670 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(679); +const call = __webpack_require__(671); module.exports = stat; @@ -81614,7 +79188,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 679 */ +/* 671 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81675,14 +79249,14 @@ function callOnce (fn) { /***/ }), -/* 680 */ +/* 672 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const call = __webpack_require__(679); +const call = __webpack_require__(671); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -81746,7 +79320,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 681 */ +/* 673 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81775,7 +79349,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 682 */ +/* 674 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81783,12 +79357,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(683); -const DirectoryReader = __webpack_require__(675); +const maybe = __webpack_require__(675); +const DirectoryReader = __webpack_require__(667); let asyncFacade = { fs: __webpack_require__(133), - forEach: __webpack_require__(684), + forEach: __webpack_require__(676), async: true }; @@ -81830,7 +79404,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 683 */ +/* 675 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81857,7 +79431,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 684 */ +/* 676 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81893,7 +79467,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 685 */ +/* 677 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81901,11 +79475,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(675); +const DirectoryReader = __webpack_require__(667); let streamFacade = { fs: __webpack_require__(133), - forEach: __webpack_require__(684), + forEach: __webpack_require__(676), async: true }; @@ -81925,16 +79499,16 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 686 */ +/* 678 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var deep_1 = __webpack_require__(687); -var entry_1 = __webpack_require__(689); -var pathUtil = __webpack_require__(688); +var deep_1 = __webpack_require__(679); +var entry_1 = __webpack_require__(681); +var pathUtil = __webpack_require__(680); var Reader = /** @class */ (function () { function Reader(options) { this.options = options; @@ -82000,14 +79574,14 @@ exports.default = Reader; /***/ }), -/* 687 */ +/* 679 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(688); -var patternUtils = __webpack_require__(517); +var pathUtils = __webpack_require__(680); +var patternUtils = __webpack_require__(509); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { this.options = options; @@ -82090,7 +79664,7 @@ exports.default = DeepFilter; /***/ }), -/* 688 */ +/* 680 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82121,14 +79695,14 @@ exports.makeAbsolute = makeAbsolute; /***/ }), -/* 689 */ +/* 681 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(688); -var patternUtils = __webpack_require__(517); +var pathUtils = __webpack_require__(680); +var patternUtils = __webpack_require__(509); var EntryFilter = /** @class */ (function () { function EntryFilter(options, micromatchOptions) { this.options = options; @@ -82213,7 +79787,7 @@ exports.default = EntryFilter; /***/ }), -/* 690 */ +/* 682 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82233,8 +79807,8 @@ var __extends = (this && this.__extends) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); var stream = __webpack_require__(137); -var fsStat = __webpack_require__(691); -var fs_1 = __webpack_require__(695); +var fsStat = __webpack_require__(683); +var fs_1 = __webpack_require__(687); var FileSystemStream = /** @class */ (function (_super) { __extends(FileSystemStream, _super); function FileSystemStream() { @@ -82284,14 +79858,14 @@ exports.default = FileSystemStream; /***/ }), -/* 691 */ +/* 683 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__(692); -const statProvider = __webpack_require__(694); +const optionsManager = __webpack_require__(684); +const statProvider = __webpack_require__(686); /** * Asynchronous API. */ @@ -82322,13 +79896,13 @@ exports.statSync = statSync; /***/ }), -/* 692 */ +/* 684 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__(693); +const fsAdapter = __webpack_require__(685); function prepare(opts) { const options = Object.assign({ fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), @@ -82341,7 +79915,7 @@ exports.prepare = prepare; /***/ }), -/* 693 */ +/* 685 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82364,7 +79938,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter; /***/ }), -/* 694 */ +/* 686 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82416,7 +79990,7 @@ exports.isFollowedSymlink = isFollowedSymlink; /***/ }), -/* 695 */ +/* 687 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82447,7 +80021,7 @@ exports.default = FileSystem; /***/ }), -/* 696 */ +/* 688 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82467,9 +80041,9 @@ var __extends = (this && this.__extends) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); var stream = __webpack_require__(137); -var readdir = __webpack_require__(673); -var reader_1 = __webpack_require__(686); -var fs_stream_1 = __webpack_require__(690); +var readdir = __webpack_require__(665); +var reader_1 = __webpack_require__(678); +var fs_stream_1 = __webpack_require__(682); var TransformStream = /** @class */ (function (_super) { __extends(TransformStream, _super); function TransformStream(reader) { @@ -82537,7 +80111,7 @@ exports.default = ReaderStream; /***/ }), -/* 697 */ +/* 689 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82556,9 +80130,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(673); -var reader_1 = __webpack_require__(686); -var fs_sync_1 = __webpack_require__(698); +var readdir = __webpack_require__(665); +var reader_1 = __webpack_require__(678); +var fs_sync_1 = __webpack_require__(690); var ReaderSync = /** @class */ (function (_super) { __extends(ReaderSync, _super); function ReaderSync() { @@ -82618,7 +80192,7 @@ exports.default = ReaderSync; /***/ }), -/* 698 */ +/* 690 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82637,8 +80211,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__(691); -var fs_1 = __webpack_require__(695); +var fsStat = __webpack_require__(683); +var fs_1 = __webpack_require__(687); var FileSystemSync = /** @class */ (function (_super) { __extends(FileSystemSync, _super); function FileSystemSync() { @@ -82684,7 +80258,7 @@ exports.default = FileSystemSync; /***/ }), -/* 699 */ +/* 691 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82700,13 +80274,13 @@ exports.flatten = flatten; /***/ }), -/* 700 */ +/* 692 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__(292); +var merge2 = __webpack_require__(288); /** * Merge multiple streams and propagate their errors into one stream in parallel. */ @@ -82721,13 +80295,13 @@ exports.merge = merge; /***/ }), -/* 701 */ +/* 693 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(702); +const pathType = __webpack_require__(694); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -82793,13 +80367,13 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 702 */ +/* 694 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); -const pify = __webpack_require__(703); +const pify = __webpack_require__(695); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -82842,7 +80416,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 703 */ +/* 695 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82933,17 +80507,17 @@ module.exports = (obj, opts) => { /***/ }), -/* 704 */ +/* 696 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(133); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(513); -const gitIgnore = __webpack_require__(705); -const pify = __webpack_require__(706); -const slash = __webpack_require__(707); +const fastGlob = __webpack_require__(505); +const gitIgnore = __webpack_require__(697); +const pify = __webpack_require__(698); +const slash = __webpack_require__(699); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -83041,7 +80615,7 @@ module.exports.sync = options => { /***/ }), -/* 705 */ +/* 697 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -83510,7 +81084,7 @@ module.exports = options => new IgnoreBase(options) /***/ }), -/* 706 */ +/* 698 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83585,7 +81159,7 @@ module.exports = (input, options) => { /***/ }), -/* 707 */ +/* 699 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83603,7 +81177,7 @@ module.exports = input => { /***/ }), -/* 708 */ +/* 700 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -83613,7 +81187,7 @@ module.exports = input => { * Released under the MIT License. */ -var isExtglob = __webpack_require__(303); +var isExtglob = __webpack_require__(299); var chars = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; @@ -83657,17 +81231,17 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 709 */ +/* 701 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); const {constants: fsConstants} = __webpack_require__(133); -const pEvent = __webpack_require__(710); -const CpFileError = __webpack_require__(713); -const fs = __webpack_require__(717); -const ProgressEmitter = __webpack_require__(720); +const pEvent = __webpack_require__(702); +const CpFileError = __webpack_require__(705); +const fs = __webpack_require__(709); +const ProgressEmitter = __webpack_require__(712); const cpFileAsync = async (source, destination, options, progressEmitter) => { let readError; @@ -83781,12 +81355,12 @@ module.exports.sync = (source, destination, options) => { /***/ }), -/* 710 */ +/* 702 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pTimeout = __webpack_require__(711); +const pTimeout = __webpack_require__(703); const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; @@ -84077,12 +81651,12 @@ module.exports.iterator = (emitter, event, options) => { /***/ }), -/* 711 */ +/* 703 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pFinally = __webpack_require__(712); +const pFinally = __webpack_require__(704); class TimeoutError extends Error { constructor(message) { @@ -84128,7 +81702,7 @@ module.exports.TimeoutError = TimeoutError; /***/ }), -/* 712 */ +/* 704 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84150,12 +81724,12 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 713 */ +/* 705 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(714); +const NestedError = __webpack_require__(706); class CpFileError extends NestedError { constructor(message, nested) { @@ -84169,10 +81743,10 @@ module.exports = CpFileError; /***/ }), -/* 714 */ +/* 706 */ /***/ (function(module, exports, __webpack_require__) { -var inherits = __webpack_require__(715); +var inherits = __webpack_require__(707); var NestedError = function (message, nested) { this.nested = nested; @@ -84223,7 +81797,7 @@ module.exports = NestedError; /***/ }), -/* 715 */ +/* 707 */ /***/ (function(module, exports, __webpack_require__) { try { @@ -84231,12 +81805,12 @@ try { if (typeof util.inherits !== 'function') throw ''; module.exports = util.inherits; } catch (e) { - module.exports = __webpack_require__(716); + module.exports = __webpack_require__(708); } /***/ }), -/* 716 */ +/* 708 */ /***/ (function(module, exports) { if (typeof Object.create === 'function') { @@ -84265,16 +81839,16 @@ if (typeof Object.create === 'function') { /***/ }), -/* 717 */ +/* 709 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const {promisify} = __webpack_require__(111); const fs = __webpack_require__(132); -const makeDir = __webpack_require__(718); -const pEvent = __webpack_require__(710); -const CpFileError = __webpack_require__(713); +const makeDir = __webpack_require__(710); +const pEvent = __webpack_require__(702); +const CpFileError = __webpack_require__(705); const stat = promisify(fs.stat); const lstat = promisify(fs.lstat); @@ -84371,7 +81945,7 @@ exports.copyFileSync = (source, destination, flags) => { /***/ }), -/* 718 */ +/* 710 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84379,7 +81953,7 @@ exports.copyFileSync = (source, destination, flags) => { const fs = __webpack_require__(133); const path = __webpack_require__(4); const {promisify} = __webpack_require__(111); -const semver = __webpack_require__(719); +const semver = __webpack_require__(711); const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); @@ -84534,7 +82108,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 719 */ +/* 711 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -86136,7 +83710,7 @@ function coerce (version, options) { /***/ }), -/* 720 */ +/* 712 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86177,7 +83751,7 @@ module.exports = ProgressEmitter; /***/ }), -/* 721 */ +/* 713 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86223,12 +83797,12 @@ exports.default = module.exports; /***/ }), -/* 722 */ +/* 714 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(723); +const NestedError = __webpack_require__(715); class CpyError extends NestedError { constructor(message, nested) { @@ -86242,7 +83816,7 @@ module.exports = CpyError; /***/ }), -/* 723 */ +/* 715 */ /***/ (function(module, exports, __webpack_require__) { var inherits = __webpack_require__(111).inherits; diff --git a/packages/kbn-storybook/README.md b/packages/kbn-storybook/README.md index c9195f41ebf26..eea8912c8715e 100644 --- a/packages/kbn-storybook/README.md +++ b/packages/kbn-storybook/README.md @@ -2,32 +2,40 @@ This package provides ability to add [Storybook](https://storybook.js.org/) to any Kibana plugin. -- [Setup Instructions](#setup-instructions) - +- [Kibana Storybook](#kibana-storybook) + - [Setup Instructions](#setup-instructions) + - [Customizing configuration](#customizing-configuration) ## Setup Instructions -1. Add `storybook.js` launcher file to your plugin. For example, create a file at - `src/plugins//scripts/storybook.js`, with the following contents: - - ```js - import { join } from 'path'; - - // eslint-disable-next-line - require('@kbn/storybook').runStorybookCli({ - name: '', - storyGlobs: [join(__dirname, '..', 'public', 'components', '**', '*.examples.tsx')], - }); - ``` -2. Add your plugin alias to `src/dev/storybook/aliases.ts` config. -3. Create sample Storybook stories. For example, in your plugin create create a file at - `src/plugins//public/components/hello_world/__examples__/hello_world.examples.tsx` with - the following contents: - - ```jsx - import * as React from 'react'; - import { storiesOf } from '@storybook/react'; - - storiesOf('Hello world', module).add('default', () =>
Hello world!
); - ``` -4. Launch Storybook with `yarn storybook `. +- Add a `.storybook/main.js` configuration file to your plugin. For example, create a file at + `src/plugins//.storybook/main.js`, with the following contents: + + ```js + module.exports = require('@kbn/storybook').defaultConfig; + ``` + +- Add your plugin alias to `src/dev/storybook/aliases.ts` config. +- Create sample Storybook stories. For example, in your plugin create a file at + `src/plugins//public/components/hello_world/hello_world.stories.tsx` with + the following [Component Story Format](https://storybook.js.org/docs/react/api/csf) contents: + + ```jsx + import { MyComponent } from './my_component'; + + export default { + component: MyComponent, + title: 'Path/In/Side/Navigation/ToComponent', + }; + + export function Example() { + return ; + } + ``` + +- Launch Storybook with `yarn storybook `, or build a static site with `yarn storybook --site `. + +## Customizing configuration + +The `defaultConfig` object provided by the @kbn/storybook package should be all you need to get running, but you can +override this in your .storybook/main.js. Using [Storybook's configuration options](https://storybook.js.org/docs/react/configure/overview). diff --git a/packages/kbn-storybook/index.js b/packages/kbn-storybook/index.js deleted file mode 100644 index 77d457f2bb3c0..0000000000000 --- a/packages/kbn-storybook/index.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const fs = require('fs'); -const { join } = require('path'); -const Rx = require('rxjs'); -const { first } = require('rxjs/operators'); -const storybook = require('@storybook/react/standalone'); -const { run } = require('@kbn/dev-utils'); -const { generateStorybookEntry } = require('./lib/storybook_entry'); -const { ASSET_DIR, CURRENT_CONFIG } = require('./lib/constants'); -const { buildDll } = require('./lib/dll'); - -exports.runStorybookCli = (config) => { - const { name, storyGlobs } = config; - run( - async ({ flags, log, procRunner }) => { - log.debug('Global config:\n', require('./lib/constants')); - - const currentConfig = JSON.stringify(config, null, 2); - const currentConfigDir = join(CURRENT_CONFIG, '..'); - await fs.promises.mkdir(currentConfigDir, { recursive: true }); - log.debug('Writing currentConfig:\n', CURRENT_CONFIG + '\n', currentConfig); - await fs.promises.writeFile(CURRENT_CONFIG, `exports.currentConfig = ${currentConfig};`); - - await buildDll({ - rebuildDll: flags.rebuildDll, - log, - procRunner, - }); - - const subj = new Rx.ReplaySubject(1); - generateStorybookEntry({ log, storyGlobs }).subscribe(subj); - - await subj.pipe(first()).toPromise(); - - await Promise.all([ - // route errors - subj.toPromise(), - - new Promise(async () => { - // storybook never completes, so neither will this promise - const configDir = join(__dirname, 'storybook_config'); - log.debug('Config dir:', configDir); - - const config = { - mode: flags.site ? 'static' : 'dev', - port: 9001, - configDir, - }; - if (flags.site) { - config.outputDir = join(ASSET_DIR, name); - } - - await storybook(config); - - // Line is only reached when building the static version - if (flags.site) process.exit(); - }), - ]); - }, - { - flags: { - boolean: ['rebuildDll', 'site'], - }, - description: ` - Run the storybook examples for ${name} - `, - } - ); -}; diff --git a/packages/kbn-storybook/storybook_config/mocks/noop.js b/packages/kbn-storybook/index.ts old mode 100755 new mode 100644 similarity index 87% rename from packages/kbn-storybook/storybook_config/mocks/noop.js rename to packages/kbn-storybook/index.ts index e78d222eaa560..a0c944f9a6e28 --- a/packages/kbn-storybook/storybook_config/mocks/noop.js +++ b/packages/kbn-storybook/index.ts @@ -17,4 +17,5 @@ * under the License. */ -export default function () {} +export { defaultConfig } from './lib/default_config'; +export { runStorybookCli } from './lib/run_storybook_cli'; diff --git a/src/plugins/kibana_react/public/code_editor/scripts/storybook.ts b/packages/kbn-storybook/lib/constants.ts similarity index 79% rename from src/plugins/kibana_react/public/code_editor/scripts/storybook.ts rename to packages/kbn-storybook/lib/constants.ts index 4fe7286987397..7ca0ff349af97 100644 --- a/src/plugins/kibana_react/public/code_editor/scripts/storybook.ts +++ b/packages/kbn-storybook/lib/constants.ts @@ -17,10 +17,8 @@ * under the License. */ -import { join } from 'path'; +import { resolve } from 'path'; +import { REPO_ROOT as KIBANA_ROOT } from '@kbn/dev-utils'; -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'code-editor', - storyGlobs: [join(__dirname, '..', '*.examples.tsx')], -}); +export const REPO_ROOT = KIBANA_ROOT; +export const ASSET_DIR = resolve(KIBANA_ROOT, 'built_assets/storybook'); diff --git a/packages/kbn-storybook/storybook_config/middleware.js b/packages/kbn-storybook/lib/default_config.ts similarity index 73% rename from packages/kbn-storybook/storybook_config/middleware.js rename to packages/kbn-storybook/lib/default_config.ts index 9410bb66030d9..1fad9e2a3e087 100644 --- a/packages/kbn-storybook/storybook_config/middleware.js +++ b/packages/kbn-storybook/lib/default_config.ts @@ -17,10 +17,12 @@ * under the License. */ -const serve = require('serve-static'); -const path = require('path'); +import { StorybookConfig } from '@storybook/core/types'; -// Extend the Storybook Middleware to include a route to access Legacy UI assets -module.exports = function (router) { - router.get('/ui', serve(path.resolve(__dirname, '../../../src/core/server/core_app/assets'))); +export const defaultConfig: StorybookConfig = { + addons: ['@kbn/storybook/preset', '@storybook/addon-knobs', '@storybook/addon-essentials'], + stories: ['../**/*.stories.tsx'], + typescript: { + reactDocgen: false, + }, }; diff --git a/packages/kbn-storybook/lib/dll.js b/packages/kbn-storybook/lib/dll.js deleted file mode 100644 index 55bc8e43a02ec..0000000000000 --- a/packages/kbn-storybook/lib/dll.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const { resolve } = require('path'); -const { existsSync } = require('fs'); - -const { REPO_ROOT } = require('@kbn/utils'); -const { DLL_DIST_DIR } = require('./constants'); - -exports.buildDll = async ({ rebuildDll, log, procRunner }) => { - if (rebuildDll) { - log.info('rebuilding dll'); - } else if (!existsSync(resolve(DLL_DIST_DIR, 'dll.js'))) { - log.info('dll missing, rebuilding'); - } else { - log.info('dll exists'); - return; - } - - await procRunner.run('build dll ', { - cmd: require.resolve('webpack/bin/webpack'), - args: ['--config', require.resolve('./webpack.dll.config.js')], - cwd: REPO_ROOT, - wait: true, - }); -}; diff --git a/packages/kbn-storybook/lib/constants.js b/packages/kbn-storybook/lib/register.ts similarity index 60% rename from packages/kbn-storybook/lib/constants.js rename to packages/kbn-storybook/lib/register.ts index 4d8ca0adbfe17..5121b6f614902 100644 --- a/packages/kbn-storybook/lib/constants.js +++ b/packages/kbn-storybook/lib/register.ts @@ -17,11 +17,19 @@ * under the License. */ -const { resolve } = require('path'); -const { REPO_ROOT } = require('@kbn/utils'); +import { addons } from '@storybook/addons'; +import { create } from '@storybook/theming'; -exports.ASSET_DIR = resolve(REPO_ROOT, 'built_assets/storybook'); -exports.CURRENT_CONFIG = resolve(exports.ASSET_DIR, 'current.config.js'); -exports.STORY_ENTRY_PATH = resolve(exports.ASSET_DIR, 'stories.entry.js'); -exports.DLL_DIST_DIR = resolve(exports.ASSET_DIR, 'dll'); -exports.DLL_NAME = 'storybook_dll'; +// This configures the "Manager", or main outer view of Storybook. It is an +// addon that's loaded by the `managerEntries` part of the preset in ../preset.js. +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'Kibana Storybook', + brandUrl: 'https://github.com/elastic/kibana/tree/master/packages/kbn-storybook', + }), + showPanel: false, + isFullscreen: false, + panelPosition: 'bottom', + isToolshown: true, +}); diff --git a/packages/kbn-storybook/lib/run_storybook_cli.ts b/packages/kbn-storybook/lib/run_storybook_cli.ts new file mode 100644 index 0000000000000..3c4cdbf3dcf84 --- /dev/null +++ b/packages/kbn-storybook/lib/run_storybook_cli.ts @@ -0,0 +1,75 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { join } from 'path'; +import { logger } from '@storybook/node-logger'; +import buildStandalone from '@storybook/react/standalone'; +import { Flags, run } from '@kbn/dev-utils'; +import { distDir } from '@kbn/ui-shared-deps'; +import * as constants from './constants'; + +// Convert the flags to a Storybook loglevel +function getLogLevelFromFlags(flags: Flags) { + if (flags.debug) { + return 'silly'; + } + if (flags.verbose) { + return 'verbose'; + } + if (flags.quiet) { + return 'warn'; + } + if (flags.silent) { + return 'silent'; + } + return 'info'; +} + +export function runStorybookCli({ configDir, name }: { configDir: string; name: string }) { + run( + async ({ flags, log }) => { + log.debug('Global config:\n', constants); + + const staticDir = [distDir]; + const config: Record = { + configDir, + mode: flags.site ? 'static' : 'dev', + port: 9001, + staticDir, + }; + if (flags.site) { + config.outputDir = join(constants.ASSET_DIR, name); + } + + logger.setLevel(getLogLevelFromFlags(flags)); + await buildStandalone(config); + + // Line is only reached when building the static version + if (flags.site) process.exit(); + }, + { + flags: { + boolean: ['site'], + }, + description: ` + Run the storybook examples for ${name} + `, + } + ); +} diff --git a/packages/kbn-storybook/lib/storybook_entry.js b/packages/kbn-storybook/lib/storybook_entry.js deleted file mode 100644 index fc970b1ff9d2a..0000000000000 --- a/packages/kbn-storybook/lib/storybook_entry.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const { resolve, relative, dirname } = require('path'); -const Fs = require('fs'); -const Rx = require('rxjs'); -const { mergeMap, map, debounceTime } = require('rxjs/operators'); -const normalize = require('normalize-path'); -const { promisify } = require('util'); - -const watch = require('glob-watcher'); -const mkdirp = require('mkdirp'); // eslint-disable-line -const glob = require('fast-glob'); -const { REPO_ROOT } = require('@kbn/utils'); - -const mkdirpAsync = promisify(mkdirp); -const writeFileAsync = promisify(Fs.writeFile); - -const { STORY_ENTRY_PATH } = require('./constants'); -const STORE_ENTRY_DIR = dirname(STORY_ENTRY_PATH); - -exports.generateStorybookEntry = ({ log, storyGlobs }) => { - const globs = [...storyGlobs]; - log.info('Storybook globs:\n', globs); - const norm = (p) => normalize(relative(STORE_ENTRY_DIR, p)); - - return Rx.defer(() => - glob(globs, { - absolute: true, - cwd: REPO_ROOT, - onlyFiles: true, - }) - ).pipe( - map((paths) => { - log.info('Discovered Storybook entry points:\n', paths); - return new Set(paths.map(norm)); - }), - mergeMap( - (paths) => - new Rx.Observable((observer) => { - observer.next(paths); - - const chokidar = watch(globs, { cwd: REPO_ROOT }) - .on('add', (path) => { - observer.next(paths.add(norm(resolve(REPO_ROOT, path)))); - }) - .on('unlink', (path) => { - observer.next(paths.delete(norm(resolve(REPO_ROOT, path)))); - }); - - return () => { - chokidar.close(); - }; - }) - ), - debounceTime(200), - mergeMap(async (paths, i) => { - await mkdirpAsync(STORE_ENTRY_DIR); - - let content = ''; - for (const path of paths) { - content += `require('${path}');\n`; - } - - await writeFileAsync(STORY_ENTRY_PATH, content); - - if (i === 0) { - log.info('%d paths written to entry file', paths.size); - } else { - log.info('entry file updated'); - } - }) - ); -}; diff --git a/packages/kbn-storybook/lib/templates/index.ejs b/packages/kbn-storybook/lib/templates/index.ejs new file mode 100644 index 0000000000000..a4f8204c95d7a --- /dev/null +++ b/packages/kbn-storybook/lib/templates/index.ejs @@ -0,0 +1,59 @@ + + + + + + <%= options.title || 'Storybook'%> + + <% if (files.favicon) { %> + + <% } %> + + + + + + + + + + + + <% if (typeof headHtmlSnippet !== 'undefined') { %> <%= headHtmlSnippet %> <% } %> <% + files.css.forEach(file => { %> + + <% }); %> + + + + + <% if (typeof bodyHtmlSnippet !== 'undefined') { %> <%= bodyHtmlSnippet %> <% } %> + +
+
+ + <% if (typeof globals !== 'undefined' && Object.keys(globals).length) { %> + + <% } %> <% dlls.forEach(file => { %> + + <% }); %> <% files.js.forEach(file => { %> + + <% }); %> + + diff --git a/packages/kbn-storybook/lib/webpack.dll.config.js b/packages/kbn-storybook/lib/webpack.dll.config.js deleted file mode 100644 index 6e3b4d41bd7f0..0000000000000 --- a/packages/kbn-storybook/lib/webpack.dll.config.js +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const webpack = require('webpack'); -const path = require('path'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { REPO_ROOT } = require('@kbn/utils'); - -const { DLL_NAME, DLL_DIST_DIR } = require('./constants'); - -// This is the Webpack config for the DLL of CSS and JS assets that are -// not expected to change during development. This saves compile and run -// times considerably. -module.exports = { - context: REPO_ROOT, - mode: 'development', - - // This is a (potentially growing) list of modules that can be safely - // included in the DLL. Only add to this list modules or other code - // which Storybook stories and their components would require, but don't - // change during development. - entry: [ - '@elastic/eui/dist/eui_theme_light.css', - '@kbn/ui-framework/dist/kui_light.css', - '@storybook/addon-info', - '@storybook/addon-knobs', - '@storybook/addon-knobs/react', - '@storybook/addon-knobs/register', - '@storybook/addon-options', - '@storybook/addon-options/register', - '@storybook/core', - '@storybook/core/dist/server/common/polyfills.js', - '@storybook/react', - '@storybook/theming', - 'angular-mocks', - 'angular', - 'brace', - 'chroma-js', - 'highlight.js', - 'html-entities', - 'jquery', - 'lodash', - 'markdown-it', - 'mocha', - 'prop-types', - 'react-ace', - 'react-beautiful-dnd', - 'react-dom', - 'react-focus-lock', - 'react-markdown', - 'react-resize-detector', - 'react-virtualized', - 'react', - 'recompose', - 'redux-actions', - 'remark-parse', - 'rxjs', - 'sinon', - 'tinycolor2', - ], - plugins: [ - // Produce the DLL and its manifest - new webpack.DllPlugin({ - name: DLL_NAME, - path: path.resolve(DLL_DIST_DIR, 'manifest.json'), - }), - // Produce the DLL CSS file - new MiniCssExtractPlugin({ - filename: 'dll.css', - }), - ], - // Output the DLL JS file - output: { - path: DLL_DIST_DIR, - filename: 'dll.js', - library: DLL_NAME, - }, - // Include a require alias for legacy UI code and styles - resolve: { - alias: { - ui: path.resolve(REPO_ROOT, 'src/legacy/ui/public'), - }, - mainFields: ['browser', 'main'], - }, - module: { - rules: [ - { - test: /\.css$/, - use: [ - { - loader: MiniCssExtractPlugin.loader, - options: {}, - }, - { loader: 'css-loader' }, - { - loader: 'string-replace-loader', - options: { - search: '__REPLACE_WITH_PUBLIC_PATH__', - replace: '/', - flags: 'g', - }, - }, - ], - }, - { - test: /\.(woff|woff2|ttf|eot|svg|ico)(\?|$)/, - loader: 'file-loader', - }, - ], - }, - node: { - fs: 'empty', - child_process: 'empty', - }, -}; diff --git a/packages/kbn-storybook/package.json b/packages/kbn-storybook/package.json index 30ab0c701b295..05fdb8489a1c3 100644 --- a/packages/kbn-storybook/package.json +++ b/packages/kbn-storybook/package.json @@ -3,18 +3,21 @@ "version": "1.0.0", "private": true, "license": "Apache-2.0", + "main": "./target/index.js", "dependencies": { - "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", + "@storybook/addon-actions": "^6.0.16", + "@storybook/addon-essentials": "^6.0.16", + "@storybook/addon-knobs": "^6.0.16", + "@storybook/addon-storyshots": "^6.0.16", + "@storybook/core": "^6.0.16", + "@storybook/react": "^6.0.16", + "@storybook/theming": "^6.0.16", + "@types/loader-utils": "^2.0.1", + "@types/webpack": "^4.41.5", + "@types/webpack-env": "^1.15.2", + "@types/webpack-merge": "^4.1.5", "@kbn/utils": "1.0.0", - "@storybook/addon-actions": "^5.3.19", - "@storybook/addon-console": "^1.2.1", - "@storybook/addon-info": "^5.3.19", - "@storybook/addon-knobs": "^5.3.19", - "@storybook/addon-options": "^5.3.19", - "@storybook/addon-storyshots": "^5.3.19", - "@storybook/react": "^5.3.19", - "@storybook/theming": "^5.3.19", "babel-loader": "^8.0.6", "copy-webpack-plugin": "^6.0.2", "fast-glob": "2.2.7", @@ -29,5 +32,10 @@ "serve-static": "1.14.1", "styled-components": "^5.1.0", "webpack": "^4.41.5" + }, + "scripts": { + "build": "tsc", + "kbn:bootstrap": "yarn build", + "watch": "yarn build --watch" } -} \ No newline at end of file +} diff --git a/src/plugins/embeddable/scripts/storybook.js b/packages/kbn-storybook/preset.js similarity index 75% rename from src/plugins/embeddable/scripts/storybook.js rename to packages/kbn-storybook/preset.js index 0d7712fe973f4..8c17f78e208d8 100644 --- a/src/plugins/embeddable/scripts/storybook.js +++ b/packages/kbn-storybook/preset.js @@ -17,10 +17,13 @@ * under the License. */ -import { join } from 'path'; +const webpackConfig = require('./target/webpack.config').default; -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'embeddable', - storyGlobs: [join(__dirname, '..', 'public', 'components', '**', '*.examples.tsx')], -}); +module.exports = { + managerEntries: (entry = []) => { + return [...entry, require.resolve('./target/lib/register')]; + }, + webpackFinal: (config) => { + return webpackConfig({ config }); + }, +}; diff --git a/packages/kbn-storybook/storybook_config/addons.js b/packages/kbn-storybook/storybook_config/addons.js deleted file mode 100644 index f439d1d8892f8..0000000000000 --- a/packages/kbn-storybook/storybook_config/addons.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import '@storybook/addon-options/register'; -import '@storybook/addon-actions/register'; -import '@storybook/addon-knobs/register'; -import '@storybook/addon-console'; diff --git a/packages/kbn-storybook/storybook_config/config.js b/packages/kbn-storybook/storybook_config/config.js deleted file mode 100644 index d97bd3f7c2dcc..0000000000000 --- a/packages/kbn-storybook/storybook_config/config.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { configure, addDecorator, addParameters } from '@storybook/react'; -import { withKnobs } from '@storybook/addon-knobs/react'; -import { withInfo } from '@storybook/addon-info'; -import { create } from '@storybook/theming'; - -// If we're running Storyshots, be sure to register the require context hook. -// Otherwise, add the other decorators. -if (process.env.NODE_ENV === 'test') { - // eslint-disable-next-line - require('babel-plugin-require-context-hook/register')(); -} else { - // Customize the info for each story. - addDecorator( - withInfo({ - inline: true, - styles: { - infoBody: { - margin: 20, - }, - infoStory: { - margin: '40px 60px', - }, - }, - }) - ); - - // Add optional knobs to customize each story. - addDecorator(withKnobs); -} - -// Set up the Storybook environment with custom settings. -addParameters({ - options: { - theme: create({ - base: 'light', - brandTitle: 'Kibana Storybook', - brandUrl: 'https://github.com/elastic/kibana/tree/master/packages/kbn-storybook', - }), - showPanel: false, - isFullscreen: false, - panelPosition: 'bottom', - isToolshown: true, - }, -}); - -configure(() => { - // eslint-disable-next-line - require('../../../built_assets/storybook/stories.entry.js'); -}, module); diff --git a/packages/kbn-storybook/storybook_config/mocks/absolute_to_parsed_url.js b/packages/kbn-storybook/storybook_config/mocks/absolute_to_parsed_url.js deleted file mode 100644 index 65a27b095f84e..0000000000000 --- a/packages/kbn-storybook/storybook_config/mocks/absolute_to_parsed_url.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export const absoluteToParsedUrl = () => { - getAbsoluteUrl: () => - 'http://localhost:5601/kbp/app/canvas#/workpad/workpad-24d56dad-ae70-42b8-9ef1-c5350ecd426c/page/1'; -}; // noop diff --git a/packages/kbn-storybook/storybook_config/mocks/state_store.js b/packages/kbn-storybook/storybook_config/mocks/state_store.js deleted file mode 100644 index 11bdf6632321d..0000000000000 --- a/packages/kbn-storybook/storybook_config/mocks/state_store.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export function getState() { - return { - assets: { - yay: { value: 'here is your image' }, - }, - }; -} diff --git a/packages/kbn-storybook/storybook_config/preview-head.html b/packages/kbn-storybook/storybook_config/preview-head.html deleted file mode 100644 index 16754ad550da0..0000000000000 --- a/packages/kbn-storybook/storybook_config/preview-head.html +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/packages/kbn-storybook/storybook_config/webpack.config.js b/packages/kbn-storybook/storybook_config/webpack.config.js deleted file mode 100644 index 60b6b6add66d1..0000000000000 --- a/packages/kbn-storybook/storybook_config/webpack.config.js +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const { resolve } = require('path'); -const webpack = require('webpack'); -const webpackMerge = require('webpack-merge'); -const { stringifyRequest } = require('loader-utils'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); -const { REPO_ROOT } = require('@kbn/utils'); -const { DLL_DIST_DIR } = require('../lib/constants'); -// eslint-disable-next-line import/no-unresolved -const { currentConfig } = require('../../../built_assets/storybook/current.config'); - -// Extend the Storybook Webpack config with some customizations -module.exports = async ({ config: storybookConfig }) => { - let config = { - module: { - rules: [ - // Include the React preset from Kibana for JS(X) and TS(X) - { - test: /\.(j|t)sx?$/, - exclude: /node_modules/, - loaders: 'babel-loader', - options: { - presets: [require.resolve('@kbn/babel-preset/webpack_preset')], - }, - }, - { - test: /\.(html|md|txt|tmpl)$/, - use: { - loader: 'raw-loader', - }, - }, - // Parse props data for .tsx files - // This is notoriously slow, and is making Storybook unusable. Disabling for now. - // See: https://github.com/storybookjs/storybook/issues/7998 - // - // { - // test: /\.tsx$/, - // // Exclude example files, as we don't display props info for them - // exclude: /\.stories.tsx$/, - // use: [ - // // Parse TS comments to create Props tables in the UI - // require.resolve('react-docgen-typescript-loader'), - // ], - // }, - { - test: /\.scss$/, - exclude: /\.module.(s(a|c)ss)$/, - use: [ - { loader: 'style-loader' }, - { loader: 'css-loader', options: { importLoaders: 2 } }, - { - loader: 'postcss-loader', - options: { - config: { - path: require.resolve('@kbn/optimizer/postcss.config.js'), - }, - }, - }, - { - loader: 'sass-loader', - options: { - prependData(loaderContext) { - return `@import ${stringifyRequest( - loaderContext, - resolve(REPO_ROOT, 'src/core/public/core_app/styles/_globals_v7light.scss') - )};\n`; - }, - sassOptions: { - includePaths: [resolve(REPO_ROOT, 'node_modules')], - }, - }, - }, - ], - }, - ], - }, - plugins: [ - // Reference the built DLL file of static(ish) dependencies, which are removed - // during kbn:bootstrap and rebuilt if missing. - new webpack.DllReferencePlugin({ - manifest: resolve(DLL_DIST_DIR, 'manifest.json'), - context: REPO_ROOT, - }), - // Copy the DLL files to the Webpack build for use in the Storybook UI - - new CopyWebpackPlugin({ - patterns: [ - { - from: resolve(DLL_DIST_DIR, 'dll.js'), - to: 'dll.js', - }, - { - from: resolve(DLL_DIST_DIR, 'dll.css'), - to: 'dll.css', - }, - ], - }), - ], - resolve: { - // Tell Webpack about the ts/x extensions - extensions: ['.ts', '.tsx', '.scss'], - alias: { - core_app_image_assets: resolve(REPO_ROOT, 'src/core/public/core_app/images'), - }, - }, - }; - - // Find and alter the CSS rule to replace the Kibana public path string with a path - // to the route we've added in middleware.js - const cssRule = storybookConfig.module.rules.find((rule) => rule.test.source.includes('.css$')); - cssRule.use.push({ - loader: 'string-replace-loader', - options: { - search: '__REPLACE_WITH_PUBLIC_PATH__', - replace: '/', - flags: 'g', - }, - }); - - config = webpackMerge(storybookConfig, config); - - // Load custom Webpack config specified by a plugin. - if (currentConfig.webpackHook) { - // eslint-disable-next-line import/no-dynamic-require - return await require(currentConfig.webpackHook)({ config }); - } - - return config; -}; diff --git a/packages/kbn-storybook/tsconfig.json b/packages/kbn-storybook/tsconfig.json new file mode 100644 index 0000000000000..814a3963c9f49 --- /dev/null +++ b/packages/kbn-storybook/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "target", + "skipLibCheck": true + }, + "include": ["*.ts", "lib/*.ts"] +} diff --git a/packages/kbn-storybook/storybook_config/mocks/ui_storage.js b/packages/kbn-storybook/typings.d.ts similarity index 87% rename from packages/kbn-storybook/storybook_config/mocks/ui_storage.js rename to packages/kbn-storybook/typings.d.ts index 4bd8cdeddfc22..a20af34a0eb06 100644 --- a/packages/kbn-storybook/storybook_config/mocks/ui_storage.js +++ b/packages/kbn-storybook/typings.d.ts @@ -17,12 +17,5 @@ * under the License. */ -export class Storage { - get(key) { - return this[key]; - } - - set(key, value) { - this[key] = value; - } -} +// Storybook react doesn't declare this in its typings, but it's there. +declare module '@storybook/react/standalone'; diff --git a/packages/kbn-storybook/webpack.config.ts b/packages/kbn-storybook/webpack.config.ts new file mode 100644 index 0000000000000..98fca597ffd78 --- /dev/null +++ b/packages/kbn-storybook/webpack.config.ts @@ -0,0 +1,108 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { resolve } from 'path'; +import { stringifyRequest } from 'loader-utils'; +import { Configuration, Stats } from 'webpack'; +import webpackMerge from 'webpack-merge'; +import { externals } from '@kbn/ui-shared-deps'; +import { REPO_ROOT } from './lib/constants'; + +const stats = { + ...Stats.presetToOptions('minimal'), + colors: true, + errorDetails: true, + errors: true, + moduleTrace: true, + warningsFilter: /(export .* was not found in)|(entrypoint size limit)/, +}; + +// Extend the Storybook Webpack config with some customizations +/* eslint-disable import/no-default-export */ +export default function ({ config: storybookConfig }: { config: Configuration }) { + const config = { + devServer: { + stats, + }, + externals, + module: { + rules: [ + { + test: /\.(html|md|txt|tmpl)$/, + use: { + loader: 'raw-loader', + }, + }, + { + test: /\.scss$/, + exclude: /\.module.(s(a|c)ss)$/, + use: [ + { loader: 'style-loader' }, + { loader: 'css-loader', options: { importLoaders: 2 } }, + { + loader: 'postcss-loader', + options: { + config: { + path: require.resolve('@kbn/optimizer/postcss.config.js'), + }, + }, + }, + { + loader: 'sass-loader', + options: { + prependData(loaderContext: any) { + return `@import ${stringifyRequest( + loaderContext, + resolve(REPO_ROOT, 'src/core/public/core_app/styles/_globals_v7light.scss') + )};\n`; + }, + sassOptions: { + includePaths: [resolve(REPO_ROOT, 'node_modules')], + }, + }, + }, + ], + }, + ], + }, + resolve: { + // Tell Webpack about the scss extension + extensions: ['.scss'], + alias: { + core_app_image_assets: resolve(REPO_ROOT, 'src/core/public/core_app/images'), + }, + }, + stats, + }; + + // This is the hacky part. We find something that looks like the + // HtmlWebpackPlugin and mutate its `options.template` to point at our + // revised template. + const htmlWebpackPlugin: any = (storybookConfig.plugins || []).find((plugin: any) => { + return plugin.options && typeof plugin.options.template === 'string'; + }); + if (htmlWebpackPlugin) { + htmlWebpackPlugin.options.template = require.resolve('../lib/templates/index.ejs'); + } + + // @ts-expect-error There's a long error here about the types of the + // incompatibility of Configuration, but it looks like it just may be Webpack + // type definition related. + return webpackMerge(storybookConfig, config); +} diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index ba58dcdfa4d58..9cd6ca6801bc3 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -50,14 +50,12 @@ export const IGNORE_FILE_GLOBS = [ 'vars/*', '.ci/pipeline-library/**/*', - // Files in this directory must match a pre-determined name in some cases. - 'x-pack/plugins/canvas/storybook/*', - // filename must match language code which requires capital letters '**/translations/*.json', - // filename is required by storybook - 'packages/kbn-storybook/storybook_config/preview-head.html', + // Storybook has predetermined filesnames + '**/preview-body.html', + '**/preview-head.html', // filename required by api-extractor 'api-documenter.json', diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index d31a408e98c67..153725fc48e7b 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -18,13 +18,13 @@ */ export const storybookAliases = { - apm: 'x-pack/plugins/apm/scripts/storybook.js', - canvas: 'x-pack/plugins/canvas/scripts/storybook_new.js', - codeeditor: 'src/plugins/kibana_react/public/code_editor/scripts/storybook.ts', - dashboard_enhanced: 'x-pack/plugins/dashboard_enhanced/scripts/storybook.js', - embeddable: 'src/plugins/embeddable/scripts/storybook.js', - infra: 'x-pack/plugins/infra/scripts/storybook.js', - security_solution: 'x-pack/plugins/security_solution/scripts/storybook.js', - ui_actions_enhanced: 'x-pack/plugins/ui_actions_enhanced/scripts/storybook.js', - observability: 'x-pack/plugins/observability/scripts/storybook.js', + apm: 'x-pack/plugins/apm/.storybook', + canvas: 'x-pack/plugins/canvas/storybook', + codeeditor: 'src/plugins/kibana_react/public/code_editor/.storybook', + dashboard_enhanced: 'x-pack/plugins/dashboard_enhanced/.storybook', + embeddable: 'src/plugins/embeddable/.storybook', + infra: 'x-pack/plugins/infra/.storybook', + security_solution: 'x-pack/plugins/security_solution/.storybook', + ui_actions_enhanced: 'x-pack/plugins/ui_actions_enhanced/.storybook', + observability: 'x-pack/plugins/observability/.storybook', }; diff --git a/src/dev/storybook/run_storybook_cli.ts b/src/dev/storybook/run_storybook_cli.ts index b1e8d882e5352..63c1783900398 100644 --- a/src/dev/storybook/run_storybook_cli.ts +++ b/src/dev/storybook/run_storybook_cli.ts @@ -17,9 +17,8 @@ * under the License. */ -import { join } from 'path'; import { run, createFlagError } from '@kbn/dev-utils'; -import { REPO_ROOT } from '@kbn/utils'; +import { runStorybookCli } from '@kbn/storybook'; import { storybookAliases } from './aliases'; import { clean } from './commands/clean'; @@ -40,20 +39,18 @@ run( } if (!alias) { - throw createFlagError('missing alias'); + throw createFlagError('Missing alias'); } if (!storybookAliases.hasOwnProperty(alias)) { - throw createFlagError(`unknown alias [${alias}]`); + throw createFlagError(`Unknown alias [${alias}]`); } - const relative = (storybookAliases as any)[alias]; - const absolute = join(REPO_ROOT, relative); + const configDir = (storybookAliases as any)[alias]; - log.verbose('Loading Storybook:', absolute); - process.chdir(join(absolute, '..', '..')); + log.verbose('Loading Storybook:', configDir); - require(absolute); + runStorybookCli({ configDir, name: alias }); }, { usage: `node scripts/storybook `, diff --git a/x-pack/plugins/canvas/scripts/storybook_new.js b/src/plugins/embeddable/.storybook/main.js similarity index 56% rename from x-pack/plugins/canvas/scripts/storybook_new.js rename to src/plugins/embeddable/.storybook/main.js index 4871898b73a45..1818aa44a9399 100644 --- a/x-pack/plugins/canvas/scripts/storybook_new.js +++ b/src/plugins/embeddable/.storybook/main.js @@ -4,10 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -import { join } from 'path'; - -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'canvas', - storyGlobs: [join(__dirname, '..', '**', '*.stories.tsx')], -}); +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/src/plugins/embeddable/public/components/panel_options_menu/__examples__/panel_options_menu.examples.tsx b/src/plugins/embeddable/public/components/panel_options_menu/__examples__/panel_options_menu.stories.tsx similarity index 100% rename from src/plugins/embeddable/public/components/panel_options_menu/__examples__/panel_options_menu.examples.tsx rename to src/plugins/embeddable/public/components/panel_options_menu/__examples__/panel_options_menu.stories.tsx diff --git a/x-pack/plugins/dashboard_enhanced/scripts/storybook.js b/src/plugins/kibana_react/public/code_editor/.storybook/main.js similarity index 54% rename from x-pack/plugins/dashboard_enhanced/scripts/storybook.js rename to src/plugins/kibana_react/public/code_editor/.storybook/main.js index 5d95c56c31e3b..1818aa44a9399 100644 --- a/x-pack/plugins/dashboard_enhanced/scripts/storybook.js +++ b/src/plugins/kibana_react/public/code_editor/.storybook/main.js @@ -4,10 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -import { join } from 'path'; - -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'dashboard_enhanced', - storyGlobs: [join(__dirname, '..', 'public', '**', '*.story.tsx')], -}); +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/src/plugins/kibana_react/public/code_editor/code_editor.examples.tsx b/src/plugins/kibana_react/public/code_editor/code_editor.stories.tsx similarity index 100% rename from src/plugins/kibana_react/public/code_editor/code_editor.examples.tsx rename to src/plugins/kibana_react/public/code_editor/code_editor.stories.tsx diff --git a/x-pack/package.json b/x-pack/package.json index 482e832aea916..cd981b78aea63 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -43,13 +43,12 @@ "@mapbox/mapbox-gl-draw": "^1.2.0", "@mapbox/mapbox-gl-rtl-text": "^0.2.3", "@scant/router": "^0.1.0", - "@storybook/addon-actions": "^5.3.19", - "@storybook/addon-console": "^1.2.1", - "@storybook/addon-info": "^5.3.19", - "@storybook/addon-knobs": "^5.3.19", - "@storybook/addon-storyshots": "^5.3.19", - "@storybook/react": "^5.3.19", - "@storybook/theming": "^5.3.19", + "@storybook/addon-actions": "^6.0.16", + "@storybook/addon-essentials": "^6.0.16", + "@storybook/addon-knobs": "^6.0.16", + "@storybook/addon-storyshots": "^6.0.16", + "@storybook/react": "^6.0.16", + "@storybook/theming": "^6.0.16", "@testing-library/dom": "^7.24.2", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.0.4", diff --git a/x-pack/plugins/ui_actions_enhanced/scripts/storybook.js b/x-pack/plugins/apm/.storybook/main.js similarity index 54% rename from x-pack/plugins/ui_actions_enhanced/scripts/storybook.js rename to x-pack/plugins/apm/.storybook/main.js index bf43167a3ae51..1818aa44a9399 100644 --- a/x-pack/plugins/ui_actions_enhanced/scripts/storybook.js +++ b/x-pack/plugins/apm/.storybook/main.js @@ -4,10 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -import { join } from 'path'; - -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'ui_actions_enhanced', - storyGlobs: [join(__dirname, '..', 'public', '**', '*.story.tsx')], -}); +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/apm/scripts/storybook.js b/x-pack/plugins/apm/scripts/storybook.js deleted file mode 100644 index bda70b853c6fe..0000000000000 --- a/x-pack/plugins/apm/scripts/storybook.js +++ /dev/null @@ -1,15 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { join } from 'path'; - -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'apm', - storyGlobs: [ - join(__dirname, '..', 'public', 'components', '**', '*.stories.tsx'), - ], -}); diff --git a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/simple_template.stories.storyshot b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/simple_template.stories.storyshot index 0b9358714e71c..118f300ccab09 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/simple_template.stories.storyshot +++ b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/simple_template.stories.storyshot @@ -11,28 +11,38 @@ exports[`Storyshots arguments/AxisConfig simple 1`] = ` } >
- + className="euiSwitch__body" + > + + + + +

`; @@ -48,28 +58,38 @@ exports[`Storyshots arguments/AxisConfig/components simple template 1`] = ` } >
- + className="euiSwitch__body" + > + + + + +
`; diff --git a/x-pack/plugins/canvas/public/expression_types/arg_types/container_style/__stories__/__snapshots__/simple_template.stories.storyshot b/x-pack/plugins/canvas/public/expression_types/arg_types/container_style/__stories__/__snapshots__/simple_template.stories.storyshot index 401e7bf1e937d..495bf5262476c 100644 --- a/x-pack/plugins/canvas/public/expression_types/arg_types/container_style/__stories__/__snapshots__/simple_template.stories.storyshot +++ b/x-pack/plugins/canvas/public/expression_types/arg_types/container_style/__stories__/__snapshots__/simple_template.stories.storyshot @@ -13,50 +13,60 @@ exports[`Storyshots arguments/ContainerStyle simple 1`] = `
- + /> +
+ +
@@ -76,50 +86,60 @@ exports[`Storyshots arguments/ContainerStyle/components simple template 1`] = `
- + /> +
+ +
diff --git a/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/__stories__/__snapshots__/simple_template.stories.storyshot b/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/__stories__/__snapshots__/simple_template.stories.storyshot index f8583d7cd0dc0..b242d90cd7361 100644 --- a/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/__stories__/__snapshots__/simple_template.stories.storyshot +++ b/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/__stories__/__snapshots__/simple_template.stories.storyshot @@ -11,31 +11,41 @@ exports[`Storyshots arguments/SeriesStyle simple 1`] = ` } >
- Color +
+ Color +
-
-
- + +
@@ -53,31 +63,41 @@ exports[`Storyshots arguments/SeriesStyle/components simple: defaults 1`] = ` } >
- Color +
+ Color +
-
-
- + +
@@ -95,31 +115,41 @@ exports[`Storyshots arguments/SeriesStyle/components simple: no labels 1`] = ` } >
- Color +
+ Color +
-
-
- + +
@@ -137,51 +167,61 @@ exports[`Storyshots arguments/SeriesStyle/components simple: no series 1`] = ` } >
- Color +
+ Color +
-
-
- + +
-
-
- -
- + +
+ +
@@ -198,31 +238,41 @@ exports[`Storyshots arguments/SeriesStyle/components simple: with series 1`] = ` } >
- Color +
+ Color +
-
-
- + +
diff --git a/x-pack/plugins/canvas/storybook/addon/src/register.tsx b/x-pack/plugins/canvas/storybook/addon/src/register.tsx index 4934438789b94..7fcb8832b1ed8 100644 --- a/x-pack/plugins/canvas/storybook/addon/src/register.tsx +++ b/x-pack/plugins/canvas/storybook/addon/src/register.tsx @@ -24,7 +24,7 @@ addons.register(ADDON_ID, (api) => { type: types.PANEL, render: ({ active, key }) => { return ( - + ); diff --git a/x-pack/plugins/canvas/storybook/decorators/index.ts b/x-pack/plugins/canvas/storybook/decorators/index.ts index 8cd716cf7e3f1..c518e7e0daaa3 100644 --- a/x-pack/plugins/canvas/storybook/decorators/index.ts +++ b/x-pack/plugins/canvas/storybook/decorators/index.ts @@ -5,14 +5,6 @@ */ import { addDecorator } from '@storybook/react'; -// @ts-expect-error -import { withInfo } from '@storybook/addon-info'; -import { Provider as ReduxProvider } from 'react-redux'; - -import { ServicesProvider } from '../../public/services'; -import { RouterContext } from '../../public/components/router'; -import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; - import { routerContextDecorator } from './router_decorator'; import { kibanaContextDecorator } from './kibana_decorator'; import { servicesContextDecorator } from './services_decorator'; @@ -23,22 +15,6 @@ export const addDecorators = () => { if (process.env.NODE_ENV === 'test') { // eslint-disable-next-line @typescript-eslint/no-var-requires require('babel-plugin-require-context-hook/register')(); - } else { - // Customize the info for each story. - addDecorator( - withInfo({ - inline: true, - styles: { - infoBody: { - margin: 20, - }, - infoStory: { - margin: '40px 60px', - }, - }, - propTablesExclude: [ReduxProvider, ServicesProvider, RouterContext, KibanaContextProvider], - }) - ); } addDecorator(kibanaContextDecorator); diff --git a/x-pack/plugins/canvas/storybook/main.ts b/x-pack/plugins/canvas/storybook/main.ts index ad6d10f9bc75f..29952d22e44df 100644 --- a/x-pack/plugins/canvas/storybook/main.ts +++ b/x-pack/plugins/canvas/storybook/main.ts @@ -4,11 +4,20 @@ * you may not use this file except in compliance with the Elastic License. */ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { existsSync } = require('fs'); +const { join } = require('path'); + +// Check for DLL +if (!existsSync(join(__dirname, '../../../../built_assets/canvas_storybook_dll/manifest.json'))) { + // eslint-disable-next-line no-console + console.error( + 'No DLL found. Run `node scripts/storybook --dll` from the Canvas plugin directory.' + ); + process.exit(1); +} + module.exports = { stories: ['../**/*.stories.tsx'], - addons: [ - '@storybook/addon-actions', - '@storybook/addon-knobs', - './storybook/addon/target/register', - ], + addons: ['@storybook/addon-actions', '@storybook/addon-knobs', './addon/target/register'], }; diff --git a/x-pack/plugins/canvas/storybook/storyshots.test.tsx b/x-pack/plugins/canvas/storybook/storyshots.test.tsx index 85ec7baf18c62..44420159c328a 100644 --- a/x-pack/plugins/canvas/storybook/storyshots.test.tsx +++ b/x-pack/plugins/canvas/storybook/storyshots.test.tsx @@ -11,7 +11,7 @@ import moment from 'moment'; import 'moment-timezone'; import ReactDOM from 'react-dom'; -import initStoryshots, { multiSnapshotWithOptions } from '@storybook/addon-storyshots'; +// import initStoryshots, { multiSnapshotWithOptions } from '@storybook/addon-storyshots'; // @ts-expect-error untyped library import styleSheetSerializer from 'jest-styled-components/src/styleSheetSerializer'; import { addSerializer } from 'jest-specific-snapshot'; @@ -104,9 +104,12 @@ if (!fs.existsSync(cssDir)) { addSerializer(styleSheetSerializer); // Initialize Storyshots and build the Jest Snapshots -initStoryshots({ - configPath: path.resolve(__dirname, './../storybook'), - test: multiSnapshotWithOptions({}), - // Don't snapshot tests that start with 'redux' - storyNameRegex: /^((?!.*?redux).)*$/, -}); +// Commenting this out until after #75357 is merged and Jest gets updated. +// initStoryshots({ +// configPath: path.resolve(__dirname, './../storybook'), +// test: multiSnapshotWithOptions({}), +// // Don't snapshot tests that start with 'redux' +// storyNameRegex: /^((?!.*?redux).)*$/, +// }); + +test.todo('Storyshots'); diff --git a/x-pack/plugins/infra/scripts/storybook.js b/x-pack/plugins/dashboard_enhanced/.storybook/main.js similarity index 53% rename from x-pack/plugins/infra/scripts/storybook.js rename to x-pack/plugins/dashboard_enhanced/.storybook/main.js index 05d5daedf58f2..1818aa44a9399 100644 --- a/x-pack/plugins/infra/scripts/storybook.js +++ b/x-pack/plugins/dashboard_enhanced/.storybook/main.js @@ -4,10 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -import { join } from 'path'; - -// eslint-disable-next-line -require('@kbn/storybook').runStorybookCli({ - name: 'infra', - storyGlobs: [join(__dirname, '..', 'public', 'components', '**', '*.stories.tsx')], -}); +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.story.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.stories.tsx similarity index 100% rename from x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.story.tsx rename to x-pack/plugins/dashboard_enhanced/public/services/drilldowns/dashboard_to_dashboard_drilldown/components/dashboard_drilldown_config/dashboard_drilldown_config.stories.tsx diff --git a/x-pack/plugins/infra/.storybook/main.js b/x-pack/plugins/infra/.storybook/main.js new file mode 100644 index 0000000000000..1818aa44a9399 --- /dev/null +++ b/x-pack/plugins/infra/.storybook/main.js @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/observability/.storybook/main.js b/x-pack/plugins/observability/.storybook/main.js new file mode 100644 index 0000000000000..1818aa44a9399 --- /dev/null +++ b/x-pack/plugins/observability/.storybook/main.js @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index 21c7b87568e09..ff34116f59104 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -3,6 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ + +import { makeDecorator } from '@storybook/addons'; import { storiesOf } from '@storybook/react'; import { AppMountContext } from 'kibana/public'; import React from 'react'; @@ -10,20 +12,44 @@ import { MemoryRouter } from 'react-router-dom'; import { UI_SETTINGS } from '../../../../../../src/plugins/data/public'; import { PluginContext } from '../../context/plugin_context'; import { registerDataHandler, unregisterDataHandler } from '../../data_handler'; -import { emptyResponse as emptyAPMResponse, fetchApmData } from './mock/apm.mock'; -import { fetchLogsData, emptyResponse as emptyLogsResponse } from './mock/logs.mock'; -import { fetchMetricsData, emptyResponse as emptyMetricsResponse } from './mock/metrics.mock'; -import { fetchUptimeData, emptyResponse as emptyUptimeResponse } from './mock/uptime.mock'; import { EuiThemeProvider } from '../../typings'; import { OverviewPage } from './'; import { alertsFetchData } from './mock/alerts.mock'; +import { emptyResponse as emptyAPMResponse, fetchApmData } from './mock/apm.mock'; +import { emptyResponse as emptyLogsResponse, fetchLogsData } from './mock/logs.mock'; +import { emptyResponse as emptyMetricsResponse, fetchMetricsData } from './mock/metrics.mock'; import { newsFeedFetchData } from './mock/news_feed.mock'; +import { emptyResponse as emptyUptimeResponse, fetchUptimeData } from './mock/uptime.mock'; + +function unregisterAll() { + unregisterDataHandler({ appName: 'apm' }); + unregisterDataHandler({ appName: 'infra_logs' }); + unregisterDataHandler({ appName: 'infra_metrics' }); + unregisterDataHandler({ appName: 'uptime' }); +} + +const withCore = makeDecorator({ + name: 'withCore', + parameterName: 'core', + wrapper: (storyFn, context, { options }) => { + unregisterAll(); + + return ( + + + {storyFn(context)} + + + ); + }, +}); -const core = { +const core = ({ http: { basePath: { - prepend: (link) => `http://localhost:5601${link}`, + prepend: (link: string) => `http://localhost:5601${link}`, }, + get: () => Promise.resolve({ data: [] }), }, uiSettings: { get: (key: string) => { @@ -93,7 +119,7 @@ const core = { return euiSettings[key]; }, }, -} as AppMountContext['core']; +} as unknown) as AppMountContext['core']; const coreWithAlerts = ({ ...core, @@ -111,23 +137,19 @@ const coreWithNewsFeed = ({ }, } as unknown) as AppMountContext['core']; -function unregisterAll() { - unregisterDataHandler({ appName: 'apm' }); - unregisterDataHandler({ appName: 'infra_logs' }); - unregisterDataHandler({ appName: 'infra_metrics' }); - unregisterDataHandler({ appName: 'uptime' }); -} +const coreAlertsThrowsError = ({ + ...core, + http: { + ...core.http, + get: async () => { + throw new Error('Error fetching Alerts data'); + }, + }, +} as unknown) as AppMountContext['core']; storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('Empty state', () => { - unregisterAll(); + .addDecorator(withCore(core)) + .add('Empty State', () => { registerDataHandler({ appName: 'apm', fetchData: fetchApmData, @@ -150,52 +172,14 @@ storiesOf('app/Overview', module) }); return ; - }); - -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('single panel', () => { - unregisterAll(); + }) + .add('Single Panel', () => { registerDataHandler({ appName: 'infra_logs', fetchData: fetchLogsData, hasData: async () => true, }); - return ( - - ); - }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs and metrics', () => { - unregisterAll(); - registerDataHandler({ - appName: 'infra_logs', - fetchData: fetchLogsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: fetchMetricsData, - hasData: async () => true, - }); return ( ); - }); - -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs, metrics and alerts', () => { - unregisterAll(); + }) + .add('Logs and Metrics', () => { registerDataHandler({ appName: 'infra_logs', fetchData: fetchLogsData, @@ -225,40 +199,7 @@ storiesOf('app/Overview', module) fetchData: fetchMetricsData, hasData: async () => true, }); - return ( - - ); - }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs, metrics, APM and alerts', () => { - unregisterAll(); - registerDataHandler({ - appName: 'infra_logs', - fetchData: fetchLogsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: fetchMetricsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'apm', - fetchData: fetchApmData, - hasData: async () => true, - }); return ( ); - }); + }) + .add( + 'Logs, Metrics, and Alerts', + () => { + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs, metrics, APM and Uptime', () => { - unregisterAll(); - registerDataHandler({ - appName: 'apm', - fetchData: fetchApmData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_logs', - fetchData: fetchLogsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: fetchMetricsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'uptime', - fetchData: fetchUptimeData, - hasData: async () => true, - }); - return ( - - ); - }); + return ( + + ); + }, + { core: coreWithAlerts } + ) + .add( + 'Logs, Metrics, APM, and Alerts', + () => { + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs, metrics, APM, Uptime and Alerts', () => { - unregisterAll(); + return ( + + ); + }, + { core: coreWithAlerts } + ) + .add('Logs, Metrics, APM, and Uptime', () => { registerDataHandler({ appName: 'apm', fetchData: fetchApmData, @@ -337,45 +282,7 @@ storiesOf('app/Overview', module) fetchData: fetchUptimeData, hasData: async () => true, }); - return ( - - ); - }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('logs, metrics, APM, Uptime and News feed', () => { - unregisterAll(); - registerDataHandler({ - appName: 'apm', - fetchData: fetchApmData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_logs', - fetchData: fetchLogsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: fetchMetricsData, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'uptime', - fetchData: fetchUptimeData, - hasData: async () => true, - }); return ( ); - }); + }) + .add( + 'Logs, Metrics, APM, Uptime, and Alerts', + () => { + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + hasData: async () => true, + }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('no data', () => { - unregisterAll(); + return ( + + ); + }, + { core: coreWithAlerts } + ) + .add( + 'Logs, Metrics, APM, Uptime, and News Feed', + () => { + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + hasData: async () => true, + }); + return ( + + ); + }, + { core: coreWithNewsFeed } + ) + .add('No Data', () => { registerDataHandler({ appName: 'apm', fetchData: async () => emptyAPMResponse, @@ -415,113 +379,7 @@ storiesOf('app/Overview', module) fetchData: async () => emptyUptimeResponse, hasData: async () => true, }); - return ( - - ); - }); - -const coreAlertsThrowsError = ({ - ...core, - http: { - ...core.http, - get: async () => { - throw new Error('Error fetching Alerts data'); - }, - }, -} as unknown) as AppMountContext['core']; -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('fetch data with error', () => { - unregisterAll(); - registerDataHandler({ - appName: 'apm', - fetchData: async () => { - throw new Error('Error fetching APM data'); - }, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_logs', - fetchData: async () => { - throw new Error('Error fetching Logs data'); - }, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: async () => { - throw new Error('Error fetching Metric data'); - }, - hasData: async () => true, - }); - registerDataHandler({ - appName: 'uptime', - fetchData: async () => { - throw new Error('Error fetching Uptime data'); - }, - hasData: async () => true, - }); - return ( - - ); - }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('hasData with error and alerts', () => { - unregisterAll(); - registerDataHandler({ - appName: 'apm', - fetchData: fetchApmData, - // @ts-ignore thows an error instead - hasData: async () => { - throw new Error('Error has data'); - }, - }); - registerDataHandler({ - appName: 'infra_logs', - fetchData: fetchLogsData, - // @ts-ignore thows an error instead - hasData: async () => { - throw new Error('Error has data'); - }, - }); - registerDataHandler({ - appName: 'infra_metrics', - fetchData: fetchMetricsData, - // @ts-ignore thows an error instead - hasData: async () => { - throw new Error('Error has data'); - }, - }); - registerDataHandler({ - appName: 'uptime', - fetchData: fetchUptimeData, - // @ts-ignore thows an error instead - hasData: async () => { - throw new Error('Error has data'); - }, - }); return ( ); - }); -storiesOf('app/Overview', module) - .addDecorator((storyFn) => ( - - - {storyFn()} - - - )) - .add('hasData with error', () => { - unregisterAll(); + }) + .add( + 'Fetch Data with Error', + () => { + registerDataHandler({ + appName: 'apm', + fetchData: async () => { + throw new Error('Error fetching APM data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: async () => { + throw new Error('Error fetching Logs data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: async () => { + throw new Error('Error fetching Metric data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: async () => { + throw new Error('Error fetching Uptime data'); + }, + hasData: async () => true, + }); + return ( + + ); + }, + { core: coreAlertsThrowsError } + ) + .add( + 'hasData with Error and Alerts', + () => { + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + // @ts-ignore thows an error instead + hasData: async () => { + throw new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + // @ts-ignore thows an error instead + hasData: async () => { + throw new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + // @ts-ignore thows an error instead + hasData: async () => { + throw new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + // @ts-ignore thows an error instead + hasData: async () => { + throw new Error('Error has data'); + }, + }); + return ( + + ); + }, + { core: coreWithAlerts } + ) + .add('hasData with Error', () => { registerDataHandler({ appName: 'apm', fetchData: fetchApmData, @@ -572,6 +507,7 @@ storiesOf('app/Overview', module) throw new Error('Error has data'); }, }); + return ( ReactNode) => ( ({ eui: euiLightVars, darkMode: true })}>{storyFn()} ); -storiesOf('components/AndOrBadge', module) +storiesOf('Components/AndOrBadge', module) .addDecorator(withTheme) .add('and', () => ) .add('or', () => ) diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/builder/logic_buttons.stories.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/builder/logic_buttons.stories.tsx index e4508fa2a9a1d..64da43dc5b1c2 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/builder/logic_buttons.stories.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/builder/logic_buttons.stories.tsx @@ -16,7 +16,7 @@ addDecorator((storyFn) => ( ({ eui: euiLightVars, darkMode: false })}>{storyFn()} )); -storiesOf('Exceptions|BuilderLogicButtons', module) +storiesOf('Exceptions/BuilderLogicButtons', module) .add('and/or buttons', () => { return ( ( ({ eui: euiLightVars, darkMode: false })}>{storyFn()} )); -storiesOf('Components|ExceptionItem', module) +storiesOf('Components/ExceptionItem', module) .add('with os', () => { const payload = getExceptionListItemSchemaMock(); payload.description = ''; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx index d79d46817f153..f7e7411db23a4 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx @@ -16,7 +16,7 @@ addDecorator((storyFn) => ( ({ eui: euiLightVars, darkMode: false })}>{storyFn()} )); -storiesOf('Components|ExceptionsViewerHeader', module) +storiesOf('Components/ExceptionsViewerHeader', module) .add('loading', () => { return ( =8.9.0" axios "^0.18.0" -"@storybook/addon-actions@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.3.19.tgz#50548fa6e84bc79ad95233ce23ade4878fc7cfac" - integrity sha512-gXF29FFUgYlUoFf1DcVCmH1chg2ElaHWMmCi5h7aZe+g6fXBQw0UtEdJnYLMOqZCIiWoZyuf1ETD0RbNHPhRIw== - dependencies: - "@storybook/addons" "5.3.19" - "@storybook/api" "5.3.19" - "@storybook/client-api" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/core-events" "5.3.19" - "@storybook/theming" "5.3.19" +"@storybook/addon-actions@6.0.16", "@storybook/addon-actions@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.0.16.tgz#869c90291fdfec4a0644e8415f5004cc57e59145" + integrity sha512-kyPGMP2frdhUgJAm6ChqvndaUawwQE9Vx7pN1pk/Q4qnyVlWCneZVojQf0iAgL45q0az0XI1tOPr4ooroaniYg== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/theming" "6.0.16" core-js "^3.0.1" - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" - polished "^3.3.1" + lodash "^4.17.15" + polished "^3.4.4" prop-types "^15.7.2" react "^16.8.3" - react-inspector "^4.0.0" - uuid "^3.3.2" - -"@storybook/addon-console@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-console/-/addon-console-1.2.1.tgz#f338401661b4636118b13839848061e996d4e104" - integrity sha512-2iDbDTipWonvRpIqLLntfhCGvawFFvoG1xyErpyL7K/HRdQ1zzIvR1Qm83S7TK8Vg+RzZWm4wcDbxx7WOsFCNg== - dependencies: - global "^4.3.2" + react-inspector "^5.0.1" + regenerator-runtime "^0.13.3" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + uuid "^8.0.0" + +"@storybook/addon-backgrounds@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.0.16.tgz#cbf909992a86dbbdfea172d3950300e8c2a7de01" + integrity sha512-0sH7hlZh4bHt6zV6QyG3ryNGJsxD42iXVwWdwAShzfWJKGfLy5XwdvHUKkMEBbY9bOPeoI9oMli2RAfsD6juLQ== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/theming" "6.0.16" + core-js "^3.0.1" + memoizerific "^1.11.3" + react "^16.8.3" + regenerator-runtime "^0.13.3" -"@storybook/addon-info@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addon-info/-/addon-info-5.3.19.tgz#175af53ba54ddb8fe24b3c979206ffbbf42bc4f4" - integrity sha512-MiFLcyoOmwawquagQHkqiPHnvBOKrVaS/wnO1XyBvIHwkK+KN7CZ9l7HakA4SO76kugrY9OJYyi5YvEEdN6vww== - dependencies: - "@storybook/addons" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/theming" "5.3.19" +"@storybook/addon-controls@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.0.16.tgz#c7fc765a01cc3a0de397f8b55bfeda3f328e5495" + integrity sha512-RgBOply9o3PYoWI7TNKef2AQixw7l620pT1fCJbXykp/lu17eqKaIa5KYHRE9vEajun5RuEQxGnSzQOV3OZAsA== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/node-logger" "6.0.16" + "@storybook/theming" "6.0.16" core-js "^3.0.1" + ts-dedent "^1.1.1" + +"@storybook/addon-docs@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.0.16.tgz#b24983a63c6c9469a418bb1478606626aff42dff" + integrity sha512-7gM/0lQ3mSybpOpQbgR8fjAU+u3zgAWyOM1a+LR7zVn5lNjgBhZD2pfHuwViTeAGG/IIpvmOsd57BKlFJw5TPA== + dependencies: + "@babel/generator" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/plugin-transform-react-jsx" "^7.3.0" + "@babel/preset-env" "^7.9.6" + "@jest/transform" "^26.0.0" + "@mdx-js/loader" "^1.5.1" + "@mdx-js/mdx" "^1.5.1" + "@mdx-js/react" "^1.5.1" + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/csf" "0.0.1" + "@storybook/node-logger" "6.0.16" + "@storybook/postinstall" "6.0.16" + "@storybook/source-loader" "6.0.16" + "@storybook/theming" "6.0.16" + acorn "^7.1.0" + acorn-jsx "^5.1.0" + acorn-walk "^7.0.0" + core-js "^3.0.1" + doctrine "^3.0.0" + escodegen "^1.12.0" + fast-deep-equal "^3.1.1" global "^4.3.2" - marksy "^8.0.0" - nested-object-assign "^1.0.3" + html-tags "^3.1.0" + js-string-escape "^1.0.1" + lodash "^4.17.15" prop-types "^15.7.2" - react "^16.8.3" - react-addons-create-fragment "^15.6.2" - react-element-to-jsx-string "^14.0.2" - react-is "^16.8.3" - react-lifecycles-compat "^3.0.4" + react-element-to-jsx-string "^14.3.1" + regenerator-runtime "^0.13.3" + remark-external-links "^6.0.0" + remark-slug "^6.0.0" + ts-dedent "^1.1.1" util-deprecate "^1.0.2" -"@storybook/addon-knobs@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.3.19.tgz#b2483e401e2dca6390e1c0a81801130a0b515efb" - integrity sha512-e7z6KhvVOUGjygK4VL5Un1U3t0XG0jkb/BOHVWQMtH5dWNn3zofD3LrZZy24eAsyre/ej/LGo/BzwDSXkKLTog== - dependencies: - "@storybook/addons" "5.3.19" - "@storybook/api" "5.3.19" - "@storybook/client-api" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/core-events" "5.3.19" - "@storybook/theming" "5.3.19" - "@types/react-color" "^3.0.1" +"@storybook/addon-essentials@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.0.16.tgz#031b05f6a9947fd93a86f28767b1c354e8ea4237" + integrity sha512-tHH2B4cGYihaPytzIlcFlc/jDSu1PUMgaQM4uzIDOn6SCYZJMp5vygK97zF7hf41x/TXv+8i9ZMN5iUJ7l1+fw== + dependencies: + "@storybook/addon-actions" "6.0.16" + "@storybook/addon-backgrounds" "6.0.16" + "@storybook/addon-controls" "6.0.16" + "@storybook/addon-docs" "6.0.16" + "@storybook/addon-toolbars" "6.0.16" + "@storybook/addon-viewport" "6.0.16" + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/node-logger" "6.0.16" + core-js "^3.0.1" + regenerator-runtime "^0.13.3" + ts-dedent "^1.1.1" + +"@storybook/addon-knobs@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.0.16.tgz#ef7b9a67c5f3f75579af1d3c2c1f36205f77f505" + integrity sha512-//4Fq70M7LLOghM6+eugL53QHVmlbBm5240u+Aq2nWQLUtaszrPW6/7Vj0XRwLyp/DQtEHetTE/fFfCLoGK+dw== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/channels" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/theming" "6.0.16" copy-to-clipboard "^3.0.8" core-js "^3.0.1" escape-html "^1.0.3" - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" prop-types "^15.7.2" @@ -2844,205 +3016,259 @@ react-color "^2.17.0" react-lifecycles-compat "^3.0.4" react-select "^3.0.8" + regenerator-runtime "^0.13.3" -"@storybook/addon-options@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addon-options/-/addon-options-5.3.19.tgz#065e8f6be53073b37ebcaebe602dcc85ee202eaf" - integrity sha512-i5PzPlsv4QWdOvQhYVlyOW7VEW2ovhxg4MWVRjCoVy6vhF42MR+0HRtIOeOENuc3XnpSxsSk0ci/UI2XQjnX3Q== - dependencies: - "@storybook/addons" "5.3.19" - core-js "^3.0.1" - util-deprecate "^1.0.2" - -"@storybook/addon-storyshots@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addon-storyshots/-/addon-storyshots-5.3.19.tgz#cb07ac3cc20d3a399ed4b6758008e10f910691d0" - integrity sha512-4TBbpAqbc9HLPxaJB2koQija67OBgGRhBZ5l2goczbgIWbbh3BXDrg3SwmKXC0cFnslgbuKU3CMX7infgtkByA== +"@storybook/addon-storyshots@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-storyshots/-/addon-storyshots-6.0.16.tgz#e912273966d4c7cba1a9053d6a76e8856e3b834f" + integrity sha512-wQhM6pnjUCLTr/6BMXTptGeqiMPnnTrvLeaRwG1cDChGK/qs3YqTsa2QqLXQ17IvNUDTHLUNQlYk5af+HrCGhg== dependencies: - "@jest/transform" "^24.9.0" - "@storybook/addons" "5.3.19" - "@storybook/client-api" "5.3.19" - "@storybook/core" "5.3.19" + "@jest/transform" "^26.0.0" + "@storybook/addons" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/core" "6.0.16" "@types/glob" "^7.1.1" - "@types/jest" "^24.0.16" + "@types/jest" "^25.1.1" "@types/jest-specific-snapshot" "^0.5.3" babel-plugin-require-context-hook "^1.0.0" core-js "^3.0.1" glob "^7.1.3" global "^4.3.2" - jest-specific-snapshot "^2.0.0" + jest-specific-snapshot "^4.0.0" + pretty-format "^26.4.0" read-pkg-up "^7.0.0" regenerator-runtime "^0.13.3" - ts-dedent "^1.1.0" + ts-dedent "^1.1.1" -"@storybook/addons@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.3.19.tgz#3a7010697afd6df9a41b8c8a7351d9a06ff490a4" - integrity sha512-Ky/k22p6i6FVNvs1VhuFyGvYJdcp+FgXqFgnPyY/OXJW/vPDapdElpTpHJZLFI9I2FQBDcygBPU5RXkumQ+KUQ== +"@storybook/addon-toolbars@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.0.16.tgz#704a5d506b8d952eca6e5dca96c00b22aedf495f" + integrity sha512-6ulvPqe38NJRbQp0zajeNsDJQKZzGqbCMsSw3gtkFOMt8D/V625MF8YY/Y9UZ+xHWor17GUgE1k9hljdyZe1Nw== dependencies: - "@storybook/api" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/components" "6.0.16" + core-js "^3.0.1" + +"@storybook/addon-viewport@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.0.16.tgz#574cc0a3f991ce405ba4a3540132fb05edf488f6" + integrity sha512-3vk6lBZrKJrK9rwxglLT1p579WkLvoJxgW5ddpvSsu31NPAKfDufkDqOZOQGyMmcgIFzZJEc9eKjoTcLiHxppw== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/theming" "6.0.16" core-js "^3.0.1" global "^4.3.2" - util-deprecate "^1.0.2" + memoizerific "^1.11.3" + prop-types "^15.7.2" + regenerator-runtime "^0.13.3" + +"@storybook/addons@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.0.16.tgz#a20a219bd5b1474ad02b92e79a74652898a684d9" + integrity sha512-jGMaOJYTM2yZeX1tI6whEn+4xpI1aAybZBrc+OD21CcGoQrbF/jplZMq7xKI0Y6vOMguuTGulpUNCezD3LbBjA== + dependencies: + "@storybook/api" "6.0.16" + "@storybook/channels" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/router" "6.0.16" + "@storybook/theming" "6.0.16" + core-js "^3.0.1" + global "^4.3.2" + regenerator-runtime "^0.13.3" -"@storybook/api@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.3.19.tgz#77f15e9e2eee59fe1ddeaba1ef39bc34713a6297" - integrity sha512-U/VzDvhNCPmw2igvJYNNM+uwJCL+3teiL6JmuoL4/cmcqhI6IqqG9dZmMP1egoCd19wXEP7rnAfB/VcYVg41dQ== +"@storybook/api@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.0.16.tgz#56cdfc6f7a21d62d1a4ab06b4741c1560160d320" + integrity sha512-RTC4BKmH5i8bJUQejOHEtjebVKtOaHkmEagI2HQRalsokBc1GLAf84EGrO2TaZiRrItAPL5zZQgEnKUblsGJGw== dependencies: - "@reach/router" "^1.2.1" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + "@reach/router" "^1.3.3" + "@storybook/channels" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/core-events" "6.0.16" "@storybook/csf" "0.0.1" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" - "@types/reach__router" "^1.2.3" + "@storybook/router" "6.0.16" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.16" + "@types/reach__router" "^1.3.5" core-js "^3.0.1" - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" memoizerific "^1.11.3" - prop-types "^15.6.2" react "^16.8.3" - semver "^6.0.0" - shallow-equal "^1.1.0" + regenerator-runtime "^0.13.3" store2 "^2.7.1" - telejson "^3.2.0" + telejson "^5.0.2" + ts-dedent "^1.1.1" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.3.19.tgz#ef9fe974c2a529d89ce342ff7acf5cc22805bae9" - integrity sha512-Iq0f4NPHR0UVVFCWt0cI7Myadk4/SATXYJPT6sv95KhnLjKEeYw571WBlThfp8a9FM80887xG+eIRe93c8dleA== +"@storybook/channel-postmessage@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.0.16.tgz#a617578c49543b0de9f53eb28daae2bd3c9e1754" + integrity sha512-66B4FH5R7k9i7LBhGsr/hYOxwE4UBM1JMPGV0rhAnFY8m91GiUWl4YWTRdbYIkeaZxf/0oT4sgPScqz44hnw6Q== dependencies: - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" + "@storybook/channels" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/core-events" "6.0.16" core-js "^3.0.1" global "^4.3.2" - telejson "^3.2.0" + qs "^6.6.0" + telejson "^5.0.2" -"@storybook/channels@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.3.19.tgz#65ad7cd19d70aa5eabbb2e5e39ceef5e510bcb7f" - integrity sha512-38seaeyshRGotTEZJppyYMg/Vx2zRKgFv1L6uGqkJT0LYoNSYtJhsiNFCJ2/KUJu2chAJ/j8h80bpVBVLQ/+WA== +"@storybook/channels@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.0.16.tgz#94e521b9eae535da80afb23feae593aa69bfe75d" + integrity sha512-TsI4GA7lKD4L2w6IjODMRfnEOkmvEp4eJDgf3MKm7+sMbxwi1y1d6yrW1UQbnmwoNJWk60ArMN2yqDBV+5MNJQ== dependencies: core-js "^3.0.1" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" -"@storybook/client-api@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.3.19.tgz#7a5630bb8fffb92742b1773881e9004ee7fdf8e0" - integrity sha512-Dh8ZLrLH91j9Fa28Gmp0KFUvvgK348aNMrDNAUdj4m4witz/BWQ2pxz6qq9/xFVErk/GanVC05kazGElqgYCRQ== +"@storybook/client-api@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.0.16.tgz#4af47caccf92a31326ab77c5094dd4f90f888b91" + integrity sha512-fFsp53lt9W2QHSumqdfFRbh+DI9fvd7li0GDxqLeNESXaUVw48yg8lQiyRNK+j5Pl4VBS3AqytLugJ+0MGm2cA== dependencies: - "@storybook/addons" "5.3.19" - "@storybook/channel-postmessage" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + "@storybook/addons" "6.0.16" + "@storybook/channel-postmessage" "6.0.16" + "@storybook/channels" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/core-events" "6.0.16" "@storybook/csf" "0.0.1" - "@types/webpack-env" "^1.15.0" + "@types/qs" "^6.9.0" + "@types/webpack-env" "^1.15.2" core-js "^3.0.1" - eventemitter3 "^4.0.0" global "^4.3.2" - is-plain-object "^3.0.0" lodash "^4.17.15" memoizerific "^1.11.3" qs "^6.6.0" stable "^0.1.8" - ts-dedent "^1.1.0" + store2 "^2.7.1" + ts-dedent "^1.1.1" util-deprecate "^1.0.2" -"@storybook/client-logger@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.3.19.tgz#fbbd186e82102eaca1d6a5cca640271cae862921" - integrity sha512-nHftT9Ow71YgAd2/tsu79kwKk30mPuE0sGRRUHZVyCRciGFQweKNOS/6xi2Aq+WwBNNjPKNlbgxwRt1yKe1Vkg== +"@storybook/client-logger@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.0.16.tgz#6265d2b869a82be64538eaac39470e3845c9e069" + integrity sha512-xM61Aewxqoo8500UxV7iPpfqwikITojiCX3+w8ZiCJ2NizSaXkis95TEFAeHqyozfNym5CqG+6v2NWvGYV3ncQ== dependencies: core-js "^3.0.1" + global "^4.3.2" -"@storybook/components@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.3.19.tgz#aac1f9eea1247cc85bd93b10fca803876fb84a6b" - integrity sha512-3g23/+ktlocaHLJKISu9Neu3XKa6aYP2ctDYkRtGchSB0Q55hQsUVGO+BEVuT7Pk2D59mVCxboBjxcRoPUY4pw== +"@storybook/components@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.0.16.tgz#d4c797f7897cefa11bbdb8dfd07bb3d4fa66b3e9" + integrity sha512-zpYGt3tWiN0yT7V0VhBl2T5Mr0COiNnTQUGCpA9Gl3pUBmAov2jCVf1sUxsIcBcMMZmDRcfo6NbJ/LqCFeUg+Q== dependencies: - "@storybook/client-logger" "5.3.19" - "@storybook/theming" "5.3.19" + "@storybook/client-logger" "6.0.16" + "@storybook/csf" "0.0.1" + "@storybook/theming" "6.0.16" + "@types/overlayscrollbars" "^1.9.0" + "@types/react-color" "^3.0.1" "@types/react-syntax-highlighter" "11.0.4" - "@types/react-textarea-autosize" "^4.3.3" core-js "^3.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^3.3.1" + overlayscrollbars "^1.10.2" + polished "^3.4.4" popper.js "^1.14.7" - prop-types "^15.7.2" react "^16.8.3" + react-color "^2.17.0" react-dom "^16.8.3" - react-focus-lock "^2.1.0" - react-helmet-async "^1.0.2" - react-popper-tooltip "^2.8.3" - react-syntax-highlighter "^11.0.2" - react-textarea-autosize "^7.1.0" - simplebar-react "^1.0.0-alpha.6" - ts-dedent "^1.1.0" + react-popper-tooltip "^2.11.0" + react-syntax-highlighter "^12.2.1" + react-textarea-autosize "^8.1.1" + ts-dedent "^1.1.1" -"@storybook/core-events@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.3.19.tgz#18020cd52e0d8ef0973a8e9622a10d5f99796f79" - integrity sha512-lh78ySqMS7pDdMJAQAe35d1I/I4yPTqp09Cq0YIYOxx9BQZhah4DZTV1QIZt22H5p2lPb5MWLkWSxBaexZnz8A== +"@storybook/core-events@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.0.16.tgz#3f8cd525c15fd80c9f327389851cce82a4b96850" + integrity sha512-ib+58N4OY8AOix2qcBH9ICRmVHUocpGaGRVlIo79WxJrpnB/HNQ8pEaniD+OAavDRq1B7uJqFlMkTXCC0GoFiQ== dependencies: core-js "^3.0.1" -"@storybook/core@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.3.19.tgz#1e61f35c5148343a0c580f5d5efb77f3b4243a30" - integrity sha512-4EYzglqb1iD6x9gxtAYpRGwGP6qJGiU2UW4GiYrErEmeu6y6tkyaqW5AwGlIo9+6jAfwD0HjaK8afvjKTtmmMQ== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.7.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-transform-react-constant-elements" "^7.2.0" - "@babel/preset-env" "^7.4.5" - "@storybook/addons" "5.3.19" - "@storybook/channel-postmessage" "5.3.19" - "@storybook/client-api" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" +"@storybook/core@6.0.16", "@storybook/core@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.0.16.tgz#ec9aa8c0fd1c23d29bf8401b650c0876c41d1b5f" + integrity sha512-dVgw03bB8rSMrYDw+v07Yiqyy4yas1olnXpytscWCWdbBuflSAQU+mtqcHMIH9YlhucIT2dYiErDDDNmqP+6tw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-decorators" "^7.8.3" + "@babel/plugin-proposal-export-default-from" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-chaining" "^7.10.1" + "@babel/plugin-proposal-private-methods" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/preset-env" "^7.9.6" + "@babel/preset-react" "^7.8.3" + "@babel/preset-typescript" "^7.9.0" + "@babel/register" "^7.10.5" + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/channel-postmessage" "6.0.16" + "@storybook/channels" "6.0.16" + "@storybook/client-api" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" "@storybook/csf" "0.0.1" - "@storybook/node-logger" "5.3.19" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" - "@storybook/ui" "5.3.19" + "@storybook/node-logger" "6.0.16" + "@storybook/router" "6.0.16" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.16" + "@storybook/ui" "6.0.16" + "@types/glob-base" "^0.3.0" + "@types/micromatch" "^4.0.1" + "@types/node-fetch" "^2.5.4" airbnb-js-shims "^2.2.1" ansi-to-html "^0.6.11" autoprefixer "^9.7.2" - babel-plugin-add-react-displayname "^0.0.5" + babel-loader "^8.0.6" babel-plugin-emotion "^10.0.20" - babel-plugin-macros "^2.7.0" + babel-plugin-macros "^2.8.0" babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" + better-opn "^2.0.0" boxen "^4.1.0" case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^3.0.0" - cli-table3 "0.5.1" - commander "^4.0.1" + chalk "^4.0.0" + cli-table3 "0.6.0" + commander "^5.0.0" core-js "^3.0.1" - corejs-upgrade-webpack-plugin "^2.2.0" - css-loader "^3.0.0" + css-loader "^3.5.3" detect-port "^1.3.0" dotenv-webpack "^1.7.0" - ejs "^2.7.4" + ejs "^3.1.2" express "^4.17.0" - file-loader "^4.2.0" + file-loader "^6.0.0" file-system-cache "^1.0.5" - find-cache-dir "^3.0.0" find-up "^4.1.0" - fs-extra "^8.0.1" + fork-ts-checker-webpack-plugin "^4.1.4" + fs-extra "^9.0.0" + glob "^7.1.6" glob-base "^0.3.0" + glob-promise "^3.4.0" global "^4.3.2" - html-webpack-plugin "^4.0.0-beta.2" + html-webpack-plugin "^4.2.1" inquirer "^7.0.0" interpret "^2.0.0" ip "^1.1.5" @@ -3050,30 +3276,29 @@ lazy-universal-dotenv "^3.0.1" micromatch "^4.0.2" node-fetch "^2.6.0" - open "^7.0.0" - pnp-webpack-plugin "1.5.0" + pkg-dir "^4.2.0" + pnp-webpack-plugin "1.6.4" postcss-flexbugs-fixes "^4.1.0" postcss-loader "^3.0.0" pretty-hrtime "^1.0.3" qs "^6.6.0" - raw-loader "^3.1.0" - react-dev-utils "^9.0.0" + raw-loader "^4.0.1" + react-dev-utils "^10.0.0" regenerator-runtime "^0.13.3" - resolve "^1.11.0" resolve-from "^5.0.0" - semver "^6.0.0" serve-favicon "^2.5.0" shelljs "^0.8.3" - style-loader "^1.0.0" - terser-webpack-plugin "^2.1.2" - ts-dedent "^1.1.0" + stable "^0.1.8" + style-loader "^1.2.1" + terser-webpack-plugin "^3.0.0" + ts-dedent "^1.1.1" unfetch "^4.1.0" - url-loader "^2.0.1" + url-loader "^4.0.0" util-deprecate "^1.0.2" - webpack "^4.33.0" + webpack "^4.43.0" webpack-dev-middleware "^3.7.0" webpack-hot-middleware "^2.25.0" - webpack-virtual-modules "^0.2.0" + webpack-virtual-modules "^0.2.2" "@storybook/csf@0.0.1": version "0.0.1" @@ -3082,104 +3307,130 @@ dependencies: lodash "^4.17.15" -"@storybook/node-logger@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.3.19.tgz#c414e4d3781aeb06298715220012f552a36dff29" - integrity sha512-hKshig/u5Nj9fWy0OsyU04yqCxr0A9pydOHIassr4fpLAaePIN2YvqCqE2V+TxQHjZUnowSSIhbXrGt0DI5q2A== +"@storybook/node-logger@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.0.16.tgz#805e0748355d13535c3295455f568ea94e57d1ad" + integrity sha512-mD6so/puFV5oByBkDp9rv2mV/WyGy21QdrwXpXdtLDKNgqPuJjHZuF1RA/+MmDK4P1CjvP1no2H5WDKg+aW4QQ== dependencies: "@types/npmlog" "^4.1.2" - chalk "^3.0.0" + chalk "^4.0.0" core-js "^3.0.1" npmlog "^4.1.2" pretty-hrtime "^1.0.3" - regenerator-runtime "^0.13.3" -"@storybook/react@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.3.19.tgz#ad7e7a5538399e2794cdb5a1b844a2b77c10bd09" - integrity sha512-OBRUqol3YLQi/qE55x2pWkv4YpaAmmfj6/Km+7agx+og+oNQl0nnlXy7r27X/4j3ERczzURa5pJHtSjwiNaJNw== +"@storybook/postinstall@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.0.16.tgz#77c428534dd10074778dc669f7ffce9f387acc93" + integrity sha512-gZgPNJK/58VepIBodK0pSlD1jPQgIVTEFWot5/iDjxv9cnSl9V+LbIEW5jZp/lzoAONSj8AS646ZZjAM87S4RQ== + dependencies: + core-js "^3.0.1" + +"@storybook/react@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.0.16.tgz#21464749f7bd90dc6026235b2ee47acf168d974a" + integrity sha512-cxnBwewx37rL1BjXo3TQFIvvCv9z26r3yuRRWh527/0QODfwGz8TT+/sJHeqBA5JIQzLwAHNqNJhLp6xzfr5Dw== dependencies: - "@babel/plugin-transform-react-constant-elements" "^7.6.3" "@babel/preset-flow" "^7.0.0" "@babel/preset-react" "^7.0.0" - "@storybook/addons" "5.3.19" - "@storybook/core" "5.3.19" - "@storybook/node-logger" "5.3.19" - "@svgr/webpack" "^4.0.3" - "@types/webpack-env" "^1.15.0" + "@storybook/addons" "6.0.16" + "@storybook/core" "6.0.16" + "@storybook/node-logger" "6.0.16" + "@storybook/semver" "^7.3.2" + "@svgr/webpack" "^5.4.0" + "@types/webpack-env" "^1.15.2" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" - babel-plugin-react-docgen "^4.0.0" + babel-plugin-react-docgen "^4.1.0" core-js "^3.0.1" global "^4.3.2" lodash "^4.17.15" - mini-css-extract-plugin "^0.7.0" prop-types "^15.7.2" - react-dev-utils "^9.0.0" + react-dev-utils "^10.0.0" + react-docgen-typescript-plugin "^0.5.2" regenerator-runtime "^0.13.3" - semver "^6.0.0" - ts-dedent "^1.1.0" - webpack "^4.33.0" + ts-dedent "^1.1.1" + webpack "^4.43.0" -"@storybook/router@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.3.19.tgz#0f783b85658f99e4007f74347ad7ef17dbf7fc3a" - integrity sha512-yNClpuP7BXQlBTRf6Ggle3/R349/k6kvI5Aim4jf6X/2cFVg2pzBXDAF41imNm9PcvdxwabQLm6I48p7OvKr/w== +"@storybook/router@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.0.16.tgz#b18cc0b1bba477f16f9f2ae8f0eaa0d5ba4b0a0e" + integrity sha512-zijPJ3CR4ytHE0v+pGdaWT3H+es+mLHRkR6hkqcD0ABT5HVfwMlmXJ9FkQGCVpnnNeBOz7+QKCdE13HMelQpqg== dependencies: - "@reach/router" "^1.2.1" - "@storybook/csf" "0.0.1" - "@types/reach__router" "^1.2.3" + "@reach/router" "^1.3.3" + "@types/reach__router" "^1.3.5" core-js "^3.0.1" global "^4.3.2" - lodash "^4.17.15" memoizerific "^1.11.3" qs "^6.6.0" - util-deprecate "^1.0.2" -"@storybook/theming@5.3.19", "@storybook/theming@^5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.3.19.tgz#177d9819bd64f7a1a6ea2f1920ffa5baf9a5f467" - integrity sha512-ecG+Rq3hc1GOzKHamYnD4wZ0PEP9nNg0mXbC3RhbxfHj+pMMCWWmx9B2Uu75SL1PTT8WcfkFO0hU/0IO84Pzlg== +"@storybook/semver@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" + integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== + dependencies: + core-js "^3.6.5" + find-up "^4.1.0" + +"@storybook/source-loader@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.0.16.tgz#a3eb2b0cbede7d9121387738a530d71df645db5d" + integrity sha512-Ub6bU7o2JJUigzu9MSrFH1RD2SmpZZnym+WEidWI9A1gseKp1Rd4KDq36AqJo/oL3hAzoAOirrv3ZixIwXLFMg== + dependencies: + "@storybook/addons" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/csf" "0.0.1" + core-js "^3.0.1" + estraverse "^4.2.0" + global "^4.3.2" + loader-utils "^2.0.0" + lodash "^4.17.15" + prettier "^2.0.5" + regenerator-runtime "^0.13.3" + +"@storybook/theming@6.0.16", "@storybook/theming@^6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.0.16.tgz#dd6de4f29316a6a2380018978b7b4a0ef9ea33c8" + integrity sha512-6D7oMEbeABYZdDY8e3i+O39XLrk6fvG3GBaSGp31BE30d269NcPkGPxMKY/nzc6MY30a+/LbBbM7b6gRKe6b4Q== dependencies: "@emotion/core" "^10.0.20" + "@emotion/is-prop-valid" "^0.8.6" "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "5.3.19" + "@storybook/client-logger" "6.0.16" core-js "^3.0.1" deep-object-diff "^1.1.0" emotion-theming "^10.0.19" global "^4.3.2" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" + polished "^3.4.4" resolve-from "^5.0.0" - ts-dedent "^1.1.0" + ts-dedent "^1.1.1" -"@storybook/ui@5.3.19": - version "5.3.19" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.3.19.tgz#ac03b67320044a3892ee784111d4436b61874332" - integrity sha512-r0VxdWab49nm5tzwvveVDnsHIZHMR76veYOu/NHKDUZ5hnQl1LMG1YyMCFFa7KiwD/OrZxRWr6/Ma7ep9kR4Gw== +"@storybook/ui@6.0.16": + version "6.0.16" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.0.16.tgz#448d2286404554afb13e27fecd9efb0861fa9286" + integrity sha512-4F21kwQVaMwgqoJmO+566j7MXmvPp+7jfWBMPAvyGsf5uIZ4q6V29h5mMLvTOFA4qHw0lHZk2k8V0g5gk/tjCA== dependencies: "@emotion/core" "^10.0.20" - "@storybook/addons" "5.3.19" - "@storybook/api" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/core-events" "5.3.19" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" + "@storybook/addons" "6.0.16" + "@storybook/api" "6.0.16" + "@storybook/channels" "6.0.16" + "@storybook/client-logger" "6.0.16" + "@storybook/components" "6.0.16" + "@storybook/core-events" "6.0.16" + "@storybook/router" "6.0.16" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.16" + "@types/markdown-to-jsx" "^6.11.0" copy-to-clipboard "^3.0.8" core-js "^3.0.1" core-js-pure "^3.0.1" emotion-theming "^10.0.19" - fast-deep-equal "^2.0.1" - fuse.js "^3.4.6" + fuse.js "^3.6.1" global "^4.3.2" lodash "^4.17.15" markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" + polished "^3.4.4" qs "^6.6.0" react "^16.8.3" react-dom "^16.8.3" @@ -3187,117 +3438,112 @@ react-helmet-async "^1.0.2" react-hotkeys "2.0.0" react-sizeme "^2.6.7" - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.3" resolve-from "^5.0.0" - semver "^6.0.0" store2 "^2.7.1" - telejson "^3.2.0" - util-deprecate "^1.0.2" -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== -"@svgr/babel-plugin-svg-dynamic-title@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.0.tgz#826c7d30f8f98f26bdb4af205a5dfbf1f04d80ec" - integrity sha512-3eI17Pb3jlg3oqV4Tie069n1SelYKBUpI90txDcnBWk4EGFW+YQGyQjy6iuJAReH0RnpUJ9jUExrt/xniGvhqw== +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== +"@svgr/babel-plugin-transform-svg-component@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz#a2212b4d018e6075a058bb7e220a66959ef7a03c" + integrity sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A== -"@svgr/babel-preset@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.0.tgz#8a0bcc95ea7124762699e87a45ab11f408e8765e" - integrity sha512-Lgy1RJiZumGtv6yJroOxzFuL64kG/eIcivJQ7y9ljVWL+0QXvFz4ix1xMrmjMD+rpJWwj50ayCIcFelevG/XXg== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.0" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.0.tgz#4a2bcb41e0946679a2ebe6b5bb2edd88ed35706b" - integrity sha512-Ycu1qrF5opBgKXI0eQg3ROzupalCZnSDETKCK/3MKN4/9IEmt3jPX/bbBjftklnRW+qqsCEpO0y/X9BTRw2WBg== +"@svgr/babel-preset@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.4.0.tgz#da21854643e1c4ad2279239baa7d5a8b128c1f15" + integrity sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.4.0" + +"@svgr/core@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.4.0.tgz#655378ee43679eb94fee3d4e1976e38252dff8e7" + integrity sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ== dependencies: - "@svgr/plugin-jsx" "^4.3.0" - camelcase "^5.3.1" - cosmiconfig "^5.2.0" + "@svgr/plugin-jsx" "^5.4.0" + camelcase "^6.0.0" + cosmiconfig "^6.0.0" -"@svgr/hast-util-to-babel-ast@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.2.0.tgz#dd743435a5f3a8e84a1da067f27b5fae3d7b6b63" - integrity sha512-IvAeb7gqrGB5TH9EGyBsPrMRH/QCzIuAkLySKvH2TLfLb2uqk98qtJamordRQTpHH3e6TORfBXoTo7L7Opo/Ow== +"@svgr/hast-util-to-babel-ast@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz#bb5d002e428f510aa5b53ec0a02377a95b367715" + integrity sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg== dependencies: - "@babel/types" "^7.4.0" + "@babel/types" "^7.9.5" -"@svgr/plugin-jsx@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.0.tgz#6be203abc58e187545aa1b9a51df30d051b658e2" - integrity sha512-0ab8zJdSOTqPfjZtl89cjq2IOmXXUYV3Fs7grLT9ur1Al3+x3DSp2+/obrYKUGbQUnLq96RMjSZ7Icd+13vwlQ== - dependencies: - "@babel/core" "^7.4.3" - "@svgr/babel-preset" "^4.3.0" - "@svgr/hast-util-to-babel-ast" "^4.2.0" - rehype-parse "^6.0.0" - unified "^7.1.0" - vfile "^4.0.0" +"@svgr/plugin-jsx@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz#ab47504c55615833c6db70fca2d7e489f509787c" + integrity sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw== + dependencies: + "@babel/core" "^7.7.5" + "@svgr/babel-preset" "^5.4.0" + "@svgr/hast-util-to-babel-ast" "^5.4.0" + svg-parser "^2.0.2" -"@svgr/plugin-svgo@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.2.0.tgz#2a594a2d3312955e75fd87dc77ae51f377c809f3" - integrity sha512-zUEKgkT172YzHh3mb2B2q92xCnOAMVjRx+o0waZ1U50XqKLrVQ/8dDqTAtnmapdLsGurv8PSwenjLCUpj6hcvw== +"@svgr/plugin-svgo@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz#45d9800b7099a6f7b4d85ebac89ab9abe8592f64" + integrity sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA== dependencies: - cosmiconfig "^5.2.0" + cosmiconfig "^6.0.0" merge-deep "^3.0.2" - svgo "^1.2.1" + svgo "^1.2.2" -"@svgr/webpack@^4.0.3": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.0.tgz#4462e05070d91c04806b99c30a703fb2b50b2bb9" - integrity sha512-rYcwi1pUnaZoOUEa8xhrX10FHnONvube1WBoJ5PQf/Cbl0GuiUUSdXSVaFgxWdeyv6jCG0vWH1mrCHhspaJv1Q== - dependencies: - "@babel/core" "^7.4.3" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.3" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.0" - "@svgr/plugin-jsx" "^4.3.0" - "@svgr/plugin-svgo" "^4.2.0" - loader-utils "^1.2.3" +"@svgr/webpack@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.4.0.tgz#b68bc86e29cf007292b96ced65f80971175632e0" + integrity sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg== + dependencies: + "@babel/core" "^7.9.0" + "@babel/plugin-transform-react-constant-elements" "^7.9.0" + "@babel/preset-env" "^7.9.5" + "@babel/preset-react" "^7.9.4" + "@svgr/core" "^5.4.0" + "@svgr/plugin-jsx" "^5.4.0" + "@svgr/plugin-svgo" "^5.4.0" + loader-utils "^2.0.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -3580,6 +3826,11 @@ resolved "https://registry.yarnpkg.com/@types/boom/-/boom-7.2.0.tgz#19c36cbb5811a7493f0f2e37f31d42b28df1abc1" integrity sha512-HonbGsHFbskh9zRAzA6tabcw18mCOsSEOL2ibGAuVqk6e7nElcRmWO5L4UfIHpDbWBWw+eZYFdsQ1+MEGgpcVA== +"@types/braces@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" + integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== + "@types/cacheable-request@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" @@ -3858,6 +4109,11 @@ resolved "https://registry.yarnpkg.com/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== +"@types/glob-base@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" + integrity sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0= + "@types/glob-stream@*": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/glob-stream/-/glob-stream-6.1.0.tgz#7ede8a33e59140534f8d8adfb8ac9edfb31897bc" @@ -3976,6 +4232,13 @@ resolved "https://registry.yarnpkg.com/@types/has-ansi/-/has-ansi-3.0.0.tgz#636403dc4e0b2649421c4158e5c404416f3f0330" integrity sha512-H3vFOwfLlFEC0MOOrcSkus8PCnMCzz4N0EqUbdJZCdDhBTfkAu86aRYA+MTxjKW6jCpUvxcn4715US8g+28BMA== +"@types/hast@^2.0.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" + integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + dependencies: + "@types/unist" "*" + "@types/he@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.1.tgz#19e14033c4ee8f1a702c74dcc6182664839ac2b7" @@ -4009,6 +4272,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/html-minifier-terser@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" + integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== + "@types/http-cache-semantics@*": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" @@ -4106,7 +4374,7 @@ dependencies: "@types/jest" "*" -"@types/jest@*", "@types/jest@^25.2.3": +"@types/jest@*", "@types/jest@^25.1.1", "@types/jest@^25.2.3": version "25.2.3" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== @@ -4114,13 +4382,6 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/jest@^24.0.16": - version "24.9.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" - integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== - dependencies: - jest-diff "^24.3.0" - "@types/joi@*", "@types/joi@^13.4.2": version "13.6.1" resolved "https://registry.yarnpkg.com/@types/joi/-/joi-13.6.1.tgz#325486a397504f8e22c8c551dc8b0e1d41d5d5ae" @@ -4212,6 +4473,14 @@ "@types/node" "*" "@types/webpack" "*" +"@types/loader-utils@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/loader-utils/-/loader-utils-2.0.1.tgz#4073425aca25762099823f7b922e86599c2b85ec" + integrity sha512-X3jTNi/I2AEd2WrHdSqRppPkYzWkRMNGxJzeMwS0o3hVi8ZB6JCnf/XyQmqpUuCidld5lC/1VxVgTktEweRK+w== + dependencies: + "@types/node" "*" + "@types/webpack" "*" + "@types/lodash.difference@^4.5.6": version "4.5.6" resolved "https://registry.yarnpkg.com/@types/lodash.difference/-/lodash.difference-4.5.6.tgz#41ec5c4e684eeacf543848a9a1b2a4856ccf9853" @@ -4260,6 +4529,13 @@ dependencies: "@types/linkify-it" "*" +"@types/markdown-to-jsx@^6.11.0": + version "6.11.1" + resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.1.tgz#4d9464aa76337d798b874dd3f2d6b4c86ddd98ad" + integrity sha512-fm/II24OzSx7J7CzXnHjEIf0d+s82bmdcokbyzY7PFMUnhyhnuGJgedt8R+yZgDn1mqhCLHmMjBPMsL8K4Xp9g== + dependencies: + "@types/react" "*" + "@types/md5@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.2.0.tgz#cd82e16b95973f94bb03dee40c5b6be4a7fb7fb4" @@ -4279,6 +4555,13 @@ resolved "https://registry.yarnpkg.com/@types/memoize-one/-/memoize-one-4.1.1.tgz#41dd138a4335b5041f7d8fc038f9d593d88b3369" integrity sha512-+9djKUUn8hOyktLCfCy4hLaIPgDNovaU36fsnZe9trFHr6ddlbIn2q0SEsnkCkNR+pBWEU440Molz/+Mpyf+gQ== +"@types/micromatch@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7" + integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw== + dependencies: + "@types/braces" "*" + "@types/mime-db@*": version "1.27.0" resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.27.0.tgz#9bc014a1fd1fdf47649c1a54c6dd7966b8284792" @@ -4361,7 +4644,7 @@ dependencies: "@types/node" "*" -"@types/node-fetch@^2.5.7": +"@types/node-fetch@^2.5.4", "@types/node-fetch@^2.5.7": version "2.5.7" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== @@ -4436,6 +4719,11 @@ dependencies: "@types/node" "*" +"@types/overlayscrollbars@^1.9.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#98456caceca8ad73bd5bb572632a585074e70764" + integrity sha512-h/pScHNKi4mb+TrJGDon8Yb06ujFG0mSg12wIO0sWMUF3dQIe2ExRRdNRviaNt9IjxIiOfnRr7FsQAdHwK4sMg== + "@types/papaparse@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.0.3.tgz#7cedc1ebc9484819af8306a8b42f9f08ca9bdb44" @@ -4453,7 +4741,7 @@ resolved "https://registry.yarnpkg.com/@types/parse-link-header/-/parse-link-header-1.0.0.tgz#69f059e40a0fa93dc2e095d4142395ae6adc5d7a" integrity sha512-fCA3btjE7QFeRLfcD0Sjg+6/CnmC66HpMBoRfRzd2raTaWMJV21CCZ0LO8MOqf8onl5n0EPfjq4zDhbyX8SVwA== -"@types/parse5@*": +"@types/parse5@*", "@types/parse5@^5.0.0": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== @@ -4485,7 +4773,7 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== -"@types/prettier@^2.0.2": +"@types/prettier@^2.0.0", "@types/prettier@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== @@ -4524,12 +4812,17 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/qs@^6.9.0": + version "6.9.4" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" + integrity sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ== + "@types/rbush@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/rbush/-/rbush-3.0.0.tgz#b6887d99b159e87ae23cd14eceff34f139842aa6" integrity sha512-W3ue/GYWXBOpkRm0VSoifrP3HV0Ni47aVJWvXyWMcbtpBy/l/K/smBRiJ+fI8f7shXRjZBiux+iJzYbh7VmcZg== -"@types/reach__router@^1.2.3", "@types/reach__router@^1.2.6": +"@types/reach__router@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.2.6.tgz#b14cf1adbd1a365d204bbf6605cd9dd7b8816c87" integrity sha512-Oh5DAVr/L2svBvubw6QEFpXGu295Y406BPs4i9t1n2pp7M+q3pmCmhzb9oZV5wncR41KCD3NHl1Yhi7uKnTPsA== @@ -4537,6 +4830,14 @@ "@types/history" "*" "@types/react" "*" +"@types/reach__router@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.5.tgz#14e1e981cccd3a5e50dc9e969a72de0b9d472f6d" + integrity sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-beautiful-dnd@^13.0.0": version "13.0.0" resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#e60d3d965312fcf1516894af92dc3e9249587db4" @@ -4640,13 +4941,6 @@ dependencies: "@types/react" "*" -"@types/react-textarea-autosize@^4.3.3": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz#6c4d2753fa1864c98c0b2b517f67bb1f6e4c46de" - integrity sha512-PiDL83kPMTolyZAWW3lyzO6ktooTb9tFTntVy7CA83/qFLWKLJ5bLeRboy6J6j3b1e8h2Eec6gBTEOOJRjV14A== - dependencies: - "@types/react" "*" - "@types/react-virtualized-auto-sizer@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.0.tgz#fc32f30a8dab527b5816f3a757e1e1d040c8f272" @@ -4847,6 +5141,11 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370" integrity sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ== +"@types/tapable@^1.0.5", "@types/tapable@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + "@types/tar-fs@^1.16.1": version "1.16.1" resolved "https://registry.yarnpkg.com/@types/tar-fs/-/tar-fs-1.16.1.tgz#6e3fba276c173e365ae91e55f7b797a0e64298e5" @@ -4951,14 +5250,6 @@ resolved "https://registry.yarnpkg.com/@types/valid-url/-/valid-url-1.0.2.tgz#60fa435ce24bfd5ba107b8d2a80796aeaf3a8f45" integrity sha1-YPpDXOJL/VuhB7jSqAeWrq86j0U= -"@types/vfile-message@*": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-1.0.1.tgz#e1e9895cc6b36c462d4244e64e6d0b6eaf65355a" - integrity sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA== - dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" @@ -4966,15 +5257,6 @@ dependencies: vfile-message "*" -"@types/vfile@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" - integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== - dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message" "*" - "@types/vinyl-fs@*", "@types/vinyl-fs@^2.4.11": version "2.4.11" resolved "https://registry.yarnpkg.com/@types/vinyl-fs/-/vinyl-fs-2.4.11.tgz#b98119b8bb2494141eaf649b09fbfeb311161206" @@ -5008,11 +5290,18 @@ "@types/node" "*" chokidar "^2.1.2" -"@types/webpack-env@^1.15.0", "@types/webpack-env@^1.15.2": +"@types/webpack-env@^1.15.2": version "1.15.2" resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.2.tgz#927997342bb9f4a5185a86e6579a0a18afc33b0a" integrity sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ== +"@types/webpack-merge@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/webpack-merge/-/webpack-merge-4.1.5.tgz#265fbee4810474860d0f4c17e0107032881eed47" + integrity sha512-cbDo592ljSHeaVe5Q39JKN6Z4vMhmo4+C3JbksOIg+kjhKQYN2keGN7dvr/i18+dughij98Qrsfn1mU9NgVoCA== + dependencies: + "@types/webpack" "*" + "@types/webpack-sources@*": version "0.1.5" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.5.tgz#be47c10f783d3d6efe1471ff7f042611bd464a92" @@ -5034,6 +5323,18 @@ "@types/webpack-sources" "*" source-map "^0.6.0" +"@types/webpack@^4.41.21", "@types/webpack@^4.41.5", "@types/webpack@^4.41.8": + version "4.41.21" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" + integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + "@types/write-pkg@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/write-pkg/-/write-pkg-3.1.0.tgz#f58767f4fb9a6a3ad8e95d3e9cd1f2d026ceab26" @@ -5184,21 +5485,45 @@ "@webassemblyjs/helper-wasm-bytecode" "1.8.5" "@webassemblyjs/wast-parser" "1.8.5" +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/floating-point-hex-parser@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + "@webassemblyjs/helper-api-error@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + "@webassemblyjs/helper-buffer@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + "@webassemblyjs/helper-code-frame@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" @@ -5206,11 +5531,23 @@ dependencies: "@webassemblyjs/wast-printer" "1.8.5" +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/helper-fsm@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + "@webassemblyjs/helper-module-context@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" @@ -5219,11 +5556,23 @@ "@webassemblyjs/ast" "1.8.5" mamacro "^0.0.3" +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + "@webassemblyjs/helper-wasm-section@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" @@ -5234,6 +5583,16 @@ "@webassemblyjs/helper-wasm-bytecode" "1.8.5" "@webassemblyjs/wasm-gen" "1.8.5" +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/ieee754@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" @@ -5241,6 +5600,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/leb128@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" @@ -5248,11 +5614,23 @@ dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/utf8@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + "@webassemblyjs/wasm-edit@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" @@ -5267,6 +5645,20 @@ "@webassemblyjs/wasm-parser" "1.8.5" "@webassemblyjs/wast-printer" "1.8.5" +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/wasm-gen@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" @@ -5278,6 +5670,17 @@ "@webassemblyjs/leb128" "1.8.5" "@webassemblyjs/utf8" "1.8.5" +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/wasm-opt@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" @@ -5288,6 +5691,16 @@ "@webassemblyjs/wasm-gen" "1.8.5" "@webassemblyjs/wasm-parser" "1.8.5" +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wasm-parser@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" @@ -5300,6 +5713,18 @@ "@webassemblyjs/leb128" "1.8.5" "@webassemblyjs/utf8" "1.8.5" +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/wast-parser@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" @@ -5312,6 +5737,18 @@ "@webassemblyjs/helper-fsm" "1.8.5" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" @@ -5321,6 +5758,15 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + "@webpack-contrib/schema-utils@^1.0.0-beta.0": version "1.0.0-beta.0" resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" @@ -5488,7 +5934,7 @@ acorn@^3.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1, acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== @@ -5503,10 +5949,10 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== -address@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" - integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== +address@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== address@^1.0.1: version "1.0.3" @@ -6318,11 +6764,6 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -6385,16 +6826,6 @@ array-last@^1.1.1: dependencies: is-number "^4.0.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= - array-slice@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" @@ -6882,6 +7313,14 @@ babel-plugin-add-react-displayname@^0.0.5: resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" integrity sha1-M51M3be2X9YtHfnbn+BN4TQSK9U= +babel-plugin-apply-mdx-type-prop@1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.16.tgz#4becd65b3aa108f15c524a0b125ca7c81f3443d8" + integrity sha512-hjUd24Yhnr5NKtHpC2mcRBGjC6RUKGzSzjN9g5SdjT4WpL/JDlpmjyBf7vWsJJSXFvMIbzRyxF4lT9ukwOnj/w== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.16" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -6921,6 +7360,13 @@ babel-plugin-emotion@^10.0.22: find-root "^1.1.0" source-map "^0.5.7" +babel-plugin-extract-import-names@1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.16.tgz#b964004e794bdd62534c525db67d9e890d5cc079" + integrity sha512-Da6Ra0sbA/1Iavli8LdMbTjyrsOPaxMm4lrKl8VJN4sJI5F64qy2EpLj3+5INLvNPfW4ddwpStbfP3Rf3jIgcw== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + babel-plugin-filter-imports@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-filter-imports/-/babel-plugin-filter-imports-3.0.0.tgz#a849683837ad29960da17492fb32789ab6b09a11" @@ -6929,15 +7375,6 @@ babel-plugin-filter-imports@^3.0.0: "@babel/types" "^7.4.0" lodash "^4.17.11" -babel-plugin-istanbul@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893" - integrity sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ== - dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.0.0" - test-exclude "^5.0.0" - babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -6966,7 +7403,7 @@ babel-plugin-macros@^2.0.0: cosmiconfig "^5.0.5" resolve "^1.8.1" -babel-plugin-macros@^2.7.0: +babel-plugin-macros@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -7054,7 +7491,7 @@ babel-plugin-named-asset-import@^0.3.1: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.3.tgz#9ba2f3ac4dc78b042651654f07e847adfe50667c" integrity sha512-1XDRysF4894BUdMChT+2HHbtJYiO7zx5Be7U6bT8dISy7OdyETMGIAQBMPQCsY1YRf0xcubwnKKaDr5bk15JTA== -babel-plugin-react-docgen@^4.0.0: +babel-plugin-react-docgen@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz#1dfa447dac9ca32d625a123df5733a9e47287c26" integrity sha512-vzpnBlfGv8XOhJM2zbPyyqw2OLEbelgZZsaaRRTpVwNKuYuc+pUg4+dy7i9gCRms0uOQn4osX571HRcCJMJCmA== @@ -7401,6 +7838,13 @@ before-after-hook@^2.1.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== +better-opn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.0.0.tgz#c70d198e51164bdc220306a28a885d9ac7a14c44" + integrity sha512-PPbGRgO/K0LowMHbH/JNvaV3qY3Vt+A2nH28fzJxy16h/DfR5OsVti6ldGl6S9SMsyUqT13sltikiAVtI6tKLA== + dependencies: + open "^7.0.3" + big-integer@^1.6.16: version "1.6.48" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" @@ -7794,14 +8238,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.6.6: - version "4.6.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" - integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30000984" - electron-to-chromium "^1.3.191" - node-releases "^1.1.25" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" browserslist@^4.12.0: version "4.12.0" @@ -7958,25 +8403,48 @@ cacache@^13.0.1: minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cacache@^15.0.3, cacache@^15.0.4: + version "15.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1" + integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" unique-filename "^1.1.1" -cacache@^15.0.3, cacache@^15.0.4: - version "15.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1" - integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw== +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== dependencies: "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" infer-owner "^1.0.4" - lru-cache "^5.1.1" + lru-cache "^6.0.0" minipass "^3.1.1" minipass-collect "^1.0.2" minipass-flush "^1.0.5" @@ -8123,6 +8591,19 @@ camel-case@3.0.x, camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -8184,16 +8665,16 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -can-use-dom@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" - integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo= - -caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001022, caniuse-lite@^1.0.30001043: +caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001022, caniuse-lite@^1.0.30001043: version "1.0.30001094" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001094.tgz#0b11d02e1cdc201348dbd8e3e57bd9b6ce82b175" integrity sha512-ufHZNtMaDEuRBpTbqD93tIQnngmJ+oBknjvr0IbFympSdtFpAUFmNv4mVKbb53qltxFx0nK3iy32S9AqkLzUNA== +caniuse-lite@^1.0.30001035: + version "1.0.30001114" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001114.tgz#2e88119afb332ead5eaa330e332e951b1c4bfea9" + integrity sha512-ml/zTsfNBM+T1+mjglWRPgVsu2L76GAaADKX5f4t0pbhttEp0WMawJsHDYlFkVZkoA+89uvBRrVrEE4oqenzXQ== + caniuse-lite@^1.0.30001097: version "1.0.30001107" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001107.tgz#809360df7a5b3458f627aa46b0f6ed6d5239da9a" @@ -8518,7 +8999,7 @@ chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.2, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.2.2, chokidar@^3.4.0, chokidar@^3.4.2: +chokidar@^3.2.2, chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== @@ -8633,6 +9114,13 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + clean-stack@^1.0.0, clean-stack@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" @@ -8707,17 +9195,7 @@ cli-spinners@^2.4.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== -cli-table3@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-table3@~0.6.0: +cli-table3@0.6.0, cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== @@ -9542,19 +10020,16 @@ core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.4: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== +core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -corejs-upgrade-webpack-plugin@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz#503293bf1fdcb104918eb40d0294e4776ad6923a" - integrity sha512-J0QMp9GNoiw91Kj/dkIQFZeiCXgXoja/Wlht1SPybxerBWh4NCmb0pOgCv61lrlQZETwvVVfAFAA3IqoEO9aqQ== - dependencies: - resolve-from "^5.0.0" - webpack "^4.38.0" - cors@^2.8.4: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -9583,7 +10058,7 @@ cosmiconfig@^5.0.5: js-yaml "^3.9.0" parse-json "^4.0.0" -cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -9688,20 +10163,7 @@ create-react-class@^15.5.1, create-react-class@^15.5.2: loose-envify "^1.3.1" object-assign "^4.1.1" -create-react-context@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.1.6.tgz#0f425931d907741127acc6e31acb4f9015dd9fdc" - integrity sha512-eCnYYEUEc5i32LHwpE/W7NlddOB9oHwsPaWtWzYtflNkkwa3IfindIcoXdVWs12zCbwaMCavKNu84EXogVIWHw== - -create-react-context@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" - integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== - dependencies: - fbjs "^0.8.0" - gud "^1.0.0" - -create-react-context@^0.3.0: +create-react-context@0.3.0, create-react-context@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== @@ -9709,6 +10171,11 @@ create-react-context@^0.3.0: gud "^1.0.0" warning "^4.0.3" +create-react-context@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.1.6.tgz#0f425931d907741127acc6e31acb4f9015dd9fdc" + integrity sha512-eCnYYEUEc5i32LHwpE/W7NlddOB9oHwsPaWtWzYtflNkkwa3IfindIcoXdVWs12zCbwaMCavKNu84EXogVIWHw== + cronstrue@^1.51.0: version "1.51.0" resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-1.51.0.tgz#7a63153d61d940344049037628da38a60784c8e2" @@ -9748,6 +10215,15 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@7.0.1, cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cross-spawn@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" @@ -9765,15 +10241,6 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -9857,7 +10324,7 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" -css-loader@^3.0.0, css-loader@^3.4.2: +css-loader@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== @@ -9875,6 +10342,25 @@ css-loader@^3.0.0, css-loader@^3.4.2: postcss-value-parser "^4.0.2" schema-utils "^2.6.0" +css-loader@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -10755,7 +11241,7 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detab@^2.0.0: +detab@2.0.3, detab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== @@ -10952,6 +11438,11 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== +diff-sequences@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" + integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== + diff@3.5.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -11147,6 +11638,14 @@ dot-case@^2.1.0: dependencies: no-case "^2.2.0" +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -11318,12 +11817,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.3.1, ejs@^2.7.4: +ejs@^2.3.1: version "2.7.4" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -ejs@^3.0.1, ejs@^3.1.5: +ejs@^3.0.1, ejs@^3.1.2, ejs@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== @@ -11399,11 +11898,16 @@ elasticsearch@^16.7.0: chalk "^1.0.0" lodash "^4.17.10" -electron-to-chromium@^1.3.191, electron-to-chromium@^1.3.338: +electron-to-chromium@^1.3.338: version "1.3.340" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.340.tgz#5d4fe78e984d4211194cf5a52e08069543da146f" integrity sha512-hRFBAglhcj5iVYH+o8QU0+XId1WGoc0VGowJB1cuJAt3exHGrivZvWeAO5BRgBZqwZtwxjm8a5MQeGoT/Su3ww== +electron-to-chromium@^1.3.378: + version "1.3.533" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.533.tgz#d7e5ca4d57e9bc99af87efbe13e7be5dde729b0f" + integrity sha512-YqAL+NXOzjBnpY+dcOKDlZybJDCOzgsq4koW3fvyty/ldTmsb4QazZpOWmVvZ2m0t5jbBf7L0lIGU3BUipwG+A== + electron-to-chromium@^1.3.413: version "1.3.465" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.465.tgz#d692e5c383317570c2bd82092a24a0308c6ccf29" @@ -11441,6 +11945,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +"emoji-regex@>=6.0.0 <=6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" + integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= + emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -11499,6 +12008,15 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@ dependencies: once "^1.4.0" +endent@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/endent/-/endent-2.0.1.tgz#fb18383a3f37ae3213a5d9f6c4a880d1061eb4c5" + integrity sha512-mADztvcC+vCk4XEZaCz6xIPO2NHQuprv5CAEjuVAu6aZwqAj7nVNlMyl1goPFYqCCpS2OJV9jwpumJLkotZrNw== + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.4" + enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" @@ -11508,6 +12026,15 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" +enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + enhanced-resolve@~0.9.0: version "0.9.1" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" @@ -11685,7 +12212,7 @@ es-abstract@^1.10.0, es-abstract@^1.13.0, es-abstract@^1.4.3, es-abstract@^1.5.0 string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-abstract@^1.17.0, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -11878,6 +12405,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escodegen@^1.11.0: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" @@ -11902,6 +12434,18 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" +escodegen@^1.12.0: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^1.8.0: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" @@ -12573,6 +13117,18 @@ expect@^25.5.0: jest-message-util "^25.5.0" jest-regex-util "^25.2.6" +expect@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.0.tgz#34a0aae523343b0931ff1cf0aa972dfe40edfab4" + integrity sha512-dbYDJhFcqQsamlos6nEwAMe+ahdckJBk5fmw1DYGLQGabGSlUuT+Fm2jHYw5119zG3uIhP+lCQbjJhFEdZMJtg== + dependencies: + "@jest/types" "^26.3.0" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.4.0" + jest-message-util "^26.3.0" + jest-regex-util "^26.0.0" + expiry-js@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/expiry-js/-/expiry-js-0.1.7.tgz#76be8c05e572bf936df40c1766448d0b3b2f555f" @@ -12775,7 +13331,7 @@ fancy-log@^1.3.2: color-support "^1.1.3" time-stamp "^1.0.0" -fast-deep-equal@^2.0.1, fast-deep-equal@^3.1.1, fast-deep-equal@~3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== @@ -12814,6 +13370,11 @@ fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.2: micromatch "^4.0.2" picomatch "^2.2.1" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -12891,7 +13452,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9: +fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.9: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -12987,6 +13548,14 @@ file-loader@^4.2.0: loader-utils "^1.2.3" schema-utils "^2.0.0" +file-loader@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + file-saver@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" @@ -13035,10 +13604,10 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" -filesize@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== filing-cabinet@^2.3.1: version "2.3.3" @@ -13123,7 +13692,7 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: +find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== @@ -13144,6 +13713,14 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -13159,14 +13736,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -13431,14 +14000,27 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" - chokidar "^2.0.4" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +fork-ts-checker-webpack-plugin@^4.1.4: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" micromatch "^3.1.10" minimatch "^3.0.4" semver "^5.6.0" @@ -13581,7 +14163,7 @@ fs-extra@^7.0.0, fs-extra@^7.0.1, fs-extra@~7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1, fs-extra@^8.1.0: +fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -13590,7 +14172,7 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== @@ -13707,7 +14289,7 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.0.tgz#83da7583e4ea0c9ac5ff530f73394b033e0bf77d" integrity sha512-zKXyzksTeaCSw5wIX79iCA40YAa6CJMJgNg9wdkU/ERBrIdPSimPICYiLp65lRbSBqtiHql/HZfS2DyI/AH6tQ== -fuse.js@^3.4.6: +fuse.js@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" integrity sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw== @@ -13820,11 +14402,6 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -get-own-enumerable-property-symbols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" - integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== - get-own-enumerable-property-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" @@ -13929,6 +14506,13 @@ github-markdown-css@^2.10.0: resolved "https://registry.yarnpkg.com/github-markdown-css/-/github-markdown-css-2.10.0.tgz#0612fed22816b33b282f37ef8def7a4ecabfe993" integrity sha512-RX5VUC54uX6Lvrm226M9kMzsNeOa81MnKyxb3J0G5KLjyoOySOZgwyKFkUpv6iUhooiUZdogk+OTwQPJ4WttYg== +github-slugger@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" + integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== + dependencies: + emoji-regex ">=6.0.0 <=6.1.1" + github-username@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1" @@ -13979,6 +14563,13 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" + integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== + dependencies: + "@types/glob" "*" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -15196,6 +15787,18 @@ hast-util-from-parse5@^5.0.0: web-namespaces "^1.1.2" xtend "^4.0.1" +hast-util-from-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz#b38793c81e1a99f5fd592a4a88fc2731dccd0f30" + integrity sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q== + dependencies: + "@types/parse5" "^5.0.0" + ccount "^1.0.0" + hastscript "^5.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + hast-util-is-element@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.4.tgz#059090a05cc02e275df1ad02caf8cb422fcd2e02" @@ -15206,6 +15809,22 @@ hast-util-parse-selector@^2.2.0: resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz#4ddbae1ae12c124e3eb91b581d2556441766f0ab" integrity sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw== +hast-util-raw@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.0.tgz#49a38f5107d483f83a139709f2f705f22e7e7d32" + integrity sha512-IQo6tv3bMMKxk53DljswliucCJOQxaZFCuKEJ7X80249dmJ1nA9LtOnnylsLlqTG98NjQ+iGcoLAYo9q5FRhRg== + dependencies: + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + hast-util-raw@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-5.0.2.tgz#62288f311ec2f35e066a30d5e0277f963ad43a67" @@ -15247,6 +15866,17 @@ hast-util-to-parse5@^5.0.0: xtend "^4.0.0" zwitch "^1.0.0" +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== + dependencies: + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + hast-util-whitespace@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" @@ -15294,7 +15924,7 @@ heavy@6.x.x: hoek "5.x.x" joi "13.x.x" -highlight.js@9.15.10: +highlight.js@9.15.10, highlight.js@~9.15.0, highlight.js@~9.15.1: version "9.15.10" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== @@ -15309,11 +15939,6 @@ highlight.js@~10.1.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.1.2.tgz#c20db951ba1c22c055010648dfffd7b2a968e00c" integrity sha512-Q39v/Mn5mfBlMff9r+zzA+gWxRsCRKwEMvYTiisLr/XUiFI/4puWt0Ojdko3R3JCNWGdOWaA5g/Yxqa23kC5AA== -highlight.js@~9.13.0: - version "9.13.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" - integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== - history-extra@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/history-extra/-/history-extra-5.0.1.tgz#95a2e59dda526c4241d0ae1b124a77a5e4675ce8" @@ -15434,7 +16059,20 @@ html-loader@^0.5.5: loader-utils "^1.1.0" object-assign "^4.1.1" -html-minifier@^3.5.20, html-minifier@^3.5.8: +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-minifier@^3.5.8: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== @@ -15447,6 +16085,11 @@ html-minifier@^3.5.20, html-minifier@^3.5.8: relateurl "0.2.x" uglify-js "3.4.x" +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + html-to-react@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.3.4.tgz#647b3a54fdec73a6461864b129fb0d1eec7d4589" @@ -15463,16 +16106,19 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^4.0.0-beta.2: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz#2c53083c1151bfec20479b1f8aaf0039e77b5513" - integrity sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ== +html-webpack-plugin@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" + integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== dependencies: - html-minifier "^3.5.20" - loader-utils "^1.1.0" - lodash "^4.17.11" + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" pretty-error "^2.1.1" - tapable "^1.1.0" + tapable "^1.1.3" util.promisify "1.0.0" html@1.0.0: @@ -16021,22 +16667,22 @@ inquirer@6.2.2: strip-ansi "^5.0.0" through "^2.3.6" -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -16288,7 +16934,7 @@ irregular-plurals@^3.2.0: resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.2.0.tgz#b19c490a0723798db51b235d7e39add44dab0822" integrity sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q== -is-absolute-url@^3.0.3: +is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== @@ -16315,6 +16961,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + is-alphabetical@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08" @@ -16475,10 +17126,13 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== -is-dom@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.0.9.tgz#483832d52972073de12b9fe3f60320870da8370d" - integrity sha1-SDgy1SlyBz3hK5/j9gMghw2oNw0= +is-dom@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" + integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== + dependencies: + is-object "^1.0.1" + is-window "^1.0.2" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -16531,6 +17185,11 @@ is-function@^1.0.1, is-function@~1.0.0: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= +is-function@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-generator-fn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" @@ -16774,20 +17433,20 @@ is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@2.0.4, is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@3.0.0, is-plain-object@^3.0.0: +is-plain-object@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== dependencies: isobject "^4.0.0" +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" @@ -16822,6 +17481,13 @@ is-regex@^1.1.0: dependencies: has-symbols "^1.0.1" +is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -16988,6 +17654,11 @@ is-whitespace-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b" integrity sha1-muAXbzKCtlRXoZks2whPil+DPjs= +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -17104,11 +17775,6 @@ istanbul-lib-coverage@^1.2.1: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== -istanbul-lib-coverage@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" - integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -17127,25 +17793,12 @@ istanbul-lib-instrument@^1.7.3: integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== dependencies: babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - -istanbul-lib-instrument@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" - integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - istanbul-lib-coverage "^2.0.3" - semver "^5.5.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.1" + semver "^5.3.0" istanbul-lib-instrument@^4.0.0: version "4.0.1" @@ -17339,7 +17992,7 @@ jest-config@^25.5.4: pretty-format "^25.5.0" realpath-native "^2.0.0" -jest-diff@^24.3.0, jest-diff@^24.9.0: +jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== @@ -17359,6 +18012,16 @@ jest-diff@^25.2.1, jest-diff@^25.5.0: jest-get-type "^25.2.6" pretty-format "^25.5.0" +jest-diff@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.0.tgz#d073a0a11952b5bd9f1ff39bb9ad24304a0c55f7" + integrity sha512-wwC38HlOW+iTq6j5tkj/ZamHn6/nrdcEOc/fKaVILNtN2NLWGdkfRaHWwfNYr5ehaLvuoG2LfCZIcWByVj0gjg== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.3.0" + jest-get-type "^26.3.0" + pretty-format "^26.4.0" + jest-docblock@^25.3.0: version "25.3.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" @@ -17420,24 +18083,10 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== jest-haste-map@^25.5.1: version "25.5.1" @@ -17459,6 +18108,27 @@ jest-haste-map@^25.5.1: optionalDependencies: fsevents "^2.1.2" +jest-haste-map@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726" + integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA== + dependencies: + "@jest/types" "^26.3.0" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.3.0" + jest-util "^26.3.0" + jest-worker "^26.3.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + jest-jasmine2@^25.5.4: version "25.5.4" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" @@ -17510,6 +18180,16 @@ jest-matcher-utils@^25.5.0: jest-get-type "^25.2.6" pretty-format "^25.5.0" +jest-matcher-utils@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.0.tgz#2bce9a939e008b894faf1bd4b5bb58facd00c252" + integrity sha512-u+xdCdq+F262DH+PutJKXLGr2H5P3DImdJCir51PGSfi3TtbLQ5tbzKaN8BkXbiTIU6ayuAYBWTlU1nyckVdzA== + dependencies: + chalk "^4.0.0" + jest-diff "^26.4.0" + jest-get-type "^26.3.0" + pretty-format "^26.4.0" + jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -17538,6 +18218,20 @@ jest-message-util@^25.5.0: slash "^3.0.0" stack-utils "^1.0.1" +jest-message-util@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" + integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.3.0" + "@types/stack-utils" "^1.0.1" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^2.0.2" + jest-mock@^24.0.0, jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" @@ -17557,6 +18251,11 @@ jest-pnp-resolver@^1.2.1: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + jest-raw-loader@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/jest-raw-loader/-/jest-raw-loader-1.0.1.tgz#ce9f56d54650f157c4a7d16d224ba5d613bcd626" @@ -17572,6 +18271,11 @@ jest-regex-util@^25.2.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + jest-resolve-dependencies@^25.5.4: version "25.5.4" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" @@ -17607,6 +18311,20 @@ jest-resolve@^25.5.1: resolve "^1.17.0" slash "^3.0.0" +jest-resolve@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7" + integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg== + dependencies: + "@jest/types" "^26.3.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.3.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + jest-runner@^25.5.4: version "25.5.4" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" @@ -17664,11 +18382,6 @@ jest-runtime@^25.5.4: strip-bom "^4.0.0" yargs "^15.3.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - jest-serializer@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" @@ -17676,6 +18389,14 @@ jest-serializer@^25.5.0: dependencies: graceful-fs "^4.2.4" +jest-serializer@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef" + integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + jest-snapshot@^24.1.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" @@ -17716,13 +18437,41 @@ jest-snapshot@^25.5.1: pretty-format "^25.5.0" semver "^6.3.0" -jest-specific-snapshot@2.0.0, jest-specific-snapshot@^2.0.0: +jest-snapshot@^26.3.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.0.tgz#efd42eef09bcb33e9a3eb98e229f2368c73c9235" + integrity sha512-vFGmNGWHMBomrlOpheTMoqihymovuH3GqfmaEIWoPpsxUXyxT3IlbxI5I4m2vg0uv3HUJYg5JoGrkgMzVsAwCg== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.3.0" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.4.0" + graceful-fs "^4.2.4" + jest-diff "^26.4.0" + jest-get-type "^26.3.0" + jest-haste-map "^26.3.0" + jest-matcher-utils "^26.4.0" + jest-message-util "^26.3.0" + jest-resolve "^26.4.0" + natural-compare "^1.4.0" + pretty-format "^26.4.0" + semver "^7.3.2" + +jest-specific-snapshot@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-2.0.0.tgz#425fe524b25df154aa39f97fa6fe9726faaac273" integrity sha512-aXaNqBg/svwEpY5iQEzEHc5I85cUBKgfeVka9KmpznxLnatpjiqjr7QLb/BYNYlsrZjZzgRHTjQJ+Svx+dbdvg== dependencies: jest-snapshot "^24.1.0" +jest-specific-snapshot@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-4.0.0.tgz#a52a2e223e7576e610dbeaf341207c557ac20554" + integrity sha512-YdW5P/MVwOizWR0MJwURxdrjdXvdG2MMpXKVGr7dZ2YrBmE6E6Ab74UL3DOYmGmzaCnNAW1CL02pY5MTHE3ulQ== + dependencies: + jest-snapshot "^26.3.0" + jest-styled-components@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/jest-styled-components/-/jest-styled-components-7.0.2.tgz#b7711871ea74a04491b12bad123fa35cc65a2a80" @@ -17730,7 +18479,7 @@ jest-styled-components@^7.0.2: dependencies: css "^2.2.4" -jest-util@^24.0.0, jest-util@^24.9.0: +jest-util@^24.0.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== @@ -17759,6 +18508,18 @@ jest-util@^25.5.0: is-ci "^2.0.0" make-dir "^3.0.0" +jest-util@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" + integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== + dependencies: + "@jest/types" "^26.3.0" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + jest-validate@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" @@ -17791,14 +18552,6 @@ jest-when@^2.7.2: bunyan "^1.8.12" expect "^24.8.0" -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - jest-worker@^25.4.0, jest-worker@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" @@ -17807,6 +18560,15 @@ jest-worker@^25.4.0, jest-worker@^25.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^26.2.1, jest-worker@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" + integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest@^25.5.4: version "25.5.4" resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" @@ -17881,6 +18643,11 @@ js-sha3@0.8.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -18795,7 +19562,7 @@ loader-utils@1.2.3, loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0. emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: +loader-utils@2.0.0, loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== @@ -18999,11 +19766,6 @@ lodash.map@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - lodash.merge@^4.4.0, lodash.merge@^4.6.1: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -19084,11 +19846,6 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= - lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -19104,7 +19861,7 @@ lodash.union@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= -lodash.uniq@^4.5.0: +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= @@ -19258,6 +20015,13 @@ lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + lowercase-keys@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" @@ -19273,6 +20037,14 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowlight@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.12.1.tgz#014acf8dd73a370e02ff1cc61debcde3bb1681eb" + integrity sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w== + dependencies: + fault "^1.0.2" + highlight.js "~9.15.0" + lowlight@^1.2.0: version "1.14.0" resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.14.0.tgz#83ebc143fec0f9e6c0d3deffe01be129ce56b108" @@ -19281,14 +20053,6 @@ lowlight@^1.2.0: fault "^1.0.0" highlight.js "~10.1.0" -lowlight@~1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.11.0.tgz#1304d83005126d4e8b1dc0f07981e9b689ec2efc" - integrity sha512-xrGGN6XLL7MbTMdPD6NfWPwY43SNkjf/d0mecSx/CW36fUZTjRHEq0/Cdug3TWKtRXLWi7iMl1eP0olYxj/a4A== - dependencies: - fault "^1.0.2" - highlight.js "~9.13.0" - lowlight@~1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.9.1.tgz#ed7c3dffc36f8c1f263735c0fe0c907847c11250" @@ -19319,6 +20083,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -19516,20 +20287,6 @@ markdown-to-jsx@^6.11.4: prop-types "^15.6.2" unquote "^1.1.0" -marked@^0.3.12: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== - -marksy@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/marksy/-/marksy-8.0.0.tgz#b595f121fd47058df9dda1448f6ee156ab48810a" - integrity sha512-mmHcKZojCQAGuKTuu3153viXdCuxUmsSxomFaSOBTkOlfWFOZBmDhmJkOp0CsPMNRQ7m6oN2wflvAHLpBNZVPw== - dependencies: - "@babel/standalone" "^7.4.5" - he "^1.2.0" - marked "^0.3.12" - matchdep@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" @@ -19569,6 +20326,20 @@ mdast-add-list-metadata@1.0.1: dependencies: unist-util-visit-parents "1.1.2" +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== + dependencies: + unist-util-remove "^2.0.0" + +mdast-util-definitions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-2.0.1.tgz#2c931d8665a96670639f17f98e32c3afcfee25f3" + integrity sha512-Co+DQ6oZlUzvUR7JCpP249PcexxygiaKk9axJh+eRzHDZJk2julbIdKB4PXHVxdBuLzvJ1Izb+YDpj2deGMOuA== + dependencies: + unist-util-visit "^2.0.0" + mdast-util-definitions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz#06af6c49865fc63d6d7d30125569e2f7ae3d0a86" @@ -19576,7 +20347,7 @@ mdast-util-definitions@^3.0.0: dependencies: unist-util-visit "^2.0.0" -mdast-util-to-hast@^9.1.0: +mdast-util-to-hast@9.1.0, mdast-util-to-hast@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.0.tgz#6ef121dd3cd3b006bf8650b1b9454da0faf79ffe" integrity sha512-Akl2Vi9y9cSdr19/Dfu58PVwifPXuFt1IrHe7l+Crme1KvgUT+5z+cHLVcQVGCiNTZZcdqjnuv9vPkGsqWytWA== @@ -19593,6 +20364,11 @@ mdast-util-to-hast@^9.1.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -19716,6 +20492,14 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.0.0, meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -19879,6 +20663,11 @@ mime-db@1.43.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + mime-db@1.x.x, mime-db@~1.37.0: version "1.37.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" @@ -19898,6 +20687,13 @@ mime-types@^2.1.25: dependencies: mime-db "1.43.0" +mime-types@^2.1.26: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + mime-types@~2.1.24: version "2.1.24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" @@ -19983,16 +20779,6 @@ mini-css-extract-plugin@0.8.0: schema-utils "^1.0.0" webpack-sources "^1.1.0" -mini-css-extract-plugin@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" - integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -20146,6 +20932,13 @@ mkdirp@^0.3.5: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc= +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -20581,11 +21374,6 @@ nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== -nested-object-assign@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/nested-object-assign/-/nested-object-assign-1.0.3.tgz#5aca69390d9affe5a612152b5f0843ae399ac597" - integrity sha512-kgq1CuvLyUcbcIuTiCA93cQ2IJFSlRwXcN+hLcb2qLJwC2qrePHGZZa7IipyWqaWF6tQjdax2pQnVxdq19Zzwg== - newtype-ts@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/newtype-ts/-/newtype-ts-0.2.4.tgz#a02a8f160a3d179f871848d687a93de73a964a41" @@ -20640,6 +21428,14 @@ no-case@^2.2.0, no-case@^2.3.2: dependencies: lower-case "^1.1.1" +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + nock@12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/nock/-/nock-12.0.3.tgz#83f25076dbc4c9aa82b5cdf54c9604c7a778d1c9" @@ -20844,13 +21640,18 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.25, node-releases@^1.1.46: +node-releases@^1.1.46: version "1.1.47" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4" integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA== dependencies: semver "^6.3.0" +node-releases@^1.1.52: + version "1.1.60" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" + integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== + node-releases@^1.1.53: version "1.1.58" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" @@ -21332,6 +22133,14 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -21365,6 +22174,11 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +objectorarray@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.4.tgz#d69b2f0ff7dc2701903d308bb85882f4ddb49483" + integrity sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w== + oboe@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" @@ -21454,14 +22268,7 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -open@^7.0.0: +open@^7.0.2, open@^7.0.3: version "7.1.0" resolved "https://registry.yarnpkg.com/open/-/open-7.1.0.tgz#68865f7d3cb238520fa1225a63cf28bcf8368a1c" integrity sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA== @@ -21668,6 +22475,11 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= +overlayscrollbars@^1.10.2: + version "1.13.0" + resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.0.tgz#1edb436328133b94877b558f77966d5497ca36a7" + integrity sha512-p8oHrMeRAKxXDMPI/EBNITj/zTVHKNnAnM59Im+xnoZUlV07FyTg46wom2286jJlXGGfcPFG/ba5NUiCwWNd4w== + p-all@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" @@ -21942,6 +22754,14 @@ param-case@2.1.x, param-case@^2.1.0: dependencies: no-case "^2.2.0" +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + parent-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" @@ -22009,6 +22829,18 @@ parse-entities@^1.1.2: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-filepath@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -22093,7 +22925,7 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.0, parse5@^5.0.0: +parse5@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== @@ -22105,6 +22937,16 @@ parse5@^3.0.1: dependencies: "@types/node" "*" +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -22123,6 +22965,14 @@ pascal-case@^2.0.0: camel-case "^3.0.0" upper-case-first "^1.1.0" +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -22444,20 +23294,20 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@2.0.0, pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pkg-up@^3.1.0: +pkg-up@3.1.0, pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + platform@^1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" @@ -22522,12 +23372,12 @@ pngjs@^3.3.3, pngjs@^3.4.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" - integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: - ts-pnp "^1.1.2" + ts-pnp "^1.1.6" podium@3.x.x: version "3.1.2" @@ -22542,12 +23392,12 @@ polished@^1.9.2: resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.2.tgz#d705cac66f3a3ed1bd38aad863e2c1e269baf6b6" integrity sha512-mPocQrVUSiqQdHNZFGL1iHJmsR/etiv05Nf2oZUbya+GMsQkZVEBl5wonN+Sr/e9zQBEhT6yrMjxAUJ06eyocQ== -polished@^3.3.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/polished/-/polished-3.4.1.tgz#1eb5597ec1792206365635811d465751f5cbf71c" - integrity sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg== +polished@^3.4.4: + version "3.6.5" + resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.5.tgz#dbefdde64c675935ec55119fe2a2ab627ca82e9c" + integrity sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ== dependencies: - "@babel/runtime" "^7.4.5" + "@babel/runtime" "^7.9.2" popper.js@^1.14.4: version "1.14.7" @@ -22623,6 +23473,14 @@ postcss-modules-scope@^2.1.1: postcss "^7.0.6" postcss-selector-parser "^6.0.0" +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" @@ -22731,7 +23589,7 @@ prettier@1.16.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== -prettier@^2.1.1: +prettier@^2.0.5, prettier@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6" integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw== @@ -22774,6 +23632,16 @@ pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" +pretty-format@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.0.tgz#c08073f531429e9e5024049446f42ecc9f933a3b" + integrity sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg== + dependencies: + "@jest/types" "^26.3.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + pretty-format@^26.4.2: version "26.4.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" @@ -22939,20 +23807,20 @@ proper-lockfile@^3.2.0: retry "^0.12.0" signal-exit "^3.0.2" -property-information@^5.0.0, property-information@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.0.1.tgz#c3b09f4f5750b1634c0b24205adbf78f18bdf94f" - integrity sha512-nAtBDVeSwFM3Ot/YxT7s4NqZmqXI7lLzf46BThvotEtYf2uk2yH0ACYuWQkJ7gxKs49PPtKVY0UlDGkyN9aJlw== - dependencies: - xtend "^4.0.1" - -property-information@^5.2.0, property-information@^5.3.0: +property-information@^5.0.0, property-information@^5.2.0, property-information@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== dependencies: xtend "^4.0.0" +property-information@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.0.1.tgz#c3b09f4f5750b1634c0b24205adbf78f18bdf94f" + integrity sha512-nAtBDVeSwFM3Ot/YxT7s4NqZmqXI7lLzf46BThvotEtYf2uk2yH0ACYuWQkJ7gxKs49PPtKVY0UlDGkyN9aJlw== + dependencies: + xtend "^4.0.1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -23332,6 +24200,14 @@ raw-loader@^3.1.0: loader-utils "^1.1.0" schema-utils "^2.0.1" +raw-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" + integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + rbush@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" @@ -23391,15 +24267,6 @@ react-ace@^7.0.5: lodash.isequal "^4.5.0" prop-types "^15.7.2" -react-addons-create-fragment@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz#a394de7c2c7becd6b5475ba1b97ac472ce7c74f8" - integrity sha1-o5TefCx77Na1R1uhuXrEcs58dPg= - dependencies: - fbjs "^0.8.4" - loose-envify "^1.3.1" - object-assign "^4.1.0" - react-apollo@^2.1.4: version "2.1.8" resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.1.8.tgz#ebac0d9bee0f0906df3ce29207f94df337009887" @@ -23464,35 +24331,34 @@ react-datetime@^2.14.0: prop-types "^15.5.7" react-onclickoutside "^6.5.0" -react-dev-utils@^9.0.0: - version "9.0.3" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.0.3.tgz#7607455587abb84599451460eb37cef0b684131a" - integrity sha512-OyInhcwsvycQ3Zr2pQN+HV4gtRXrky5mJXIy4HnqrWa+mI624xfYfqGuC9dYbxp4Qq3YZzP8GSGQjv0AgNU15w== +react-dev-utils@^10.0.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== dependencies: - "@babel/code-frame" "7.5.5" - address "1.1.0" - browserslist "4.6.6" + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" chalk "2.4.2" - cross-spawn "6.0.5" + cross-spawn "7.0.1" detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" immer "1.10.0" - inquirer "6.5.0" + inquirer "7.0.4" is-root "2.1.0" loader-utils "1.2.3" - open "^6.3.0" - pkg-up "2.0.0" - react-error-overlay "^6.0.1" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" recursive-readdir "2.2.2" - shell-quote "1.6.1" - sockjs-client "1.3.0" - strip-ansi "5.2.0" + shell-quote "1.7.2" + strip-ansi "6.0.0" text-table "0.2.0" react-docgen-typescript-loader@^3.1.1: @@ -23504,11 +24370,37 @@ react-docgen-typescript-loader@^3.1.1: loader-utils "^1.2.3" react-docgen-typescript "^1.12.3" +react-docgen-typescript-loader@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.7.2.tgz#45cb2305652c0602767242a8700ad1ebd66bbbbd" + integrity sha512-fNzUayyUGzSyoOl7E89VaPKJk9dpvdSgyXg81cUkwy0u+NBvkzQG3FC5WBIlXda0k/iaxS+PWi+OC+tUiGxzPA== + dependencies: + "@webpack-contrib/schema-utils" "^1.0.0-beta.0" + loader-utils "^1.2.3" + react-docgen-typescript "^1.15.0" + +react-docgen-typescript-plugin@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.2.tgz#2b294d75ef3145c36303da82be5d447cb67dc0dc" + integrity sha512-NQfWyWLmzUnedkiN2nPDb6Nkm68ik6fqbC3UvgjqYSeZsbKijXUA4bmV6aU7qICOXdop9PevPdjEgJuAN0nNVQ== + dependencies: + debug "^4.1.1" + endent "^2.0.1" + micromatch "^4.0.2" + react-docgen-typescript "^1.20.1" + react-docgen-typescript-loader "^3.7.2" + tslib "^2.0.0" + react-docgen-typescript@^1.12.3: version "1.12.3" resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.12.3.tgz#fe62a5ce82e93573e316366e53adfe8273121c70" integrity sha512-s1XswWs4ykNdWKsPyfM4qptV5dT8nnjnVi2IcjoS/vGlRNYrc0TkW0scVOrinHZ+ndKhPqA4iVNrdwhxZBzJcg== +react-docgen-typescript@^1.15.0, react-docgen-typescript@^1.20.1: + version "1.20.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.20.2.tgz#78f4a14f18a4e236e31051961c75583133752d46" + integrity sha512-tW1cZErh4AxDJIFiTxny9AfMeSwm+NI7BsXXuAXPvoIxToglFWvmJWsJF6sYhSA3zNu3zhFOIMdRMXTzQAyCpA== + react-docgen@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" @@ -23566,25 +24458,25 @@ react-dropzone@^4.2.9: attr-accept "^1.1.3" prop-types "^15.5.7" -react-element-to-jsx-string@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.0.2.tgz#586d248bb2416855aa6ac3881e18726832c146d2" - integrity sha512-eYcPUg3FJisgAb8q3sSdce8F/xMZD/iFEjMZYnkE3b7gPi5OamGr2Hst/1pE72mzn7//dfYPXb+UqPK2xdSGsg== +react-element-to-jsx-string@^14.3.1: + version "14.3.1" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.1.tgz#a08fa6e46eb76061aca7eabc2e70f433583cb203" + integrity sha512-LRdQWRB+xcVPOL4PU4RYuTg6dUJ/FNmaQ8ls6w38YbzkbV6Yr5tFNESroub9GiSghtnMq8dQg2LcNN5aMIDzVg== dependencies: - is-plain-object "2.0.4" - stringify-object "3.2.2" + "@base2/pretty-print-object" "1.0.0" + is-plain-object "3.0.0" -react-error-overlay@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.1.tgz#b8d3cf9bb991c02883225c48044cb3ee20413e0f" - integrity sha512-V9yoTr6MeZXPPd4nV/05eCBvGH9cGzc52FN8fs0O0TVQ3HYYf1n7EgZVtHbldRq5xU9zEzoXIITjYNIfxDDdUw== +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== react-fast-compare@2.0.4, react-fast-compare@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== -react-focus-lock@^2.1.0, react-focus-lock@^2.3.1: +react-focus-lock@^2.3.1: version "2.4.1" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.4.1.tgz#e842cc93da736b5c5d331799012544295cbcee4f" integrity sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w== @@ -23652,13 +24544,13 @@ react-input-range@^1.3.0: autobind-decorator "^1.3.4" prop-types "^15.5.8" -react-inspector@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-4.0.1.tgz#0f888f78ff7daccbc7be5d452b20c96dc6d5fbb8" - integrity sha512-xSiM6CE79JBqSj8Fzd9dWBHv57tLTH7OM57GP3VrE5crzVF3D5Khce9w1Xcw75OAbvrA0Mi2vBneR1OajKmXFg== +react-inspector@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.0.1.tgz#8a30f3d488c4f40203624bbe24800f508ae05d3a" + integrity sha512-qRIENuAIcRaytrmg/TL5nN5igYZMzyQqIKlWA8zoYRDltULsZC1bWy2Ua5wYJuwEYnC3gK4FCjcIQnb+5OyLsQ== dependencies: - "@babel/runtime" "^7.6.3" - is-dom "^1.0.9" + "@babel/runtime" "^7.8.7" + is-dom "^1.1.0" prop-types "^15.6.1" react-intl@^2.8.0: @@ -23672,7 +24564,7 @@ react-intl@^2.8.0: intl-relativeformat "^2.1.0" invariant "^2.1.1" -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -23736,7 +24628,7 @@ react-onclickoutside@^6.5.0: resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93" integrity sha512-p84kBqGaMoa7VYT0vZ/aOYRfJB+gw34yjpda1Z5KeLflg70HipZOT+MXQenEhdkPAABuE2Astq4zEPdMqUQxcg== -react-popper-tooltip@^2.10.1, react-popper-tooltip@^2.8.3: +react-popper-tooltip@^2.10.1, react-popper-tooltip@^2.11.0: version "2.11.1" resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" integrity sha512-04A2f24GhyyMicKvg/koIOQ5BzlrRbKiAgP6L+Pdj1MVX3yJ1NeZ8+EidndQsbejFT55oW1b++wg2Z8KlAyhfQ== @@ -23940,14 +24832,14 @@ react-style-singleton@^2.1.0: invariant "^2.2.4" tslib "^1.0.0" -react-syntax-highlighter@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz#4e3f376e752b20d2f54e4c55652fd663149e4029" - integrity sha512-kqmpM2OH5OodInbEADKARwccwSQWBfZi0970l5Jhp4h39q9Q65C4frNcnd6uHE5pR00W8pOWj9HDRntj2G4Rww== +react-syntax-highlighter@^12.2.1: + version "12.2.1" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz#14d78352da1c1c3f93c6698b70ec7c706b83493e" + integrity sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA== dependencies: "@babel/runtime" "^7.3.1" - highlight.js "~9.13.0" - lowlight "~1.11.0" + highlight.js "~9.15.1" + lowlight "1.12.1" prismjs "^1.8.4" refractor "^2.4.1" @@ -23970,13 +24862,14 @@ react-test-renderer@^16.0.0-0, react-test-renderer@^16.12.0: react-is "^16.8.6" scheduler "^0.18.0" -react-textarea-autosize@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz#3132cb77e65d94417558d37c0bfe415a5afd3445" - integrity sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg== +react-textarea-autosize@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz#fae38653f5ec172a855fd5fffb39e466d56aebdb" + integrity sha512-grajUlVbkx6VdtSxCgzloUIphIZF5bKr21OYMceWPKkniy7H0mRAT/AXPrRtObAe+zUePnNlBwUc4ivVjUGIjw== dependencies: - "@babel/runtime" "^7.1.2" - prop-types "^15.6.0" + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.0.0" + use-latest "^1.0.0" react-tiny-virtual-list@^2.2.0: version "2.2.0" @@ -24530,7 +25423,7 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2: +regenerator-runtime@^0.13.1: version "0.13.2" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== @@ -24646,15 +25539,6 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -rehype-parse@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.0.tgz#f681555f2598165bee2c778b39f9073d17b16bca" - integrity sha512-V2OjMD0xcSt39G4uRdMTqDXXm6HwkUbLMDayYKA/d037j8/OtVSQ+tqKwYWOuyBeoCs/3clXRe30VUjeMDTBSA== - dependencies: - hast-util-from-parse5 "^5.0.0" - parse5 "^5.0.0" - xtend "^4.0.1" - rehype-raw@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-4.0.2.tgz#5d3191689df96c8c651ce5f51a6c668d2c07b9c8" @@ -24678,7 +25562,7 @@ rehype-stringify@^6.0.1: hast-util-to-html "^6.0.0" xtend "^4.0.0" -relateurl@0.2.x: +relateurl@0.2.x, relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -24711,6 +25595,22 @@ remark-emoji@^2.1.0: node-emoji "^1.10.0" unist-util-visit "^2.0.2" +remark-external-links@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-6.1.0.tgz#1a545b3cf896eae00ec1732d90f595f75a329abe" + integrity sha512-dJr+vhe3wuh1+E9jltQ+efRMqtMDOOnfFkhtoArOmhnBcPQX6THttXMkc/H0kdnAvkXTk7f2QdOYm5qo/sGqdw== + dependencies: + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^2.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" + +remark-footnotes@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-1.0.0.tgz#9c7a97f9a89397858a50033373020b1ea2aad011" + integrity sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g== + remark-highlight.js@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/remark-highlight.js/-/remark-highlight.js-5.2.0.tgz#6d8d22085e0c76573744b7e3706fc232269f5b02" @@ -24719,6 +25619,42 @@ remark-highlight.js@^5.2.0: lowlight "^1.2.0" unist-util-visit "^1.0.0" +remark-mdx@1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.16.tgz#13ee40ad0614a1cc179aca3604d7f1b79e498a2f" + integrity sha512-xqZhBQ4TonFiSFpVt6SnTLRnxstu7M6pcaOibKZhqzk4zMRVacVenD7iECjfESK+72LkPm/NW+0r5ahJAg7zlQ== + dependencies: + "@babel/core" "7.10.5" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.10.4" + "@babel/plugin-syntax-jsx" "7.10.4" + "@mdx-js/util" "1.6.16" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.1.0" + +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== + dependencies: + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" + remark-parse@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" @@ -24768,6 +25704,22 @@ remark-rehype@^7.0.0: dependencies: mdast-util-to-hast "^9.1.0" +remark-slug@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c" + integrity sha512-ln67v5BrGKHpETnm6z6adlJPhESFJwfuZZ3jrmi+lKTzeZxh2tzFzUfDD4Pm2hRGOarHLuGToO86MNMZ/hA67Q== + dependencies: + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" + +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== + dependencies: + mdast-squeeze-paragraphs "^4.0.0" + remedial@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/remedial/-/remedial-1.0.8.tgz#a5e4fd52a0e4956adbaf62da63a5a46a78c578a0" @@ -25112,7 +26064,7 @@ resolve@1.8.1: dependencies: path-parse "^1.0.5" -resolve@^1.1.10, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1: +resolve@^1.1.10, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -25383,6 +26335,13 @@ rxjs@^6.1.0, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1: dependencies: tslib "^1.9.0" +rxjs@^6.5.3: + version "6.6.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" + integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== + dependencies: + tslib "^1.9.0" + rxjs@^6.5.5: version "6.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" @@ -25557,7 +26516,7 @@ schema-utils@^0.4.5: ajv "^6.1.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.4.1, schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== @@ -25769,6 +26728,13 @@ serialize-javascript@^3.0.0, serialize-javascript@^3.1.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -25907,11 +26873,6 @@ shallow-copy@~0.0.1: resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= -shallow-equal@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.0.tgz#fd828d2029ff4e19569db7e19e535e94e2d1f5cc" - integrity sha512-Z21pVxR4cXsfwpMKMhCEIO1PCi5sp7KEp+CmOpBQ+E8GpHwKOw2sEzk7sgblM3d/j4z4gakoWEoPcjK0VJQogA== - shallowequal@1.1.0, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -25941,15 +26902,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shelljs@^0.6.0: version "0.6.1" @@ -26028,26 +26984,6 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -simplebar-react@^1.0.0-alpha.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-1.2.0.tgz#9c5dd129f77c2f03a7fb5ad4c40e90c845048c77" - integrity sha512-CNCaRcl1VUSVYJ+dqKcvDWbMXcRfdiCsHchsUNf+UMyAcmTNZ1K9peN89WWz1+jL4bsciaZgf9ZXWy0YrfZhFQ== - dependencies: - prop-types "^15.6.1" - simplebar "^4.2.0" - -simplebar@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-4.2.0.tgz#97e5c1c85d05cc04f8c92939e4da71dd087e325c" - integrity sha512-FqPl3FtO0ODIKHMJy2WsunqA+I0/hvw/dnHgackaXGwSP9FO7Y5APH1miPGVCsoGNFCK+v0MXL38f8Epe3qeBw== - dependencies: - can-use-dom "^0.1.0" - core-js "^3.0.1" - lodash.debounce "^4.0.8" - lodash.memoize "^4.1.2" - lodash.throttle "^4.1.1" - resize-observer-polyfill "^1.5.1" - sinon@^7.4.2: version "7.5.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" @@ -26144,18 +27080,6 @@ socket-location@^1.0.0: dependencies: await-event "^2.1.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -26512,6 +27436,13 @@ stack-utils@^1.0.1: resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= +stack-utils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + dependencies: + escape-string-regexp "^2.0.0" + stackframe@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" @@ -26881,15 +27812,6 @@ stringify-entities@^2.0.0: is-decimal "^1.0.2" is-hexadecimal "^1.0.0" -stringify-object@3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" - integrity sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg== - dependencies: - get-own-enumerable-property-symbols "^2.0.1" - is-obj "^1.0.1" - is-regexp "^1.0.0" - stringify-object@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -26899,20 +27821,13 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@*, strip-ansi@^6.0.0: +strip-ansi@*, strip-ansi@6.0.0, strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: ansi-regex "^5.0.0" -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" @@ -26934,6 +27849,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -27034,14 +27956,6 @@ style-it@^2.1.3: dependencies: react-lib-adler32 "^1.0.3" -style-loader@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" - integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.6" - style-loader@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" @@ -27050,20 +27964,28 @@ style-loader@^1.1.3: loader-utils "^1.2.3" schema-utils "^2.6.4" -style-to-object@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" - integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== +style-loader@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== dependencies: - inline-style-parser "0.1.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" -style-to-object@^0.3.0: +style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== dependencies: inline-style-parser "0.1.1" +style-to-object@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" + integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== + dependencies: + inline-style-parser "0.1.1" + styled-components@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.0.tgz#2e3985b54f461027e1c91af3229e1c2530872a4e" @@ -27247,6 +28169,11 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + svg-to-pdfkit@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/svg-to-pdfkit/-/svg-to-pdfkit-0.1.8.tgz#5921765922044843f0c1a5b25ec1ef8a4a33b8af" @@ -27254,7 +28181,7 @@ svg-to-pdfkit@^0.1.8: dependencies: pdfkit ">=0.8.1" -svgo@^1.2.1: +svgo@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== @@ -27365,7 +28292,7 @@ tapable@^0.1.8: resolved "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== @@ -27518,18 +28445,18 @@ teamwork@3.x.x: resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" integrity sha512-hEkJIpDOfOYe9NYaLFk00zQbzZeKNCY8T2pRH3I13Y1mJwxaSQ6NEsjY5rCp+11ezCiZpWGoGFTbOuhg4qKevQ== -telejson@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-3.3.0.tgz#6d814f3c0d254d5c4770085aad063e266b56ad03" - integrity sha512-er08AylQ+LEbDLp1GRezORZu5wKOHaBczF6oYJtgC3Idv10qZ8A3p6ffT+J5BzDKkV9MqBvu8HAKiIIOp6KJ2w== +telejson@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.0.2.tgz#ed1e64be250cc1c757a53c19e1740b49832b3d51" + integrity sha512-XCrDHGbinczsscs8LXFr9jDhvy37yBk9piB7FJrCfxE8oP66WDkolNMpaBkWYgQqB9dQGBGtTDzGQPedc9KJmw== dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" - is-function "^1.0.1" - is-regex "^1.0.4" + is-function "^1.0.2" + is-regex "^1.1.1" is-symbol "^1.0.3" isobject "^4.0.0" - lodash "^4.17.15" + lodash "^4.17.19" memoizerific "^1.11.3" temp-dir@^1.0.0: @@ -27601,6 +28528,21 @@ terser-webpack-plugin@^2.1.2: terser "^4.6.12" webpack-sources "^1.4.3" +terser-webpack-plugin@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz#91e6d39571460ed240c0cf69d295bcf30ebf98cb" + integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.2.1" + p-limit "^3.0.2" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" + terser@^4.1.2, terser@^4.6.12: version "4.7.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" @@ -27610,15 +28552,14 @@ terser@^4.1.2, terser@^4.6.12: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +terser@^4.6.3, terser@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" test-exclude@^6.0.0: version "6.0.0" @@ -28125,16 +29066,21 @@ ts-debounce@^1.0.0: resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-1.0.0.tgz#e433301744ba75fe25466f7f23e1382c646aae6a" integrity sha512-V+IzWj418IoqqxVJD6I0zjPtgIyvAJ8VyViqzcxZ0JRiJXsi5mCmy1yUKkWd2gUygT28a8JsVFCgqdrf2pLUHQ== -ts-dedent@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.0.tgz#67983940793183dc7c7f820acb66ba02cdc33c6e" - integrity sha512-CVCvDwMBWZKjDxpN3mU/Dx1v3k+sJgE8nrhXcC9vRopRfoa7vVzilNvHEAUi5jQnmFHpnxDx5jZdI1TpG8ny2g== +ts-dedent@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.1.tgz#68fad040d7dbd53a90f545b450702340e17d18f3" + integrity sha512-UGTRZu1evMw4uTPyYF66/KFd22XiU+jMaIuHrkIHQ2GivAXVlLV0v/vHrpOuTRf9BmpNHi/SO7Vd0rLu0y57jg== ts-easing@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== +ts-essentials@^2.0.3: + version "2.0.12" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" + integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== + ts-invariant@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.2.1.tgz#3d587f9d6e3bded97bf9ec17951dd9814d5a9d3f" @@ -28172,10 +29118,10 @@ ts-log@2.1.4: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.4.tgz#063c5ad1cbab5d49d258d18015963489fb6fb59a" integrity sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ== -ts-pnp@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" - integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== tsd@^0.13.1: version "0.13.1" @@ -28554,6 +29500,18 @@ unicode-trie@^2.0.0: pako "^0.2.5" tiny-inflate "^1.0.0" +unified@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.1.0.tgz#7ba82e5db4740c47a04e688a9ca8335980547410" + integrity sha512-VXOv7Ic6twsKGJDeZQ2wwPqXs2hM0KNu5Hkg9WgAZbSD1pxhZ7p8swqg583nw1Je2fhwHy6U8aEjiI79x1gvag== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + unified@^6.1.5: version "6.1.6" resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1" @@ -28567,20 +29525,6 @@ unified@^6.1.5: x-is-function "^1.0.4" x-is-string "^0.1.0" -unified@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" - integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== - dependencies: - "@types/unist" "^2.0.0" - "@types/vfile" "^3.0.0" - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^3.0.0" - x-is-string "^0.1.0" - unified@^8.4.2: version "8.4.2" resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" @@ -28643,7 +29587,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-builder@^2.0.0: +unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== @@ -28680,6 +29624,20 @@ unist-util-remove-position@^1.0.0: dependencies: unist-util-visit "^1.1.0" +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== + dependencies: + unist-util-visit "^2.0.0" + +unist-util-remove@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488" + integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g== + dependencies: + unist-util-is "^4.0.0" + unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c" @@ -28712,6 +29670,15 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + unist-util-visit@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" @@ -28726,15 +29693,6 @@ unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: dependencies: unist-util-is "^2.1.1" -unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - universal-user-agent@^2.0.0, universal-user-agent@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" @@ -28906,15 +29864,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.2.0.tgz#af321aece1fd0d683adc8aaeb27829f29c75b46e" - integrity sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.4.1" - url-loader@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" @@ -28924,6 +29873,15 @@ url-loader@^2.2.0: mime "^2.4.4" schema-utils "^2.5.0" +url-loader@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.0.tgz#c7d6b0d6b0fccd51ab3ffc58a78d32b8d89a7be2" + integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.26" + schema-utils "^2.6.5" + url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -28974,6 +29932,25 @@ use-callback-ref@^1.2.1, use-callback-ref@^1.2.3: resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.4.tgz#d86d1577bfd0b955b6e04aaf5971025f406bea3c" integrity sha512-rXpsyvOnqdScyied4Uglsp14qzag1JIemLeTWGKbwpotWht57hbP78aNT+Q4wdFKQfQibbUX4fb6Qb4y11aVOQ== +use-composed-ref@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.0.0.tgz#bb13e8f4a0b873632cde4940abeb88b92d03023a" + integrity sha512-RVqY3NFNjZa0xrmK3bIMWNmQ01QjKPDc7DeWR3xa/N8aliVppuutOE5bZzPkQfvL+5NRWMMp0DJ99Trd974FIw== + dependencies: + ts-essentials "^2.0.3" + +use-isomorphic-layout-effect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz#f56b4ed633e1c21cd9fc76fe249002a1c28989fb" + integrity sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg== + +use-latest@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.1.0.tgz#7bf9684555869c3f5f37e10d0884c8accf4d3aa6" + integrity sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw== + dependencies: + use-isomorphic-layout-effect "^1.0.0" + use-memo-one@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" @@ -29027,7 +30004,7 @@ util-extend@^1.0.1: resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= -util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -29035,6 +30012,16 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -29089,7 +30076,7 @@ uuid@^3.0.0, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: +uuid@^8.0.0, uuid@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== @@ -29523,6 +30510,11 @@ vfile-location@^2.0.0: resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255" integrity sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU= +vfile-location@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" + integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ== + vfile-message@*: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" @@ -29578,16 +30570,6 @@ vfile@^2.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" -vfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" - integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== - dependencies: - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.0.tgz#ebf3b48af9fcde524d5e08d5f75812058a5f78ad" @@ -29829,6 +30811,17 @@ watchpack@^1.6.0: chokidar "^3.4.0" watchpack-chokidar2 "^2.0.0" +watchpack@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" + wbuf@^1.1.0: version "1.7.2" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" @@ -29975,14 +30968,14 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack-virtual-modules@^0.2.0: +webpack-virtual-modules@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== dependencies: debug "^3.0.0" -webpack@^4.33.0, webpack@^4.38.0, webpack@^4.41.5: +webpack@^4.41.5: version "4.41.5" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== @@ -30011,6 +31004,35 @@ webpack@^4.33.0, webpack@^4.38.0, webpack@^4.41.5: watchpack "^1.6.0" webpack-sources "^1.4.1" +webpack@^4.43.0: + version "4.44.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" + integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + websocket-driver@0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" @@ -30348,15 +31370,6 @@ wreck@14.x.x: boom "7.x.x" hoek "5.x.x" -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^1.1.2: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" From b1e60a6a8c33209f477e44cf258aaeefb8da5042 Mon Sep 17 00:00:00 2001 From: Brent Kimmel Date: Tue, 29 Sep 2020 20:46:59 -0400 Subject: [PATCH 093/119] [Security Solution][Resolver]Add backdrop to pills (#78625) Co-authored-by: Elastic Machine --- .../resolver/view/process_event_dot.tsx | 2 +- .../public/resolver/view/styles.tsx | 56 +++++++++++++++++- .../public/resolver/view/submenu.tsx | 58 +------------------ 3 files changed, 59 insertions(+), 57 deletions(-) diff --git a/x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx b/x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx index 4d647760edb9c..f40f423359f56 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx @@ -9,7 +9,7 @@ import styled from 'styled-components'; import { htmlIdGenerator, EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { useSelector } from 'react-redux'; import { FormattedMessage } from '@kbn/i18n/react'; -import { NodeSubMenu } from './submenu'; +import { NodeSubMenu } from './styles'; import { applyMatrix3 } from '../models/vector2'; import { Vector2, Matrix3, ResolverState } from '../types'; import { SafeResolverEvent } from '../../../common/endpoint/types'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/styles.tsx b/x-pack/plugins/security_solution/public/resolver/view/styles.tsx index 7def5d3362d4f..2577436f63096 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/styles.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/styles.tsx @@ -5,8 +5,62 @@ */ import { EuiPanel, EuiCallOut } from '@elastic/eui'; - import styled from 'styled-components'; +import { NodeSubMenuComponents } from './submenu'; + +/** + * See `NodeSubMenuComponents` + */ +export const NodeSubMenu = styled(NodeSubMenuComponents)` + margin: 2px 0 0 0; + padding: 0; + border: none; + display: flex; + flex-flow: column; + + &.options { + font-size: 0.8rem; + display: flex; + flex-flow: row wrap; + background: transparent; + position: absolute; + top: 4.5em; + contain: content; + width: 12em; + z-index: 2; + backdrop-filter: blur(5px); + } + + &.options .item { + margin: 0.25ch 0.35ch 0.35ch 0; + padding: 0.35em 0.5em; + height: fit-content; + width: fit-content; + border-radius: 2px; + line-height: 0.8; + } + + &.options .item button { + appearance: none; + height: fit-content; + width: fit-content; + line-height: 0.8; + outline-style: none; + border-color: transparent; + box-shadow: none; + } + + &.options .item button:focus { + outline-style: none; + border-color: transparent; + box-shadow: none; + text-decoration: underline; + } + + &.options .item button:active { + transform: scale(0.95); + } +`; /** * The top level DOM element for Resolver diff --git a/x-pack/plugins/security_solution/public/resolver/view/submenu.tsx b/x-pack/plugins/security_solution/public/resolver/view/submenu.tsx index d40aa0b26a94b..a613588aa4aa9 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/submenu.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/submenu.tsx @@ -7,7 +7,6 @@ import { i18n } from '@kbn/i18n'; import React, { useMemo } from 'react'; import { EuiI18nNumber } from '@elastic/eui'; -import styled from 'styled-components'; import { ResolverNodeStats } from '../../../common/endpoint/types'; import { useRelatedEventByCategoryNavigation } from './use_related_event_by_category_navigation'; import { useColors } from './use_colors'; @@ -43,11 +42,10 @@ interface ResolverSubmenuOption { export type ResolverSubmenuOptionList = ResolverSubmenuOption[] | string; /** - * A Submenu to be displayed in one of two forms: - * 1) Provided a collection of `optionsWithActions`: it will call `menuAction` then - if and when menuData becomes available - display each item with an optional prefix and call the supplied action for the options when that option is clicked. - * 2) Provided `optionsWithActions` is undefined, it will call the supplied `menuAction` when its host button is clicked. + * A Submenu that displays a collection of "pills" for each related event + * category it has events for. */ -const NodeSubMenuComponents = React.memo( +export const NodeSubMenuComponents = React.memo( ({ className, nodeID, @@ -117,53 +115,3 @@ const NodeSubMenuComponents = React.memo( ); } ); - -export const NodeSubMenu = styled(NodeSubMenuComponents)` - margin: 2px 0 0 0; - padding: 0; - border: none; - display: flex; - flex-flow: column; - - &.options { - font-size: 0.8rem; - display: flex; - flex-flow: row wrap; - background: transparent; - position: absolute; - top: 4.5em; - contain: content; - width: 12em; - z-index: 2; - } - - &.options .item { - margin: 0.25ch 0.35ch 0.35ch 0; - padding: 0.35em 0.5em; - height: fit-content; - width: fit-content; - border-radius: 2px; - line-height: 0.8; - } - - &.options .item button { - appearance: none; - height: fit-content; - width: fit-content; - line-height: 0.8; - outline-style: none; - border-color: transparent; - box-shadow: none; - } - - &.options .item button:focus { - outline-style: none; - border-color: transparent; - box-shadow: none; - text-decoration: underline; - } - - &.options .item button:active { - transform: scale(0.95); - } -`; From cdb922f2a2690102c889780f6413ca16fe879a3a Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Tue, 29 Sep 2020 20:02:21 -0500 Subject: [PATCH 094/119] Move indexPattern.popularizeField into discover (#77668) Move indexPattern.popularizeField into discover --- ...-data-public.indexpattern._constructor_.md | 4 +- ...plugin-plugins-data-public.indexpattern.md | 3 +- ...ata-public.indexpattern.popularizefield.md | 23 ------ ...lugins-data-public.indexpatternsservice.md | 2 +- ....indexpatternsservice.updatesavedobject.md | 3 +- ...-data-server.indexpattern._constructor_.md | 4 +- ...plugin-plugins-data-server.indexpattern.md | 3 +- ...ata-server.indexpattern.popularizefield.md | 23 ------ .../index_patterns/index_pattern.test.ts | 47 ----------- .../index_patterns/index_pattern.ts | 36 -------- .../index_patterns/index_patterns.ts | 8 +- src/plugins/data/public/public.api.md | 6 +- src/plugins/data/server/server.api.md | 4 +- .../context/query_parameters/actions.js | 3 +- .../public/application/angular/context_app.js | 4 +- .../public/application/angular/discover.js | 11 ++- .../embeddable/search_embeddable.ts | 1 - .../helpers/popularize_field.test.ts | 82 +++++++++++++++++++ .../application/helpers/popularize_field.ts | 41 ++++++++++ 19 files changed, 153 insertions(+), 155 deletions(-) delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.popularizefield.md delete mode 100644 docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.popularizefield.md create mode 100644 src/plugins/discover/public/application/helpers/popularize_field.test.ts create mode 100644 src/plugins/discover/public/application/helpers/popularize_field.ts diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md index 4baf98038f89a..f81d03a28ec12 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md @@ -9,12 +9,12 @@ Constructs a new instance of the `IndexPattern` class Signature: ```typescript -constructor({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); +constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| { spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | +| { spec, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md index 325b97383e328..c07041470d102 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md @@ -14,7 +14,7 @@ export declare class IndexPattern implements IIndexPattern | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-public.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | +| [(constructor)({ spec, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-public.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | ## Properties @@ -53,7 +53,6 @@ export declare class IndexPattern implements IIndexPattern | [getTimeField()](./kibana-plugin-plugins-data-public.indexpattern.gettimefield.md) | | | | [isTimeBased()](./kibana-plugin-plugins-data-public.indexpattern.istimebased.md) | | | | [isTimeNanosBased()](./kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md) | | | -| [popularizeField(fieldName, unit)](./kibana-plugin-plugins-data-public.indexpattern.popularizefield.md) | | | | [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | | [toSpec()](./kibana-plugin-plugins-data-public.indexpattern.tospec.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.popularizefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.popularizefield.md deleted file mode 100644 index eba5382158520..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.popularizefield.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [popularizeField](./kibana-plugin-plugins-data-public.indexpattern.popularizefield.md) - -## IndexPattern.popularizeField() method - -Signature: - -```typescript -popularizeField(fieldName: string, unit?: number): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| unit | number | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md index af087344268d7..34df8656e9175 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md @@ -43,5 +43,5 @@ export declare class IndexPatternsService | [createAndSave(spec, override, skipFetchFields)](./kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md) | | Create a new index pattern and save it right away | | [createSavedObject(indexPattern, override)](./kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md) | | Save a new index pattern | | [delete(indexPatternId)](./kibana-plugin-plugins-data-public.indexpatternsservice.delete.md) | | Deletes an index pattern from .kibana index | -| [updateSavedObject(indexPattern, saveAttempts)](./kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md) | | Save existing index pattern. Will attempt to merge differences if there are conflicts | +| [updateSavedObject(indexPattern, saveAttempts, ignoreErrors)](./kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md) | | Save existing index pattern. Will attempt to merge differences if there are conflicts | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md index 3973f5d4c3e7b..5fc16c70de7ed 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md @@ -9,7 +9,7 @@ Save existing index pattern. Will attempt to merge differences if there are conf Signature: ```typescript -updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number): Promise; +updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; ``` ## Parameters @@ -18,6 +18,7 @@ updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number): PromiseIndexPattern | | | saveAttempts | number | | +| ignoreErrors | boolean | | Returns: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md index f7f8e51c4b632..22ee6f15933ea 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md @@ -9,12 +9,12 @@ Constructs a new instance of the `IndexPattern` class Signature: ```typescript -constructor({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); +constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| { spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | +| { spec, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md index e5a9e7d8f9f93..603864234d34b 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md @@ -14,7 +14,7 @@ export declare class IndexPattern implements IIndexPattern | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-server.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | +| [(constructor)({ spec, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-server.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | ## Properties @@ -53,7 +53,6 @@ export declare class IndexPattern implements IIndexPattern | [getTimeField()](./kibana-plugin-plugins-data-server.indexpattern.gettimefield.md) | | | | [isTimeBased()](./kibana-plugin-plugins-data-server.indexpattern.istimebased.md) | | | | [isTimeNanosBased()](./kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md) | | | -| [popularizeField(fieldName, unit)](./kibana-plugin-plugins-data-server.indexpattern.popularizefield.md) | | | | [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | | [toSpec()](./kibana-plugin-plugins-data-server.indexpattern.tospec.md) | | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.popularizefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.popularizefield.md deleted file mode 100644 index 8b2c9242a6256..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.popularizefield.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [popularizeField](./kibana-plugin-plugins-data-server.indexpattern.popularizefield.md) - -## IndexPattern.popularizeField() method - -Signature: - -```typescript -popularizeField(fieldName: string, unit?: number): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| unit | number | | - -Returns: - -`Promise` - diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts index bfb5fd9da56e6..a8d53223c06d1 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts @@ -89,7 +89,6 @@ describe('IndexPattern', () => { describe('api', () => { test('should have expected properties', () => { - expect(indexPattern).toHaveProperty('popularizeField'); expect(indexPattern).toHaveProperty('getScriptedFields'); expect(indexPattern).toHaveProperty('getNonScriptedFields'); expect(indexPattern).toHaveProperty('addScriptedField'); @@ -241,50 +240,4 @@ describe('IndexPattern', () => { expect(restoredPattern.fieldFormatMap.bytes instanceof MockFieldFormatter).toEqual(true); }); }); - - describe('popularizeField', () => { - test('should increment the popularity count by default', () => { - indexPattern.fields.forEach(async (field) => { - const oldCount = field.count || 0; - - await indexPattern.popularizeField(field.name); - - expect(field.count).toEqual(oldCount + 1); - }); - }); - - test('should increment the popularity count', () => { - indexPattern.fields.forEach(async (field) => { - const oldCount = field.count || 0; - const incrementAmount = 4; - - await indexPattern.popularizeField(field.name, incrementAmount); - - expect(field.count).toEqual(oldCount + incrementAmount); - }); - }); - - test('should decrement the popularity count', () => { - indexPattern.fields.forEach(async (field) => { - const oldCount = field.count || 0; - const incrementAmount = 4; - const decrementAmount = -2; - - await indexPattern.popularizeField(field.name, incrementAmount); - await indexPattern.popularizeField(field.name, decrementAmount); - - expect(field.count).toEqual(oldCount + incrementAmount + decrementAmount); - }); - }); - - test('should not go below 0', () => { - indexPattern.fields.forEach(async (field) => { - const decrementAmount = -Number.MAX_VALUE; - - await indexPattern.popularizeField(field.name, decrementAmount); - - expect(field.count).toEqual(0); - }); - }); - }); }); diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts index e880c3a9ff825..5fc6344c935d5 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts @@ -74,7 +74,6 @@ export class IndexPattern implements IIndexPattern { public metaFields: string[]; // savedObject version public version: string | undefined; - private savedObjectsClient: SavedObjectsClientCommon; public sourceFilters?: SourceFilter[]; private originalSavedObjectBody: SavedObjectBody = {}; private shortDotsEnable: boolean = false; @@ -82,13 +81,11 @@ export class IndexPattern implements IIndexPattern { constructor({ spec = {}, - savedObjectsClient, fieldFormats, shortDotsEnable = false, metaFields = [], }: IndexPatternDeps) { // set dependencies - this.savedObjectsClient = savedObjectsClient; this.fieldFormats = fieldFormats; // set config this.shortDotsEnable = shortDotsEnable; @@ -267,39 +264,6 @@ export class IndexPattern implements IIndexPattern { } } - async popularizeField(fieldName: string, unit = 1) { - /** - * This function is just used by Discover and it's high likely to be removed in the near future - * It doesn't use the save function to skip the error message that's displayed when - * a user adds several columns in a higher frequency that the changes can be persisted to ES - * resulting in 409 errors - */ - if (!this.id) return; - const field = this.fields.getByName(fieldName); - if (!field) { - return; - } - const count = Math.max((field.count || 0) + unit, 0); - if (field.count === count) { - return; - } - field.count = count; - - try { - const res = await this.savedObjectsClient.update( - 'index-pattern', - this.id, - this.getAsSavedObjectBody(), - { - version: this.version, - } - ); - this.version = res.version; - } catch (e) { - // no need for an error message here - } - } - getNonScriptedFields() { return [...this.fields.getAll().filter((field) => !field.scripted)]; } diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts index eef8ef10ea754..9a86541376cd8 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts @@ -516,7 +516,8 @@ export class IndexPatternsService { async updateSavedObject( indexPattern: IndexPattern, - saveAttempts: number = 0 + saveAttempts: number = 0, + ignoreErrors: boolean = false ): Promise { if (!indexPattern.id) return; @@ -567,6 +568,9 @@ export class IndexPatternsService { } if (unresolvedCollision) { + if (ignoreErrors) { + return; + } const title = i18n.translate('data.indexPatterns.unableWriteLabel', { defaultMessage: 'Unable to write index pattern! Refresh the page to get the most up to date changes for this index pattern.', @@ -586,7 +590,7 @@ export class IndexPatternsService { indexPatternCache.clear(indexPattern.id!); // Try the save again - return this.updateSavedObject(indexPattern, saveAttempts); + return this.updateSavedObject(indexPattern, saveAttempts, ignoreErrors); } throw err; }); diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 947ba8224625f..b8eb7a556ac44 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -1086,7 +1086,7 @@ export type IMetricAggType = MetricAggType; // @public (undocumented) export class IndexPattern implements IIndexPattern { // Warning: (ae-forgotten-export) The symbol "IndexPatternDeps" needs to be exported by the entry point index.d.ts - constructor({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); + constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); addScriptedField(name: string, script: string, fieldType?: string): Promise; // (undocumented) fieldFormatMap: Record; @@ -1163,8 +1163,6 @@ export class IndexPattern implements IIndexPattern { isTimeNanosBased(): boolean; // (undocumented) metaFields: string[]; - // (undocumented) - popularizeField(fieldName: string, unit?: number): Promise; removeScriptedField(fieldName: string): void; resetOriginalSavedObjectBody: () => void; // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts @@ -1386,7 +1384,7 @@ export class IndexPatternsService { refreshFields: (indexPattern: IndexPattern) => Promise; savedObjectToSpec: (savedObject: SavedObject) => IndexPatternSpec; setDefault: (id: string, force?: boolean) => Promise; - updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number): Promise; + updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; } // Warning: (ae-missing-release-tag) "TypeMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index ae5159e7882d5..fed0c1a02297e 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -502,7 +502,7 @@ export type IMetricAggType = MetricAggType; // @public (undocumented) export class IndexPattern implements IIndexPattern { // Warning: (ae-forgotten-export) The symbol "IndexPatternDeps" needs to be exported by the entry point index.d.ts - constructor({ spec, savedObjectsClient, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); + constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); addScriptedField(name: string, script: string, fieldType?: string): Promise; // (undocumented) fieldFormatMap: Record; @@ -583,8 +583,6 @@ export class IndexPattern implements IIndexPattern { isTimeNanosBased(): boolean; // (undocumented) metaFields: string[]; - // (undocumented) - popularizeField(fieldName: string, unit?: number): Promise; removeScriptedField(fieldName: string): void; resetOriginalSavedObjectBody: () => void; // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/discover/public/application/angular/context/query_parameters/actions.js b/src/plugins/discover/public/application/angular/context/query_parameters/actions.js index fcd4b8ac02cfb..cdf9283737226 100644 --- a/src/plugins/discover/public/application/angular/context/query_parameters/actions.js +++ b/src/plugins/discover/public/application/angular/context/query_parameters/actions.js @@ -19,6 +19,7 @@ import _ from 'lodash'; import { esFilters } from '../../../../../../data/public'; +import { popularizeField } from '../../../helpers/popularize_field'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE, QUERY_PARAMETER_KEYS } from './constants'; @@ -56,7 +57,7 @@ export function getQueryParameterActions(filterManager, indexPatterns) { filterManager.addFilters(newFilters); if (indexPatterns) { const indexPattern = await indexPatterns.get(indexPatternId); - indexPattern.popularizeField(field.name, 1); + await popularizeField(indexPattern, field.name, indexPatterns); } }; diff --git a/src/plugins/discover/public/application/angular/context_app.js b/src/plugins/discover/public/application/angular/context_app.js index f698ed84a8948..145d3afe23224 100644 --- a/src/plugins/discover/public/application/angular/context_app.js +++ b/src/plugins/discover/public/application/angular/context_app.js @@ -56,8 +56,8 @@ getAngularModule().directive('contextApp', function ContextApp() { }); function ContextAppController($scope, Private) { - const { filterManager, indexpatterns, uiSettings } = getServices(); - const queryParameterActions = getQueryParameterActions(filterManager, indexpatterns); + const { filterManager, indexPatterns, uiSettings } = getServices(); + const queryParameterActions = getQueryParameterActions(filterManager, indexPatterns); const queryActions = Private(QueryActionsProvider); this.state = createInitialState( parseInt(uiSettings.get(CONTEXT_STEP_SETTING), 10), diff --git a/src/plugins/discover/public/application/angular/discover.js b/src/plugins/discover/public/application/angular/discover.js index a396033e5dedb..92b96d11723e0 100644 --- a/src/plugins/discover/public/application/angular/discover.js +++ b/src/plugins/discover/public/application/angular/discover.js @@ -70,6 +70,7 @@ const { import { getRootBreadcrumbs, getSavedSearchBreadcrumbs } from '../helpers/breadcrumbs'; import { validateTimeRange } from '../helpers/validate_time_range'; +import { popularizeField } from '../helpers/popularize_field'; import { getIndexPatternId } from '../helpers/get_index_pattern_id'; import { addFatalError } from '../../../../kibana_legacy/public'; @@ -952,7 +953,9 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise // TODO: On array fields, negating does not negate the combination, rather all terms $scope.filterQuery = function (field, values, operation) { - $scope.indexPattern.popularizeField(field, 1); + const { indexPattern } = $scope; + + popularizeField(indexPattern, field.name, indexPatterns); const newFilters = esFilters.generateFilters( filterManager, field, @@ -965,7 +968,8 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise $scope.addColumn = function addColumn(columnName) { if (uiCapabilities.discover.save) { - $scope.indexPattern.popularizeField(columnName, 1); + const { indexPattern } = $scope; + popularizeField(indexPattern, columnName, indexPatterns); } const columns = columnActions.addColumn($scope.state.columns, columnName); setAppState({ columns }); @@ -973,7 +977,8 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise $scope.removeColumn = function removeColumn(columnName) { if (uiCapabilities.discover.save) { - $scope.indexPattern.popularizeField(columnName, 1); + const { indexPattern } = $scope; + popularizeField(indexPattern, columnName, indexPatterns); } const columns = columnActions.removeColumn($scope.state.columns, columnName); // The state's sort property is an array of [sortByColumn,sortDirection] diff --git a/src/plugins/discover/public/application/embeddable/search_embeddable.ts b/src/plugins/discover/public/application/embeddable/search_embeddable.ts index 1de62fe5a0348..af88cacfcf992 100644 --- a/src/plugins/discover/public/application/embeddable/search_embeddable.ts +++ b/src/plugins/discover/public/application/embeddable/search_embeddable.ts @@ -221,7 +221,6 @@ export class SearchEmbeddable if (!searchScope.columns) { return; } - indexPattern.popularizeField(columnName, 1); const columns = columnActions.addColumn(searchScope.columns, columnName); this.updateInput({ columns }); }; diff --git a/src/plugins/discover/public/application/helpers/popularize_field.test.ts b/src/plugins/discover/public/application/helpers/popularize_field.test.ts new file mode 100644 index 0000000000000..f1ff67c23b92b --- /dev/null +++ b/src/plugins/discover/public/application/helpers/popularize_field.test.ts @@ -0,0 +1,82 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IndexPattern, IndexPatternsService } from '../../../../data/public'; +import { popularizeField } from './popularize_field'; + +describe('Popularize field', () => { + test('returns undefined if index pattern lacks id', async () => { + const indexPattern = ({} as unknown) as IndexPattern; + const fieldName = '@timestamp'; + const indexPatternsService = ({} as unknown) as IndexPatternsService; + const result = await popularizeField(indexPattern, fieldName, indexPatternsService); + expect(result).toBeUndefined(); + }); + + test('returns undefined if field not found', async () => { + const indexPattern = ({ + fields: { + getByName: () => {}, + }, + } as unknown) as IndexPattern; + const fieldName = '@timestamp'; + const indexPatternsService = ({} as unknown) as IndexPatternsService; + const result = await popularizeField(indexPattern, fieldName, indexPatternsService); + expect(result).toBeUndefined(); + }); + + test('returns undefined if successful', async () => { + const field = { + count: 0, + }; + const indexPattern = ({ + id: 'id', + fields: { + getByName: () => field, + }, + } as unknown) as IndexPattern; + const fieldName = '@timestamp'; + const indexPatternsService = ({ + updateSavedObject: async () => {}, + } as unknown) as IndexPatternsService; + const result = await popularizeField(indexPattern, fieldName, indexPatternsService); + expect(result).toBeUndefined(); + expect(field.count).toEqual(1); + }); + + test('hides errors', async () => { + const field = { + count: 0, + }; + const indexPattern = ({ + id: 'id', + fields: { + getByName: () => field, + }, + } as unknown) as IndexPattern; + const fieldName = '@timestamp'; + const indexPatternsService = ({ + updateSavedObject: async () => { + throw new Error('unknown error'); + }, + } as unknown) as IndexPatternsService; + const result = await popularizeField(indexPattern, fieldName, indexPatternsService); + expect(result).toBeUndefined(); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/popularize_field.ts b/src/plugins/discover/public/application/helpers/popularize_field.ts new file mode 100644 index 0000000000000..0aea86e47c954 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/popularize_field.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IndexPattern, IndexPatternsService } from '../../../../data/public'; + +async function popularizeField( + indexPattern: IndexPattern, + fieldName: string, + indexPatternsService: IndexPatternsService +) { + if (!indexPattern.id) return; + const field = indexPattern.fields.getByName(fieldName); + if (!field) { + return; + } + + field.count++; + // Catch 409 errors caused by user adding columns in a higher frequency that the changes can be persisted to Elasticsearch + try { + await indexPatternsService.updateSavedObject(indexPattern, 0, true); + // eslint-disable-next-line no-empty + } catch {} +} + +export { popularizeField }; From 4c4d28ad3566e57bceb398ad3e0ed0bb6f0a0543 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 29 Sep 2020 21:59:11 -0700 Subject: [PATCH 095/119] delete target before building (#78665) Co-authored-by: spalger --- packages/kbn-es-archiver/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kbn-es-archiver/package.json b/packages/kbn-es-archiver/package.json index 13b5662519b19..81c1747bb2727 100644 --- a/packages/kbn-es-archiver/package.json +++ b/packages/kbn-es-archiver/package.json @@ -4,8 +4,8 @@ "license": "Apache-2.0", "main": "target/index.js", "scripts": { - "kbn:bootstrap": "tsc", - "kbn:watch": "tsc --watch" + "kbn:bootstrap": "rm -rf target && tsc", + "kbn:watch": "rm -rf target && tsc --watch" }, "dependencies": { "@kbn/dev-utils": "1.0.0", From 353595617bf21254548fe113a4766c57e6acd44c Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 29 Sep 2020 22:14:59 -0700 Subject: [PATCH 096/119] [kbn/ui-shared-deps] track asset sizes (#78718) Co-authored-by: spalger Co-authored-by: Elastic Machine --- packages/kbn-ui-shared-deps/scripts/build.js | 45 ++++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/packages/kbn-ui-shared-deps/scripts/build.js b/packages/kbn-ui-shared-deps/scripts/build.js index af4e3481e624d..86251536b8876 100644 --- a/packages/kbn-ui-shared-deps/scripts/build.js +++ b/packages/kbn-ui-shared-deps/scripts/build.js @@ -18,18 +18,21 @@ */ const Path = require('path'); +const Fs = require('fs'); -const { run, createFailError } = require('@kbn/dev-utils'); +const { run, createFailError, CiStatsReporter } = require('@kbn/dev-utils'); const webpack = require('webpack'); const Stats = require('webpack/lib/Stats'); const del = require('del'); const { getWebpackConfig } = require('../webpack.config'); +const DIST_DIR = Path.resolve(__dirname, '../target'); + run( async ({ log, flags }) => { log.info('cleaning previous build output'); - await del(Path.resolve(__dirname, '../target')); + await del(DIST_DIR); const compiler = webpack( getWebpackConfig({ @@ -38,10 +41,38 @@ run( ); /** @param {webpack.Stats} stats */ - const onCompilationComplete = (stats) => { + const onCompilationComplete = async (stats) => { const took = Math.round((stats.endTime - stats.startTime) / 1000); if (!stats.hasErrors() && !stats.hasWarnings()) { + if (!flags.dev) { + const reporter = CiStatsReporter.fromEnv(log); + + const metrics = [ + { + group: '@kbn/ui-shared-deps asset size', + id: 'kbn-ui-shared-deps.js', + value: Fs.statSync(Path.resolve(DIST_DIR, 'kbn-ui-shared-deps.js')).size, + }, + { + group: '@kbn/ui-shared-deps asset size', + id: 'kbn-ui-shared-deps.@elastic.js', + value: Fs.statSync(Path.resolve(DIST_DIR, 'kbn-ui-shared-deps.@elastic.js')).size, + }, + { + group: '@kbn/ui-shared-deps asset size', + id: 'css', + value: + Fs.statSync(Path.resolve(DIST_DIR, 'kbn-ui-shared-deps.css')).size + + Fs.statSync(Path.resolve(DIST_DIR, 'kbn-ui-shared-deps.v7.light.css')).size, + }, + ]; + + log.debug('metrics:', metrics); + + await reporter.metrics(metrics); + } + log.success(`webpack completed in about ${took} seconds`); return; } @@ -56,11 +87,9 @@ run( if (flags.watch) { compiler.hooks.done.tap('report on stats', (stats) => { - try { - onCompilationComplete(stats); - } catch (error) { + onCompilationComplete(stats).catch((error) => { log.error(error.message); - } + }); }); compiler.hooks.watchRun.tap('report on start', () => { @@ -83,7 +112,7 @@ run( return; } - onCompilationComplete( + await onCompilationComplete( await new Promise((resolve, reject) => { compiler.run((error, stats) => { if (error) { From 03c0d874592e76f668c260c7c31e8e3520d43f1e Mon Sep 17 00:00:00 2001 From: Diana Derevyankina <54894989+DziyanaDzeraviankina@users.noreply.github.com> Date: Wed, 30 Sep 2020 09:22:08 +0300 Subject: [PATCH 097/119] [TSVB] No data in visualizations with annotations (#78794) Closes #78789 --- .../vis_type_timeseries/server/lib/vis_data/get_annotations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_annotations.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_annotations.js index d8a230dfeef4e..32109e99ab17e 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_annotations.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_annotations.js @@ -55,7 +55,7 @@ export async function getAnnotations({ if (!searches.length) return { responses: [] }; try { - const data = await searchStrategy.search(req.framework.core, req.requestContext, searches); + const data = await searchStrategy.search(req, searches); return annotations.reduce((acc, annotation, index) => { acc[annotation.id] = handleAnnotationResponseBy(data[index].rawResponse, annotation); From 108a2302cd0bd71e5e0128cad4c20ede8f224235 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Wed, 30 Sep 2020 10:02:16 +0300 Subject: [PATCH 098/119] [Functional] Wait for the page to load and then click the new vis button (#78725) --- test/functional/page_objects/visualize_page.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 92692767b096d..6d94c3e581d6c 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -70,6 +70,7 @@ export function VisualizePageProvider({ getService, getPageObjects }: FtrProvide public async navigateToNewVisualization() { await common.navigateToApp('visualize'); + await header.waitUntilLoadingHasFinished(); await this.clickNewVisualization(); await this.waitForVisualizationSelectPage(); } From 8e523edcd67782c89e7eedfa8dc66984b3a0ac1c Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Wed, 30 Sep 2020 09:10:28 +0200 Subject: [PATCH 099/119] expression service docs (#78774) --- docs/developer/plugin-list.asciidoc | 17 +- .../plugins/expressions/public/index.md | 12 + ...-public.anyexpressionfunctiondefinition.md | 13 + ...ions-public.anyexpressiontypedefinition.md | 11 + ...plugins-expressions-public.argumenttype.md | 13 + ...gins-expressions-public.buildexpression.md | 24 + ...ressions-public.buildexpressionfunction.md | 30 + ...ns-expressions-public.datatable.columns.md | 11 + ...in-plugins-expressions-public.datatable.md | 22 + ...ugins-expressions-public.datatable.rows.md | 11 + ...ugins-expressions-public.datatable.type.md | 11 + ...s-expressions-public.datatablecolumn.id.md | 11 + ...gins-expressions-public.datatablecolumn.md | 22 + ...expressions-public.datatablecolumn.meta.md | 11 + ...expressions-public.datatablecolumn.name.md | 11 + ...-expressions-public.datatablecolumntype.md | 13 + ...plugins-expressions-public.datatablerow.md | 13 + ...ressions-public.execution._constructor_.md | 20 + ...ins-expressions-public.execution.cancel.md | 17 + ...ugins-expressions-public.execution.cast.md | 23 + ...ns-expressions-public.execution.context.md | 13 + ...s-expressions-public.execution.contract.md | 13 + ...expressions-public.execution.expression.md | 11 + ...gins-expressions-public.execution.input.md | 15 + ...ions-public.execution.inspectoradapters.md | 11 + ...-expressions-public.execution.interpret.md | 24 + ...xpressions-public.execution.invokechain.md | 23 + ...essions-public.execution.invokefunction.md | 24 + ...in-plugins-expressions-public.execution.md | 43 + ...ins-expressions-public.execution.params.md | 11 + ...xpressions-public.execution.resolveargs.md | 24 + ...ins-expressions-public.execution.result.md | 11 + ...gins-expressions-public.execution.start.md | 26 + ...gins-expressions-public.execution.state.md | 13 + ...s-expressions-public.executioncontainer.md | 11 + ...ons-public.executioncontext.abortsignal.md | 13 + ...public.executioncontext.getinitialinput.md | 13 + ...-public.executioncontext.getsavedobject.md | 13 + ...blic.executioncontext.inspectoradapters.md | 13 + ...ins-expressions-public.executioncontext.md | 26 + ...ressions-public.executioncontext.search.md | 13 + ...pressions-public.executioncontext.types.md | 13 + ...sions-public.executioncontext.variables.md | 13 + ...-public.executioncontract._constructor_.md | 20 + ...essions-public.executioncontract.cancel.md | 13 + ...ions-public.executioncontract.execution.md | 11 + ...essions-public.executioncontract.getast.md | 13 + ...ssions-public.executioncontract.getdata.md | 13 + ...-public.executioncontract.getexpression.md | 13 + ...ssions-public.executioncontract.inspect.md | 13 + ...ions-public.executioncontract.ispending.md | 11 + ...ns-expressions-public.executioncontract.md | 32 + ...-expressions-public.executionparams.ast.md | 11 + ...ressions-public.executionparams.context.md | 11 + ...xpressions-public.executionparams.debug.md | 13 + ...essions-public.executionparams.executor.md | 11 + ...sions-public.executionparams.expression.md | 11 + ...gins-expressions-public.executionparams.md | 22 + ...s-expressions-public.executionstate.ast.md | 11 + ...expressions-public.executionstate.error.md | 13 + ...ugins-expressions-public.executionstate.md | 21 + ...xpressions-public.executionstate.result.md | 13 + ...expressions-public.executionstate.state.md | 15 + ...pressions-public.executor._constructor_.md | 20 + ...ins-expressions-public.executor.context.md | 11 + ...essions-public.executor.createexecution.md | 24 + ...ions-public.executor.createwithdefaults.md | 22 + ...pressions-public.executor.extendcontext.md | 22 + ...lugins-expressions-public.executor.fork.md | 15 + ...s-expressions-public.executor.functions.md | 15 + ...expressions-public.executor.getfunction.md | 22 + ...xpressions-public.executor.getfunctions.md | 15 + ...ins-expressions-public.executor.gettype.md | 22 + ...ns-expressions-public.executor.gettypes.md | 15 + ...gin-plugins-expressions-public.executor.md | 43 + ...ssions-public.executor.registerfunction.md | 22 + ...xpressions-public.executor.registertype.md | 22 + ...plugins-expressions-public.executor.run.md | 26 + ...ugins-expressions-public.executor.state.md | 11 + ...ugins-expressions-public.executor.types.md | 15 + ...ns-expressions-public.executorcontainer.md | 11 + ...xpressions-public.executorstate.context.md | 11 + ...ressions-public.executorstate.functions.md | 11 + ...lugins-expressions-public.executorstate.md | 20 + ...-expressions-public.executorstate.types.md | 11 + ...xpressions-public.expressionastargument.md | 11 + ...ns-public.expressionastexpression.chain.md | 11 + ...ressions-public.expressionastexpression.md | 19 + ...ons-public.expressionastexpression.type.md | 11 + ...essionastexpressionbuilder.findfunction.md | 15 + ...xpressionastexpressionbuilder.functions.md | 13 + ...s-public.expressionastexpressionbuilder.md | 22 + ...ic.expressionastexpressionbuilder.toast.md | 15 + ...expressionastexpressionbuilder.tostring.md | 15 + ...lic.expressionastexpressionbuilder.type.md | 13 + ...-public.expressionastfunction.arguments.md | 11 + ...ions-public.expressionastfunction.debug.md | 13 + ...s-public.expressionastfunction.function.md | 11 + ...xpressions-public.expressionastfunction.md | 21 + ...sions-public.expressionastfunction.type.md | 11 + ...xpressionastfunctionbuilder.addargument.md | 13 + ....expressionastfunctionbuilder.arguments.md | 13 + ...xpressionastfunctionbuilder.getargument.md | 13 + ...ons-public.expressionastfunctionbuilder.md | 26 + ...ublic.expressionastfunctionbuilder.name.md | 13 + ...essionastfunctionbuilder.removeargument.md | 15 + ...ssionastfunctionbuilder.replaceargument.md | 13 + ...blic.expressionastfunctionbuilder.toast.md | 15 + ...c.expressionastfunctionbuilder.tostring.md | 15 + ...ublic.expressionastfunctionbuilder.type.md | 13 + ...ns-expressions-public.expressionastnode.md | 11 + ...s-public.expressionexecutor.interpreter.md | 11 + ...s-expressions-public.expressionexecutor.md | 23 + ...public.expressionfunction._constructor_.md | 20 + ...sions-public.expressionfunction.accepts.md | 11 + ...sions-public.expressionfunction.aliases.md | 13 + ...ressions-public.expressionfunction.args.md | 13 + ...xpressions-public.expressionfunction.fn.md | 13 + ...ressions-public.expressionfunction.help.md | 13 + ...ns-public.expressionfunction.inputtypes.md | 13 + ...s-expressions-public.expressionfunction.md | 31 + ...ressions-public.expressionfunction.name.md | 13 + ...ressions-public.expressionfunction.type.md | 13 + ...ic.expressionfunctiondefinition.aliases.md | 13 + ...ublic.expressionfunctiondefinition.args.md | 15 + ...ic.expressionfunctiondefinition.context.md | 18 + ...-public.expressionfunctiondefinition.fn.md | 26 + ...ublic.expressionfunctiondefinition.help.md | 13 + ...expressionfunctiondefinition.inputtypes.md | 13 + ...ons-public.expressionfunctiondefinition.md | 32 + ...ublic.expressionfunctiondefinition.name.md | 13 + ...ublic.expressionfunctiondefinition.type.md | 13 + ...blic.expressionfunctiondefinitions.clog.md | 11 + ...blic.expressionfunctiondefinitions.font.md | 11 + ...ic.expressionfunctiondefinitions.kibana.md | 11 + ...ssionfunctiondefinitions.kibana_context.md | 11 + ...ns-public.expressionfunctiondefinitions.md | 26 + ...lic.expressionfunctiondefinitions.theme.md | 11 + ...ublic.expressionfunctiondefinitions.var.md | 11 + ...c.expressionfunctiondefinitions.var_set.md | 11 + ...essions-public.expressionfunctionkibana.md | 11 + ...pressionfunctionparameter._constructor_.md | 21 + ...lic.expressionfunctionparameter.accepts.md | 22 + ...lic.expressionfunctionparameter.aliases.md | 11 + ...lic.expressionfunctionparameter.default.md | 11 + ...public.expressionfunctionparameter.help.md | 11 + ...ions-public.expressionfunctionparameter.md | 38 + ...ublic.expressionfunctionparameter.multi.md | 11 + ...public.expressionfunctionparameter.name.md | 11 + ...lic.expressionfunctionparameter.options.md | 11 + ...ic.expressionfunctionparameter.required.md | 11 + ...lic.expressionfunctionparameter.resolve.md | 11 + ...ublic.expressionfunctionparameter.types.md | 11 + ...ressions-public.expressionimage.dataurl.md | 11 + ...gins-expressions-public.expressionimage.md | 20 + ...expressions-public.expressionimage.mode.md | 11 + ...expressions-public.expressionimage.type.md | 11 + ....expressionrenderdefinition.displayname.md | 13 + ...-public.expressionrenderdefinition.help.md | 13 + ...sions-public.expressionrenderdefinition.md | 23 + ...-public.expressionrenderdefinition.name.md | 13 + ...ublic.expressionrenderdefinition.render.md | 13 + ...expressionrenderdefinition.reusedomnode.md | 13 + ...lic.expressionrenderdefinition.validate.md | 13 + ...public.expressionrenderer._constructor_.md | 20 + ...s-public.expressionrenderer.displayname.md | 11 + ...ressions-public.expressionrenderer.help.md | 11 + ...s-expressions-public.expressionrenderer.md | 29 + ...ressions-public.expressionrenderer.name.md | 11 + ...ssions-public.expressionrenderer.render.md | 11 + ...-public.expressionrenderer.reusedomnode.md | 11 + ...ions-public.expressionrenderer.validate.md | 11 + ...ions-public.expressionrenderercomponent.md | 11 + ...ons-public.expressionrendererevent.data.md | 11 + ...ressions-public.expressionrendererevent.md | 19 + ...ons-public.expressionrendererevent.name.md | 11 + ...s-public.expressionrendererregistry.get.md | 22 + ...sions-public.expressionrendererregistry.md | 21 + ...lic.expressionrendererregistry.register.md | 22 + ...blic.expressionrendererregistry.toarray.md | 15 + ...-public.expressionrendererregistry.tojs.md | 15 + ...xpressions-public.expressionrendererror.md | 18 + ...sions-public.expressionrendererror.type.md | 11 + ...c.expressionrenderhandler._constructor_.md | 21 + ...-public.expressionrenderhandler.destroy.md | 11 + ...-public.expressionrenderhandler.events_.md | 11 + ...blic.expressionrenderhandler.getelement.md | 11 + ...pressionrenderhandler.handlerendererror.md | 11 + ...ressions-public.expressionrenderhandler.md | 30 + ...s-public.expressionrenderhandler.render.md | 11 + ...-public.expressionrenderhandler.render_.md | 11 + ...-public.expressionrenderhandler.update_.md | 11 + ...c.expressionspublicplugin._constructor_.md | 20 + ...ressions-public.expressionspublicplugin.md | 26 + ...ns-public.expressionspublicplugin.setup.md | 22 + ...ns-public.expressionspublicplugin.start.md | 22 + ...ons-public.expressionspublicplugin.stop.md | 15 + ...public.expressionsservice._constructor_.md | 20 + ...sions-public.expressionsservice.execute.md | 11 + ...ions-public.expressionsservice.executor.md | 11 + ...ressions-public.expressionsservice.fork.md | 11 + ...s-public.expressionsservice.getfunction.md | 11 + ...-public.expressionsservice.getfunctions.md | 13 + ...s-public.expressionsservice.getrenderer.md | 11 + ...-public.expressionsservice.getrenderers.md | 13 + ...sions-public.expressionsservice.gettype.md | 11 + ...ions-public.expressionsservice.gettypes.md | 13 + ...s-expressions-public.expressionsservice.md | 72 + ...lic.expressionsservice.registerfunction.md | 35 + ...lic.expressionsservice.registerrenderer.md | 11 + ...-public.expressionsservice.registertype.md | 11 + ...ons-public.expressionsservice.renderers.md | 11 + ...pressions-public.expressionsservice.run.md | 11 + ...essions-public.expressionsservice.setup.md | 17 + ...essions-public.expressionsservice.start.md | 17 + ...ressions-public.expressionsservice.stop.md | 15 + ...ressions-public.expressionsservicesetup.md | 13 + ...-public.expressionsservicestart.execute.md | 13 + ...ons-public.expressionsservicestart.fork.md | 13 + ...lic.expressionsservicestart.getfunction.md | 13 + ...lic.expressionsservicestart.getrenderer.md | 13 + ...-public.expressionsservicestart.gettype.md | 13 + ...ressions-public.expressionsservicestart.md | 35 + ...ions-public.expressionsservicestart.run.md | 28 + ...ins-expressions-public.expressionssetup.md | 13 + ...ublic.expressionsstart.expressionloader.md | 11 + ...xpressionsstart.expressionrenderhandler.md | 11 + ...ressions-public.expressionsstart.loader.md | 11 + ...ins-expressions-public.expressionsstart.md | 24 + ...xpressionsstart.reactexpressionrenderer.md | 11 + ...ressions-public.expressionsstart.render.md | 11 + ...ons-public.expressiontype._constructor_.md | 20 + ...essions-public.expressiontype.castsfrom.md | 11 + ...pressions-public.expressiontype.caststo.md | 11 + ...xpressions-public.expressiontype.create.md | 11 + ...sions-public.expressiontype.deserialize.md | 11 + ...-expressions-public.expressiontype.from.md | 11 + ...essions-public.expressiontype.getfromfn.md | 11 + ...pressions-public.expressiontype.gettofn.md | 11 + ...-expressions-public.expressiontype.help.md | 13 + ...ugins-expressions-public.expressiontype.md | 35 + ...-expressions-public.expressiontype.name.md | 11 + ...essions-public.expressiontype.serialize.md | 13 + ...ns-expressions-public.expressiontype.to.md | 11 + ...ressions-public.expressiontype.validate.md | 13 + ...ic.expressiontypedefinition.deserialize.md | 11 + ...ns-public.expressiontypedefinition.from.md | 13 + ...ns-public.expressiontypedefinition.help.md | 11 + ...essions-public.expressiontypedefinition.md | 26 + ...ns-public.expressiontypedefinition.name.md | 11 + ...blic.expressiontypedefinition.serialize.md | 11 + ...ions-public.expressiontypedefinition.to.md | 13 + ...ublic.expressiontypedefinition.validate.md | 11 + ...ressions-public.expressiontypestyle.css.md | 11 + ...-expressions-public.expressiontypestyle.md | 22 + ...essions-public.expressiontypestyle.spec.md | 11 + ...essions-public.expressiontypestyle.type.md | 11 + ...gins-expressions-public.expressionvalue.md | 11 + ...expressions-public.expressionvalueboxed.md | 13 + ...essions-public.expressionvalueconverter.md | 11 + ...expressions-public.expressionvalueerror.md | 20 + ...xpressions-public.expressionvaluefilter.md | 21 + ...s-expressions-public.expressionvaluenum.md | 13 + ...xpressions-public.expressionvaluerender.md | 16 + ...ons-public.expressionvaluesearchcontext.md | 11 + ...pressions-public.expressionvalueunboxed.md | 11 + ...n-plugins-expressions-public.font.label.md | 11 + ...-plugin-plugins-expressions-public.font.md | 21 + ...n-plugins-expressions-public.font.value.md | 11 + ...in-plugins-expressions-public.fontlabel.md | 13 + ...in-plugins-expressions-public.fontstyle.md | 21 + ...in-plugins-expressions-public.fontvalue.md | 13 + ...n-plugins-expressions-public.fontweight.md | 32 + ...lugin-plugins-expressions-public.format.md | 23 + ...ins-expressions-public.formatexpression.md | 24 + ...-public.functionsregistry._constructor_.md | 20 + ...xpressions-public.functionsregistry.get.md | 22 + ...ns-expressions-public.functionsregistry.md | 27 + ...sions-public.functionsregistry.register.md | 22 + ...ssions-public.functionsregistry.toarray.md | 15 + ...pressions-public.functionsregistry.tojs.md | 15 + ...-public.iexpressionloaderparams.context.md | 11 + ...iexpressionloaderparams.customfunctions.md | 11 + ...iexpressionloaderparams.customrenderers.md | 11 + ....iexpressionloaderparams.disablecaching.md | 11 + ...xpressionloaderparams.inspectoradapters.md | 11 + ...ressions-public.iexpressionloaderparams.md | 26 + ...c.iexpressionloaderparams.onrendererror.md | 11 + ...c.iexpressionloaderparams.searchcontext.md | 11 + ...-public.iexpressionloaderparams.uistate.md | 11 + ...ublic.iexpressionloaderparams.variables.md | 11 + ...-public.iinterpreterrenderhandlers.done.md | 13 + ...public.iinterpreterrenderhandlers.event.md | 11 + ...sions-public.iinterpreterrenderhandlers.md | 22 + ...ic.iinterpreterrenderhandlers.ondestroy.md | 11 + ...ublic.iinterpreterrenderhandlers.reload.md | 11 + ...ublic.iinterpreterrenderhandlers.update.md | 11 + ...expressions-public.interpretererrortype.md | 16 + ...lugins-expressions-public.iregistry.get.md | 22 + ...in-plugins-expressions-public.iregistry.md | 20 + ...ns-expressions-public.iregistry.toarray.md | 15 + ...ugins-expressions-public.iregistry.tojs.md | 15 + ...pressions-public.isexpressionastbuilder.md | 28 + ...-expressions-public.kibana_context_name.md | 11 + ...lugins-expressions-public.kibanacontext.md | 11 + ...ressions-public.kibanadatatable.columns.md | 11 + ...gins-expressions-public.kibanadatatable.md | 20 + ...expressions-public.kibanadatatable.rows.md | 11 + ...expressions-public.kibanadatatable.type.md | 11 + ...public.kibanadatatablecolumn.formathint.md | 11 + ...essions-public.kibanadatatablecolumn.id.md | 11 + ...xpressions-public.kibanadatatablecolumn.md | 21 + ...sions-public.kibanadatatablecolumn.meta.md | 11 + ...sions-public.kibanadatatablecolumn.name.md | 11 + ...banadatatablecolumnmeta.aggconfigparams.md | 11 + ...ibanadatatablecolumnmeta.indexpatternid.md | 11 + ...ssions-public.kibanadatatablecolumnmeta.md | 20 + ...s-public.kibanadatatablecolumnmeta.type.md | 11 + ...s-expressions-public.kibanadatatablerow.md | 11 + ...ns-expressions-public.knowntypetostring.md | 17 + ...ibana-plugin-plugins-expressions-public.md | 134 ++ ...gin-plugins-expressions-public.overflow.md | 23 + ...plugin-plugins-expressions-public.parse.md | 23 + ...gins-expressions-public.parseexpression.md | 24 + ...lugin-plugins-expressions-public.plugin.md | 22 + ...-plugins-expressions-public.pointseries.md | 16 + ...ons-public.pointseriescolumn.expression.md | 11 + ...ns-expressions-public.pointseriescolumn.md | 22 + ...pressions-public.pointseriescolumn.role.md | 11 + ...pressions-public.pointseriescolumn.type.md | 11 + ...xpressions-public.pointseriescolumnname.md | 13 + ...s-expressions-public.pointseriescolumns.md | 13 + ...ugins-expressions-public.pointseriesrow.md | 11 + ...n-plugins-expressions-public.range.from.md | 11 + ...plugin-plugins-expressions-public.range.md | 20 + ...gin-plugins-expressions-public.range.to.md | 11 + ...n-plugins-expressions-public.range.type.md | 11 + ...ressions-public.reactexpressionrenderer.md | 11 + ....reactexpressionrendererprops.classname.md | 11 + ....reactexpressionrendererprops.dataattrs.md | 11 + ...reactexpressionrendererprops.expression.md | 11 + ...ons-public.reactexpressionrendererprops.md | 24 + ...ic.reactexpressionrendererprops.onevent.md | 11 + ...ic.reactexpressionrendererprops.padding.md | 11 + ...ic.reactexpressionrendererprops.reload_.md | 13 + ...eactexpressionrendererprops.rendererror.md | 11 + ...ions-public.reactexpressionrenderertype.md | 11 + ...-expressions-public.serializeddatatable.md | 18 + ...essions-public.serializeddatatable.rows.md | 11 + ...essions-public.serializedfieldformat.id.md | 11 + ...xpressions-public.serializedfieldformat.md | 21 + ...ons-public.serializedfieldformat.params.md | 11 + ...plugin-plugins-expressions-public.style.md | 11 + ...lugins-expressions-public.textalignment.md | 23 + ...ugins-expressions-public.textdecoration.md | 21 + ...ions-public.typesregistry._constructor_.md | 20 + ...ns-expressions-public.typesregistry.get.md | 22 + ...lugins-expressions-public.typesregistry.md | 27 + ...pressions-public.typesregistry.register.md | 22 + ...xpressions-public.typesregistry.toarray.md | 15 + ...s-expressions-public.typesregistry.tojs.md | 15 + ...n-plugins-expressions-public.typestring.md | 15 + ...plugins-expressions-public.typetostring.md | 13 + ...-expressions-public.unmappedtypestrings.md | 15 + .../plugins/expressions/server/index.md | 12 + ...-server.anyexpressionfunctiondefinition.md | 13 + ...ions-server.anyexpressiontypedefinition.md | 11 + ...plugins-expressions-server.argumenttype.md | 13 + ...gins-expressions-server.buildexpression.md | 24 + ...ressions-server.buildexpressionfunction.md | 30 + ...ns-expressions-server.datatable.columns.md | 11 + ...in-plugins-expressions-server.datatable.md | 22 + ...ugins-expressions-server.datatable.rows.md | 11 + ...ugins-expressions-server.datatable.type.md | 11 + ...s-expressions-server.datatablecolumn.id.md | 11 + ...gins-expressions-server.datatablecolumn.md | 22 + ...expressions-server.datatablecolumn.meta.md | 11 + ...expressions-server.datatablecolumn.name.md | 11 + ...-expressions-server.datatablecolumntype.md | 13 + ...plugins-expressions-server.datatablerow.md | 13 + ...ressions-server.execution._constructor_.md | 20 + ...ins-expressions-server.execution.cancel.md | 17 + ...ugins-expressions-server.execution.cast.md | 23 + ...ns-expressions-server.execution.context.md | 13 + ...s-expressions-server.execution.contract.md | 13 + ...expressions-server.execution.expression.md | 11 + ...gins-expressions-server.execution.input.md | 15 + ...ions-server.execution.inspectoradapters.md | 11 + ...-expressions-server.execution.interpret.md | 24 + ...xpressions-server.execution.invokechain.md | 23 + ...essions-server.execution.invokefunction.md | 24 + ...in-plugins-expressions-server.execution.md | 43 + ...ins-expressions-server.execution.params.md | 11 + ...xpressions-server.execution.resolveargs.md | 24 + ...ins-expressions-server.execution.result.md | 11 + ...gins-expressions-server.execution.start.md | 26 + ...gins-expressions-server.execution.state.md | 13 + ...s-expressions-server.executioncontainer.md | 11 + ...ons-server.executioncontext.abortsignal.md | 13 + ...server.executioncontext.getinitialinput.md | 13 + ...-server.executioncontext.getsavedobject.md | 13 + ...rver.executioncontext.inspectoradapters.md | 13 + ...ins-expressions-server.executioncontext.md | 26 + ...ressions-server.executioncontext.search.md | 13 + ...pressions-server.executioncontext.types.md | 13 + ...sions-server.executioncontext.variables.md | 13 + ...-expressions-server.executionparams.ast.md | 11 + ...ressions-server.executionparams.context.md | 11 + ...xpressions-server.executionparams.debug.md | 13 + ...essions-server.executionparams.executor.md | 11 + ...sions-server.executionparams.expression.md | 11 + ...gins-expressions-server.executionparams.md | 22 + ...s-expressions-server.executionstate.ast.md | 11 + ...expressions-server.executionstate.error.md | 13 + ...ugins-expressions-server.executionstate.md | 21 + ...xpressions-server.executionstate.result.md | 13 + ...expressions-server.executionstate.state.md | 15 + ...pressions-server.executor._constructor_.md | 20 + ...ins-expressions-server.executor.context.md | 11 + ...essions-server.executor.createexecution.md | 24 + ...ions-server.executor.createwithdefaults.md | 22 + ...pressions-server.executor.extendcontext.md | 22 + ...lugins-expressions-server.executor.fork.md | 15 + ...s-expressions-server.executor.functions.md | 15 + ...expressions-server.executor.getfunction.md | 22 + ...xpressions-server.executor.getfunctions.md | 15 + ...ins-expressions-server.executor.gettype.md | 22 + ...ns-expressions-server.executor.gettypes.md | 15 + ...gin-plugins-expressions-server.executor.md | 43 + ...ssions-server.executor.registerfunction.md | 22 + ...xpressions-server.executor.registertype.md | 22 + ...plugins-expressions-server.executor.run.md | 26 + ...ugins-expressions-server.executor.state.md | 11 + ...ugins-expressions-server.executor.types.md | 15 + ...ns-expressions-server.executorcontainer.md | 11 + ...xpressions-server.executorstate.context.md | 11 + ...ressions-server.executorstate.functions.md | 11 + ...lugins-expressions-server.executorstate.md | 20 + ...-expressions-server.executorstate.types.md | 11 + ...xpressions-server.expressionastargument.md | 11 + ...ns-server.expressionastexpression.chain.md | 11 + ...ressions-server.expressionastexpression.md | 19 + ...ons-server.expressionastexpression.type.md | 11 + ...essionastexpressionbuilder.findfunction.md | 15 + ...xpressionastexpressionbuilder.functions.md | 13 + ...s-server.expressionastexpressionbuilder.md | 22 + ...er.expressionastexpressionbuilder.toast.md | 15 + ...expressionastexpressionbuilder.tostring.md | 15 + ...ver.expressionastexpressionbuilder.type.md | 13 + ...-server.expressionastfunction.arguments.md | 11 + ...ions-server.expressionastfunction.debug.md | 13 + ...s-server.expressionastfunction.function.md | 11 + ...xpressions-server.expressionastfunction.md | 21 + ...sions-server.expressionastfunction.type.md | 11 + ...xpressionastfunctionbuilder.addargument.md | 13 + ....expressionastfunctionbuilder.arguments.md | 13 + ...xpressionastfunctionbuilder.getargument.md | 13 + ...ons-server.expressionastfunctionbuilder.md | 26 + ...erver.expressionastfunctionbuilder.name.md | 13 + ...essionastfunctionbuilder.removeargument.md | 15 + ...ssionastfunctionbuilder.replaceargument.md | 13 + ...rver.expressionastfunctionbuilder.toast.md | 15 + ...r.expressionastfunctionbuilder.tostring.md | 15 + ...erver.expressionastfunctionbuilder.type.md | 13 + ...ns-expressions-server.expressionastnode.md | 11 + ...server.expressionfunction._constructor_.md | 20 + ...sions-server.expressionfunction.accepts.md | 11 + ...sions-server.expressionfunction.aliases.md | 13 + ...ressions-server.expressionfunction.args.md | 13 + ...xpressions-server.expressionfunction.fn.md | 13 + ...ressions-server.expressionfunction.help.md | 13 + ...ns-server.expressionfunction.inputtypes.md | 13 + ...s-expressions-server.expressionfunction.md | 31 + ...ressions-server.expressionfunction.name.md | 13 + ...ressions-server.expressionfunction.type.md | 13 + ...er.expressionfunctiondefinition.aliases.md | 13 + ...erver.expressionfunctiondefinition.args.md | 15 + ...er.expressionfunctiondefinition.context.md | 18 + ...-server.expressionfunctiondefinition.fn.md | 26 + ...erver.expressionfunctiondefinition.help.md | 13 + ...expressionfunctiondefinition.inputtypes.md | 13 + ...ons-server.expressionfunctiondefinition.md | 32 + ...erver.expressionfunctiondefinition.name.md | 13 + ...erver.expressionfunctiondefinition.type.md | 13 + ...rver.expressionfunctiondefinitions.clog.md | 11 + ...rver.expressionfunctiondefinitions.font.md | 11 + ...er.expressionfunctiondefinitions.kibana.md | 11 + ...ssionfunctiondefinitions.kibana_context.md | 11 + ...ns-server.expressionfunctiondefinitions.md | 26 + ...ver.expressionfunctiondefinitions.theme.md | 11 + ...erver.expressionfunctiondefinitions.var.md | 11 + ...r.expressionfunctiondefinitions.var_set.md | 11 + ...essions-server.expressionfunctionkibana.md | 11 + ...pressionfunctionparameter._constructor_.md | 21 + ...ver.expressionfunctionparameter.accepts.md | 22 + ...ver.expressionfunctionparameter.aliases.md | 11 + ...ver.expressionfunctionparameter.default.md | 11 + ...server.expressionfunctionparameter.help.md | 11 + ...ions-server.expressionfunctionparameter.md | 38 + ...erver.expressionfunctionparameter.multi.md | 11 + ...server.expressionfunctionparameter.name.md | 11 + ...ver.expressionfunctionparameter.options.md | 11 + ...er.expressionfunctionparameter.required.md | 11 + ...ver.expressionfunctionparameter.resolve.md | 11 + ...erver.expressionfunctionparameter.types.md | 11 + ...ressions-server.expressionimage.dataurl.md | 11 + ...gins-expressions-server.expressionimage.md | 20 + ...expressions-server.expressionimage.mode.md | 11 + ...expressions-server.expressionimage.type.md | 11 + ....expressionrenderdefinition.displayname.md | 13 + ...-server.expressionrenderdefinition.help.md | 13 + ...sions-server.expressionrenderdefinition.md | 23 + ...-server.expressionrenderdefinition.name.md | 13 + ...erver.expressionrenderdefinition.render.md | 13 + ...expressionrenderdefinition.reusedomnode.md | 13 + ...ver.expressionrenderdefinition.validate.md | 13 + ...server.expressionrenderer._constructor_.md | 20 + ...s-server.expressionrenderer.displayname.md | 11 + ...ressions-server.expressionrenderer.help.md | 11 + ...s-expressions-server.expressionrenderer.md | 29 + ...ressions-server.expressionrenderer.name.md | 11 + ...ssions-server.expressionrenderer.render.md | 11 + ...-server.expressionrenderer.reusedomnode.md | 11 + ...ions-server.expressionrenderer.validate.md | 11 + ...s-server.expressionrendererregistry.get.md | 22 + ...sions-server.expressionrendererregistry.md | 21 + ...ver.expressionrendererregistry.register.md | 22 + ...rver.expressionrendererregistry.toarray.md | 15 + ...-server.expressionrendererregistry.tojs.md | 15 + ...r.expressionsserverplugin._constructor_.md | 20 + ...ver.expressionsserverplugin.expressions.md | 11 + ...ressions-server.expressionsserverplugin.md | 32 + ...ns-server.expressionsserverplugin.setup.md | 22 + ...ns-server.expressionsserverplugin.start.md | 22 + ...ons-server.expressionsserverplugin.stop.md | 15 + ...pressions-server.expressionsserversetup.md | 11 + ...pressions-server.expressionsserverstart.md | 11 + ...ons-server.expressiontype._constructor_.md | 20 + ...essions-server.expressiontype.castsfrom.md | 11 + ...pressions-server.expressiontype.caststo.md | 11 + ...xpressions-server.expressiontype.create.md | 11 + ...sions-server.expressiontype.deserialize.md | 11 + ...-expressions-server.expressiontype.from.md | 11 + ...essions-server.expressiontype.getfromfn.md | 11 + ...pressions-server.expressiontype.gettofn.md | 11 + ...-expressions-server.expressiontype.help.md | 13 + ...ugins-expressions-server.expressiontype.md | 35 + ...-expressions-server.expressiontype.name.md | 11 + ...essions-server.expressiontype.serialize.md | 13 + ...ns-expressions-server.expressiontype.to.md | 11 + ...ressions-server.expressiontype.validate.md | 13 + ...er.expressiontypedefinition.deserialize.md | 11 + ...ns-server.expressiontypedefinition.from.md | 13 + ...ns-server.expressiontypedefinition.help.md | 11 + ...essions-server.expressiontypedefinition.md | 26 + ...ns-server.expressiontypedefinition.name.md | 11 + ...rver.expressiontypedefinition.serialize.md | 11 + ...ions-server.expressiontypedefinition.to.md | 13 + ...erver.expressiontypedefinition.validate.md | 11 + ...ressions-server.expressiontypestyle.css.md | 11 + ...-expressions-server.expressiontypestyle.md | 22 + ...essions-server.expressiontypestyle.spec.md | 11 + ...essions-server.expressiontypestyle.type.md | 11 + ...gins-expressions-server.expressionvalue.md | 11 + ...expressions-server.expressionvalueboxed.md | 13 + ...essions-server.expressionvalueconverter.md | 11 + ...expressions-server.expressionvalueerror.md | 20 + ...xpressions-server.expressionvaluefilter.md | 21 + ...s-expressions-server.expressionvaluenum.md | 13 + ...xpressions-server.expressionvaluerender.md | 16 + ...ons-server.expressionvaluesearchcontext.md | 11 + ...pressions-server.expressionvalueunboxed.md | 11 + ...n-plugins-expressions-server.font.label.md | 11 + ...-plugin-plugins-expressions-server.font.md | 21 + ...n-plugins-expressions-server.font.value.md | 11 + ...in-plugins-expressions-server.fontlabel.md | 13 + ...in-plugins-expressions-server.fontstyle.md | 21 + ...in-plugins-expressions-server.fontvalue.md | 13 + ...n-plugins-expressions-server.fontweight.md | 32 + ...lugin-plugins-expressions-server.format.md | 23 + ...ins-expressions-server.formatexpression.md | 24 + ...-server.functionsregistry._constructor_.md | 20 + ...xpressions-server.functionsregistry.get.md | 22 + ...ns-expressions-server.functionsregistry.md | 27 + ...sions-server.functionsregistry.register.md | 22 + ...ssions-server.functionsregistry.toarray.md | 15 + ...pressions-server.functionsregistry.tojs.md | 15 + ...-server.iinterpreterrenderhandlers.done.md | 13 + ...server.iinterpreterrenderhandlers.event.md | 11 + ...sions-server.iinterpreterrenderhandlers.md | 22 + ...er.iinterpreterrenderhandlers.ondestroy.md | 11 + ...erver.iinterpreterrenderhandlers.reload.md | 11 + ...erver.iinterpreterrenderhandlers.update.md | 11 + ...expressions-server.interpretererrortype.md | 16 + ...lugins-expressions-server.iregistry.get.md | 22 + ...in-plugins-expressions-server.iregistry.md | 20 + ...ns-expressions-server.iregistry.toarray.md | 15 + ...ugins-expressions-server.iregistry.tojs.md | 15 + ...pressions-server.isexpressionastbuilder.md | 28 + ...-expressions-server.kibana_context_name.md | 11 + ...lugins-expressions-server.kibanacontext.md | 11 + ...ressions-server.kibanadatatable.columns.md | 11 + ...gins-expressions-server.kibanadatatable.md | 20 + ...expressions-server.kibanadatatable.rows.md | 11 + ...expressions-server.kibanadatatable.type.md | 11 + ...server.kibanadatatablecolumn.formathint.md | 11 + ...essions-server.kibanadatatablecolumn.id.md | 11 + ...xpressions-server.kibanadatatablecolumn.md | 21 + ...sions-server.kibanadatatablecolumn.meta.md | 11 + ...sions-server.kibanadatatablecolumn.name.md | 11 + ...banadatatablecolumnmeta.aggconfigparams.md | 11 + ...ibanadatatablecolumnmeta.indexpatternid.md | 11 + ...ssions-server.kibanadatatablecolumnmeta.md | 20 + ...s-server.kibanadatatablecolumnmeta.type.md | 11 + ...s-expressions-server.kibanadatatablerow.md | 11 + ...ns-expressions-server.knowntypetostring.md | 17 + ...ibana-plugin-plugins-expressions-server.md | 116 ++ ...gin-plugins-expressions-server.overflow.md | 23 + ...plugin-plugins-expressions-server.parse.md | 23 + ...gins-expressions-server.parseexpression.md | 24 + ...lugin-plugins-expressions-server.plugin.md | 22 + ...-plugins-expressions-server.pointseries.md | 16 + ...ons-server.pointseriescolumn.expression.md | 11 + ...ns-expressions-server.pointseriescolumn.md | 22 + ...pressions-server.pointseriescolumn.role.md | 11 + ...pressions-server.pointseriescolumn.type.md | 11 + ...xpressions-server.pointseriescolumnname.md | 13 + ...s-expressions-server.pointseriescolumns.md | 13 + ...ugins-expressions-server.pointseriesrow.md | 11 + ...n-plugins-expressions-server.range.from.md | 11 + ...plugin-plugins-expressions-server.range.md | 20 + ...gin-plugins-expressions-server.range.to.md | 11 + ...n-plugins-expressions-server.range.type.md | 11 + ...-expressions-server.serializeddatatable.md | 18 + ...essions-server.serializeddatatable.rows.md | 11 + ...essions-server.serializedfieldformat.id.md | 11 + ...xpressions-server.serializedfieldformat.md | 21 + ...ons-server.serializedfieldformat.params.md | 11 + ...plugin-plugins-expressions-server.style.md | 11 + ...lugins-expressions-server.textalignment.md | 23 + ...ugins-expressions-server.textdecoration.md | 21 + ...ions-server.typesregistry._constructor_.md | 20 + ...ns-expressions-server.typesregistry.get.md | 22 + ...lugins-expressions-server.typesregistry.md | 27 + ...pressions-server.typesregistry.register.md | 22 + ...xpressions-server.typesregistry.toarray.md | 15 + ...s-expressions-server.typesregistry.tojs.md | 15 + ...n-plugins-expressions-server.typestring.md | 15 + ...plugins-expressions-server.typetostring.md | 13 + ...-expressions-server.unmappedtypestrings.md | 15 + src/dev/run_check_published_api_changes.ts | 2 + src/plugins/expressions/README.asciidoc | 55 + src/plugins/expressions/README.md | 35 - .../common/execution/execution_contract.ts | 6 +- .../common/expression_types/specs/error.ts | 1 + .../common/service/expressions_services.ts | 200 +-- src/plugins/expressions/public/index.ts | 3 + src/plugins/expressions/public/mocks.tsx | 3 - src/plugins/expressions/public/plugin.test.ts | 4 +- src/plugins/expressions/public/plugin.ts | 12 +- src/plugins/expressions/public/public.api.md | 1164 +++++++++++++++++ src/plugins/expressions/server/mocks.ts | 3 - src/plugins/expressions/server/server.api.md | 968 ++++++++++++++ 663 files changed, 12648 insertions(+), 150 deletions(-) create mode 100644 docs/development/plugins/expressions/public/index.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.params.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.search.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.debug.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.function.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibana_context_name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanacontext.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablerow.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md create mode 100644 docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md create mode 100644 docs/development/plugins/expressions/server/index.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.params.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.search.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.debug.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.function.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibana_context_name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanacontext.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablerow.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md create mode 100644 docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md create mode 100644 src/plugins/expressions/README.asciidoc delete mode 100644 src/plugins/expressions/README.md create mode 100644 src/plugins/expressions/public/public.api.md create mode 100644 src/plugins/expressions/server/server.api.md diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 5a4a60c2e628e..4918a87a3ff76 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -70,8 +70,20 @@ This API doesn't support angular, for registering angular dev tools, bootstrap a |This plugin contains reusable code in the form of self-contained modules (or libraries). Each of these modules exports a set of functionality relevant to the domain of the module. -|{kib-repo}blob/{branch}/src/plugins/expressions/README.md[expressions] -|This plugin provides methods which will parse & execute an expression pipeline +|<> +|Expression pipeline is a chain of functions that *pipe* its output to the +input of the next function. Functions can be configured using arguments provided +by the user. The final output of the expression pipeline can be rendered using +one of the *renderers* registered in `expressions` plugin. + +All the arguments to expression functions need to be serializable, as well as input and output. +Expression functions should try to stay 'pure'. This makes functions easy to reuse and also +make it possible to serialize the whole chain as well as output at every step of execution. + +Expressions power visualizations in Dashboard and Lens, as well as, every +*element* in Canvas is backed by an expression. + +This plugin provides methods which will parse & execute an *expression pipeline* string for you, as well as a series of registries for advanced users who might want to incorporate their own functions, types, and renderers into the service for use in their own application. @@ -511,5 +523,6 @@ in their infrastructure. |=== include::{kibana-root}/src/plugins/dashboard/README.asciidoc[leveloffset=+1] +include::{kibana-root}/src/plugins/expressions/README.asciidoc[leveloffset=+1] include::{kibana-root}/x-pack/plugins/dashboard_enhanced/README.asciidoc[leveloffset=+1] include::{kibana-root}/x-pack/plugins/embeddable_enhanced/README.asciidoc[leveloffset=+1] diff --git a/docs/development/plugins/expressions/public/index.md b/docs/development/plugins/expressions/public/index.md new file mode 100644 index 0000000000000..ade7a9e90b517 --- /dev/null +++ b/docs/development/plugins/expressions/public/index.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) + +## API Reference + +## Packages + +| Package | Description | +| --- | --- | +| [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md new file mode 100644 index 0000000000000..f905a1028d217 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md) + +## AnyExpressionFunctionDefinition type + +Type to capture every possible expression function definition. + +Signature: + +```typescript +export declare type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md new file mode 100644 index 0000000000000..c213de4341a6a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md) + +## AnyExpressionTypeDefinition type + +Signature: + +```typescript +export declare type AnyExpressionTypeDefinition = ExpressionTypeDefinition; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md new file mode 100644 index 0000000000000..bf80b863fda90 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ArgumentType](./kibana-plugin-plugins-expressions-public.argumenttype.md) + +## ArgumentType type + +This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each `arg` in the specification. + +Signature: + +```typescript +export declare type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md new file mode 100644 index 0000000000000..e1d522588aae8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [buildExpression](./kibana-plugin-plugins-expressions-public.buildexpression.md) + +## buildExpression() function + +Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. + +Signature: + +```typescript +export declare function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initialState | ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string | | + +Returns: + +`ExpressionAstExpressionBuilder` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md new file mode 100644 index 0000000000000..79deb7157130e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [buildExpressionFunction](./kibana-plugin-plugins-expressions-public.buildexpressionfunction.md) + +## buildExpressionFunction() function + +Manages an AST for a single expression function. The return value can be provided to `buildExpression` to add this function to an expression. + +Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. + +Signature: + +```typescript +export declare function buildExpressionFunction(fnName: InferFunctionDefinition['name'], +initialArgs: { + [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[]; +}): ExpressionAstFunctionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fnName | InferFunctionDefinition<FnDef>['name'] | | +| initialArgs | {
[K in keyof FunctionArgs<FnDef>]: FunctionArgs<FnDef>[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[];
} | | + +Returns: + +`ExpressionAstFunctionBuilder` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md new file mode 100644 index 0000000000000..d24c4f4dfb176 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [columns](./kibana-plugin-plugins-expressions-public.datatable.columns.md) + +## Datatable.columns property + +Signature: + +```typescript +columns: DatatableColumn[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md new file mode 100644 index 0000000000000..f2daf656dfa73 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) + +## Datatable interface + +A `Datatable` in Canvas is a unique structure that represents tabulated data. + +Signature: + +```typescript +export interface Datatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [columns](./kibana-plugin-plugins-expressions-public.datatable.columns.md) | DatatableColumn[] | | +| [rows](./kibana-plugin-plugins-expressions-public.datatable.rows.md) | DatatableRow[] | | +| [type](./kibana-plugin-plugins-expressions-public.datatable.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md new file mode 100644 index 0000000000000..0d52e446b09fd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [rows](./kibana-plugin-plugins-expressions-public.datatable.rows.md) + +## Datatable.rows property + +Signature: + +```typescript +rows: DatatableRow[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md new file mode 100644 index 0000000000000..e0ee6fd5d8372 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [type](./kibana-plugin-plugins-expressions-public.datatable.type.md) + +## Datatable.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md new file mode 100644 index 0000000000000..d9b98e6cf939e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-public.datatablecolumn.id.md) + +## DatatableColumn.id property + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md new file mode 100644 index 0000000000000..d67a5d9b36b12 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) + +## DatatableColumn interface + +This type represents the shape of a column in a `Datatable`. + +Signature: + +```typescript +export interface DatatableColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-expressions-public.datatablecolumn.id.md) | string | | +| [meta](./kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md) | DatatableColumnMeta | | +| [name](./kibana-plugin-plugins-expressions-public.datatablecolumn.name.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md new file mode 100644 index 0000000000000..a5414dde86f97 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md) + +## DatatableColumn.meta property + +Signature: + +```typescript +meta: DatatableColumnMeta; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md new file mode 100644 index 0000000000000..74c3883e7a172 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-public.datatablecolumn.name.md) + +## DatatableColumn.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md new file mode 100644 index 0000000000000..a06ab351e62c3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumnType](./kibana-plugin-plugins-expressions-public.datatablecolumntype.md) + +## DatatableColumnType type + +This type represents the `type` of any `DatatableColumn` in a `Datatable`. + +Signature: + +```typescript +export declare type DatatableColumnType = 'string' | 'number' | 'boolean' | 'date' | 'null'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md new file mode 100644 index 0000000000000..87cc15d0d4091 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableRow](./kibana-plugin-plugins-expressions-public.datatablerow.md) + +## DatatableRow type + +This type represents a row in a `Datatable`. + +Signature: + +```typescript +export declare type DatatableRow = Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md new file mode 100644 index 0000000000000..1d0c9f99169db --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.execution._constructor_.md) + +## Execution.(constructor) + +Constructs a new instance of the `Execution` class + +Signature: + +```typescript +constructor(params: ExecutionParams); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| params | ExecutionParams<ExtraContext> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md new file mode 100644 index 0000000000000..e87cea30dd5b6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [cancel](./kibana-plugin-plugins-expressions-public.execution.cancel.md) + +## Execution.cancel() method + +Stop execution of expression. + +Signature: + +```typescript +cancel(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md new file mode 100644 index 0000000000000..632849af7c82b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [cast](./kibana-plugin-plugins-expressions-public.execution.cast.md) + +## Execution.cast() method + +Signature: + +```typescript +cast(value: any, toTypeNames?: string[]): any; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| value | any | | +| toTypeNames | string[] | | + +Returns: + +`any` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md new file mode 100644 index 0000000000000..732fe94d65617 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [context](./kibana-plugin-plugins-expressions-public.execution.context.md) + +## Execution.context property + +Execution context - object that allows to do side-effects. Context is passed to every function. + +Signature: + +```typescript +readonly context: ExecutionContext & ExtraContext; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md new file mode 100644 index 0000000000000..fa03297ea22a7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [contract](./kibana-plugin-plugins-expressions-public.execution.contract.md) + +## Execution.contract property + +Contract is a public representation of `Execution` instances. Contract we can return to other plugins for their consumption. + +Signature: + +```typescript +readonly contract: ExecutionContract; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md new file mode 100644 index 0000000000000..a30cc89e8b649 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [expression](./kibana-plugin-plugins-expressions-public.execution.expression.md) + +## Execution.expression property + +Signature: + +```typescript +readonly expression: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md new file mode 100644 index 0000000000000..553a463a2b931 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [input](./kibana-plugin-plugins-expressions-public.execution.input.md) + +## Execution.input property + +Initial input of the execution. + +N.B. It is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. + +Signature: + +```typescript +input: Input; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md new file mode 100644 index 0000000000000..728015011f7d9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md) + +## Execution.inspectorAdapters property + +Signature: + +```typescript +get inspectorAdapters(): InspectorAdapters; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md new file mode 100644 index 0000000000000..31f38b7069812 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [interpret](./kibana-plugin-plugins-expressions-public.execution.interpret.md) + +## Execution.interpret() method + +Signature: + +```typescript +interpret(ast: ExpressionAstNode, input: T, options?: ExpressionExecOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | ExpressionAstNode | | +| input | T | | +| options | ExpressionExecOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md new file mode 100644 index 0000000000000..5078baf2ca526 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [invokeChain](./kibana-plugin-plugins-expressions-public.execution.invokechain.md) + +## Execution.invokeChain() method + +Signature: + +```typescript +invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| chainArr | ExpressionAstFunction[] | | +| input | unknown | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md new file mode 100644 index 0000000000000..e90cee8b626d6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [invokeFunction](./kibana-plugin-plugins-expressions-public.execution.invokefunction.md) + +## Execution.invokeFunction() method + +Signature: + +```typescript +invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fn | ExpressionFunction | | +| input | unknown | | +| args | Record<string, unknown> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md new file mode 100644 index 0000000000000..4d227e6ab85b8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md @@ -0,0 +1,43 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) + +## Execution class + +Signature: + +```typescript +export declare class Execution = Record, Input = unknown, Output = unknown, InspectorAdapters extends Adapters = ExtraContext['inspectorAdapters'] extends object ? ExtraContext['inspectorAdapters'] : DefaultInspectorAdapters> +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(params)](./kibana-plugin-plugins-expressions-public.execution._constructor_.md) | | Constructs a new instance of the Execution class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-public.execution.context.md) | | ExecutionContext<Input, InspectorAdapters> & ExtraContext | Execution context - object that allows to do side-effects. Context is passed to every function. | +| [contract](./kibana-plugin-plugins-expressions-public.execution.contract.md) | | ExecutionContract<ExtraContext, Input, Output, InspectorAdapters> | Contract is a public representation of Execution instances. Contract we can return to other plugins for their consumption. | +| [expression](./kibana-plugin-plugins-expressions-public.execution.expression.md) | | string | | +| [input](./kibana-plugin-plugins-expressions-public.execution.input.md) | | Input | Initial input of the execution.N.B. It is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | +| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md) | | InspectorAdapters | | +| [params](./kibana-plugin-plugins-expressions-public.execution.params.md) | | ExecutionParams<ExtraContext> | | +| [result](./kibana-plugin-plugins-expressions-public.execution.result.md) | | Promise<Output | ExpressionValueError> | | +| [state](./kibana-plugin-plugins-expressions-public.execution.state.md) | | ExecutionContainer<Output | ExpressionValueError> | Dynamic state of the execution. | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [cancel()](./kibana-plugin-plugins-expressions-public.execution.cancel.md) | | Stop execution of expression. | +| [cast(value, toTypeNames)](./kibana-plugin-plugins-expressions-public.execution.cast.md) | | | +| [interpret(ast, input, options)](./kibana-plugin-plugins-expressions-public.execution.interpret.md) | | | +| [invokeChain(chainArr, input)](./kibana-plugin-plugins-expressions-public.execution.invokechain.md) | | | +| [invokeFunction(fn, input, args)](./kibana-plugin-plugins-expressions-public.execution.invokefunction.md) | | | +| [resolveArgs(fnDef, input, argAsts)](./kibana-plugin-plugins-expressions-public.execution.resolveargs.md) | | | +| [start(input)](./kibana-plugin-plugins-expressions-public.execution.start.md) | | Call this method to start execution.N.B. input is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.params.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.params.md new file mode 100644 index 0000000000000..cd90bf6adab47 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.params.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [params](./kibana-plugin-plugins-expressions-public.execution.params.md) + +## Execution.params property + +Signature: + +```typescript +readonly params: ExecutionParams; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md new file mode 100644 index 0000000000000..ab67dff604a86 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [resolveArgs](./kibana-plugin-plugins-expressions-public.execution.resolveargs.md) + +## Execution.resolveArgs() method + +Signature: + +```typescript +resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fnDef | ExpressionFunction | | +| input | unknown | | +| argAsts | any | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md new file mode 100644 index 0000000000000..e0167a3a378fe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [result](./kibana-plugin-plugins-expressions-public.execution.result.md) + +## Execution.result property + +Signature: + +```typescript +get result(): Promise; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md new file mode 100644 index 0000000000000..c6edc43d423dc --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [start](./kibana-plugin-plugins-expressions-public.execution.start.md) + +## Execution.start() method + +Call this method to start execution. + +N.B. `input` is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. + +Signature: + +```typescript +start(input?: Input): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| input | Input | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md new file mode 100644 index 0000000000000..ca8b57b760f29 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [state](./kibana-plugin-plugins-expressions-public.execution.state.md) + +## Execution.state property + +Dynamic state of the execution. + +Signature: + +```typescript +readonly state: ExecutionContainer; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md new file mode 100644 index 0000000000000..5cea6c4bc4b8f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContainer](./kibana-plugin-plugins-expressions-public.executioncontainer.md) + +## ExecutionContainer type + +Signature: + +```typescript +export declare type ExecutionContainer = StateContainer, ExecutionPureTransitions>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md new file mode 100644 index 0000000000000..caedf4344dc35 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [abortSignal](./kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md) + +## ExecutionContext.abortSignal property + +Adds ability to abort current execution. + +Signature: + +```typescript +abortSignal: AbortSignal; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md new file mode 100644 index 0000000000000..460b1622c6fbd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getInitialInput](./kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md) + +## ExecutionContext.getInitialInput property + +Get initial input with which execution started. + +Signature: + +```typescript +getInitialInput: () => Input; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md new file mode 100644 index 0000000000000..dffce4a091718 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getSavedObject](./kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md) + +## ExecutionContext.getSavedObject property + +Allows to fetch saved objects from ElasticSearch. In browser `getSavedObject` function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. + +Signature: + +```typescript +getSavedObject?: (type: string, id: string) => Promise>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md new file mode 100644 index 0000000000000..6f0db6af5616e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md) + +## ExecutionContext.inspectorAdapters property + +Adapters for `inspector` plugin. + +Signature: + +```typescript +inspectorAdapters: InspectorAdapters; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md new file mode 100644 index 0000000000000..786e94455c600 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) + +## ExecutionContext interface + +`ExecutionContext` is an object available to all functions during a single execution; it provides various methods to perform side-effects. + +Signature: + +```typescript +export interface ExecutionContext +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [abortSignal](./kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md) | AbortSignal | Adds ability to abort current execution. | +| [getInitialInput](./kibana-plugin-plugins-expressions-public.executioncontext.getinitialinput.md) | () => Input | Get initial input with which execution started. | +| [getSavedObject](./kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md) | <T extends SavedObjectAttributes = SavedObjectAttributes>(type: string, id: string) => Promise<SavedObject<T>> | Allows to fetch saved objects from ElasticSearch. In browser getSavedObject function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. | +| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md) | InspectorAdapters | Adapters for inspector plugin. | +| [search](./kibana-plugin-plugins-expressions-public.executioncontext.search.md) | ExecutionContextSearch | Search context in which expression should operate. | +| [types](./kibana-plugin-plugins-expressions-public.executioncontext.types.md) | Record<string, ExpressionType> | A map of available expression types. | +| [variables](./kibana-plugin-plugins-expressions-public.executioncontext.variables.md) | Record<string, unknown> | Context variables that can be consumed using var and var_set functions. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.search.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.search.md new file mode 100644 index 0000000000000..05501a475cbd4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.search.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [search](./kibana-plugin-plugins-expressions-public.executioncontext.search.md) + +## ExecutionContext.search property + +Search context in which expression should operate. + +Signature: + +```typescript +search?: ExecutionContextSearch; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md new file mode 100644 index 0000000000000..0bddaf8455635 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [types](./kibana-plugin-plugins-expressions-public.executioncontext.types.md) + +## ExecutionContext.types property + +A map of available expression types. + +Signature: + +```typescript +types: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md new file mode 100644 index 0000000000000..3f8a87152f9fe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [variables](./kibana-plugin-plugins-expressions-public.executioncontext.variables.md) + +## ExecutionContext.variables property + +Context variables that can be consumed using `var` and `var_set` functions. + +Signature: + +```typescript +variables: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md new file mode 100644 index 0000000000000..89a99ef2f8ef8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md) + +## ExecutionContract.(constructor) + +Constructs a new instance of the `ExecutionContract` class + +Signature: + +```typescript +constructor(execution: Execution); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| execution | Execution<ExtraContext, Input, Output, InspectorAdapters> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md new file mode 100644 index 0000000000000..7ddfb824288d1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [cancel](./kibana-plugin-plugins-expressions-public.executioncontract.cancel.md) + +## ExecutionContract.cancel property + +Cancel the execution of the expression. This will set abort signal (available in execution context) to aborted state, letting expression functions to stop their execution. + +Signature: + +```typescript +cancel: () => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md new file mode 100644 index 0000000000000..f7911250488f2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [execution](./kibana-plugin-plugins-expressions-public.executioncontract.execution.md) + +## ExecutionContract.execution property + +Signature: + +```typescript +protected readonly execution: Execution; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md new file mode 100644 index 0000000000000..d873614d779a9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getAst](./kibana-plugin-plugins-expressions-public.executioncontract.getast.md) + +## ExecutionContract.getAst property + +Get AST used to execute the expression. + +Signature: + +```typescript +getAst: () => ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md new file mode 100644 index 0000000000000..dcd96cf5767bf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getData](./kibana-plugin-plugins-expressions-public.executioncontract.getdata.md) + +## ExecutionContract.getData property + +Returns the final output of expression, if any error happens still wraps that error into `ExpressionValueError` type and returns that. This function never throws. + +Signature: + +```typescript +getData: () => Promise; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md new file mode 100644 index 0000000000000..41dbe72fa69b2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getExpression](./kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md) + +## ExecutionContract.getExpression property + +Get string representation of the expression. Returns the original string if execution was started from a string. If execution was started from an AST this method returns a string generated from AST. + +Signature: + +```typescript +getExpression: () => string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md new file mode 100644 index 0000000000000..d5202b02b0dfd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [inspect](./kibana-plugin-plugins-expressions-public.executioncontract.inspect.md) + +## ExecutionContract.inspect property + +Get Inspector adapters provided to all functions of expression through execution context. + +Signature: + +```typescript +inspect: () => InspectorAdapters; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md new file mode 100644 index 0000000000000..409c31b3fbc2c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [isPending](./kibana-plugin-plugins-expressions-public.executioncontract.ispending.md) + +## ExecutionContract.isPending property + +Signature: + +```typescript +get isPending(): boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md new file mode 100644 index 0000000000000..d05620eace208 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) + +## ExecutionContract class + +`ExecutionContract` is a wrapper around `Execution` class. It provides the same functionality but does not expose Expressions plugin internals. + +Signature: + +```typescript +export declare class ExecutionContract = Record, Input = unknown, Output = unknown, InspectorAdapters = unknown> +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(execution)](./kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md) | | Constructs a new instance of the ExecutionContract class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [cancel](./kibana-plugin-plugins-expressions-public.executioncontract.cancel.md) | | () => void | Cancel the execution of the expression. This will set abort signal (available in execution context) to aborted state, letting expression functions to stop their execution. | +| [execution](./kibana-plugin-plugins-expressions-public.executioncontract.execution.md) | | Execution<ExtraContext, Input, Output, InspectorAdapters> | | +| [getAst](./kibana-plugin-plugins-expressions-public.executioncontract.getast.md) | | () => ExpressionAstExpression | Get AST used to execute the expression. | +| [getData](./kibana-plugin-plugins-expressions-public.executioncontract.getdata.md) | | () => Promise<Output | ExpressionValueError> | Returns the final output of expression, if any error happens still wraps that error into ExpressionValueError type and returns that. This function never throws. | +| [getExpression](./kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md) | | () => string | Get string representation of the expression. Returns the original string if execution was started from a string. If execution was started from an AST this method returns a string generated from AST. | +| [inspect](./kibana-plugin-plugins-expressions-public.executioncontract.inspect.md) | | () => InspectorAdapters | Get Inspector adapters provided to all functions of expression through execution context. | +| [isPending](./kibana-plugin-plugins-expressions-public.executioncontract.ispending.md) | | boolean | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md new file mode 100644 index 0000000000000..63487bc4c753e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [ast](./kibana-plugin-plugins-expressions-public.executionparams.ast.md) + +## ExecutionParams.ast property + +Signature: + +```typescript +ast?: ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.context.md new file mode 100644 index 0000000000000..b6013162ef2ae --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [context](./kibana-plugin-plugins-expressions-public.executionparams.context.md) + +## ExecutionParams.context property + +Signature: + +```typescript +context?: ExtraContext; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.debug.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.debug.md new file mode 100644 index 0000000000000..61ec72465f55e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.debug.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [debug](./kibana-plugin-plugins-expressions-public.executionparams.debug.md) + +## ExecutionParams.debug property + +Whether to execute expression in \*debug mode\*. In \*debug mode\* inputs and outputs as well as all resolved arguments and time it took to execute each function are saved and are available for introspection. + +Signature: + +```typescript +debug?: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md new file mode 100644 index 0000000000000..ec070842692fe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [executor](./kibana-plugin-plugins-expressions-public.executionparams.executor.md) + +## ExecutionParams.executor property + +Signature: + +```typescript +executor: Executor; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md new file mode 100644 index 0000000000000..f79728bacd336 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [expression](./kibana-plugin-plugins-expressions-public.executionparams.expression.md) + +## ExecutionParams.expression property + +Signature: + +```typescript +expression?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md new file mode 100644 index 0000000000000..e39dc231fbf96 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) + +## ExecutionParams interface + +Signature: + +```typescript +export interface ExecutionParams = Record> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ast](./kibana-plugin-plugins-expressions-public.executionparams.ast.md) | ExpressionAstExpression | | +| [context](./kibana-plugin-plugins-expressions-public.executionparams.context.md) | ExtraContext | | +| [debug](./kibana-plugin-plugins-expressions-public.executionparams.debug.md) | boolean | Whether to execute expression in \*debug mode\*. In \*debug mode\* inputs and outputs as well as all resolved arguments and time it took to execute each function are saved and are available for introspection. | +| [executor](./kibana-plugin-plugins-expressions-public.executionparams.executor.md) | Executor<any> | | +| [expression](./kibana-plugin-plugins-expressions-public.executionparams.expression.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md new file mode 100644 index 0000000000000..bd77c959bde63 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [ast](./kibana-plugin-plugins-expressions-public.executionstate.ast.md) + +## ExecutionState.ast property + +Signature: + +```typescript +ast: ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md new file mode 100644 index 0000000000000..3ec804b3f0f2e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [error](./kibana-plugin-plugins-expressions-public.executionstate.error.md) + +## ExecutionState.error property + +Error happened during the execution. + +Signature: + +```typescript +error?: Error; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md new file mode 100644 index 0000000000000..a7848a65fb94b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) + +## ExecutionState interface + +Signature: + +```typescript +export interface ExecutionState extends ExecutorState +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ast](./kibana-plugin-plugins-expressions-public.executionstate.ast.md) | ExpressionAstExpression | | +| [error](./kibana-plugin-plugins-expressions-public.executionstate.error.md) | Error | Error happened during the execution. | +| [result](./kibana-plugin-plugins-expressions-public.executionstate.result.md) | Output | Result of the expression execution. | +| [state](./kibana-plugin-plugins-expressions-public.executionstate.state.md) | 'not-started' | 'pending' | 'result' | 'error' | Tracks state of execution.- not-started - before .start() method was called. - pending - immediately after .start() method is called. - result - when expression execution completed. - error - when execution failed with error. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md new file mode 100644 index 0000000000000..571f95211b8bf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [result](./kibana-plugin-plugins-expressions-public.executionstate.result.md) + +## ExecutionState.result property + +Result of the expression execution. + +Signature: + +```typescript +result?: Output; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md new file mode 100644 index 0000000000000..9b6403590e60b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [state](./kibana-plugin-plugins-expressions-public.executionstate.state.md) + +## ExecutionState.state property + +Tracks state of execution. + +- `not-started` - before .start() method was called. - `pending` - immediately after .start() method is called. - `result` - when expression execution completed. - `error` - when execution failed with error. + +Signature: + +```typescript +state: 'not-started' | 'pending' | 'result' | 'error'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md new file mode 100644 index 0000000000000..2d776c9536c82 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.executor._constructor_.md) + +## Executor.(constructor) + +Constructs a new instance of the `Executor` class + +Signature: + +```typescript +constructor(state?: ExecutorState); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| state | ExecutorState<Context> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md new file mode 100644 index 0000000000000..9a35931bbb26b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [context](./kibana-plugin-plugins-expressions-public.executor.context.md) + +## Executor.context property + +Signature: + +```typescript +get context(): Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md new file mode 100644 index 0000000000000..e6765064d4a27 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [createExecution](./kibana-plugin-plugins-expressions-public.executor.createexecution.md) + +## Executor.createExecution() method + +Signature: + +```typescript +createExecution = Record, Input = unknown, Output = unknown>(ast: string | ExpressionAstExpression, context?: ExtraContext, { debug }?: ExpressionExecOptions): Execution; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | string | ExpressionAstExpression | | +| context | ExtraContext | | +| { debug } | ExpressionExecOptions | | + +Returns: + +`Execution` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md new file mode 100644 index 0000000000000..a058d1c9f830e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [createWithDefaults](./kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md) + +## Executor.createWithDefaults() method + +Signature: + +```typescript +static createWithDefaults = Record>(state?: ExecutorState): Executor; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| state | ExecutorState<Ctx> | | + +Returns: + +`Executor` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md new file mode 100644 index 0000000000000..a08fcc839110d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [extendContext](./kibana-plugin-plugins-expressions-public.executor.extendcontext.md) + +## Executor.extendContext() method + +Signature: + +```typescript +extendContext(extraContext: Record): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| extraContext | Record<string, unknown> | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md new file mode 100644 index 0000000000000..65aa7978a5910 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [fork](./kibana-plugin-plugins-expressions-public.executor.fork.md) + +## Executor.fork() method + +Signature: + +```typescript +fork(): Executor; +``` +Returns: + +`Executor` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md new file mode 100644 index 0000000000000..3c55c246c91f8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [functions](./kibana-plugin-plugins-expressions-public.executor.functions.md) + +## Executor.functions property + +> Warning: This API is now obsolete. +> +> + +Signature: + +```typescript +readonly functions: FunctionsRegistry; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md new file mode 100644 index 0000000000000..11d04edc9c97d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getFunction](./kibana-plugin-plugins-expressions-public.executor.getfunction.md) + +## Executor.getFunction() method + +Signature: + +```typescript +getFunction(name: string): ExpressionFunction | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | + +Returns: + +`ExpressionFunction | undefined` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md new file mode 100644 index 0000000000000..1098c867e4c86 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getFunctions](./kibana-plugin-plugins-expressions-public.executor.getfunctions.md) + +## Executor.getFunctions() method + +Signature: + +```typescript +getFunctions(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md new file mode 100644 index 0000000000000..a0dc6deb21d2c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getType](./kibana-plugin-plugins-expressions-public.executor.gettype.md) + +## Executor.getType() method + +Signature: + +```typescript +getType(name: string): ExpressionType | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | + +Returns: + +`ExpressionType | undefined` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md new file mode 100644 index 0000000000000..a3c72b135cd31 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getTypes](./kibana-plugin-plugins-expressions-public.executor.gettypes.md) + +## Executor.getTypes() method + +Signature: + +```typescript +getTypes(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md new file mode 100644 index 0000000000000..b71c8c79c068f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md @@ -0,0 +1,43 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) + +## Executor class + +Signature: + +```typescript +export declare class Executor = Record> +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(state)](./kibana-plugin-plugins-expressions-public.executor._constructor_.md) | | Constructs a new instance of the Executor class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-public.executor.context.md) | | Record<string, unknown> | | +| [functions](./kibana-plugin-plugins-expressions-public.executor.functions.md) | | FunctionsRegistry | | +| [state](./kibana-plugin-plugins-expressions-public.executor.state.md) | | ExecutorContainer<Context> | | +| [types](./kibana-plugin-plugins-expressions-public.executor.types.md) | | TypesRegistry | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [createExecution(ast, context, { debug })](./kibana-plugin-plugins-expressions-public.executor.createexecution.md) | | | +| [createWithDefaults(state)](./kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md) | static | | +| [extendContext(extraContext)](./kibana-plugin-plugins-expressions-public.executor.extendcontext.md) | | | +| [fork()](./kibana-plugin-plugins-expressions-public.executor.fork.md) | | | +| [getFunction(name)](./kibana-plugin-plugins-expressions-public.executor.getfunction.md) | | | +| [getFunctions()](./kibana-plugin-plugins-expressions-public.executor.getfunctions.md) | | | +| [getType(name)](./kibana-plugin-plugins-expressions-public.executor.gettype.md) | | | +| [getTypes()](./kibana-plugin-plugins-expressions-public.executor.gettypes.md) | | | +| [registerFunction(functionDefinition)](./kibana-plugin-plugins-expressions-public.executor.registerfunction.md) | | | +| [registerType(typeDefinition)](./kibana-plugin-plugins-expressions-public.executor.registertype.md) | | | +| [run(ast, input, context)](./kibana-plugin-plugins-expressions-public.executor.run.md) | | Execute expression and return result. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md new file mode 100644 index 0000000000000..b4217fa492a20 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [registerFunction](./kibana-plugin-plugins-expressions-public.executor.registerfunction.md) + +## Executor.registerFunction() method + +Signature: + +```typescript +registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md new file mode 100644 index 0000000000000..f56e5ffcfb9ee --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [registerType](./kibana-plugin-plugins-expressions-public.executor.registertype.md) + +## Executor.registerType() method + +Signature: + +```typescript +registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md new file mode 100644 index 0000000000000..e06ce733acd43 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [run](./kibana-plugin-plugins-expressions-public.executor.run.md) + +## Executor.run() method + +Execute expression and return result. + +Signature: + +```typescript +run = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | string | ExpressionAstExpression | | +| input | Input | | +| context | ExtraContext | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md new file mode 100644 index 0000000000000..e9b7006980ceb --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [state](./kibana-plugin-plugins-expressions-public.executor.state.md) + +## Executor.state property + +Signature: + +```typescript +readonly state: ExecutorContainer; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md new file mode 100644 index 0000000000000..1ab9a5c4621be --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [types](./kibana-plugin-plugins-expressions-public.executor.types.md) + +## Executor.types property + +> Warning: This API is now obsolete. +> +> + +Signature: + +```typescript +readonly types: TypesRegistry; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md new file mode 100644 index 0000000000000..f48b001593f94 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorContainer](./kibana-plugin-plugins-expressions-public.executorcontainer.md) + +## ExecutorContainer type + +Signature: + +```typescript +export declare type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md new file mode 100644 index 0000000000000..d52074b0eecdd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [context](./kibana-plugin-plugins-expressions-public.executorstate.context.md) + +## ExecutorState.context property + +Signature: + +```typescript +context: Context; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md new file mode 100644 index 0000000000000..034caf27aaef7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [functions](./kibana-plugin-plugins-expressions-public.executorstate.functions.md) + +## ExecutorState.functions property + +Signature: + +```typescript +functions: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md new file mode 100644 index 0000000000000..e120631285887 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) + +## ExecutorState interface + +Signature: + +```typescript +export interface ExecutorState = Record> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-public.executorstate.context.md) | Context | | +| [functions](./kibana-plugin-plugins-expressions-public.executorstate.functions.md) | Record<string, ExpressionFunction> | | +| [types](./kibana-plugin-plugins-expressions-public.executorstate.types.md) | Record<string, ExpressionType> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md new file mode 100644 index 0000000000000..00cf80c271684 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [types](./kibana-plugin-plugins-expressions-public.executorstate.types.md) + +## ExecutorState.types property + +Signature: + +```typescript +types: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md new file mode 100644 index 0000000000000..559cec0e841ac --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstArgument](./kibana-plugin-plugins-expressions-public.expressionastargument.md) + +## ExpressionAstArgument type + +Signature: + +```typescript +export declare type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md new file mode 100644 index 0000000000000..b50ac83036ffe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) > [chain](./kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md) + +## ExpressionAstExpression.chain property + +Signature: + +```typescript +chain: ExpressionAstFunction[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md new file mode 100644 index 0000000000000..537659c51dce8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) + +## ExpressionAstExpression interface + +Signature: + +```typescript +export interface ExpressionAstExpression +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [chain](./kibana-plugin-plugins-expressions-public.expressionastexpression.chain.md) | ExpressionAstFunction[] | | +| [type](./kibana-plugin-plugins-expressions-public.expressionastexpression.type.md) | 'expression' | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.type.md new file mode 100644 index 0000000000000..34a86e235a911 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastexpression.type.md) + +## ExpressionAstExpression.type property + +Signature: + +```typescript +type: 'expression'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md new file mode 100644 index 0000000000000..d31f04ad5bf77 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [findFunction](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md) + +## ExpressionAstExpressionBuilder.findFunction property + +Recursively searches expression for all ocurrences of the function, including in subexpressions. + +Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. + +Signature: + +```typescript +findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md new file mode 100644 index 0000000000000..ceaa4c89fb237 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [functions](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md) + +## ExpressionAstExpressionBuilder.functions property + +Array of each of the `buildExpressionFunction()` instances in this expression. Use this to remove or reorder functions in the expression. + +Signature: + +```typescript +functions: ExpressionAstFunctionBuilder[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md new file mode 100644 index 0000000000000..079e0b3dd8ac1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) + +## ExpressionAstExpressionBuilder interface + +Signature: + +```typescript +export interface ExpressionAstExpressionBuilder +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [findFunction](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md) | <FnDef extends AnyExpressionFunctionDefinition = AnyExpressionFunctionDefinition>(fnName: InferFunctionDefinition<FnDef>['name']) => Array<ExpressionAstFunctionBuilder<FnDef>> | [] | Recursively searches expression for all ocurrences of the function, including in subexpressions.Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. | +| [functions](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md) | ExpressionAstFunctionBuilder[] | Array of each of the buildExpressionFunction() instances in this expression. Use this to remove or reorder functions in the expression. | +| [toAst](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md) | () => ExpressionAstExpression | Converts expression to an AST. ExpressionAstExpression | +| [toString](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md) | () => string | Converts expression to an expression string. string | +| [type](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md) | 'expression_builder' | Used to identify expression builder objects. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md new file mode 100644 index 0000000000000..e0b10033f6f3a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md) + +## ExpressionAstExpressionBuilder.toAst property + +Converts expression to an AST. + + `ExpressionAstExpression` + +Signature: + +```typescript +toAst: () => ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md new file mode 100644 index 0000000000000..6a9a25256c0a3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md) + +## ExpressionAstExpressionBuilder.toString property + +Converts expression to an expression string. + + `string` + +Signature: + +```typescript +toString: () => string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md new file mode 100644 index 0000000000000..2aa8d5089aa29 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md) + +## ExpressionAstExpressionBuilder.type property + +Used to identify expression builder objects. + +Signature: + +```typescript +type: 'expression_builder'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md new file mode 100644 index 0000000000000..72b44e8319542 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) > [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md) + +## ExpressionAstFunction.arguments property + +Signature: + +```typescript +arguments: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md new file mode 100644 index 0000000000000..36101a110979a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) > [debug](./kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md) + +## ExpressionAstFunction.debug property + +Debug information added to each function when expression is executed in \*debug mode\*. + +Signature: + +```typescript +debug?: ExpressionAstFunctionDebug; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.function.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.function.md new file mode 100644 index 0000000000000..1840fff4b625f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.function.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) > [function](./kibana-plugin-plugins-expressions-public.expressionastfunction.function.md) + +## ExpressionAstFunction.function property + +Signature: + +```typescript +function: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md new file mode 100644 index 0000000000000..1004e58759806 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) + +## ExpressionAstFunction interface + +Signature: + +```typescript +export interface ExpressionAstFunction +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunction.arguments.md) | Record<string, ExpressionAstArgument[]> | | +| [debug](./kibana-plugin-plugins-expressions-public.expressionastfunction.debug.md) | ExpressionAstFunctionDebug | Debug information added to each function when expression is executed in \*debug mode\*. | +| [function](./kibana-plugin-plugins-expressions-public.expressionastfunction.function.md) | string | | +| [type](./kibana-plugin-plugins-expressions-public.expressionastfunction.type.md) | 'function' | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.type.md new file mode 100644 index 0000000000000..f7f8786430191 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastfunction.type.md) + +## ExpressionAstFunction.type property + +Signature: + +```typescript +type: 'function'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md new file mode 100644 index 0000000000000..da7f0ebc826c1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [addArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md) + +## ExpressionAstFunctionBuilder.addArgument property + +Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. + +Signature: + +```typescript +addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md new file mode 100644 index 0000000000000..4a95d20d6c983 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md) + +## ExpressionAstFunctionBuilder.arguments property + +Object of all args currently added to the function. This is structured similarly to `ExpressionAstFunction['arguments']`, however any subexpressions are returned as expression builder instances instead of expression ASTs. + +Signature: + +```typescript +arguments: FunctionBuilderArguments; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md new file mode 100644 index 0000000000000..0df9c80c632b1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [getArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md) + +## ExpressionAstFunctionBuilder.getArgument property + +Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling `replaceArgument`. Any subexpression arguments will be returned as expression builder instances. + +Signature: + +```typescript +getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md new file mode 100644 index 0000000000000..b05504af28d9b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) + +## ExpressionAstFunctionBuilder interface + +Signature: + +```typescript +export interface ExpressionAstFunctionBuilder +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [addArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this | Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. | +| [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef> | Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments'], however any subexpressions are returned as expression builder instances instead of expression ASTs. | +| [getArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined | Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument. Any subexpression arguments will be returned as expression builder instances. | +| [name](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name'] | Name of this expression function. | +| [removeArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this | Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument. | +| [replaceArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this | Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. | +| [toAst](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction | Converts function to an AST. ExpressionAstFunction | +| [toString](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md) | () => string | Converts function to an expression string. string | +| [type](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md) | 'expression_function_builder' | Used to identify expression function builder objects. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md new file mode 100644 index 0000000000000..5bcf965426dbd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [name](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md) + +## ExpressionAstFunctionBuilder.name property + +Name of this expression function. + +Signature: + +```typescript +name: InferFunctionDefinition['name']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md new file mode 100644 index 0000000000000..1883618c96d53 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [removeArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md) + +## ExpressionAstFunctionBuilder.removeArgument property + +Removes an (optional) argument from the function. + +TypeScript will enforce that you only remove optional arguments. For manipulating required args, use `replaceArgument`. + +Signature: + +```typescript +removeArgument: >>(name: A) => this; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md new file mode 100644 index 0000000000000..81709f6e94f0a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [replaceArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md) + +## ExpressionAstFunctionBuilder.replaceArgument property + +Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. + +Signature: + +```typescript +replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md new file mode 100644 index 0000000000000..bf79726c881ae --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md) + +## ExpressionAstFunctionBuilder.toAst property + +Converts function to an AST. + + `ExpressionAstFunction` + +Signature: + +```typescript +toAst: () => ExpressionAstFunction; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md new file mode 100644 index 0000000000000..5c8d0c806d372 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md) + +## ExpressionAstFunctionBuilder.toString property + +Converts function to an expression string. + + `string` + +Signature: + +```typescript +toString: () => string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md new file mode 100644 index 0000000000000..b88876b14f367 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md) + +## ExpressionAstFunctionBuilder.type property + +Used to identify expression function builder objects. + +Signature: + +```typescript +type: 'expression_function_builder'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md new file mode 100644 index 0000000000000..4e05b6a18374c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstNode](./kibana-plugin-plugins-expressions-public.expressionastnode.md) + +## ExpressionAstNode type + +Signature: + +```typescript +export declare type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md new file mode 100644 index 0000000000000..6741634379dc1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) > [interpreter](./kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md) + +## ExpressionExecutor.interpreter property + +Signature: + +```typescript +interpreter: ExpressionInterpreter; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md new file mode 100644 index 0000000000000..f0c457af52d22 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) + +## ExpressionExecutor interface + +> Warning: This API is now obsolete. +> +> This type if remainder from legacy platform, will be deleted going further. +> + +Signature: + +```typescript +export interface ExpressionExecutor +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [interpreter](./kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md) | ExpressionInterpreter | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md new file mode 100644 index 0000000000000..9c711b47c89d0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md) + +## ExpressionFunction.(constructor) + +Constructs a new instance of the `ExpressionFunction` class + +Signature: + +```typescript +constructor(functionDefinition: AnyExpressionFunctionDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md new file mode 100644 index 0000000000000..7a65878cd5a2d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [accepts](./kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md) + +## ExpressionFunction.accepts property + +Signature: + +```typescript +accepts: (type: string) => boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md new file mode 100644 index 0000000000000..550620386a892 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md) + +## ExpressionFunction.aliases property + +Aliases that can be used instead of `name`. + +Signature: + +```typescript +aliases: string[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md new file mode 100644 index 0000000000000..e14c08b8b7079 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [args](./kibana-plugin-plugins-expressions-public.expressionfunction.args.md) + +## ExpressionFunction.args property + +Specification of expression function parameters. + +Signature: + +```typescript +args: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md new file mode 100644 index 0000000000000..d94d9af9bf0f9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [fn](./kibana-plugin-plugins-expressions-public.expressionfunction.fn.md) + +## ExpressionFunction.fn property + +Function to run function (context, args) + +Signature: + +```typescript +fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md new file mode 100644 index 0000000000000..bbf70e11192eb --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunction.help.md) + +## ExpressionFunction.help property + +A short help text. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md new file mode 100644 index 0000000000000..865c856746062 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md) + +## ExpressionFunction.inputTypes property + +Type of inputs that this function supports. + +Signature: + +```typescript +inputTypes: string[] | undefined; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md new file mode 100644 index 0000000000000..5ca67e40c93ec --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) + +## ExpressionFunction class + +Signature: + +```typescript +export declare class ExpressionFunction +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(functionDefinition)](./kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md) | | Constructs a new instance of the ExpressionFunction class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [accepts](./kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md) | | (type: string) => boolean | | +| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md) | | string[] | Aliases that can be used instead of name. | +| [args](./kibana-plugin-plugins-expressions-public.expressionfunction.args.md) | | Record<string, ExpressionFunctionParameter> | Specification of expression function parameters. | +| [fn](./kibana-plugin-plugins-expressions-public.expressionfunction.fn.md) | | (input: ExpressionValue, params: Record<string, any>, handlers: object) => ExpressionValue | Function to run function (context, args) | +| [help](./kibana-plugin-plugins-expressions-public.expressionfunction.help.md) | | string | A short help text. | +| [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md) | | string[] | undefined | Type of inputs that this function supports. | +| [name](./kibana-plugin-plugins-expressions-public.expressionfunction.name.md) | | string | Name of function | +| [type](./kibana-plugin-plugins-expressions-public.expressionfunction.type.md) | | string | Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md new file mode 100644 index 0000000000000..2858089ea67de --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunction.name.md) + +## ExpressionFunction.name property + +Name of function + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md new file mode 100644 index 0000000000000..7a7bc129a1719 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [type](./kibana-plugin-plugins-expressions-public.expressionfunction.type.md) + +## ExpressionFunction.type property + +Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md new file mode 100644 index 0000000000000..bca3600b6d416 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md) + +## ExpressionFunctionDefinition.aliases property + + What is this? + +Signature: + +```typescript +aliases?: string[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md new file mode 100644 index 0000000000000..65ead35adf0d6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [args](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md) + +## ExpressionFunctionDefinition.args property + +Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. + +Signature: + +```typescript +args: { + [key in keyof Arguments]: ArgumentType; + }; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md new file mode 100644 index 0000000000000..34bbfc7976007 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md) + +## ExpressionFunctionDefinition.context property + +> Warning: This API is now obsolete. +> +> Use `inputTypes` instead. +> + +Signature: + +```typescript +context?: { + types: AnyExpressionFunctionDefinition['inputTypes']; + }; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md new file mode 100644 index 0000000000000..a2180c0cee665 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [fn](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md) + +## ExpressionFunctionDefinition.fn() method + +The actual implementation of the function. + +Signature: + +```typescript +fn(input: Input, args: Arguments, context: Context): Output; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| input | Input | | +| args | Arguments | | +| context | Context | | + +Returns: + +`Output` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md new file mode 100644 index 0000000000000..ad99bb3a14a0b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md) + +## ExpressionFunctionDefinition.help property + +Help text displayed in the Expression editor. This text should be internationalized. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md new file mode 100644 index 0000000000000..06c15dba514c2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md) + +## ExpressionFunctionDefinition.inputTypes property + +List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. + +Signature: + +```typescript +inputTypes?: Array>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md new file mode 100644 index 0000000000000..bc801542f81ac --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) + +## ExpressionFunctionDefinition interface + +`ExpressionFunctionDefinition` is the interface plugins have to implement to register a function in `expressions` plugin. + +Signature: + +```typescript +export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md) | string[] | What is this? | +| [args](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md) | {
[key in keyof Arguments]: ArgumentType<Arguments[key]>;
} | Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. | +| [context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md) | {
types: AnyExpressionFunctionDefinition['inputTypes'];
} | | +| [help](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md) | string | Help text displayed in the Expression editor. This text should be internationalized. | +| [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md) | Array<TypeToString<Input>> | List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. | +| [name](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md) | Name | The name of the function, as will be used in expression. | +| [type](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md) | TypeToString<UnwrapPromiseOrReturn<Output>> | Name of type of value this function outputs. | + +## Methods + +| Method | Description | +| --- | --- | +| [fn(input, args, context)](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md) | The actual implementation of the function. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md new file mode 100644 index 0000000000000..1c74a25851c96 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md) + +## ExpressionFunctionDefinition.name property + +The name of the function, as will be used in expression. + +Signature: + +```typescript +name: Name; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md new file mode 100644 index 0000000000000..4831f24a418bc --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [type](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md) + +## ExpressionFunctionDefinition.type property + +Name of type of value this function outputs. + +Signature: + +```typescript +type?: TypeToString>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md new file mode 100644 index 0000000000000..3b3b5520ab3ab --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [clog](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md) + +## ExpressionFunctionDefinitions.clog property + +Signature: + +```typescript +clog: ExpressionFunctionClog; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md new file mode 100644 index 0000000000000..06674eeaf9d7a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [font](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md) + +## ExpressionFunctionDefinitions.font property + +Signature: + +```typescript +font: ExpressionFunctionFont; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md new file mode 100644 index 0000000000000..abe8e0ae161ad --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [kibana](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md) + +## ExpressionFunctionDefinitions.kibana property + +Signature: + +```typescript +kibana: ExpressionFunctionKibana; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md new file mode 100644 index 0000000000000..4b58fd84e160d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [kibana\_context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md) + +## ExpressionFunctionDefinitions.kibana\_context property + +Signature: + +```typescript +kibana_context: ExpressionFunctionKibanaContext; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md new file mode 100644 index 0000000000000..914c5d6ebe2f6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) + +## ExpressionFunctionDefinitions interface + +A mapping of `ExpressionFunctionDefinition`s for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. + +Signature: + +```typescript +export interface ExpressionFunctionDefinitions +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [clog](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md) | ExpressionFunctionClog | | +| [font](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md) | ExpressionFunctionFont | | +| [kibana\_context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana_context.md) | ExpressionFunctionKibanaContext | | +| [kibana](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.kibana.md) | ExpressionFunctionKibana | | +| [theme](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md) | ExpressionFunctionTheme | | +| [var\_set](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md) | ExpressionFunctionVarSet | | +| [var](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md) | ExpressionFunctionVar | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md new file mode 100644 index 0000000000000..766aee8f80809 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [theme](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md) + +## ExpressionFunctionDefinitions.theme property + +Signature: + +```typescript +theme: ExpressionFunctionTheme; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md new file mode 100644 index 0000000000000..4c3f4bb98a51e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [var](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md) + +## ExpressionFunctionDefinitions.var property + +Signature: + +```typescript +var: ExpressionFunctionVar; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md new file mode 100644 index 0000000000000..a45d58242e4f3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [var\_set](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md) + +## ExpressionFunctionDefinitions.var\_set property + +Signature: + +```typescript +var_set: ExpressionFunctionVarSet; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md new file mode 100644 index 0000000000000..8ccf48ba28527 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionKibana](./kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md) + +## ExpressionFunctionKibana type + +Signature: + +```typescript +export declare type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md new file mode 100644 index 0000000000000..476ae51dd50f7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md) + +## ExpressionFunctionParameter.(constructor) + +Constructs a new instance of the `ExpressionFunctionParameter` class + +Signature: + +```typescript +constructor(name: string, arg: ArgumentType); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | +| arg | ArgumentType<any> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md new file mode 100644 index 0000000000000..13b658d86855e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [accepts](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md) + +## ExpressionFunctionParameter.accepts() method + +Signature: + +```typescript +accepts(type: string): boolean; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| type | string | | + +Returns: + +`boolean` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md new file mode 100644 index 0000000000000..03d6daac044b8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md) + +## ExpressionFunctionParameter.aliases property + +Signature: + +```typescript +aliases: string[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md new file mode 100644 index 0000000000000..20cb697c182ae --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [default](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md) + +## ExpressionFunctionParameter.default property + +Signature: + +```typescript +default: any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md new file mode 100644 index 0000000000000..102715264d5a9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md) + +## ExpressionFunctionParameter.help property + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md new file mode 100644 index 0000000000000..eb99255b09328 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md @@ -0,0 +1,38 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) + +## ExpressionFunctionParameter class + +Signature: + +```typescript +export declare class ExpressionFunctionParameter +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(name, arg)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md) | | Constructs a new instance of the ExpressionFunctionParameter class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md) | | string[] | | +| [default](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md) | | any | | +| [help](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md) | | string | | +| [multi](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md) | | boolean | | +| [name](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md) | | string | | +| [options](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md) | | any[] | | +| [required](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md) | | boolean | | +| [resolve](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md) | | boolean | | +| [types](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md) | | string[] | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [accepts(type)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md new file mode 100644 index 0000000000000..cc0bfbaac05a1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [multi](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md) + +## ExpressionFunctionParameter.multi property + +Signature: + +```typescript +multi: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md new file mode 100644 index 0000000000000..6a7d120a169dc --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md) + +## ExpressionFunctionParameter.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md new file mode 100644 index 0000000000000..c1596becd2f5b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [options](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md) + +## ExpressionFunctionParameter.options property + +Signature: + +```typescript +options: any[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md new file mode 100644 index 0000000000000..b4c494704edd7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [required](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md) + +## ExpressionFunctionParameter.required property + +Signature: + +```typescript +required: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md new file mode 100644 index 0000000000000..a5689aa2d4226 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [resolve](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md) + +## ExpressionFunctionParameter.resolve property + +Signature: + +```typescript +resolve: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md new file mode 100644 index 0000000000000..63d73001b7285 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [types](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md) + +## ExpressionFunctionParameter.types property + +Signature: + +```typescript +types: string[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md new file mode 100644 index 0000000000000..b6b34720a7dd8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [dataurl](./kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md) + +## ExpressionImage.dataurl property + +Signature: + +```typescript +dataurl: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md new file mode 100644 index 0000000000000..430273cca7edd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) + +## ExpressionImage interface + +Signature: + +```typescript +export interface ExpressionImage +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [dataurl](./kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md) | string | | +| [mode](./kibana-plugin-plugins-expressions-public.expressionimage.mode.md) | string | | +| [type](./kibana-plugin-plugins-expressions-public.expressionimage.type.md) | 'image' | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md new file mode 100644 index 0000000000000..f56a58ee71e98 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [mode](./kibana-plugin-plugins-expressions-public.expressionimage.mode.md) + +## ExpressionImage.mode property + +Signature: + +```typescript +mode: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md new file mode 100644 index 0000000000000..e3b6e135233ef --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [type](./kibana-plugin-plugins-expressions-public.expressionimage.type.md) + +## ExpressionImage.type property + +Signature: + +```typescript +type: 'image'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md new file mode 100644 index 0000000000000..9d5f7609ee6cd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md) + +## ExpressionRenderDefinition.displayName property + +A user friendly name of the renderer as will be displayed to user in UI. + +Signature: + +```typescript +displayName: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md new file mode 100644 index 0000000000000..ca67f18c0591f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md) + +## ExpressionRenderDefinition.help property + +Help text as will be displayed to user. A sentence or few about what this element does. + +Signature: + +```typescript +help?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md new file mode 100644 index 0000000000000..3c3322914cebe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) + +## ExpressionRenderDefinition interface + +Signature: + +```typescript +export interface ExpressionRenderDefinition +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md) | string | A user friendly name of the renderer as will be displayed to user in UI. | +| [help](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md) | string | Help text as will be displayed to user. A sentence or few about what this element does. | +| [name](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md) | string | Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the type: render object. | +| [render](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md) | (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise<void> | The function called to render the output data of an expression. | +| [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md) | boolean | Tell the renderer if the dom node should be reused, it's recreated each time by default. | +| [validate](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md) | () => undefined | Error | Used to validate the data before calling the render function. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md new file mode 100644 index 0000000000000..25b782549fe7b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md) + +## ExpressionRenderDefinition.name property + +Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the `type: render` object. + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md new file mode 100644 index 0000000000000..d476ae15d4237 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md) + +## ExpressionRenderDefinition.render property + +The function called to render the output data of an expression. + +Signature: + +```typescript +render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md new file mode 100644 index 0000000000000..515cb2c1c078d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md) + +## ExpressionRenderDefinition.reuseDomNode property + +Tell the renderer if the dom node should be reused, it's recreated each time by default. + +Signature: + +```typescript +reuseDomNode: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md new file mode 100644 index 0000000000000..616a0dcc0a94f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [validate](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md) + +## ExpressionRenderDefinition.validate property + +Used to validate the data before calling the render function. + +Signature: + +```typescript +validate?: () => undefined | Error; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md new file mode 100644 index 0000000000000..de74ee631fcf1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md) + +## ExpressionRenderer.(constructor) + +Constructs a new instance of the `ExpressionRenderer` class + +Signature: + +```typescript +constructor(config: ExpressionRenderDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | ExpressionRenderDefinition<Config> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md new file mode 100644 index 0000000000000..710bcc60a47e7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md) + +## ExpressionRenderer.displayName property + +Signature: + +```typescript +readonly displayName: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md new file mode 100644 index 0000000000000..f5b3f248e71fe --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [help](./kibana-plugin-plugins-expressions-public.expressionrenderer.help.md) + +## ExpressionRenderer.help property + +Signature: + +```typescript +readonly help: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md new file mode 100644 index 0000000000000..017d88c0cda69 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) + +## ExpressionRenderer class + +Signature: + +```typescript +export declare class ExpressionRenderer +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(config)](./kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md) | | Constructs a new instance of the ExpressionRenderer class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md) | | string | | +| [help](./kibana-plugin-plugins-expressions-public.expressionrenderer.help.md) | | string | | +| [name](./kibana-plugin-plugins-expressions-public.expressionrenderer.name.md) | | string | | +| [render](./kibana-plugin-plugins-expressions-public.expressionrenderer.render.md) | | ExpressionRenderDefinition<Config>['render'] | | +| [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md) | | boolean | | +| [validate](./kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md) | | () => void | Error | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md new file mode 100644 index 0000000000000..2ed6677cf6ec4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrenderer.name.md) + +## ExpressionRenderer.name property + +Signature: + +```typescript +readonly name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md new file mode 100644 index 0000000000000..2491cb31d7659 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderer.render.md) + +## ExpressionRenderer.render property + +Signature: + +```typescript +readonly render: ExpressionRenderDefinition['render']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md new file mode 100644 index 0000000000000..b5c3a89cc3ed1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md) + +## ExpressionRenderer.reuseDomNode property + +Signature: + +```typescript +readonly reuseDomNode: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md new file mode 100644 index 0000000000000..7c1a7ac65809f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [validate](./kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md) + +## ExpressionRenderer.validate property + +Signature: + +```typescript +readonly validate: () => void | Error; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md new file mode 100644 index 0000000000000..c49a74abe57f3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererComponent](./kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md) + +## ExpressionRendererComponent type + +Signature: + +```typescript +export declare type ExpressionRendererComponent = React.FC; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md new file mode 100644 index 0000000000000..537a3f278863d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) > [data](./kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md) + +## ExpressionRendererEvent.data property + +Signature: + +```typescript +data: any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md new file mode 100644 index 0000000000000..952d2f92496c3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) + +## ExpressionRendererEvent interface + +Signature: + +```typescript +export interface ExpressionRendererEvent +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [data](./kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md) | any | | +| [name](./kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md new file mode 100644 index 0000000000000..bbff92108358a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md) + +## ExpressionRendererEvent.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md new file mode 100644 index 0000000000000..cff44001f0a1f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [get](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md) + +## ExpressionRendererRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionRenderer | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionRenderer | null` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md new file mode 100644 index 0000000000000..e53f2a7970723 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) + +## ExpressionRendererRegistry class + +Signature: + +```typescript +export declare class ExpressionRendererRegistry implements IRegistry +``` + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md) | | | +| [register(definition)](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md new file mode 100644 index 0000000000000..13cabb0410861 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [register](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md) + +## ExpressionRendererRegistry.register() method + +Signature: + +```typescript +register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| definition | AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md new file mode 100644 index 0000000000000..b29fd46265d16 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md) + +## ExpressionRendererRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionRenderer[]; +``` +Returns: + +`ExpressionRenderer[]` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md new file mode 100644 index 0000000000000..930ef7f8d89d2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md) + +## ExpressionRendererRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md new file mode 100644 index 0000000000000..3b3c1644adbef --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) + +## ExpressionRenderError interface + +Signature: + +```typescript +export interface ExpressionRenderError extends Error +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [type](./kibana-plugin-plugins-expressions-public.expressionrendererror.type.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md new file mode 100644 index 0000000000000..b1939299a9d37 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) > [type](./kibana-plugin-plugins-expressions-public.expressionrendererror.type.md) + +## ExpressionRenderError.type property + +Signature: + +```typescript +type?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md new file mode 100644 index 0000000000000..fb6ba7ee2621c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) + +## ExpressionRenderHandler.(constructor) + +Constructs a new instance of the `ExpressionRenderHandler` class + +Signature: + +```typescript +constructor(element: HTMLElement, { onRenderError }?: Partial); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| element | HTMLElement | | +| { onRenderError } | Partial<ExpressionRenderHandlerParams> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md new file mode 100644 index 0000000000000..df949324b3b45 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [destroy](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md) + +## ExpressionRenderHandler.destroy property + +Signature: + +```typescript +destroy: () => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md new file mode 100644 index 0000000000000..c462724a4fdd9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [events$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md) + +## ExpressionRenderHandler.events$ property + +Signature: + +```typescript +events$: Observable; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md new file mode 100644 index 0000000000000..42262938502d8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [getElement](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md) + +## ExpressionRenderHandler.getElement property + +Signature: + +```typescript +getElement: () => HTMLElement; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md new file mode 100644 index 0000000000000..6a70cac98ef8a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [handleRenderError](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md) + +## ExpressionRenderHandler.handleRenderError property + +Signature: + +```typescript +handleRenderError: (error: ExpressionRenderError) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md new file mode 100644 index 0000000000000..7f7d5792ba684 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) + +## ExpressionRenderHandler class + +Signature: + +```typescript +export declare class ExpressionRenderHandler +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(element, { onRenderError })](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) | | Constructs a new instance of the ExpressionRenderHandler class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [destroy](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md) | | () => void | | +| [events$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md) | | Observable<ExpressionRendererEvent> | | +| [getElement](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md) | | () => HTMLElement | | +| [handleRenderError](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md) | | (error: ExpressionRenderError) => void | | +| [render](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md) | | (data: any, uiState?: any) => Promise<void> | | +| [render$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md) | | Observable<number> | | +| [update$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md) | | Observable<UpdateValue | null> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md new file mode 100644 index 0000000000000..dec17d60ffd14 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md) + +## ExpressionRenderHandler.render property + +Signature: + +```typescript +render: (data: any, uiState?: any) => Promise; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md new file mode 100644 index 0000000000000..631dcbfcf89c1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [render$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md) + +## ExpressionRenderHandler.render$ property + +Signature: + +```typescript +render$: Observable; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md new file mode 100644 index 0000000000000..527e64f8e4815 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [update$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md) + +## ExpressionRenderHandler.update$ property + +Signature: + +```typescript +update$: Observable; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md new file mode 100644 index 0000000000000..f49ae9b8166e7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md) + +## ExpressionsPublicPlugin.(constructor) + +Constructs a new instance of the `ExpressionsPublicPlugin` class + +Signature: + +```typescript +constructor(initializerContext: PluginInitializerContext); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initializerContext | PluginInitializerContext | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md new file mode 100644 index 0000000000000..dc8c961ceecc4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) + +## ExpressionsPublicPlugin class + +Signature: + +```typescript +export declare class ExpressionsPublicPlugin implements Plugin +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(initializerContext)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md) | | Constructs a new instance of the ExpressionsPublicPlugin class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [setup(core)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md) | | | +| [start(core)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md) | | | +| [stop()](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md new file mode 100644 index 0000000000000..11f72a737aa44 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [setup](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md) + +## ExpressionsPublicPlugin.setup() method + +Signature: + +```typescript +setup(core: CoreSetup): ExpressionsSetup; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| core | CoreSetup | | + +Returns: + +`ExpressionsSetup` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md new file mode 100644 index 0000000000000..75599e2575809 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [start](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md) + +## ExpressionsPublicPlugin.start() method + +Signature: + +```typescript +start(core: CoreStart): ExpressionsStart; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| core | CoreStart | | + +Returns: + +`ExpressionsStart` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md new file mode 100644 index 0000000000000..2de33ef166b96 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [stop](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md) + +## ExpressionsPublicPlugin.stop() method + +Signature: + +```typescript +stop(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md new file mode 100644 index 0000000000000..695adad8cbeaf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md) + +## ExpressionsService.(constructor) + +Constructs a new instance of the `ExpressionsService` class + +Signature: + +```typescript +constructor({ executor, renderers, }?: ExpressionServiceParams); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { executor, renderers, } | ExpressionServiceParams | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md new file mode 100644 index 0000000000000..e4ab0aa32516c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [execute](./kibana-plugin-plugins-expressions-public.expressionsservice.execute.md) + +## ExpressionsService.execute property + +Signature: + +```typescript +readonly execute: ExpressionsServiceStart['execute']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md new file mode 100644 index 0000000000000..f206a0a5c4bb3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [executor](./kibana-plugin-plugins-expressions-public.expressionsservice.executor.md) + +## ExpressionsService.executor property + +Signature: + +```typescript +readonly executor: Executor; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md new file mode 100644 index 0000000000000..5273f8d79f5cf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [fork](./kibana-plugin-plugins-expressions-public.expressionsservice.fork.md) + +## ExpressionsService.fork property + +Signature: + +```typescript +readonly fork: () => ExpressionsService; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md new file mode 100644 index 0000000000000..7d79a1e407a46 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md) + +## ExpressionsService.getFunction property + +Signature: + +```typescript +readonly getFunction: ExpressionsServiceStart['getFunction']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md new file mode 100644 index 0000000000000..6e1b1ca3e1c6d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getFunctions](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md) + +## ExpressionsService.getFunctions property + +Returns POJO map of all registered expression functions, where keys are names of the functions and values are `ExpressionFunction` instances. + +Signature: + +```typescript +readonly getFunctions: () => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md new file mode 100644 index 0000000000000..5821654cf8ec5 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md) + +## ExpressionsService.getRenderer property + +Signature: + +```typescript +readonly getRenderer: ExpressionsServiceStart['getRenderer']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md new file mode 100644 index 0000000000000..3258717759c90 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getRenderers](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md) + +## ExpressionsService.getRenderers property + +Returns POJO map of all registered expression renderers, where keys are names of the renderers and values are `ExpressionRenderer` instances. + +Signature: + +```typescript +readonly getRenderers: () => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md new file mode 100644 index 0000000000000..e8c451ab88e9f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getType](./kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md) + +## ExpressionsService.getType property + +Signature: + +```typescript +readonly getType: ExpressionsServiceStart['getType']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md new file mode 100644 index 0000000000000..844f581240d45 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getTypes](./kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md) + +## ExpressionsService.getTypes property + +Returns POJO map of all registered expression types, where keys are names of the types and values are `ExpressionType` instances. + +Signature: + +```typescript +readonly getTypes: () => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md new file mode 100644 index 0000000000000..fa93435bffc38 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md @@ -0,0 +1,72 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) + +## ExpressionsService class + +`ExpressionsService` class is used for multiple purposes: + +1. It implements the same Expressions service that can be used on both: (1) server-side and (2) browser-side. 2. It implements the same Expressions service that users can fork/clone, thus have their own instance of the Expressions plugin. 3. `ExpressionsService` defines the public contracts of \*setup\* and \*start\* Kibana Platform life-cycles for ease-of-use on server-side and browser-side. 4. `ExpressionsService` creates a bound version of all exported contract functions. 5. Functions are bound the way there are: + +\`\`\`ts registerFunction = (...args: Parameters<Executor\['registerFunction'\]> ): ReturnType<Executor\['registerFunction'\]> => this.executor.registerFunction(...args); \`\`\` + +so that JSDoc appears in developers IDE when they use those `plugins.expressions.registerFunction(`. + +Signature: + +```typescript +export declare class ExpressionsService +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)({ executor, renderers, })](./kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md) | | Constructs a new instance of the ExpressionsService class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [execute](./kibana-plugin-plugins-expressions-public.expressionsservice.execute.md) | | ExpressionsServiceStart['execute'] | | +| [executor](./kibana-plugin-plugins-expressions-public.expressionsservice.executor.md) | | Executor | | +| [fork](./kibana-plugin-plugins-expressions-public.expressionsservice.fork.md) | | () => ExpressionsService | | +| [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md) | | ExpressionsServiceStart['getFunction'] | | +| [getFunctions](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md) | | () => ReturnType<Executor['getFunctions']> | Returns POJO map of all registered expression functions, where keys are names of the functions and values are ExpressionFunction instances. | +| [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md) | | ExpressionsServiceStart['getRenderer'] | | +| [getRenderers](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md) | | () => ReturnType<ExpressionRendererRegistry['toJS']> | Returns POJO map of all registered expression renderers, where keys are names of the renderers and values are ExpressionRenderer instances. | +| [getType](./kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md) | | ExpressionsServiceStart['getType'] | | +| [getTypes](./kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md) | | () => ReturnType<Executor['getTypes']> | Returns POJO map of all registered expression types, where keys are names of the types and values are ExpressionType instances. | +| [registerFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md) | | (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void | Register an expression function, which will be possible to execute as part of the expression pipeline.Below we register a function which simply sleeps for given number of milliseconds to delay the execution and outputs its input as-is. +```ts +expressions.registerFunction({ + name: 'sleep', + args: { + time: { + aliases: ['_'], + help: 'Time in milliseconds for how long to sleep', + types: ['number'], + }, + }, + help: '', + fn: async (input, args, context) => { + await new Promise(r => setTimeout(r, args.time)); + return input; + }, +} + +``` +The actual function is defined in the fn key. The function can be \*async\*. It receives three arguments: (1) input is the output of the previous function or the initial input of the expression if the function is first in chain; (2) args are function arguments as defined in expression string, that can be edited by user (e.g in case of Canvas); (3) context is a shared object passed to all functions that can be used for side-effects. | +| [registerRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md) | | (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void | | +| [registerType](./kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md) | | (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void | | +| [renderers](./kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md) | | ExpressionRendererRegistry | | +| [run](./kibana-plugin-plugins-expressions-public.expressionsservice.run.md) | | ExpressionsServiceStart['run'] | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [setup()](./kibana-plugin-plugins-expressions-public.expressionsservice.setup.md) | | Returns Kibana Platform \*setup\* life-cycle contract. Useful to return the same contract on server-side and browser-side. | +| [start()](./kibana-plugin-plugins-expressions-public.expressionsservice.start.md) | | Returns Kibana Platform \*start\* life-cycle contract. Useful to return the same contract on server-side and browser-side. | +| [stop()](./kibana-plugin-plugins-expressions-public.expressionsservice.stop.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md new file mode 100644 index 0000000000000..0653e68bb4837 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md @@ -0,0 +1,35 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md) + +## ExpressionsService.registerFunction property + +Register an expression function, which will be possible to execute as part of the expression pipeline. + +Below we register a function which simply sleeps for given number of milliseconds to delay the execution and outputs its input as-is. + +```ts +expressions.registerFunction({ + name: 'sleep', + args: { + time: { + aliases: ['_'], + help: 'Time in milliseconds for how long to sleep', + types: ['number'], + }, + }, + help: '', + fn: async (input, args, context) => { + await new Promise(r => setTimeout(r, args.time)); + return input; + }, +} + +``` +The actual function is defined in the `fn` key. The function can be \*async\*. It receives three arguments: (1) `input` is the output of the previous function or the initial input of the expression if the function is first in chain; (2) `args` are function arguments as defined in expression string, that can be edited by user (e.g in case of Canvas); (3) `context` is a shared object passed to all functions that can be used for side-effects. + +Signature: + +```typescript +readonly registerFunction: (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md new file mode 100644 index 0000000000000..7aff36e7fd817 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md) + +## ExpressionsService.registerRenderer property + +Signature: + +```typescript +readonly registerRenderer: (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md new file mode 100644 index 0000000000000..e6e71e5e7e7e9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerType](./kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md) + +## ExpressionsService.registerType property + +Signature: + +```typescript +readonly registerType: (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md new file mode 100644 index 0000000000000..e43e9a21050ea --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [renderers](./kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md) + +## ExpressionsService.renderers property + +Signature: + +```typescript +readonly renderers: ExpressionRendererRegistry; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md new file mode 100644 index 0000000000000..47469167f6360 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [run](./kibana-plugin-plugins-expressions-public.expressionsservice.run.md) + +## ExpressionsService.run property + +Signature: + +```typescript +readonly run: ExpressionsServiceStart['run']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md new file mode 100644 index 0000000000000..a51f3f073d518 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [setup](./kibana-plugin-plugins-expressions-public.expressionsservice.setup.md) + +## ExpressionsService.setup() method + +Returns Kibana Platform \*setup\* life-cycle contract. Useful to return the same contract on server-side and browser-side. + +Signature: + +```typescript +setup(): ExpressionsServiceSetup; +``` +Returns: + +`ExpressionsServiceSetup` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md new file mode 100644 index 0000000000000..766d703a0729d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [start](./kibana-plugin-plugins-expressions-public.expressionsservice.start.md) + +## ExpressionsService.start() method + +Returns Kibana Platform \*start\* life-cycle contract. Useful to return the same contract on server-side and browser-side. + +Signature: + +```typescript +start(): ExpressionsServiceStart; +``` +Returns: + +`ExpressionsServiceStart` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md new file mode 100644 index 0000000000000..a32bb4a8bb009 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [stop](./kibana-plugin-plugins-expressions-public.expressionsservice.stop.md) + +## ExpressionsService.stop() method + +Signature: + +```typescript +stop(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md new file mode 100644 index 0000000000000..4cf3fb9b53978 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) + +## ExpressionsServiceSetup type + +The public contract that `ExpressionsService` provides to other plugins in Kibana Platform in \*setup\* life-cycle. + +Signature: + +```typescript +export declare type ExpressionsServiceSetup = Pick; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md new file mode 100644 index 0000000000000..b8211a6bff27c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [execute](./kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md) + +## ExpressionsServiceStart.execute property + +Starts expression execution and immediately returns `ExecutionContract` instance that tracks the progress of the execution and can be used to interact with the execution. + +Signature: + +```typescript +execute: = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => ExecutionContract; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md new file mode 100644 index 0000000000000..dd18daceb9539 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [fork](./kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md) + +## ExpressionsServiceStart.fork property + +Create a new instance of `ExpressionsService`. The new instance inherits all state of the original `ExpressionsService`, including all expression types, expression functions and context. Also, all new types and functions registered in the original services AFTER the forking event will be available in the forked instance. However, all new types and functions registered in the forked instances will NOT be available to the original service. + +Signature: + +```typescript +fork: () => ExpressionsService; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md new file mode 100644 index 0000000000000..d1a9bbce2a27e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md) + +## ExpressionsServiceStart.getFunction property + +Get a registered `ExpressionFunction` by its name, which was registered using the `registerFunction` method. The returned `ExpressionFunction` instance is an internal representation of the function in Expressions service - do not mutate that object. + +Signature: + +```typescript +getFunction: (name: string) => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md new file mode 100644 index 0000000000000..ef98fd633cb0c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md) + +## ExpressionsServiceStart.getRenderer property + +Get a registered `ExpressionRenderer` by its name, which was registered using the `registerRenderer` method. The returned `ExpressionRenderer` instance is an internal representation of the renderer in Expressions service - do not mutate that object. + +Signature: + +```typescript +getRenderer: (name: string) => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md new file mode 100644 index 0000000000000..e9ec1733513ba --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getType](./kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md) + +## ExpressionsServiceStart.getType property + +Get a registered `ExpressionType` by its name, which was registered using the `registerType` method. The returned `ExpressionType` instance is an internal representation of the type in Expressions service - do not mutate that object. + +Signature: + +```typescript +getType: (name: string) => ReturnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md new file mode 100644 index 0000000000000..34bf16c121326 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md @@ -0,0 +1,35 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) + +## ExpressionsServiceStart interface + +The public contract that `ExpressionsService` provides to other plugins in Kibana Platform in \*start\* life-cycle. + +Signature: + +```typescript +export interface ExpressionsServiceStart +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [execute](./kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md) | <Input = unknown, Output = unknown, ExtraContext extends Record<string, unknown> = Record<string, unknown>>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => ExecutionContract<ExtraContext, Input, Output> | Starts expression execution and immediately returns ExecutionContract instance that tracks the progress of the execution and can be used to interact with the execution. | +| [fork](./kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md) | () => ExpressionsService | Create a new instance of ExpressionsService. The new instance inherits all state of the original ExpressionsService, including all expression types, expression functions and context. Also, all new types and functions registered in the original services AFTER the forking event will be available in the forked instance. However, all new types and functions registered in the forked instances will NOT be available to the original service. | +| [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md) | (name: string) => ReturnType<Executor['getFunction']> | Get a registered ExpressionFunction by its name, which was registered using the registerFunction method. The returned ExpressionFunction instance is an internal representation of the function in Expressions service - do not mutate that object. | +| [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md) | (name: string) => ReturnType<ExpressionRendererRegistry['get']> | Get a registered ExpressionRenderer by its name, which was registered using the registerRenderer method. The returned ExpressionRenderer instance is an internal representation of the renderer in Expressions service - do not mutate that object. | +| [getType](./kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md) | (name: string) => ReturnType<Executor['getType']> | Get a registered ExpressionType by its name, which was registered using the registerType method. The returned ExpressionType instance is an internal representation of the type in Expressions service - do not mutate that object. | +| [run](./kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md) | <Input, Output, ExtraContext extends Record<string, unknown> = Record<string, unknown>>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => Promise<Output> | Executes expression string or a parsed expression AST and immediately returns the result.Below example will execute sleep 100 | clog expression with 123 initial input to the first function. +```ts +expressions.run('sleep 100 | clog', 123); + +``` +- sleep 100 will delay execution by 100 milliseconds and pass the 123 input as its output. - clog will print to console 123 and pass it as its output. - The final result of the execution will be 123.Optionally, you can pass an object as the third argument which will be used to extend the ExecutionContext&mdash;an object passed to each function as the third argument, that allows functions to perform side-effects. +```ts +expressions.run('...', null, { elasticsearchClient }); + +``` + | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md new file mode 100644 index 0000000000000..578c583624ad0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [run](./kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md) + +## ExpressionsServiceStart.run property + +Executes expression string or a parsed expression AST and immediately returns the result. + +Below example will execute `sleep 100 | clog` expression with `123` initial input to the first function. + +```ts +expressions.run('sleep 100 | clog', 123); + +``` +- `sleep 100` will delay execution by 100 milliseconds and pass the `123` input as its output. - `clog` will print to console `123` and pass it as its output. - The final result of the execution will be `123`. + +Optionally, you can pass an object as the third argument which will be used to extend the `ExecutionContext`&mdash;an object passed to each function as the third argument, that allows functions to perform side-effects. + +```ts +expressions.run('...', null, { elasticsearchClient }); + +``` + +Signature: + +```typescript +run: = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => Promise; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md new file mode 100644 index 0000000000000..01a894ae8fba6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsSetup](./kibana-plugin-plugins-expressions-public.expressionssetup.md) + +## ExpressionsSetup type + +Expressions public setup contract, extends [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) + +Signature: + +```typescript +export declare type ExpressionsSetup = ExpressionsServiceSetup; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md new file mode 100644 index 0000000000000..b7226b12b0d2b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ExpressionLoader](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md) + +## ExpressionsStart.ExpressionLoader property + +Signature: + +```typescript +ExpressionLoader: typeof ExpressionLoader; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md new file mode 100644 index 0000000000000..a78bb6f154c46 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md) + +## ExpressionsStart.ExpressionRenderHandler property + +Signature: + +```typescript +ExpressionRenderHandler: typeof ExpressionRenderHandler; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md new file mode 100644 index 0000000000000..109d8e8bcab66 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [loader](./kibana-plugin-plugins-expressions-public.expressionsstart.loader.md) + +## ExpressionsStart.loader property + +Signature: + +```typescript +loader: IExpressionLoader; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md new file mode 100644 index 0000000000000..ac4004590b5a6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) + +## ExpressionsStart interface + +Expressions public start contrect, extends + +Signature: + +```typescript +export interface ExpressionsStart extends ExpressionsServiceStart +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ExpressionLoader](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md) | typeof ExpressionLoader | | +| [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md) | typeof ExpressionRenderHandler | | +| [loader](./kibana-plugin-plugins-expressions-public.expressionsstart.loader.md) | IExpressionLoader | | +| [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md) | typeof ReactExpressionRenderer | | +| [render](./kibana-plugin-plugins-expressions-public.expressionsstart.render.md) | typeof render | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md new file mode 100644 index 0000000000000..bbd7253a747c4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md) + +## ExpressionsStart.ReactExpressionRenderer property + +Signature: + +```typescript +ReactExpressionRenderer: typeof ReactExpressionRenderer; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md new file mode 100644 index 0000000000000..fcf279206119e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [render](./kibana-plugin-plugins-expressions-public.expressionsstart.render.md) + +## ExpressionsStart.render property + +Signature: + +```typescript +render: typeof render; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md new file mode 100644 index 0000000000000..2302be5643722 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md) + +## ExpressionType.(constructor) + +Constructs a new instance of the `ExpressionType` class + +Signature: + +```typescript +constructor(definition: AnyExpressionTypeDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| definition | AnyExpressionTypeDefinition | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md new file mode 100644 index 0000000000000..e238db1b45086 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [castsFrom](./kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md) + +## ExpressionType.castsFrom property + +Signature: + +```typescript +castsFrom: (value: ExpressionValue) => boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md new file mode 100644 index 0000000000000..36e03e6f3d53f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [castsTo](./kibana-plugin-plugins-expressions-public.expressiontype.caststo.md) + +## ExpressionType.castsTo property + +Signature: + +```typescript +castsTo: (value: ExpressionValue) => boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md new file mode 100644 index 0000000000000..e2da70b50b0d4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [create](./kibana-plugin-plugins-expressions-public.expressiontype.create.md) + +## ExpressionType.create property + +Signature: + +```typescript +create: unknown; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md new file mode 100644 index 0000000000000..d47056817358c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [deserialize](./kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md) + +## ExpressionType.deserialize property + +Signature: + +```typescript +deserialize?: (serialized: any) => ExpressionValue; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md new file mode 100644 index 0000000000000..51a36f614fbbf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [from](./kibana-plugin-plugins-expressions-public.expressiontype.from.md) + +## ExpressionType.from property + +Signature: + +```typescript +from: (value: ExpressionValue, types: Record) => any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md new file mode 100644 index 0000000000000..10d7bb4331916 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [getFromFn](./kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md) + +## ExpressionType.getFromFn property + +Signature: + +```typescript +getFromFn: (typeName: string) => undefined | ExpressionValueConverter; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md new file mode 100644 index 0000000000000..25b71163e5709 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [getToFn](./kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md) + +## ExpressionType.getToFn property + +Signature: + +```typescript +getToFn: (typeName: string) => undefined | ExpressionValueConverter; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md new file mode 100644 index 0000000000000..e27e1dea2a872 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [help](./kibana-plugin-plugins-expressions-public.expressiontype.help.md) + +## ExpressionType.help property + +A short help text. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md new file mode 100644 index 0000000000000..acb72b796cf1d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md @@ -0,0 +1,35 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) + +## ExpressionType class + +Signature: + +```typescript +export declare class ExpressionType +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(definition)](./kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md) | | Constructs a new instance of the ExpressionType class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [castsFrom](./kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md) | | (value: ExpressionValue) => boolean | | +| [castsTo](./kibana-plugin-plugins-expressions-public.expressiontype.caststo.md) | | (value: ExpressionValue) => boolean | | +| [create](./kibana-plugin-plugins-expressions-public.expressiontype.create.md) | | unknown | | +| [deserialize](./kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md) | | (serialized: any) => ExpressionValue | | +| [from](./kibana-plugin-plugins-expressions-public.expressiontype.from.md) | | (value: ExpressionValue, types: Record<string, ExpressionType>) => any | | +| [getFromFn](./kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | +| [getToFn](./kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | +| [help](./kibana-plugin-plugins-expressions-public.expressiontype.help.md) | | string | A short help text. | +| [name](./kibana-plugin-plugins-expressions-public.expressiontype.name.md) | | string | | +| [serialize](./kibana-plugin-plugins-expressions-public.expressiontype.serialize.md) | | (value: ExpressionValue) => any | Optional serialization (used when passing context around client/server). | +| [to](./kibana-plugin-plugins-expressions-public.expressiontype.to.md) | | (value: ExpressionValue, toTypeName: string, types: Record<string, ExpressionType>) => any | | +| [validate](./kibana-plugin-plugins-expressions-public.expressiontype.validate.md) | | (type: any) => void | Error | Type validation, useful for checking function output. | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md new file mode 100644 index 0000000000000..8d14f6e4f6bd8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [name](./kibana-plugin-plugins-expressions-public.expressiontype.name.md) + +## ExpressionType.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md new file mode 100644 index 0000000000000..cb4821b97e022 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [serialize](./kibana-plugin-plugins-expressions-public.expressiontype.serialize.md) + +## ExpressionType.serialize property + +Optional serialization (used when passing context around client/server). + +Signature: + +```typescript +serialize?: (value: ExpressionValue) => any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md new file mode 100644 index 0000000000000..8045c5df638b0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [to](./kibana-plugin-plugins-expressions-public.expressiontype.to.md) + +## ExpressionType.to property + +Signature: + +```typescript +to: (value: ExpressionValue, toTypeName: string, types: Record) => any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md new file mode 100644 index 0000000000000..7214467b2b444 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [validate](./kibana-plugin-plugins-expressions-public.expressiontype.validate.md) + +## ExpressionType.validate property + +Type validation, useful for checking function output. + +Signature: + +```typescript +validate: (type: any) => void | Error; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md new file mode 100644 index 0000000000000..75dac1e991f65 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [deserialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md) + +## ExpressionTypeDefinition.deserialize property + +Signature: + +```typescript +deserialize?: (type: SerializedType) => Value; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md new file mode 100644 index 0000000000000..ac8920066eda7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [from](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md) + +## ExpressionTypeDefinition.from property + +Signature: + +```typescript +from?: { + [type: string]: ExpressionValueConverter; + }; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md new file mode 100644 index 0000000000000..ad5e5eb38fa72 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md) + +## ExpressionTypeDefinition.help property + +Signature: + +```typescript +help?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md new file mode 100644 index 0000000000000..8c183e9a6de80 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) + +## ExpressionTypeDefinition interface + +A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. + +Signature: + +```typescript +export interface ExpressionTypeDefinition +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [deserialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md) | (type: SerializedType) => Value | | +| [from](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md) | {
[type: string]: ExpressionValueConverter<any, Value>;
} | | +| [help](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md) | string | | +| [name](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md) | Name | | +| [serialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md) | (type: Value) => SerializedType | | +| [to](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md) | {
[type: string]: ExpressionValueConverter<Value, any>;
} | | +| [validate](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md) | (type: any) => void | Error | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md new file mode 100644 index 0000000000000..eb79d01040373 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md) + +## ExpressionTypeDefinition.name property + +Signature: + +```typescript +name: Name; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md new file mode 100644 index 0000000000000..5881ddbe5a6c4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [serialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md) + +## ExpressionTypeDefinition.serialize property + +Signature: + +```typescript +serialize?: (type: Value) => SerializedType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md new file mode 100644 index 0000000000000..282cdcdfb342d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [to](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md) + +## ExpressionTypeDefinition.to property + +Signature: + +```typescript +to?: { + [type: string]: ExpressionValueConverter; + }; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md new file mode 100644 index 0000000000000..67d5e832c6284 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [validate](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md) + +## ExpressionTypeDefinition.validate property + +Signature: + +```typescript +validate?: (type: any) => void | Error; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md new file mode 100644 index 0000000000000..ca8e881ef7e46 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [css](./kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md) + +## ExpressionTypeStyle.css property + +Signature: + +```typescript +css: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md new file mode 100644 index 0000000000000..4e1cc86699f2d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) + +## ExpressionTypeStyle interface + +An object that represents style information, typically CSS. + +Signature: + +```typescript +export interface ExpressionTypeStyle +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [css](./kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md) | string | | +| [spec](./kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md) | CSSStyle | | +| [type](./kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md) | 'style' | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md new file mode 100644 index 0000000000000..e732893366a36 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [spec](./kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md) + +## ExpressionTypeStyle.spec property + +Signature: + +```typescript +spec: CSSStyle; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md new file mode 100644 index 0000000000000..01dd9b0da1072 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [type](./kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md) + +## ExpressionTypeStyle.type property + +Signature: + +```typescript +type: 'style'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md new file mode 100644 index 0000000000000..53ab339df902a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValue](./kibana-plugin-plugins-expressions-public.expressionvalue.md) + +## ExpressionValue type + +Signature: + +```typescript +export declare type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md new file mode 100644 index 0000000000000..6d8f060d4f91f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-public.expressionvalueboxed.md) + +## ExpressionValueBoxed type + +Signature: + +```typescript +export declare type ExpressionValueBoxed = { + type: Type; +} & Value; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md new file mode 100644 index 0000000000000..95e69645b53ee --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueConverter](./kibana-plugin-plugins-expressions-public.expressionvalueconverter.md) + +## ExpressionValueConverter type + +Signature: + +```typescript +export declare type ExpressionValueConverter = (input: I, availableTypes: Record) => O; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md new file mode 100644 index 0000000000000..4a714fe62424f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueError](./kibana-plugin-plugins-expressions-public.expressionvalueerror.md) + +## ExpressionValueError type + +Signature: + +```typescript +export declare type ExpressionValueError = ExpressionValueBoxed<'error', { + error: { + message: string; + type?: string; + name?: string; + stack?: string; + original?: Error; + }; + info?: unknown; +}>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md new file mode 100644 index 0000000000000..07c1bfe9a96d6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueFilter](./kibana-plugin-plugins-expressions-public.expressionvaluefilter.md) + +## ExpressionValueFilter type + +Represents an object that is a Filter. + +Signature: + +```typescript +export declare type ExpressionValueFilter = ExpressionValueBoxed<'filter', { + filterType?: string; + value?: string; + column?: string; + and: ExpressionValueFilter[]; + to?: string; + from?: string; + query?: string | null; +}>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md new file mode 100644 index 0000000000000..fc92777ffd5b6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueNum](./kibana-plugin-plugins-expressions-public.expressionvaluenum.md) + +## ExpressionValueNum type + +Signature: + +```typescript +export declare type ExpressionValueNum = ExpressionValueBoxed<'num', { + value: number; +}>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md new file mode 100644 index 0000000000000..be9e7f859daec --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueRender](./kibana-plugin-plugins-expressions-public.expressionvaluerender.md) + +## ExpressionValueRender type + +Represents an object that is intended to be rendered. + +Signature: + +```typescript +export declare type ExpressionValueRender = ExpressionValueBoxed; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md new file mode 100644 index 0000000000000..bf64dfe4c86f7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueSearchContext](./kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md) + +## ExpressionValueSearchContext type + +Signature: + +```typescript +export declare type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md new file mode 100644 index 0000000000000..fbc37fe667d5e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md) + +## ExpressionValueUnboxed type + +Signature: + +```typescript +export declare type ExpressionValueUnboxed = any; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md new file mode 100644 index 0000000000000..87294ce59feb6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) > [label](./kibana-plugin-plugins-expressions-public.font.label.md) + +## Font.label property + +Signature: + +```typescript +label: FontLabel; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md new file mode 100644 index 0000000000000..ef63d28fe6fba --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) + +## Font interface + +An interface representing a font in Canvas, with a textual label and the CSS `font-value`. + +Signature: + +```typescript +export interface Font +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [label](./kibana-plugin-plugins-expressions-public.font.label.md) | FontLabel | | +| [value](./kibana-plugin-plugins-expressions-public.font.value.md) | FontValue | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md new file mode 100644 index 0000000000000..cada244174785 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) > [value](./kibana-plugin-plugins-expressions-public.font.value.md) + +## Font.value property + +Signature: + +```typescript +value: FontValue; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md new file mode 100644 index 0000000000000..5af3427730ad1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontLabel](./kibana-plugin-plugins-expressions-public.fontlabel.md) + +## FontLabel type + +This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. + +Signature: + +```typescript +export declare type FontLabel = typeof fonts[number]['label']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md new file mode 100644 index 0000000000000..9f70d91c7ac9b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontStyle](./kibana-plugin-plugins-expressions-public.fontstyle.md) + +## FontStyle enum + +Enum of supported CSS `font-style` properties. + +Signature: + +```typescript +export declare enum FontStyle +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| ITALIC | "italic" | | +| NORMAL | "normal" | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md new file mode 100644 index 0000000000000..f03c9b61cb733 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontValue](./kibana-plugin-plugins-expressions-public.fontvalue.md) + +## FontValue type + +This type contains a union of all supported font values, equivalent to the CSS `font-value` property. + +Signature: + +```typescript +export declare type FontValue = typeof fonts[number]['value']; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md new file mode 100644 index 0000000000000..43388a3de11cc --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontWeight](./kibana-plugin-plugins-expressions-public.fontweight.md) + +## FontWeight enum + +Enum of supported CSS `font-weight` properties. + +Signature: + +```typescript +export declare enum FontWeight +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| BOLD | "bold" | | +| BOLDER | "bolder" | | +| EIGHT | "800" | | +| FIVE | "500" | | +| FOUR | "400" | | +| LIGHTER | "lighter" | | +| NINE | "900" | | +| NORMAL | "normal" | | +| ONE | "100" | | +| SEVEN | "700" | | +| SIX | "600" | | +| THREE | "300" | | +| TWO | "200" | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md new file mode 100644 index 0000000000000..27a9690e6fb0d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [format](./kibana-plugin-plugins-expressions-public.format.md) + +## format() function + +Signature: + +```typescript +export declare function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | T | | +| type | T extends ExpressionAstExpression ? 'expression' : 'argument' | | + +Returns: + +`string` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md new file mode 100644 index 0000000000000..425aa9c6171fc --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [formatExpression](./kibana-plugin-plugins-expressions-public.formatexpression.md) + +## formatExpression() function + +Given expression pipeline AST, returns formatted string. + +Signature: + +```typescript +export declare function formatExpression(ast: ExpressionAstExpression): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | ExpressionAstExpression | | + +Returns: + +`string` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md new file mode 100644 index 0000000000000..2ab299e3d32f4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md) + +## FunctionsRegistry.(constructor) + +Constructs a new instance of the `FunctionsRegistry` class + +Signature: + +```typescript +constructor(executor: Executor); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| executor | Executor<any> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md new file mode 100644 index 0000000000000..3ed2807028299 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [get](./kibana-plugin-plugins-expressions-public.functionsregistry.get.md) + +## FunctionsRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionFunction | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionFunction | null` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md new file mode 100644 index 0000000000000..b32623934ee92 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) + +## FunctionsRegistry class + +Signature: + +```typescript +export declare class FunctionsRegistry implements IRegistry +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(executor)](./kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md) | | Constructs a new instance of the FunctionsRegistry class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-public.functionsregistry.get.md) | | | +| [register(functionDefinition)](./kibana-plugin-plugins-expressions-public.functionsregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md new file mode 100644 index 0000000000000..32f7f389e8958 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [register](./kibana-plugin-plugins-expressions-public.functionsregistry.register.md) + +## FunctionsRegistry.register() method + +Signature: + +```typescript +register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md new file mode 100644 index 0000000000000..5bc482097a175 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md) + +## FunctionsRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionFunction[]; +``` +Returns: + +`ExpressionFunction[]` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md new file mode 100644 index 0000000000000..d6790fb8f726e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md) + +## FunctionsRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md new file mode 100644 index 0000000000000..40dcf07667b1b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [context](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md) + +## IExpressionLoaderParams.context property + +Signature: + +```typescript +context?: ExpressionValue; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md new file mode 100644 index 0000000000000..00ff3d498eb5c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [customFunctions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md) + +## IExpressionLoaderParams.customFunctions property + +Signature: + +```typescript +customFunctions?: []; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md new file mode 100644 index 0000000000000..72b82e2d41b05 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [customRenderers](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md) + +## IExpressionLoaderParams.customRenderers property + +Signature: + +```typescript +customRenderers?: []; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md new file mode 100644 index 0000000000000..62483016d3aee --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [disableCaching](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md) + +## IExpressionLoaderParams.disableCaching property + +Signature: + +```typescript +disableCaching?: boolean; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md new file mode 100644 index 0000000000000..52f2a6e56d133 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md) + +## IExpressionLoaderParams.inspectorAdapters property + +Signature: + +```typescript +inspectorAdapters?: Adapters; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md new file mode 100644 index 0000000000000..b8a174f93fb99 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) + +## IExpressionLoaderParams interface + +Signature: + +```typescript +export interface IExpressionLoaderParams +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md) | ExpressionValue | | +| [customFunctions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md) | [] | | +| [customRenderers](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md) | [] | | +| [disableCaching](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md) | boolean | | +| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md) | Adapters | | +| [onRenderError](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md) | RenderErrorHandlerFnType | | +| [searchContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md) | ExecutionContextSearch | | +| [uiState](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md) | unknown | | +| [variables](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md) | Record<string, any> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md new file mode 100644 index 0000000000000..f45a9c76242c4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [onRenderError](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md) + +## IExpressionLoaderParams.onRenderError property + +Signature: + +```typescript +onRenderError?: RenderErrorHandlerFnType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md new file mode 100644 index 0000000000000..523d0c562f7ca --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [searchContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md) + +## IExpressionLoaderParams.searchContext property + +Signature: + +```typescript +searchContext?: ExecutionContextSearch; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md new file mode 100644 index 0000000000000..dca5032dabc78 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [uiState](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md) + +## IExpressionLoaderParams.uiState property + +Signature: + +```typescript +uiState?: unknown; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md new file mode 100644 index 0000000000000..0a04671919bd0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [variables](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md) + +## IExpressionLoaderParams.variables property + +Signature: + +```typescript +variables?: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md new file mode 100644 index 0000000000000..533cf498d72cf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [done](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md) + +## IInterpreterRenderHandlers.done property + +Done increments the number of rendering successes + +Signature: + +```typescript +done: () => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md new file mode 100644 index 0000000000000..476167965927d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [event](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md) + +## IInterpreterRenderHandlers.event property + +Signature: + +```typescript +event: (event: any) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md new file mode 100644 index 0000000000000..9dbd18ae687b4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) + +## IInterpreterRenderHandlers interface + +Signature: + +```typescript +export interface IInterpreterRenderHandlers +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [done](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | +| [event](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md) | (event: any) => void | | +| [onDestroy](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | +| [reload](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md) | () => void | | +| [update](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md) | (params: any) => void | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md new file mode 100644 index 0000000000000..b68c2023fdc8a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [onDestroy](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md) + +## IInterpreterRenderHandlers.onDestroy property + +Signature: + +```typescript +onDestroy: (fn: () => void) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md new file mode 100644 index 0000000000000..0acd440e84f12 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [reload](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md) + +## IInterpreterRenderHandlers.reload property + +Signature: + +```typescript +reload: () => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md new file mode 100644 index 0000000000000..28fcb58fb3c10 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [update](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md) + +## IInterpreterRenderHandlers.update property + +Signature: + +```typescript +update: (params: any) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md new file mode 100644 index 0000000000000..8cb346eda4d74 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [InterpreterErrorType](./kibana-plugin-plugins-expressions-public.interpretererrortype.md) + +## InterpreterErrorType type + +> Warning: This API is now obsolete. +> +> Exported for backwards compatibility. +> + +Signature: + +```typescript +export declare type InterpreterErrorType = ExpressionValueError; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md new file mode 100644 index 0000000000000..9aa696869eaa3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [get](./kibana-plugin-plugins-expressions-public.iregistry.get.md) + +## IRegistry.get() method + +Signature: + +```typescript +get(id: string): T | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`T | null` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md new file mode 100644 index 0000000000000..64991d90f2ae0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) + +## IRegistry interface + +Signature: + +```typescript +export interface IRegistry +``` + +## Methods + +| Method | Description | +| --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-public.iregistry.get.md) | | +| [toArray()](./kibana-plugin-plugins-expressions-public.iregistry.toarray.md) | | +| [toJS()](./kibana-plugin-plugins-expressions-public.iregistry.tojs.md) | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md new file mode 100644 index 0000000000000..36b16ca48323f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.iregistry.toarray.md) + +## IRegistry.toArray() method + +Signature: + +```typescript +toArray(): T[]; +``` +Returns: + +`T[]` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md new file mode 100644 index 0000000000000..2f7a3597c1f02 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.iregistry.tojs.md) + +## IRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md new file mode 100644 index 0000000000000..f35e7122caeb5 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [isExpressionAstBuilder](./kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md) + +## isExpressionAstBuilder() function + +Type guard that checks whether a given value is an `ExpressionAstExpressionBuilder`. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. + +Signature: + +```typescript +export declare function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| val | any | | + +Returns: + +`val is ExpressionAstExpressionBuilder` + +## Example + +const arg = myFunction.getArgument('foo'); if (isExpressionAstBuilder(foo)) { foo.toAst(); } + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibana_context_name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibana_context_name.md new file mode 100644 index 0000000000000..e568db84f383d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibana_context_name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KIBANA\_CONTEXT\_NAME](./kibana-plugin-plugins-expressions-public.kibana_context_name.md) + +## KIBANA\_CONTEXT\_NAME type + +Signature: + +```typescript +export declare type KIBANA_CONTEXT_NAME = 'kibana_context'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanacontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanacontext.md new file mode 100644 index 0000000000000..108533e8de357 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanacontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaContext](./kibana-plugin-plugins-expressions-public.kibanacontext.md) + +## KibanaContext type + +Signature: + +```typescript +export declare type KibanaContext = ExpressionValueSearchContext; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md new file mode 100644 index 0000000000000..c8aa768a883d6 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-public.kibanadatatable.md) > [columns](./kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md) + +## KibanaDatatable.columns property + +Signature: + +```typescript +columns: KibanaDatatableColumn[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.md new file mode 100644 index 0000000000000..4ea1d6f42b66d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-public.kibanadatatable.md) + +## KibanaDatatable interface + +Signature: + +```typescript +export interface KibanaDatatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [columns](./kibana-plugin-plugins-expressions-public.kibanadatatable.columns.md) | KibanaDatatableColumn[] | | +| [rows](./kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md) | KibanaDatatableRow[] | | +| [type](./kibana-plugin-plugins-expressions-public.kibanadatatable.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md new file mode 100644 index 0000000000000..43f3243dc4fa7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-public.kibanadatatable.md) > [rows](./kibana-plugin-plugins-expressions-public.kibanadatatable.rows.md) + +## KibanaDatatable.rows property + +Signature: + +```typescript +rows: KibanaDatatableRow[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.type.md new file mode 100644 index 0000000000000..996f59cbb77a1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatable.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-public.kibanadatatable.md) > [type](./kibana-plugin-plugins-expressions-public.kibanadatatable.type.md) + +## KibanaDatatable.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md new file mode 100644 index 0000000000000..b517c1610261b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) > [formatHint](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md) + +## KibanaDatatableColumn.formatHint property + +Signature: + +```typescript +formatHint?: SerializedFieldFormat; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md new file mode 100644 index 0000000000000..e7d43190589a7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md) + +## KibanaDatatableColumn.id property + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md new file mode 100644 index 0000000000000..138c19f0ec7bd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) + +## KibanaDatatableColumn interface + +Signature: + +```typescript +export interface KibanaDatatableColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [formatHint](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.formathint.md) | SerializedFieldFormat | | +| [id](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.id.md) | string | | +| [meta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md) | KibanaDatatableColumnMeta | | +| [name](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md new file mode 100644 index 0000000000000..df2d09bf3cc55 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.meta.md) + +## KibanaDatatableColumn.meta property + +Signature: + +```typescript +meta?: KibanaDatatableColumnMeta; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md new file mode 100644 index 0000000000000..841ad67f3f521 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.name.md) + +## KibanaDatatableColumn.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md new file mode 100644 index 0000000000000..2ec6edda4cbca --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md) > [aggConfigParams](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md) + +## KibanaDatatableColumnMeta.aggConfigParams property + +Signature: + +```typescript +aggConfigParams?: Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md new file mode 100644 index 0000000000000..2287c28398f7f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md) > [indexPatternId](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md) + +## KibanaDatatableColumnMeta.indexPatternId property + +Signature: + +```typescript +indexPatternId?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md new file mode 100644 index 0000000000000..b2f8c9d06a727 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md) + +## KibanaDatatableColumnMeta interface + +Signature: + +```typescript +export interface KibanaDatatableColumnMeta +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aggConfigParams](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.aggconfigparams.md) | Record<string, any> | | +| [indexPatternId](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.indexpatternid.md) | string | | +| [type](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md) | string | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md new file mode 100644 index 0000000000000..98d4a0c2d43c3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md) > [type](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.type.md) + +## KibanaDatatableColumnMeta.type property + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablerow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablerow.md new file mode 100644 index 0000000000000..cb5f1ad70f628 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.kibanadatatablerow.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KibanaDatatableRow](./kibana-plugin-plugins-expressions-public.kibanadatatablerow.md) + +## KibanaDatatableRow interface + +Signature: + +```typescript +export interface KibanaDatatableRow +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md new file mode 100644 index 0000000000000..39c24760ca6ca --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KnownTypeToString](./kibana-plugin-plugins-expressions-public.knowntypetostring.md) + +## KnownTypeToString type + +Map the type of the generic to a string-based representation of the type. + +If the provided generic is its own type interface, we use the value of the `type` key as a string literal type for it. + +Signature: + +```typescript +export declare type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { + type: string; +} ? T['type'] : never; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md new file mode 100644 index 0000000000000..ead6f14e0d1d7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md @@ -0,0 +1,134 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) + +## kibana-plugin-plugins-expressions-public package + +## Classes + +| Class | Description | +| --- | --- | +| [Execution](./kibana-plugin-plugins-expressions-public.execution.md) | | +| [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) | ExecutionContract is a wrapper around Execution class. It provides the same functionality but does not expose Expressions plugin internals. | +| [Executor](./kibana-plugin-plugins-expressions-public.executor.md) | | +| [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) | | +| [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) | | +| [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) | | +| [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) | | +| [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) | | +| [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) | | +| [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) | ExpressionsService class is used for multiple purposes:1. It implements the same Expressions service that can be used on both: (1) server-side and (2) browser-side. 2. It implements the same Expressions service that users can fork/clone, thus have their own instance of the Expressions plugin. 3. ExpressionsService defines the public contracts of \*setup\* and \*start\* Kibana Platform life-cycles for ease-of-use on server-side and browser-side. 4. ExpressionsService creates a bound version of all exported contract functions. 5. Functions are bound the way there are:\`\`\`ts registerFunction = (...args: Parameters<Executor\['registerFunction'\]> ): ReturnType<Executor\['registerFunction'\]> => this.executor.registerFunction(...args); \`\`\`so that JSDoc appears in developers IDE when they use those plugins.expressions.registerFunction(. | +| [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) | | +| [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) | | +| [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) | | + +## Enumerations + +| Enumeration | Description | +| --- | --- | +| [FontStyle](./kibana-plugin-plugins-expressions-public.fontstyle.md) | Enum of supported CSS font-style properties. | +| [FontWeight](./kibana-plugin-plugins-expressions-public.fontweight.md) | Enum of supported CSS font-weight properties. | +| [Overflow](./kibana-plugin-plugins-expressions-public.overflow.md) | Enum of supported CSS overflow properties. | +| [TextAlignment](./kibana-plugin-plugins-expressions-public.textalignment.md) | Enum of supported CSS text-align properties. | +| [TextDecoration](./kibana-plugin-plugins-expressions-public.textdecoration.md) | Enum of supported CSS text-decoration properties. | + +## Functions + +| Function | Description | +| --- | --- | +| [buildExpression(initialState)](./kibana-plugin-plugins-expressions-public.buildexpression.md) | Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. | +| [buildExpressionFunction(fnName, initialArgs)](./kibana-plugin-plugins-expressions-public.buildexpressionfunction.md) | Manages an AST for a single expression function. The return value can be provided to buildExpression to add this function to an expression.Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. | +| [format(ast, type)](./kibana-plugin-plugins-expressions-public.format.md) | | +| [formatExpression(ast)](./kibana-plugin-plugins-expressions-public.formatexpression.md) | Given expression pipeline AST, returns formatted string. | +| [isExpressionAstBuilder(val)](./kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md) | Type guard that checks whether a given value is an ExpressionAstExpressionBuilder. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. | +| [parse(expression, startRule)](./kibana-plugin-plugins-expressions-public.parse.md) | | +| [parseExpression(expression)](./kibana-plugin-plugins-expressions-public.parseexpression.md) | Given expression pipeline string, returns parsed AST. | +| [plugin(initializerContext)](./kibana-plugin-plugins-expressions-public.plugin.md) | | + +## Interfaces + +| Interface | Description | +| --- | --- | +| [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) | A Datatable in Canvas is a unique structure that represents tabulated data. | +| [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) | This type represents the shape of a column in a Datatable. | +| [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) | ExecutionContext is an object available to all functions during a single execution; it provides various methods to perform side-effects. | +| [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) | | +| [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) | | +| [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) | | +| [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) | | +| [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) | | +| [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) | | +| [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) | | +| [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) | | +| [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) | ExpressionFunctionDefinition is the interface plugins have to implement to register a function in expressions plugin. | +| [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) | A mapping of ExpressionFunctionDefinitions for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. | +| [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) | | +| [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) | | +| [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) | | +| [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) | | +| [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) | The public contract that ExpressionsService provides to other plugins in Kibana Platform in \*start\* life-cycle. | +| [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) | Expressions public start contrect, extends | +| [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) | A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. | +| [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) | An object that represents style information, typically CSS. | +| [Font](./kibana-plugin-plugins-expressions-public.font.md) | An interface representing a font in Canvas, with a textual label and the CSS font-value. | +| [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) | | +| [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) | | +| [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) | | +| [KibanaDatatable](./kibana-plugin-plugins-expressions-public.kibanadatatable.md) | | +| [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumn.md) | | +| [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-public.kibanadatatablecolumnmeta.md) | | +| [KibanaDatatableRow](./kibana-plugin-plugins-expressions-public.kibanadatatablerow.md) | | +| [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) | Column in a PointSeries | +| [Range](./kibana-plugin-plugins-expressions-public.range.md) | | +| [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) | | +| [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) | | +| [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) | JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. | + +## Variables + +| Variable | Description | +| --- | --- | +| [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md) | | + +## Type Aliases + +| Type Alias | Description | +| --- | --- | +| [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md) | Type to capture every possible expression function definition. | +| [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md) | | +| [ArgumentType](./kibana-plugin-plugins-expressions-public.argumenttype.md) | This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each arg in the specification. | +| [DatatableColumnType](./kibana-plugin-plugins-expressions-public.datatablecolumntype.md) | This type represents the type of any DatatableColumn in a Datatable. | +| [DatatableRow](./kibana-plugin-plugins-expressions-public.datatablerow.md) | This type represents a row in a Datatable. | +| [ExecutionContainer](./kibana-plugin-plugins-expressions-public.executioncontainer.md) | | +| [ExecutorContainer](./kibana-plugin-plugins-expressions-public.executorcontainer.md) | | +| [ExpressionAstArgument](./kibana-plugin-plugins-expressions-public.expressionastargument.md) | | +| [ExpressionAstNode](./kibana-plugin-plugins-expressions-public.expressionastnode.md) | | +| [ExpressionFunctionKibana](./kibana-plugin-plugins-expressions-public.expressionfunctionkibana.md) | | +| [ExpressionRendererComponent](./kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md) | | +| [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) | The public contract that ExpressionsService provides to other plugins in Kibana Platform in \*setup\* life-cycle. | +| [ExpressionsSetup](./kibana-plugin-plugins-expressions-public.expressionssetup.md) | Expressions public setup contract, extends [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) | +| [ExpressionValue](./kibana-plugin-plugins-expressions-public.expressionvalue.md) | | +| [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-public.expressionvalueboxed.md) | | +| [ExpressionValueConverter](./kibana-plugin-plugins-expressions-public.expressionvalueconverter.md) | | +| [ExpressionValueError](./kibana-plugin-plugins-expressions-public.expressionvalueerror.md) | | +| [ExpressionValueFilter](./kibana-plugin-plugins-expressions-public.expressionvaluefilter.md) | Represents an object that is a Filter. | +| [ExpressionValueNum](./kibana-plugin-plugins-expressions-public.expressionvaluenum.md) | | +| [ExpressionValueRender](./kibana-plugin-plugins-expressions-public.expressionvaluerender.md) | Represents an object that is intended to be rendered. | +| [ExpressionValueSearchContext](./kibana-plugin-plugins-expressions-public.expressionvaluesearchcontext.md) | | +| [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md) | | +| [FontLabel](./kibana-plugin-plugins-expressions-public.fontlabel.md) | This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. | +| [FontValue](./kibana-plugin-plugins-expressions-public.fontvalue.md) | This type contains a union of all supported font values, equivalent to the CSS font-value property. | +| [InterpreterErrorType](./kibana-plugin-plugins-expressions-public.interpretererrortype.md) | | +| [KIBANA\_CONTEXT\_NAME](./kibana-plugin-plugins-expressions-public.kibana_context_name.md) | | +| [KibanaContext](./kibana-plugin-plugins-expressions-public.kibanacontext.md) | | +| [KnownTypeToString](./kibana-plugin-plugins-expressions-public.knowntypetostring.md) | Map the type of the generic to a string-based representation of the type.If the provided generic is its own type interface, we use the value of the type key as a string literal type for it. | +| [PointSeries](./kibana-plugin-plugins-expressions-public.pointseries.md) | A PointSeries is a unique structure that represents dots on a chart. | +| [PointSeriesColumnName](./kibana-plugin-plugins-expressions-public.pointseriescolumnname.md) | Allowed column names in a PointSeries | +| [PointSeriesColumns](./kibana-plugin-plugins-expressions-public.pointseriescolumns.md) | Represents a collection of valid Columns in a PointSeries | +| [PointSeriesRow](./kibana-plugin-plugins-expressions-public.pointseriesrow.md) | | +| [ReactExpressionRendererType](./kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md) | | +| [Style](./kibana-plugin-plugins-expressions-public.style.md) | | +| [TypeString](./kibana-plugin-plugins-expressions-public.typestring.md) | If the type extends a Promise, we still need to return the string representation:someArgument: Promise<boolean | string> results in types: ['boolean', 'string'] | +| [TypeToString](./kibana-plugin-plugins-expressions-public.typetostring.md) | This can convert a type into a known Expression string representation of that type. For example, TypeToString<Datatable> will resolve to 'datatable'. This allows Expression Functions to continue to specify their type in a simple string format. | +| [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-public.unmappedtypestrings.md) | Types used in Expressions that don't map to a primitive cleanly:date is typed as a number or string, and represents a date | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md new file mode 100644 index 0000000000000..e33f1554a23d3 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Overflow](./kibana-plugin-plugins-expressions-public.overflow.md) + +## Overflow enum + +Enum of supported CSS `overflow` properties. + +Signature: + +```typescript +export declare enum Overflow +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| AUTO | "auto" | | +| HIDDEN | "hidden" | | +| SCROLL | "scroll" | | +| VISIBLE | "visible" | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md new file mode 100644 index 0000000000000..0cbc2c15b6f54 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [parse](./kibana-plugin-plugins-expressions-public.parse.md) + +## parse() function + +Signature: + +```typescript +export declare function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | E | | +| startRule | S | | + +Returns: + +`S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md new file mode 100644 index 0000000000000..c4474b150dcc2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [parseExpression](./kibana-plugin-plugins-expressions-public.parseexpression.md) + +## parseExpression() function + +Given expression pipeline string, returns parsed AST. + +Signature: + +```typescript +export declare function parseExpression(expression: string): ExpressionAstExpression; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | string | | + +Returns: + +`ExpressionAstExpression` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md new file mode 100644 index 0000000000000..ef707992a0a54 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [plugin](./kibana-plugin-plugins-expressions-public.plugin.md) + +## plugin() function + +Signature: + +```typescript +export declare function plugin(initializerContext: PluginInitializerContext): ExpressionsPublicPlugin; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initializerContext | PluginInitializerContext | | + +Returns: + +`ExpressionsPublicPlugin` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md new file mode 100644 index 0000000000000..14ba955ac2cc2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeries](./kibana-plugin-plugins-expressions-public.pointseries.md) + +## PointSeries type + +A `PointSeries` is a unique structure that represents dots on a chart. + +Signature: + +```typescript +export declare type PointSeries = ExpressionValueBoxed<'pointseries', { + columns: PointSeriesColumns; + rows: PointSeriesRow[]; +}>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md new file mode 100644 index 0000000000000..5c034265f4f94 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [expression](./kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md) + +## PointSeriesColumn.expression property + +Signature: + +```typescript +expression: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md new file mode 100644 index 0000000000000..09ce5444caabf --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) + +## PointSeriesColumn interface + +Column in a PointSeries + +Signature: + +```typescript +export interface PointSeriesColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [expression](./kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md) | string | | +| [role](./kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md) | 'measure' | 'dimension' | | +| [type](./kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md) | 'number' | 'string' | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md new file mode 100644 index 0000000000000..715f66a43cd62 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [role](./kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md) + +## PointSeriesColumn.role property + +Signature: + +```typescript +role: 'measure' | 'dimension'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md new file mode 100644 index 0000000000000..36a8128967cdd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [type](./kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md) + +## PointSeriesColumn.type property + +Signature: + +```typescript +type: 'number' | 'string'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md new file mode 100644 index 0000000000000..bc39c694307c0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumnName](./kibana-plugin-plugins-expressions-public.pointseriescolumnname.md) + +## PointSeriesColumnName type + +Allowed column names in a PointSeries + +Signature: + +```typescript +export declare type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md new file mode 100644 index 0000000000000..c920a254645bd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumns](./kibana-plugin-plugins-expressions-public.pointseriescolumns.md) + +## PointSeriesColumns type + +Represents a collection of valid Columns in a PointSeries + +Signature: + +```typescript +export declare type PointSeriesColumns = Record | {}; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md new file mode 100644 index 0000000000000..6e3b29572b6f4 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesRow](./kibana-plugin-plugins-expressions-public.pointseriesrow.md) + +## PointSeriesRow type + +Signature: + +```typescript +export declare type PointSeriesRow = Record; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md new file mode 100644 index 0000000000000..5113a798864e9 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [from](./kibana-plugin-plugins-expressions-public.range.from.md) + +## Range.from property + +Signature: + +```typescript +from: number; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md new file mode 100644 index 0000000000000..cf0cf4cb50b71 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) + +## Range interface + +Signature: + +```typescript +export interface Range +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [from](./kibana-plugin-plugins-expressions-public.range.from.md) | number | | +| [to](./kibana-plugin-plugins-expressions-public.range.to.md) | number | | +| [type](./kibana-plugin-plugins-expressions-public.range.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md new file mode 100644 index 0000000000000..bd79997e65fc7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [to](./kibana-plugin-plugins-expressions-public.range.to.md) + +## Range.to property + +Signature: + +```typescript +to: number; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md new file mode 100644 index 0000000000000..4d5476516655d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [type](./kibana-plugin-plugins-expressions-public.range.type.md) + +## Range.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md new file mode 100644 index 0000000000000..66c2e1e3c0c8d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md) + +## ReactExpressionRenderer variable + +Signature: + +```typescript +ReactExpressionRenderer: ({ className, dataAttrs, padding, renderError, expression, onEvent, reload$, ...expressionLoaderOptions }: ReactExpressionRendererProps) => JSX.Element +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md new file mode 100644 index 0000000000000..b5b1391ae72fd --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [className](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md) + +## ReactExpressionRendererProps.className property + +Signature: + +```typescript +className?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md new file mode 100644 index 0000000000000..a0914ce37299f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [dataAttrs](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md) + +## ReactExpressionRendererProps.dataAttrs property + +Signature: + +```typescript +dataAttrs?: string[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md new file mode 100644 index 0000000000000..21f4294db5aeb --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [expression](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md) + +## ReactExpressionRendererProps.expression property + +Signature: + +```typescript +expression: string | ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md new file mode 100644 index 0000000000000..bd6c8cba5f784 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) + +## ReactExpressionRendererProps interface + +Signature: + +```typescript +export interface ReactExpressionRendererProps extends IExpressionLoaderParams +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [className](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md) | string | | +| [dataAttrs](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md) | string[] | | +| [expression](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md) | string | ExpressionAstExpression | | +| [onEvent](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md) | (event: ExpressionRendererEvent) => void | | +| [padding](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md) | 'xs' | 's' | 'm' | 'l' | 'xl' | | +| [reload$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md) | Observable<unknown> | An observable which can be used to re-run the expression without destroying the component | +| [renderError](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md) | (error?: string | null) => React.ReactElement | React.ReactElement[] | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md new file mode 100644 index 0000000000000..4fe1e158df1b8 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [onEvent](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md) + +## ReactExpressionRendererProps.onEvent property + +Signature: + +```typescript +onEvent?: (event: ExpressionRendererEvent) => void; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md new file mode 100644 index 0000000000000..47a23f5c1088b --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [padding](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md) + +## ReactExpressionRendererProps.padding property + +Signature: + +```typescript +padding?: 'xs' | 's' | 'm' | 'l' | 'xl'; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md new file mode 100644 index 0000000000000..a7991d559377d --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [reload$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md) + +## ReactExpressionRendererProps.reload$ property + +An observable which can be used to re-run the expression without destroying the component + +Signature: + +```typescript +reload$?: Observable; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md new file mode 100644 index 0000000000000..48bfe1ee5c7c7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [renderError](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md) + +## ReactExpressionRendererProps.renderError property + +Signature: + +```typescript +renderError?: (error?: string | null) => React.ReactElement | React.ReactElement[]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md new file mode 100644 index 0000000000000..4ca56d534b84a --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererType](./kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md) + +## ReactExpressionRendererType type + +Signature: + +```typescript +export declare type ReactExpressionRendererType = React.ComponentType; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md new file mode 100644 index 0000000000000..632cd1de2a0c2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) + +## SerializedDatatable interface + +Signature: + +```typescript +export interface SerializedDatatable extends Datatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [rows](./kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md) | string[][] | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md new file mode 100644 index 0000000000000..00d4323ae7025 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) > [rows](./kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md) + +## SerializedDatatable.rows property + +Signature: + +```typescript +rows: string[][]; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md new file mode 100644 index 0000000000000..40a45d50e9b19 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) > [id](./kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md) + +## SerializedFieldFormat.id property + +Signature: + +```typescript +id?: string; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md new file mode 100644 index 0000000000000..74fa132ec1189 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) + +## SerializedFieldFormat interface + +JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. + +Signature: + +```typescript +export interface SerializedFieldFormat> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md) | string | | +| [params](./kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md) | TParams | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md new file mode 100644 index 0000000000000..32d7e54cbc884 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) > [params](./kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md) + +## SerializedFieldFormat.params property + +Signature: + +```typescript +params?: TParams; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md new file mode 100644 index 0000000000000..f42df4b8b314e --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Style](./kibana-plugin-plugins-expressions-public.style.md) + +## Style type + +Signature: + +```typescript +export declare type Style = ExpressionTypeStyle; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md new file mode 100644 index 0000000000000..351a7ba6e1f27 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TextAlignment](./kibana-plugin-plugins-expressions-public.textalignment.md) + +## TextAlignment enum + +Enum of supported CSS `text-align` properties. + +Signature: + +```typescript +export declare enum TextAlignment +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| CENTER | "center" | | +| JUSTIFY | "justify" | | +| LEFT | "left" | | +| RIGHT | "right" | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md new file mode 100644 index 0000000000000..3cd8e89f4cd8c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TextDecoration](./kibana-plugin-plugins-expressions-public.textdecoration.md) + +## TextDecoration enum + +Enum of supported CSS `text-decoration` properties. + +Signature: + +```typescript +export declare enum TextDecoration +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| NONE | "none" | | +| UNDERLINE | "underline" | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md new file mode 100644 index 0000000000000..856bf2bf05ad1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md) + +## TypesRegistry.(constructor) + +Constructs a new instance of the `TypesRegistry` class + +Signature: + +```typescript +constructor(executor: Executor); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| executor | Executor<any> | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md new file mode 100644 index 0000000000000..f83e7435485c5 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [get](./kibana-plugin-plugins-expressions-public.typesregistry.get.md) + +## TypesRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionType | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionType | null` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md new file mode 100644 index 0000000000000..f1f386ec4210f --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) + +## TypesRegistry class + +Signature: + +```typescript +export declare class TypesRegistry implements IRegistry +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(executor)](./kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md) | | Constructs a new instance of the TypesRegistry class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-public.typesregistry.get.md) | | | +| [register(typeDefinition)](./kibana-plugin-plugins-expressions-public.typesregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-public.typesregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-public.typesregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md new file mode 100644 index 0000000000000..b328f26aa50e2 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [register](./kibana-plugin-plugins-expressions-public.typesregistry.register.md) + +## TypesRegistry.register() method + +Signature: + +```typescript +register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md new file mode 100644 index 0000000000000..2e9c8799cbd61 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.typesregistry.toarray.md) + +## TypesRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionType[]; +``` +Returns: + +`ExpressionType[]` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md new file mode 100644 index 0000000000000..14a22a890f0d1 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.typesregistry.tojs.md) + +## TypesRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md new file mode 100644 index 0000000000000..1e85625907bb0 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypeString](./kibana-plugin-plugins-expressions-public.typestring.md) + +## TypeString type + +If the type extends a Promise, we still need to return the string representation: + +`someArgument: Promise` results in `types: ['boolean', 'string']` + +Signature: + +```typescript +export declare type TypeString = KnownTypeToString>; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md new file mode 100644 index 0000000000000..78f350a0c06ec --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypeToString](./kibana-plugin-plugins-expressions-public.typetostring.md) + +## TypeToString type + +This can convert a type into a known Expression string representation of that type. For example, `TypeToString` will resolve to `'datatable'`. This allows Expression Functions to continue to specify their type in a simple string format. + +Signature: + +```typescript +export declare type TypeToString = KnownTypeToString | UnmappedTypeStrings; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md new file mode 100644 index 0000000000000..6455d6520bcec --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-public.unmappedtypestrings.md) + +## UnmappedTypeStrings type + +Types used in Expressions that don't map to a primitive cleanly: + +`date` is typed as a number or string, and represents a date + +Signature: + +```typescript +export declare type UnmappedTypeStrings = 'date' | 'filter'; +``` diff --git a/docs/development/plugins/expressions/server/index.md b/docs/development/plugins/expressions/server/index.md new file mode 100644 index 0000000000000..8c35c1631ba04 --- /dev/null +++ b/docs/development/plugins/expressions/server/index.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) + +## API Reference + +## Packages + +| Package | Description | +| --- | --- | +| [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md new file mode 100644 index 0000000000000..04e652a66aa5c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md) + +## AnyExpressionFunctionDefinition type + +Type to capture every possible expression function definition. + +Signature: + +```typescript +export declare type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md new file mode 100644 index 0000000000000..c28e1aa411a34 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md) + +## AnyExpressionTypeDefinition type + +Signature: + +```typescript +export declare type AnyExpressionTypeDefinition = ExpressionTypeDefinition; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md new file mode 100644 index 0000000000000..360b8999f2053 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ArgumentType](./kibana-plugin-plugins-expressions-server.argumenttype.md) + +## ArgumentType type + +This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each `arg` in the specification. + +Signature: + +```typescript +export declare type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md new file mode 100644 index 0000000000000..2e84c2b706bfc --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [buildExpression](./kibana-plugin-plugins-expressions-server.buildexpression.md) + +## buildExpression() function + +Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. + +Signature: + +```typescript +export declare function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initialState | ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string | | + +Returns: + +`ExpressionAstExpressionBuilder` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md new file mode 100644 index 0000000000000..09afd3d59a070 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [buildExpressionFunction](./kibana-plugin-plugins-expressions-server.buildexpressionfunction.md) + +## buildExpressionFunction() function + +Manages an AST for a single expression function. The return value can be provided to `buildExpression` to add this function to an expression. + +Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. + +Signature: + +```typescript +export declare function buildExpressionFunction(fnName: InferFunctionDefinition['name'], +initialArgs: { + [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[]; +}): ExpressionAstFunctionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fnName | InferFunctionDefinition<FnDef>['name'] | | +| initialArgs | {
[K in keyof FunctionArgs<FnDef>]: FunctionArgs<FnDef>[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[];
} | | + +Returns: + +`ExpressionAstFunctionBuilder` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md new file mode 100644 index 0000000000000..1bd089af13c6c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [columns](./kibana-plugin-plugins-expressions-server.datatable.columns.md) + +## Datatable.columns property + +Signature: + +```typescript +columns: DatatableColumn[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md new file mode 100644 index 0000000000000..7dc2ab2596e12 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) + +## Datatable interface + +A `Datatable` in Canvas is a unique structure that represents tabulated data. + +Signature: + +```typescript +export interface Datatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [columns](./kibana-plugin-plugins-expressions-server.datatable.columns.md) | DatatableColumn[] | | +| [rows](./kibana-plugin-plugins-expressions-server.datatable.rows.md) | DatatableRow[] | | +| [type](./kibana-plugin-plugins-expressions-server.datatable.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md new file mode 100644 index 0000000000000..75bd8e2f56bde --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [rows](./kibana-plugin-plugins-expressions-server.datatable.rows.md) + +## Datatable.rows property + +Signature: + +```typescript +rows: DatatableRow[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md new file mode 100644 index 0000000000000..bcd250c5a9f9e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [type](./kibana-plugin-plugins-expressions-server.datatable.type.md) + +## Datatable.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md new file mode 100644 index 0000000000000..1f246825fa30a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-server.datatablecolumn.id.md) + +## DatatableColumn.id property + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md new file mode 100644 index 0000000000000..662f65d6fad21 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) + +## DatatableColumn interface + +This type represents the shape of a column in a `Datatable`. + +Signature: + +```typescript +export interface DatatableColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-expressions-server.datatablecolumn.id.md) | string | | +| [meta](./kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md) | DatatableColumnMeta | | +| [name](./kibana-plugin-plugins-expressions-server.datatablecolumn.name.md) | string | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md new file mode 100644 index 0000000000000..ef47c67a8d606 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md) + +## DatatableColumn.meta property + +Signature: + +```typescript +meta: DatatableColumnMeta; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md new file mode 100644 index 0000000000000..112b4ac3b9941 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-server.datatablecolumn.name.md) + +## DatatableColumn.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md new file mode 100644 index 0000000000000..4afce913526de --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumnType](./kibana-plugin-plugins-expressions-server.datatablecolumntype.md) + +## DatatableColumnType type + +This type represents the `type` of any `DatatableColumn` in a `Datatable`. + +Signature: + +```typescript +export declare type DatatableColumnType = 'string' | 'number' | 'boolean' | 'date' | 'null'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md new file mode 100644 index 0000000000000..56ef342b22a28 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableRow](./kibana-plugin-plugins-expressions-server.datatablerow.md) + +## DatatableRow type + +This type represents a row in a `Datatable`. + +Signature: + +```typescript +export declare type DatatableRow = Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md new file mode 100644 index 0000000000000..75f4cc4c2a017 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.execution._constructor_.md) + +## Execution.(constructor) + +Constructs a new instance of the `Execution` class + +Signature: + +```typescript +constructor(params: ExecutionParams); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| params | ExecutionParams<ExtraContext> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md new file mode 100644 index 0000000000000..2ee091da80504 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [cancel](./kibana-plugin-plugins-expressions-server.execution.cancel.md) + +## Execution.cancel() method + +Stop execution of expression. + +Signature: + +```typescript +cancel(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md new file mode 100644 index 0000000000000..22b876332efb4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [cast](./kibana-plugin-plugins-expressions-server.execution.cast.md) + +## Execution.cast() method + +Signature: + +```typescript +cast(value: any, toTypeNames?: string[]): any; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| value | any | | +| toTypeNames | string[] | | + +Returns: + +`any` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md new file mode 100644 index 0000000000000..d1969fb0859b7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [context](./kibana-plugin-plugins-expressions-server.execution.context.md) + +## Execution.context property + +Execution context - object that allows to do side-effects. Context is passed to every function. + +Signature: + +```typescript +readonly context: ExecutionContext & ExtraContext; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md new file mode 100644 index 0000000000000..149b5a7ced9cb --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [contract](./kibana-plugin-plugins-expressions-server.execution.contract.md) + +## Execution.contract property + +Contract is a public representation of `Execution` instances. Contract we can return to other plugins for their consumption. + +Signature: + +```typescript +readonly contract: ExecutionContract; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md new file mode 100644 index 0000000000000..0487378ce1bba --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [expression](./kibana-plugin-plugins-expressions-server.execution.expression.md) + +## Execution.expression property + +Signature: + +```typescript +readonly expression: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md new file mode 100644 index 0000000000000..ea411523a2b0b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [input](./kibana-plugin-plugins-expressions-server.execution.input.md) + +## Execution.input property + +Initial input of the execution. + +N.B. It is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. + +Signature: + +```typescript +input: Input; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md new file mode 100644 index 0000000000000..99bcca267f8ed --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md) + +## Execution.inspectorAdapters property + +Signature: + +```typescript +get inspectorAdapters(): InspectorAdapters; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md new file mode 100644 index 0000000000000..cf59e796e6120 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [interpret](./kibana-plugin-plugins-expressions-server.execution.interpret.md) + +## Execution.interpret() method + +Signature: + +```typescript +interpret(ast: ExpressionAstNode, input: T, options?: ExpressionExecOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | ExpressionAstNode | | +| input | T | | +| options | ExpressionExecOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md new file mode 100644 index 0000000000000..9ada611f32bf2 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [invokeChain](./kibana-plugin-plugins-expressions-server.execution.invokechain.md) + +## Execution.invokeChain() method + +Signature: + +```typescript +invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| chainArr | ExpressionAstFunction[] | | +| input | unknown | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md new file mode 100644 index 0000000000000..4519d21ee250a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [invokeFunction](./kibana-plugin-plugins-expressions-server.execution.invokefunction.md) + +## Execution.invokeFunction() method + +Signature: + +```typescript +invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fn | ExpressionFunction | | +| input | unknown | | +| args | Record<string, unknown> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md new file mode 100644 index 0000000000000..fc663dd115580 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md @@ -0,0 +1,43 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) + +## Execution class + +Signature: + +```typescript +export declare class Execution = Record, Input = unknown, Output = unknown, InspectorAdapters extends Adapters = ExtraContext['inspectorAdapters'] extends object ? ExtraContext['inspectorAdapters'] : DefaultInspectorAdapters> +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(params)](./kibana-plugin-plugins-expressions-server.execution._constructor_.md) | | Constructs a new instance of the Execution class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-server.execution.context.md) | | ExecutionContext<Input, InspectorAdapters> & ExtraContext | Execution context - object that allows to do side-effects. Context is passed to every function. | +| [contract](./kibana-plugin-plugins-expressions-server.execution.contract.md) | | ExecutionContract<ExtraContext, Input, Output, InspectorAdapters> | Contract is a public representation of Execution instances. Contract we can return to other plugins for their consumption. | +| [expression](./kibana-plugin-plugins-expressions-server.execution.expression.md) | | string | | +| [input](./kibana-plugin-plugins-expressions-server.execution.input.md) | | Input | Initial input of the execution.N.B. It is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | +| [inspectorAdapters](./kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md) | | InspectorAdapters | | +| [params](./kibana-plugin-plugins-expressions-server.execution.params.md) | | ExecutionParams<ExtraContext> | | +| [result](./kibana-plugin-plugins-expressions-server.execution.result.md) | | Promise<Output | ExpressionValueError> | | +| [state](./kibana-plugin-plugins-expressions-server.execution.state.md) | | ExecutionContainer<Output | ExpressionValueError> | Dynamic state of the execution. | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [cancel()](./kibana-plugin-plugins-expressions-server.execution.cancel.md) | | Stop execution of expression. | +| [cast(value, toTypeNames)](./kibana-plugin-plugins-expressions-server.execution.cast.md) | | | +| [interpret(ast, input, options)](./kibana-plugin-plugins-expressions-server.execution.interpret.md) | | | +| [invokeChain(chainArr, input)](./kibana-plugin-plugins-expressions-server.execution.invokechain.md) | | | +| [invokeFunction(fn, input, args)](./kibana-plugin-plugins-expressions-server.execution.invokefunction.md) | | | +| [resolveArgs(fnDef, input, argAsts)](./kibana-plugin-plugins-expressions-server.execution.resolveargs.md) | | | +| [start(input)](./kibana-plugin-plugins-expressions-server.execution.start.md) | | Call this method to start execution.N.B. input is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.params.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.params.md new file mode 100644 index 0000000000000..498f9bbfccfa4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.params.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [params](./kibana-plugin-plugins-expressions-server.execution.params.md) + +## Execution.params property + +Signature: + +```typescript +readonly params: ExecutionParams; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md new file mode 100644 index 0000000000000..48cc43b2d7767 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [resolveArgs](./kibana-plugin-plugins-expressions-server.execution.resolveargs.md) + +## Execution.resolveArgs() method + +Signature: + +```typescript +resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fnDef | ExpressionFunction | | +| input | unknown | | +| argAsts | any | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md new file mode 100644 index 0000000000000..be0134cd2542e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [result](./kibana-plugin-plugins-expressions-server.execution.result.md) + +## Execution.result property + +Signature: + +```typescript +get result(): Promise; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md new file mode 100644 index 0000000000000..9a4e93fe6a9af --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [start](./kibana-plugin-plugins-expressions-server.execution.start.md) + +## Execution.start() method + +Call this method to start execution. + +N.B. `input` is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. + +Signature: + +```typescript +start(input?: Input): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| input | Input | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md new file mode 100644 index 0000000000000..41e7e693a1da4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [state](./kibana-plugin-plugins-expressions-server.execution.state.md) + +## Execution.state property + +Dynamic state of the execution. + +Signature: + +```typescript +readonly state: ExecutionContainer; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md new file mode 100644 index 0000000000000..5dc82fcbb9dd8 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContainer](./kibana-plugin-plugins-expressions-server.executioncontainer.md) + +## ExecutionContainer type + +Signature: + +```typescript +export declare type ExecutionContainer = StateContainer, ExecutionPureTransitions>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md new file mode 100644 index 0000000000000..5c43623c8e603 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [abortSignal](./kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md) + +## ExecutionContext.abortSignal property + +Adds ability to abort current execution. + +Signature: + +```typescript +abortSignal: AbortSignal; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md new file mode 100644 index 0000000000000..b5f9b91e1c7b7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getInitialInput](./kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md) + +## ExecutionContext.getInitialInput property + +Get initial input with which execution started. + +Signature: + +```typescript +getInitialInput: () => Input; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md new file mode 100644 index 0000000000000..b8c8f4f3bb067 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getSavedObject](./kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md) + +## ExecutionContext.getSavedObject property + +Allows to fetch saved objects from ElasticSearch. In browser `getSavedObject` function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. + +Signature: + +```typescript +getSavedObject?: (type: string, id: string) => Promise>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md new file mode 100644 index 0000000000000..b937432e4c180 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md) + +## ExecutionContext.inspectorAdapters property + +Adapters for `inspector` plugin. + +Signature: + +```typescript +inspectorAdapters: InspectorAdapters; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md new file mode 100644 index 0000000000000..0128ba934da73 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) + +## ExecutionContext interface + +`ExecutionContext` is an object available to all functions during a single execution; it provides various methods to perform side-effects. + +Signature: + +```typescript +export interface ExecutionContext +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [abortSignal](./kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md) | AbortSignal | Adds ability to abort current execution. | +| [getInitialInput](./kibana-plugin-plugins-expressions-server.executioncontext.getinitialinput.md) | () => Input | Get initial input with which execution started. | +| [getSavedObject](./kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md) | <T extends SavedObjectAttributes = SavedObjectAttributes>(type: string, id: string) => Promise<SavedObject<T>> | Allows to fetch saved objects from ElasticSearch. In browser getSavedObject function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. | +| [inspectorAdapters](./kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md) | InspectorAdapters | Adapters for inspector plugin. | +| [search](./kibana-plugin-plugins-expressions-server.executioncontext.search.md) | ExecutionContextSearch | Search context in which expression should operate. | +| [types](./kibana-plugin-plugins-expressions-server.executioncontext.types.md) | Record<string, ExpressionType> | A map of available expression types. | +| [variables](./kibana-plugin-plugins-expressions-server.executioncontext.variables.md) | Record<string, unknown> | Context variables that can be consumed using var and var_set functions. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.search.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.search.md new file mode 100644 index 0000000000000..641e50696f6e0 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.search.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [search](./kibana-plugin-plugins-expressions-server.executioncontext.search.md) + +## ExecutionContext.search property + +Search context in which expression should operate. + +Signature: + +```typescript +search?: ExecutionContextSearch; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md new file mode 100644 index 0000000000000..9f594a588b200 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [types](./kibana-plugin-plugins-expressions-server.executioncontext.types.md) + +## ExecutionContext.types property + +A map of available expression types. + +Signature: + +```typescript +types: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md new file mode 100644 index 0000000000000..bce3b7bb1bc4d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [variables](./kibana-plugin-plugins-expressions-server.executioncontext.variables.md) + +## ExecutionContext.variables property + +Context variables that can be consumed using `var` and `var_set` functions. + +Signature: + +```typescript +variables: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md new file mode 100644 index 0000000000000..adaccf091bc5e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [ast](./kibana-plugin-plugins-expressions-server.executionparams.ast.md) + +## ExecutionParams.ast property + +Signature: + +```typescript +ast?: ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.context.md new file mode 100644 index 0000000000000..8b9a210416dd6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [context](./kibana-plugin-plugins-expressions-server.executionparams.context.md) + +## ExecutionParams.context property + +Signature: + +```typescript +context?: ExtraContext; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.debug.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.debug.md new file mode 100644 index 0000000000000..b3631e0aeebe6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.debug.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [debug](./kibana-plugin-plugins-expressions-server.executionparams.debug.md) + +## ExecutionParams.debug property + +Whether to execute expression in \*debug mode\*. In \*debug mode\* inputs and outputs as well as all resolved arguments and time it took to execute each function are saved and are available for introspection. + +Signature: + +```typescript +debug?: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md new file mode 100644 index 0000000000000..fef0f6f8e2495 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [executor](./kibana-plugin-plugins-expressions-server.executionparams.executor.md) + +## ExecutionParams.executor property + +Signature: + +```typescript +executor: Executor; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md new file mode 100644 index 0000000000000..7d75bd51a611b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [expression](./kibana-plugin-plugins-expressions-server.executionparams.expression.md) + +## ExecutionParams.expression property + +Signature: + +```typescript +expression?: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md new file mode 100644 index 0000000000000..a7594bff48c1a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) + +## ExecutionParams interface + +Signature: + +```typescript +export interface ExecutionParams = Record> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ast](./kibana-plugin-plugins-expressions-server.executionparams.ast.md) | ExpressionAstExpression | | +| [context](./kibana-plugin-plugins-expressions-server.executionparams.context.md) | ExtraContext | | +| [debug](./kibana-plugin-plugins-expressions-server.executionparams.debug.md) | boolean | Whether to execute expression in \*debug mode\*. In \*debug mode\* inputs and outputs as well as all resolved arguments and time it took to execute each function are saved and are available for introspection. | +| [executor](./kibana-plugin-plugins-expressions-server.executionparams.executor.md) | Executor<any> | | +| [expression](./kibana-plugin-plugins-expressions-server.executionparams.expression.md) | string | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md new file mode 100644 index 0000000000000..0eab94589a75e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [ast](./kibana-plugin-plugins-expressions-server.executionstate.ast.md) + +## ExecutionState.ast property + +Signature: + +```typescript +ast: ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md new file mode 100644 index 0000000000000..350d38697571a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [error](./kibana-plugin-plugins-expressions-server.executionstate.error.md) + +## ExecutionState.error property + +Error happened during the execution. + +Signature: + +```typescript +error?: Error; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md new file mode 100644 index 0000000000000..a3b28bda8c864 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) + +## ExecutionState interface + +Signature: + +```typescript +export interface ExecutionState extends ExecutorState +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ast](./kibana-plugin-plugins-expressions-server.executionstate.ast.md) | ExpressionAstExpression | | +| [error](./kibana-plugin-plugins-expressions-server.executionstate.error.md) | Error | Error happened during the execution. | +| [result](./kibana-plugin-plugins-expressions-server.executionstate.result.md) | Output | Result of the expression execution. | +| [state](./kibana-plugin-plugins-expressions-server.executionstate.state.md) | 'not-started' | 'pending' | 'result' | 'error' | Tracks state of execution.- not-started - before .start() method was called. - pending - immediately after .start() method is called. - result - when expression execution completed. - error - when execution failed with error. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md new file mode 100644 index 0000000000000..b23ba17172a10 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [result](./kibana-plugin-plugins-expressions-server.executionstate.result.md) + +## ExecutionState.result property + +Result of the expression execution. + +Signature: + +```typescript +result?: Output; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md new file mode 100644 index 0000000000000..6dcfca1a4fa0e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [state](./kibana-plugin-plugins-expressions-server.executionstate.state.md) + +## ExecutionState.state property + +Tracks state of execution. + +- `not-started` - before .start() method was called. - `pending` - immediately after .start() method is called. - `result` - when expression execution completed. - `error` - when execution failed with error. + +Signature: + +```typescript +state: 'not-started' | 'pending' | 'result' | 'error'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md new file mode 100644 index 0000000000000..f9b6759ef5529 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.executor._constructor_.md) + +## Executor.(constructor) + +Constructs a new instance of the `Executor` class + +Signature: + +```typescript +constructor(state?: ExecutorState); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| state | ExecutorState<Context> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md new file mode 100644 index 0000000000000..d53401c6d0419 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [context](./kibana-plugin-plugins-expressions-server.executor.context.md) + +## Executor.context property + +Signature: + +```typescript +get context(): Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md new file mode 100644 index 0000000000000..8ed228d70ff37 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [createExecution](./kibana-plugin-plugins-expressions-server.executor.createexecution.md) + +## Executor.createExecution() method + +Signature: + +```typescript +createExecution = Record, Input = unknown, Output = unknown>(ast: string | ExpressionAstExpression, context?: ExtraContext, { debug }?: ExpressionExecOptions): Execution; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | string | ExpressionAstExpression | | +| context | ExtraContext | | +| { debug } | ExpressionExecOptions | | + +Returns: + +`Execution` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md new file mode 100644 index 0000000000000..67863cc9e9ebe --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [createWithDefaults](./kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md) + +## Executor.createWithDefaults() method + +Signature: + +```typescript +static createWithDefaults = Record>(state?: ExecutorState): Executor; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| state | ExecutorState<Ctx> | | + +Returns: + +`Executor` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md new file mode 100644 index 0000000000000..d78b4193b62fa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [extendContext](./kibana-plugin-plugins-expressions-server.executor.extendcontext.md) + +## Executor.extendContext() method + +Signature: + +```typescript +extendContext(extraContext: Record): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| extraContext | Record<string, unknown> | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md new file mode 100644 index 0000000000000..8cfec983e6cbd --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [fork](./kibana-plugin-plugins-expressions-server.executor.fork.md) + +## Executor.fork() method + +Signature: + +```typescript +fork(): Executor; +``` +Returns: + +`Executor` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md new file mode 100644 index 0000000000000..36cbe8608c872 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [functions](./kibana-plugin-plugins-expressions-server.executor.functions.md) + +## Executor.functions property + +> Warning: This API is now obsolete. +> +> + +Signature: + +```typescript +readonly functions: FunctionsRegistry; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md new file mode 100644 index 0000000000000..0c3f307214d01 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getFunction](./kibana-plugin-plugins-expressions-server.executor.getfunction.md) + +## Executor.getFunction() method + +Signature: + +```typescript +getFunction(name: string): ExpressionFunction | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | + +Returns: + +`ExpressionFunction | undefined` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md new file mode 100644 index 0000000000000..9f4132e30297d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getFunctions](./kibana-plugin-plugins-expressions-server.executor.getfunctions.md) + +## Executor.getFunctions() method + +Signature: + +```typescript +getFunctions(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md new file mode 100644 index 0000000000000..ccff4bc632284 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getType](./kibana-plugin-plugins-expressions-server.executor.gettype.md) + +## Executor.getType() method + +Signature: + +```typescript +getType(name: string): ExpressionType | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | + +Returns: + +`ExpressionType | undefined` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md new file mode 100644 index 0000000000000..8658f36867971 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getTypes](./kibana-plugin-plugins-expressions-server.executor.gettypes.md) + +## Executor.getTypes() method + +Signature: + +```typescript +getTypes(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md new file mode 100644 index 0000000000000..7e6bb8c7ded5e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md @@ -0,0 +1,43 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) + +## Executor class + +Signature: + +```typescript +export declare class Executor = Record> +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(state)](./kibana-plugin-plugins-expressions-server.executor._constructor_.md) | | Constructs a new instance of the Executor class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-server.executor.context.md) | | Record<string, unknown> | | +| [functions](./kibana-plugin-plugins-expressions-server.executor.functions.md) | | FunctionsRegistry | | +| [state](./kibana-plugin-plugins-expressions-server.executor.state.md) | | ExecutorContainer<Context> | | +| [types](./kibana-plugin-plugins-expressions-server.executor.types.md) | | TypesRegistry | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [createExecution(ast, context, { debug })](./kibana-plugin-plugins-expressions-server.executor.createexecution.md) | | | +| [createWithDefaults(state)](./kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md) | static | | +| [extendContext(extraContext)](./kibana-plugin-plugins-expressions-server.executor.extendcontext.md) | | | +| [fork()](./kibana-plugin-plugins-expressions-server.executor.fork.md) | | | +| [getFunction(name)](./kibana-plugin-plugins-expressions-server.executor.getfunction.md) | | | +| [getFunctions()](./kibana-plugin-plugins-expressions-server.executor.getfunctions.md) | | | +| [getType(name)](./kibana-plugin-plugins-expressions-server.executor.gettype.md) | | | +| [getTypes()](./kibana-plugin-plugins-expressions-server.executor.gettypes.md) | | | +| [registerFunction(functionDefinition)](./kibana-plugin-plugins-expressions-server.executor.registerfunction.md) | | | +| [registerType(typeDefinition)](./kibana-plugin-plugins-expressions-server.executor.registertype.md) | | | +| [run(ast, input, context)](./kibana-plugin-plugins-expressions-server.executor.run.md) | | Execute expression and return result. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md new file mode 100644 index 0000000000000..0cdd62735980c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [registerFunction](./kibana-plugin-plugins-expressions-server.executor.registerfunction.md) + +## Executor.registerFunction() method + +Signature: + +```typescript +registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md new file mode 100644 index 0000000000000..355ff92921f10 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [registerType](./kibana-plugin-plugins-expressions-server.executor.registertype.md) + +## Executor.registerType() method + +Signature: + +```typescript +registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md new file mode 100644 index 0000000000000..784a1df5d3ac2 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [run](./kibana-plugin-plugins-expressions-server.executor.run.md) + +## Executor.run() method + +Execute expression and return result. + +Signature: + +```typescript +run = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | string | ExpressionAstExpression | | +| input | Input | | +| context | ExtraContext | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md new file mode 100644 index 0000000000000..2c3041484712a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [state](./kibana-plugin-plugins-expressions-server.executor.state.md) + +## Executor.state property + +Signature: + +```typescript +readonly state: ExecutorContainer; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md new file mode 100644 index 0000000000000..2082917cf0624 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [types](./kibana-plugin-plugins-expressions-server.executor.types.md) + +## Executor.types property + +> Warning: This API is now obsolete. +> +> + +Signature: + +```typescript +readonly types: TypesRegistry; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md new file mode 100644 index 0000000000000..a3847c5ad9a77 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorContainer](./kibana-plugin-plugins-expressions-server.executorcontainer.md) + +## ExecutorContainer type + +Signature: + +```typescript +export declare type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md new file mode 100644 index 0000000000000..0829f2d6caf04 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [context](./kibana-plugin-plugins-expressions-server.executorstate.context.md) + +## ExecutorState.context property + +Signature: + +```typescript +context: Context; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md new file mode 100644 index 0000000000000..92a0865a7bb2f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [functions](./kibana-plugin-plugins-expressions-server.executorstate.functions.md) + +## ExecutorState.functions property + +Signature: + +```typescript +functions: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md new file mode 100644 index 0000000000000..5faa326ee3534 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) + +## ExecutorState interface + +Signature: + +```typescript +export interface ExecutorState = Record> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [context](./kibana-plugin-plugins-expressions-server.executorstate.context.md) | Context | | +| [functions](./kibana-plugin-plugins-expressions-server.executorstate.functions.md) | Record<string, ExpressionFunction> | | +| [types](./kibana-plugin-plugins-expressions-server.executorstate.types.md) | Record<string, ExpressionType> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md new file mode 100644 index 0000000000000..a435fabfedf92 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [types](./kibana-plugin-plugins-expressions-server.executorstate.types.md) + +## ExecutorState.types property + +Signature: + +```typescript +types: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md new file mode 100644 index 0000000000000..0518949ad612f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstArgument](./kibana-plugin-plugins-expressions-server.expressionastargument.md) + +## ExpressionAstArgument type + +Signature: + +```typescript +export declare type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md new file mode 100644 index 0000000000000..cc8006b918dec --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) > [chain](./kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md) + +## ExpressionAstExpression.chain property + +Signature: + +```typescript +chain: ExpressionAstFunction[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md new file mode 100644 index 0000000000000..b5f83d1af7cb7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) + +## ExpressionAstExpression interface + +Signature: + +```typescript +export interface ExpressionAstExpression +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [chain](./kibana-plugin-plugins-expressions-server.expressionastexpression.chain.md) | ExpressionAstFunction[] | | +| [type](./kibana-plugin-plugins-expressions-server.expressionastexpression.type.md) | 'expression' | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.type.md new file mode 100644 index 0000000000000..46cd60cecaa84 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastexpression.type.md) + +## ExpressionAstExpression.type property + +Signature: + +```typescript +type: 'expression'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md new file mode 100644 index 0000000000000..28cf8707c17d6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [findFunction](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md) + +## ExpressionAstExpressionBuilder.findFunction property + +Recursively searches expression for all ocurrences of the function, including in subexpressions. + +Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. + +Signature: + +```typescript +findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md new file mode 100644 index 0000000000000..c3e1add70511b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [functions](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md) + +## ExpressionAstExpressionBuilder.functions property + +Array of each of the `buildExpressionFunction()` instances in this expression. Use this to remove or reorder functions in the expression. + +Signature: + +```typescript +functions: ExpressionAstFunctionBuilder[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md new file mode 100644 index 0000000000000..50a9c76daaa2b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) + +## ExpressionAstExpressionBuilder interface + +Signature: + +```typescript +export interface ExpressionAstExpressionBuilder +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [findFunction](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md) | <FnDef extends AnyExpressionFunctionDefinition = AnyExpressionFunctionDefinition>(fnName: InferFunctionDefinition<FnDef>['name']) => Array<ExpressionAstFunctionBuilder<FnDef>> | [] | Recursively searches expression for all ocurrences of the function, including in subexpressions.Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. | +| [functions](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md) | ExpressionAstFunctionBuilder[] | Array of each of the buildExpressionFunction() instances in this expression. Use this to remove or reorder functions in the expression. | +| [toAst](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md) | () => ExpressionAstExpression | Converts expression to an AST. ExpressionAstExpression | +| [toString](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md) | () => string | Converts expression to an expression string. string | +| [type](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md) | 'expression_builder' | Used to identify expression builder objects. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md new file mode 100644 index 0000000000000..5c6189e6a46c4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md) + +## ExpressionAstExpressionBuilder.toAst property + +Converts expression to an AST. + + `ExpressionAstExpression` + +Signature: + +```typescript +toAst: () => ExpressionAstExpression; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md new file mode 100644 index 0000000000000..80aaeef1700c3 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md) + +## ExpressionAstExpressionBuilder.toString property + +Converts expression to an expression string. + + `string` + +Signature: + +```typescript +toString: () => string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md new file mode 100644 index 0000000000000..401b2e3725e84 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md) + +## ExpressionAstExpressionBuilder.type property + +Used to identify expression builder objects. + +Signature: + +```typescript +type: 'expression_builder'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md new file mode 100644 index 0000000000000..052cadffb9bdb --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) > [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md) + +## ExpressionAstFunction.arguments property + +Signature: + +```typescript +arguments: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md new file mode 100644 index 0000000000000..b3227c2ac5822 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) > [debug](./kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md) + +## ExpressionAstFunction.debug property + +Debug information added to each function when expression is executed in \*debug mode\*. + +Signature: + +```typescript +debug?: ExpressionAstFunctionDebug; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.function.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.function.md new file mode 100644 index 0000000000000..9964409f49119 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.function.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) > [function](./kibana-plugin-plugins-expressions-server.expressionastfunction.function.md) + +## ExpressionAstFunction.function property + +Signature: + +```typescript +function: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md new file mode 100644 index 0000000000000..1d49de44b571d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) + +## ExpressionAstFunction interface + +Signature: + +```typescript +export interface ExpressionAstFunction +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunction.arguments.md) | Record<string, ExpressionAstArgument[]> | | +| [debug](./kibana-plugin-plugins-expressions-server.expressionastfunction.debug.md) | ExpressionAstFunctionDebug | Debug information added to each function when expression is executed in \*debug mode\*. | +| [function](./kibana-plugin-plugins-expressions-server.expressionastfunction.function.md) | string | | +| [type](./kibana-plugin-plugins-expressions-server.expressionastfunction.type.md) | 'function' | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.type.md new file mode 100644 index 0000000000000..3fd10524c1599 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastfunction.type.md) + +## ExpressionAstFunction.type property + +Signature: + +```typescript +type: 'function'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md new file mode 100644 index 0000000000000..29e3baec18a2e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) + +## ExpressionAstFunctionBuilder.addArgument property + +Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. + +Signature: + +```typescript +addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md new file mode 100644 index 0000000000000..4c0eee637b3e1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) + +## ExpressionAstFunctionBuilder.arguments property + +Object of all args currently added to the function. This is structured similarly to `ExpressionAstFunction['arguments']`, however any subexpressions are returned as expression builder instances instead of expression ASTs. + +Signature: + +```typescript +arguments: FunctionBuilderArguments; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md new file mode 100644 index 0000000000000..09b76ccbf23d9 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) + +## ExpressionAstFunctionBuilder.getArgument property + +Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling `replaceArgument`. Any subexpression arguments will be returned as expression builder instances. + +Signature: + +```typescript +getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md new file mode 100644 index 0000000000000..2a502d6f05e0b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) + +## ExpressionAstFunctionBuilder interface + +Signature: + +```typescript +export interface ExpressionAstFunctionBuilder +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this | Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. | +| [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef> | Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments'], however any subexpressions are returned as expression builder instances instead of expression ASTs. | +| [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined | Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument. Any subexpression arguments will be returned as expression builder instances. | +| [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name'] | Name of this expression function. | +| [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this | Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument. | +| [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this | Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. | +| [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction | Converts function to an AST. ExpressionAstFunction | +| [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) | () => string | Converts function to an expression string. string | +| [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) | 'expression_function_builder' | Used to identify expression function builder objects. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md new file mode 100644 index 0000000000000..a2b6a4128549f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) + +## ExpressionAstFunctionBuilder.name property + +Name of this expression function. + +Signature: + +```typescript +name: InferFunctionDefinition['name']; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md new file mode 100644 index 0000000000000..b5fd0cc7e3727 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) + +## ExpressionAstFunctionBuilder.removeArgument property + +Removes an (optional) argument from the function. + +TypeScript will enforce that you only remove optional arguments. For manipulating required args, use `replaceArgument`. + +Signature: + +```typescript +removeArgument: >>(name: A) => this; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md new file mode 100644 index 0000000000000..943d8ea235763 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) + +## ExpressionAstFunctionBuilder.replaceArgument property + +Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. + +Signature: + +```typescript +replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md new file mode 100644 index 0000000000000..a8e9205610501 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) + +## ExpressionAstFunctionBuilder.toAst property + +Converts function to an AST. + + `ExpressionAstFunction` + +Signature: + +```typescript +toAst: () => ExpressionAstFunction; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md new file mode 100644 index 0000000000000..af307cbc84c9f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) + +## ExpressionAstFunctionBuilder.toString property + +Converts function to an expression string. + + `string` + +Signature: + +```typescript +toString: () => string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md new file mode 100644 index 0000000000000..ed1db54c6eeaa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) + +## ExpressionAstFunctionBuilder.type property + +Used to identify expression function builder objects. + +Signature: + +```typescript +type: 'expression_function_builder'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md new file mode 100644 index 0000000000000..d04c5556ff0ff --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstNode](./kibana-plugin-plugins-expressions-server.expressionastnode.md) + +## ExpressionAstNode type + +Signature: + +```typescript +export declare type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md new file mode 100644 index 0000000000000..96ed22f3277b4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md) + +## ExpressionFunction.(constructor) + +Constructs a new instance of the `ExpressionFunction` class + +Signature: + +```typescript +constructor(functionDefinition: AnyExpressionFunctionDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md new file mode 100644 index 0000000000000..25008a56e0465 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [accepts](./kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md) + +## ExpressionFunction.accepts property + +Signature: + +```typescript +accepts: (type: string) => boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md new file mode 100644 index 0000000000000..6e11246275d04 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md) + +## ExpressionFunction.aliases property + +Aliases that can be used instead of `name`. + +Signature: + +```typescript +aliases: string[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md new file mode 100644 index 0000000000000..ffa8cd0d11f7a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [args](./kibana-plugin-plugins-expressions-server.expressionfunction.args.md) + +## ExpressionFunction.args property + +Specification of expression function parameters. + +Signature: + +```typescript +args: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md new file mode 100644 index 0000000000000..12056cac12cce --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [fn](./kibana-plugin-plugins-expressions-server.expressionfunction.fn.md) + +## ExpressionFunction.fn property + +Function to run function (context, args) + +Signature: + +```typescript +fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md new file mode 100644 index 0000000000000..0a20a1ec60860 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunction.help.md) + +## ExpressionFunction.help property + +A short help text. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md new file mode 100644 index 0000000000000..1fa11bbb77416 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md) + +## ExpressionFunction.inputTypes property + +Type of inputs that this function supports. + +Signature: + +```typescript +inputTypes: string[] | undefined; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md new file mode 100644 index 0000000000000..aac3878b8c859 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) + +## ExpressionFunction class + +Signature: + +```typescript +export declare class ExpressionFunction +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(functionDefinition)](./kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md) | | Constructs a new instance of the ExpressionFunction class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [accepts](./kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md) | | (type: string) => boolean | | +| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md) | | string[] | Aliases that can be used instead of name. | +| [args](./kibana-plugin-plugins-expressions-server.expressionfunction.args.md) | | Record<string, ExpressionFunctionParameter> | Specification of expression function parameters. | +| [fn](./kibana-plugin-plugins-expressions-server.expressionfunction.fn.md) | | (input: ExpressionValue, params: Record<string, any>, handlers: object) => ExpressionValue | Function to run function (context, args) | +| [help](./kibana-plugin-plugins-expressions-server.expressionfunction.help.md) | | string | A short help text. | +| [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md) | | string[] | undefined | Type of inputs that this function supports. | +| [name](./kibana-plugin-plugins-expressions-server.expressionfunction.name.md) | | string | Name of function | +| [type](./kibana-plugin-plugins-expressions-server.expressionfunction.type.md) | | string | Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md new file mode 100644 index 0000000000000..46115c10c79ad --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunction.name.md) + +## ExpressionFunction.name property + +Name of function + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md new file mode 100644 index 0000000000000..82bfff184b7cf --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [type](./kibana-plugin-plugins-expressions-server.expressionfunction.type.md) + +## ExpressionFunction.type property + +Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md new file mode 100644 index 0000000000000..3f5a608cc9bd2 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md) + +## ExpressionFunctionDefinition.aliases property + + What is this? + +Signature: + +```typescript +aliases?: string[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md new file mode 100644 index 0000000000000..4ceb1d92bf8eb --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [args](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md) + +## ExpressionFunctionDefinition.args property + +Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. + +Signature: + +```typescript +args: { + [key in keyof Arguments]: ArgumentType; + }; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md new file mode 100644 index 0000000000000..54d5c7c8a688d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md) + +## ExpressionFunctionDefinition.context property + +> Warning: This API is now obsolete. +> +> Use `inputTypes` instead. +> + +Signature: + +```typescript +context?: { + types: AnyExpressionFunctionDefinition['inputTypes']; + }; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md new file mode 100644 index 0000000000000..41f85be7141be --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [fn](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md) + +## ExpressionFunctionDefinition.fn() method + +The actual implementation of the function. + +Signature: + +```typescript +fn(input: Input, args: Arguments, context: Context): Output; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| input | Input | | +| args | Arguments | | +| context | Context | | + +Returns: + +`Output` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md new file mode 100644 index 0000000000000..594cb768f3caa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md) + +## ExpressionFunctionDefinition.help property + +Help text displayed in the Expression editor. This text should be internationalized. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md new file mode 100644 index 0000000000000..b47dc915cc72e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md) + +## ExpressionFunctionDefinition.inputTypes property + +List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. + +Signature: + +```typescript +inputTypes?: Array>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md new file mode 100644 index 0000000000000..6463c6ac537b9 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) + +## ExpressionFunctionDefinition interface + +`ExpressionFunctionDefinition` is the interface plugins have to implement to register a function in `expressions` plugin. + +Signature: + +```typescript +export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md) | string[] | What is this? | +| [args](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md) | {
[key in keyof Arguments]: ArgumentType<Arguments[key]>;
} | Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. | +| [context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md) | {
types: AnyExpressionFunctionDefinition['inputTypes'];
} | | +| [help](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md) | string | Help text displayed in the Expression editor. This text should be internationalized. | +| [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md) | Array<TypeToString<Input>> | List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. | +| [name](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md) | Name | The name of the function, as will be used in expression. | +| [type](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md) | TypeToString<UnwrapPromiseOrReturn<Output>> | Name of type of value this function outputs. | + +## Methods + +| Method | Description | +| --- | --- | +| [fn(input, args, context)](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md) | The actual implementation of the function. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md new file mode 100644 index 0000000000000..177b44aab4ce8 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md) + +## ExpressionFunctionDefinition.name property + +The name of the function, as will be used in expression. + +Signature: + +```typescript +name: Name; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md new file mode 100644 index 0000000000000..a73ded342f053 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [type](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md) + +## ExpressionFunctionDefinition.type property + +Name of type of value this function outputs. + +Signature: + +```typescript +type?: TypeToString>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md new file mode 100644 index 0000000000000..0c01e93152c75 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [clog](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md) + +## ExpressionFunctionDefinitions.clog property + +Signature: + +```typescript +clog: ExpressionFunctionClog; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md new file mode 100644 index 0000000000000..842e3e069d91e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [font](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md) + +## ExpressionFunctionDefinitions.font property + +Signature: + +```typescript +font: ExpressionFunctionFont; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md new file mode 100644 index 0000000000000..8e6d189f8f450 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [kibana](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md) + +## ExpressionFunctionDefinitions.kibana property + +Signature: + +```typescript +kibana: ExpressionFunctionKibana; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md new file mode 100644 index 0000000000000..f9e248ad6d913 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [kibana\_context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md) + +## ExpressionFunctionDefinitions.kibana\_context property + +Signature: + +```typescript +kibana_context: ExpressionFunctionKibanaContext; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md new file mode 100644 index 0000000000000..71cd0b98a68c2 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) + +## ExpressionFunctionDefinitions interface + +A mapping of `ExpressionFunctionDefinition`s for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. + +Signature: + +```typescript +export interface ExpressionFunctionDefinitions +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [clog](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md) | ExpressionFunctionClog | | +| [font](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md) | ExpressionFunctionFont | | +| [kibana\_context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana_context.md) | ExpressionFunctionKibanaContext | | +| [kibana](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.kibana.md) | ExpressionFunctionKibana | | +| [theme](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md) | ExpressionFunctionTheme | | +| [var\_set](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md) | ExpressionFunctionVarSet | | +| [var](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md) | ExpressionFunctionVar | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md new file mode 100644 index 0000000000000..98291fe35c1aa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [theme](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md) + +## ExpressionFunctionDefinitions.theme property + +Signature: + +```typescript +theme: ExpressionFunctionTheme; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md new file mode 100644 index 0000000000000..55d576193ba9c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [var](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md) + +## ExpressionFunctionDefinitions.var property + +Signature: + +```typescript +var: ExpressionFunctionVar; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md new file mode 100644 index 0000000000000..3163cf1accab1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [var\_set](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md) + +## ExpressionFunctionDefinitions.var\_set property + +Signature: + +```typescript +var_set: ExpressionFunctionVarSet; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md new file mode 100644 index 0000000000000..aac2ae1c3ca4e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionKibana](./kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md) + +## ExpressionFunctionKibana type + +Signature: + +```typescript +export declare type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md new file mode 100644 index 0000000000000..a9ad2069cfe15 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md) + +## ExpressionFunctionParameter.(constructor) + +Constructs a new instance of the `ExpressionFunctionParameter` class + +Signature: + +```typescript +constructor(name: string, arg: ArgumentType); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| name | string | | +| arg | ArgumentType<any> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md new file mode 100644 index 0000000000000..083bbdf1da4e7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [accepts](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md) + +## ExpressionFunctionParameter.accepts() method + +Signature: + +```typescript +accepts(type: string): boolean; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| type | string | | + +Returns: + +`boolean` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md new file mode 100644 index 0000000000000..c7d27a48bdad5 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md) + +## ExpressionFunctionParameter.aliases property + +Signature: + +```typescript +aliases: string[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md new file mode 100644 index 0000000000000..d4105febffe86 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [default](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md) + +## ExpressionFunctionParameter.default property + +Signature: + +```typescript +default: any; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md new file mode 100644 index 0000000000000..b21626df64121 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md) + +## ExpressionFunctionParameter.help property + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md new file mode 100644 index 0000000000000..e9e35183e4e76 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md @@ -0,0 +1,38 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) + +## ExpressionFunctionParameter class + +Signature: + +```typescript +export declare class ExpressionFunctionParameter +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(name, arg)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md) | | Constructs a new instance of the ExpressionFunctionParameter class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md) | | string[] | | +| [default](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md) | | any | | +| [help](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md) | | string | | +| [multi](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md) | | boolean | | +| [name](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md) | | string | | +| [options](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md) | | any[] | | +| [required](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md) | | boolean | | +| [resolve](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md) | | boolean | | +| [types](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md) | | string[] | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [accepts(type)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md) | | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md new file mode 100644 index 0000000000000..86e1921910a30 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [multi](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md) + +## ExpressionFunctionParameter.multi property + +Signature: + +```typescript +multi: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md new file mode 100644 index 0000000000000..8aab81d92e65a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md) + +## ExpressionFunctionParameter.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md new file mode 100644 index 0000000000000..95369ebd5ce88 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [options](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md) + +## ExpressionFunctionParameter.options property + +Signature: + +```typescript +options: any[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md new file mode 100644 index 0000000000000..0e58b41e2a22c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [required](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md) + +## ExpressionFunctionParameter.required property + +Signature: + +```typescript +required: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md new file mode 100644 index 0000000000000..3415c5f6a7639 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [resolve](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md) + +## ExpressionFunctionParameter.resolve property + +Signature: + +```typescript +resolve: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md new file mode 100644 index 0000000000000..f7d6079705e8e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [types](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md) + +## ExpressionFunctionParameter.types property + +Signature: + +```typescript +types: string[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md new file mode 100644 index 0000000000000..a51dc1eaea66f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [dataurl](./kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md) + +## ExpressionImage.dataurl property + +Signature: + +```typescript +dataurl: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md new file mode 100644 index 0000000000000..7f323fba7bfe1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) + +## ExpressionImage interface + +Signature: + +```typescript +export interface ExpressionImage +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [dataurl](./kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md) | string | | +| [mode](./kibana-plugin-plugins-expressions-server.expressionimage.mode.md) | string | | +| [type](./kibana-plugin-plugins-expressions-server.expressionimage.type.md) | 'image' | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md new file mode 100644 index 0000000000000..9aae0ed3ea8b4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [mode](./kibana-plugin-plugins-expressions-server.expressionimage.mode.md) + +## ExpressionImage.mode property + +Signature: + +```typescript +mode: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md new file mode 100644 index 0000000000000..0cc0418228281 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [type](./kibana-plugin-plugins-expressions-server.expressionimage.type.md) + +## ExpressionImage.type property + +Signature: + +```typescript +type: 'image'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md new file mode 100644 index 0000000000000..e936e25cee6ca --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md) + +## ExpressionRenderDefinition.displayName property + +A user friendly name of the renderer as will be displayed to user in UI. + +Signature: + +```typescript +displayName: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md new file mode 100644 index 0000000000000..971abba04fdf9 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md) + +## ExpressionRenderDefinition.help property + +Help text as will be displayed to user. A sentence or few about what this element does. + +Signature: + +```typescript +help?: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md new file mode 100644 index 0000000000000..9cefb6ef196cf --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) + +## ExpressionRenderDefinition interface + +Signature: + +```typescript +export interface ExpressionRenderDefinition +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md) | string | A user friendly name of the renderer as will be displayed to user in UI. | +| [help](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md) | string | Help text as will be displayed to user. A sentence or few about what this element does. | +| [name](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md) | string | Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the type: render object. | +| [render](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md) | (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise<void> | The function called to render the output data of an expression. | +| [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md) | boolean | Tell the renderer if the dom node should be reused, it's recreated each time by default. | +| [validate](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md) | () => undefined | Error | Used to validate the data before calling the render function. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md new file mode 100644 index 0000000000000..62eec0109c374 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md) + +## ExpressionRenderDefinition.name property + +Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the `type: render` object. + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md new file mode 100644 index 0000000000000..99698e1828637 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [render](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md) + +## ExpressionRenderDefinition.render property + +The function called to render the output data of an expression. + +Signature: + +```typescript +render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md new file mode 100644 index 0000000000000..435920cccc642 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md) + +## ExpressionRenderDefinition.reuseDomNode property + +Tell the renderer if the dom node should be reused, it's recreated each time by default. + +Signature: + +```typescript +reuseDomNode: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md new file mode 100644 index 0000000000000..f640744374eda --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [validate](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md) + +## ExpressionRenderDefinition.validate property + +Used to validate the data before calling the render function. + +Signature: + +```typescript +validate?: () => undefined | Error; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md new file mode 100644 index 0000000000000..5db39853728af --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md) + +## ExpressionRenderer.(constructor) + +Constructs a new instance of the `ExpressionRenderer` class + +Signature: + +```typescript +constructor(config: ExpressionRenderDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | ExpressionRenderDefinition<Config> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md new file mode 100644 index 0000000000000..41846bf41997f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md) + +## ExpressionRenderer.displayName property + +Signature: + +```typescript +readonly displayName: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md new file mode 100644 index 0000000000000..9cf60c832fb95 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [help](./kibana-plugin-plugins-expressions-server.expressionrenderer.help.md) + +## ExpressionRenderer.help property + +Signature: + +```typescript +readonly help: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md new file mode 100644 index 0000000000000..6f5c336a89e5c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) + +## ExpressionRenderer class + +Signature: + +```typescript +export declare class ExpressionRenderer +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(config)](./kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md) | | Constructs a new instance of the ExpressionRenderer class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md) | | string | | +| [help](./kibana-plugin-plugins-expressions-server.expressionrenderer.help.md) | | string | | +| [name](./kibana-plugin-plugins-expressions-server.expressionrenderer.name.md) | | string | | +| [render](./kibana-plugin-plugins-expressions-server.expressionrenderer.render.md) | | ExpressionRenderDefinition<Config>['render'] | | +| [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md) | | boolean | | +| [validate](./kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md) | | () => void | Error | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md new file mode 100644 index 0000000000000..f320fcd8408ab --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [name](./kibana-plugin-plugins-expressions-server.expressionrenderer.name.md) + +## ExpressionRenderer.name property + +Signature: + +```typescript +readonly name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md new file mode 100644 index 0000000000000..d7cf04e6d8bfa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [render](./kibana-plugin-plugins-expressions-server.expressionrenderer.render.md) + +## ExpressionRenderer.render property + +Signature: + +```typescript +readonly render: ExpressionRenderDefinition['render']; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md new file mode 100644 index 0000000000000..8fd9c5fa8e6ff --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md) + +## ExpressionRenderer.reuseDomNode property + +Signature: + +```typescript +readonly reuseDomNode: boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md new file mode 100644 index 0000000000000..d40945cfb88f1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [validate](./kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md) + +## ExpressionRenderer.validate property + +Signature: + +```typescript +readonly validate: () => void | Error; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md new file mode 100644 index 0000000000000..6f8e6c868ac9b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [get](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md) + +## ExpressionRendererRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionRenderer | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionRenderer | null` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md new file mode 100644 index 0000000000000..d4a34ab140854 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) + +## ExpressionRendererRegistry class + +Signature: + +```typescript +export declare class ExpressionRendererRegistry implements IRegistry +``` + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md) | | | +| [register(definition)](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md new file mode 100644 index 0000000000000..d5411a327fbcd --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [register](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md) + +## ExpressionRendererRegistry.register() method + +Signature: + +```typescript +register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| definition | AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md new file mode 100644 index 0000000000000..edb153000b458 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md) + +## ExpressionRendererRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionRenderer[]; +``` +Returns: + +`ExpressionRenderer[]` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md new file mode 100644 index 0000000000000..f7230e9102c8f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md) + +## ExpressionRendererRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md new file mode 100644 index 0000000000000..639ae379f0ed7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md) + +## ExpressionsServerPlugin.(constructor) + +Constructs a new instance of the `ExpressionsServerPlugin` class + +Signature: + +```typescript +constructor(initializerContext: PluginInitializerContext); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initializerContext | PluginInitializerContext | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md new file mode 100644 index 0000000000000..a391220a6349e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [expressions](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md) + +## ExpressionsServerPlugin.expressions property + +Signature: + +```typescript +readonly expressions: ExpressionsService; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md new file mode 100644 index 0000000000000..f92d572b1111a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) + +## ExpressionsServerPlugin class + +Signature: + +```typescript +export declare class ExpressionsServerPlugin implements Plugin +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(initializerContext)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md) | | Constructs a new instance of the ExpressionsServerPlugin class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [expressions](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md) | | ExpressionsService | | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [setup(core)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md) | | | +| [start(core)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md) | | | +| [stop()](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md) | | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md new file mode 100644 index 0000000000000..18e33d4e0bc60 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [setup](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md) + +## ExpressionsServerPlugin.setup() method + +Signature: + +```typescript +setup(core: CoreSetup): ExpressionsServerSetup; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| core | CoreSetup | | + +Returns: + +`ExpressionsServerSetup` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md new file mode 100644 index 0000000000000..31578685ff386 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [start](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md) + +## ExpressionsServerPlugin.start() method + +Signature: + +```typescript +start(core: CoreStart): ExpressionsServerStart; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| core | CoreStart | | + +Returns: + +`ExpressionsServerStart` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md new file mode 100644 index 0000000000000..2f6abade901b1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [stop](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md) + +## ExpressionsServerPlugin.stop() method + +Signature: + +```typescript +stop(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md new file mode 100644 index 0000000000000..2cf591a59c4f6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerSetup](./kibana-plugin-plugins-expressions-server.expressionsserversetup.md) + +## ExpressionsServerSetup type + +Signature: + +```typescript +export declare type ExpressionsServerSetup = ExpressionsServiceSetup; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md new file mode 100644 index 0000000000000..9ceb261a7f689 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerStart](./kibana-plugin-plugins-expressions-server.expressionsserverstart.md) + +## ExpressionsServerStart type + +Signature: + +```typescript +export declare type ExpressionsServerStart = ExpressionsServiceStart; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md new file mode 100644 index 0000000000000..966955c03ff08 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md) + +## ExpressionType.(constructor) + +Constructs a new instance of the `ExpressionType` class + +Signature: + +```typescript +constructor(definition: AnyExpressionTypeDefinition); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| definition | AnyExpressionTypeDefinition | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md new file mode 100644 index 0000000000000..57758e8fa7788 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [castsFrom](./kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md) + +## ExpressionType.castsFrom property + +Signature: + +```typescript +castsFrom: (value: ExpressionValue) => boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md new file mode 100644 index 0000000000000..eec17f8606817 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [castsTo](./kibana-plugin-plugins-expressions-server.expressiontype.caststo.md) + +## ExpressionType.castsTo property + +Signature: + +```typescript +castsTo: (value: ExpressionValue) => boolean; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md new file mode 100644 index 0000000000000..3fbd1f7986254 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [create](./kibana-plugin-plugins-expressions-server.expressiontype.create.md) + +## ExpressionType.create property + +Signature: + +```typescript +create: unknown; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md new file mode 100644 index 0000000000000..232d70b846092 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [deserialize](./kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md) + +## ExpressionType.deserialize property + +Signature: + +```typescript +deserialize?: (serialized: any) => ExpressionValue; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md new file mode 100644 index 0000000000000..4d24a4162c096 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [from](./kibana-plugin-plugins-expressions-server.expressiontype.from.md) + +## ExpressionType.from property + +Signature: + +```typescript +from: (value: ExpressionValue, types: Record) => any; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md new file mode 100644 index 0000000000000..092227af92a19 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [getFromFn](./kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md) + +## ExpressionType.getFromFn property + +Signature: + +```typescript +getFromFn: (typeName: string) => undefined | ExpressionValueConverter; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md new file mode 100644 index 0000000000000..8454116f50ac8 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [getToFn](./kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md) + +## ExpressionType.getToFn property + +Signature: + +```typescript +getToFn: (typeName: string) => undefined | ExpressionValueConverter; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md new file mode 100644 index 0000000000000..bd5be7329d6a4 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [help](./kibana-plugin-plugins-expressions-server.expressiontype.help.md) + +## ExpressionType.help property + +A short help text. + +Signature: + +```typescript +help: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md new file mode 100644 index 0000000000000..49f3f504c9419 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md @@ -0,0 +1,35 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) + +## ExpressionType class + +Signature: + +```typescript +export declare class ExpressionType +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(definition)](./kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md) | | Constructs a new instance of the ExpressionType class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [castsFrom](./kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md) | | (value: ExpressionValue) => boolean | | +| [castsTo](./kibana-plugin-plugins-expressions-server.expressiontype.caststo.md) | | (value: ExpressionValue) => boolean | | +| [create](./kibana-plugin-plugins-expressions-server.expressiontype.create.md) | | unknown | | +| [deserialize](./kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md) | | (serialized: any) => ExpressionValue | | +| [from](./kibana-plugin-plugins-expressions-server.expressiontype.from.md) | | (value: ExpressionValue, types: Record<string, ExpressionType>) => any | | +| [getFromFn](./kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | +| [getToFn](./kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | +| [help](./kibana-plugin-plugins-expressions-server.expressiontype.help.md) | | string | A short help text. | +| [name](./kibana-plugin-plugins-expressions-server.expressiontype.name.md) | | string | | +| [serialize](./kibana-plugin-plugins-expressions-server.expressiontype.serialize.md) | | (value: ExpressionValue) => any | Optional serialization (used when passing context around client/server). | +| [to](./kibana-plugin-plugins-expressions-server.expressiontype.to.md) | | (value: ExpressionValue, toTypeName: string, types: Record<string, ExpressionType>) => any | | +| [validate](./kibana-plugin-plugins-expressions-server.expressiontype.validate.md) | | (type: any) => void | Error | Type validation, useful for checking function output. | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md new file mode 100644 index 0000000000000..44e0e18270b14 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [name](./kibana-plugin-plugins-expressions-server.expressiontype.name.md) + +## ExpressionType.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md new file mode 100644 index 0000000000000..013b95bf2d0ce --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [serialize](./kibana-plugin-plugins-expressions-server.expressiontype.serialize.md) + +## ExpressionType.serialize property + +Optional serialization (used when passing context around client/server). + +Signature: + +```typescript +serialize?: (value: ExpressionValue) => any; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md new file mode 100644 index 0000000000000..70e4504324f22 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [to](./kibana-plugin-plugins-expressions-server.expressiontype.to.md) + +## ExpressionType.to property + +Signature: + +```typescript +to: (value: ExpressionValue, toTypeName: string, types: Record) => any; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md new file mode 100644 index 0000000000000..6e1fd681a732b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [validate](./kibana-plugin-plugins-expressions-server.expressiontype.validate.md) + +## ExpressionType.validate property + +Type validation, useful for checking function output. + +Signature: + +```typescript +validate: (type: any) => void | Error; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md new file mode 100644 index 0000000000000..71e9ecd7270d9 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [deserialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md) + +## ExpressionTypeDefinition.deserialize property + +Signature: + +```typescript +deserialize?: (type: SerializedType) => Value; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md new file mode 100644 index 0000000000000..f3ad8791c7bac --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [from](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md) + +## ExpressionTypeDefinition.from property + +Signature: + +```typescript +from?: { + [type: string]: ExpressionValueConverter; + }; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md new file mode 100644 index 0000000000000..f1c4d48599da6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md) + +## ExpressionTypeDefinition.help property + +Signature: + +```typescript +help?: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md new file mode 100644 index 0000000000000..5179bd1df7311 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) + +## ExpressionTypeDefinition interface + +A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. + +Signature: + +```typescript +export interface ExpressionTypeDefinition +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [deserialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md) | (type: SerializedType) => Value | | +| [from](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md) | {
[type: string]: ExpressionValueConverter<any, Value>;
} | | +| [help](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md) | string | | +| [name](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md) | Name | | +| [serialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md) | (type: Value) => SerializedType | | +| [to](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md) | {
[type: string]: ExpressionValueConverter<Value, any>;
} | | +| [validate](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md) | (type: any) => void | Error | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md new file mode 100644 index 0000000000000..cfc1cebac16da --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md) + +## ExpressionTypeDefinition.name property + +Signature: + +```typescript +name: Name; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md new file mode 100644 index 0000000000000..05ec569f62638 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [serialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md) + +## ExpressionTypeDefinition.serialize property + +Signature: + +```typescript +serialize?: (type: Value) => SerializedType; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md new file mode 100644 index 0000000000000..6c2c22fc902c6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [to](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md) + +## ExpressionTypeDefinition.to property + +Signature: + +```typescript +to?: { + [type: string]: ExpressionValueConverter; + }; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md new file mode 100644 index 0000000000000..acdcf089fcbe0 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [validate](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md) + +## ExpressionTypeDefinition.validate property + +Signature: + +```typescript +validate?: (type: any) => void | Error; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md new file mode 100644 index 0000000000000..7cb6e9bc8b45d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [css](./kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md) + +## ExpressionTypeStyle.css property + +Signature: + +```typescript +css: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md new file mode 100644 index 0000000000000..274e9b7b6772c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) + +## ExpressionTypeStyle interface + +An object that represents style information, typically CSS. + +Signature: + +```typescript +export interface ExpressionTypeStyle +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [css](./kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md) | string | | +| [spec](./kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md) | CSSStyle | | +| [type](./kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md) | 'style' | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md new file mode 100644 index 0000000000000..95f3edbc2b725 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [spec](./kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md) + +## ExpressionTypeStyle.spec property + +Signature: + +```typescript +spec: CSSStyle; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md new file mode 100644 index 0000000000000..be3b476cb8b53 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [type](./kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md) + +## ExpressionTypeStyle.type property + +Signature: + +```typescript +type: 'style'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md new file mode 100644 index 0000000000000..fc9af5fbc6695 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValue](./kibana-plugin-plugins-expressions-server.expressionvalue.md) + +## ExpressionValue type + +Signature: + +```typescript +export declare type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md new file mode 100644 index 0000000000000..ad84aec0dc6d5 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-server.expressionvalueboxed.md) + +## ExpressionValueBoxed type + +Signature: + +```typescript +export declare type ExpressionValueBoxed = { + type: Type; +} & Value; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md new file mode 100644 index 0000000000000..d1b69590141cb --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueConverter](./kibana-plugin-plugins-expressions-server.expressionvalueconverter.md) + +## ExpressionValueConverter type + +Signature: + +```typescript +export declare type ExpressionValueConverter = (input: I, availableTypes: Record) => O; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md new file mode 100644 index 0000000000000..b90e4360e055a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueError](./kibana-plugin-plugins-expressions-server.expressionvalueerror.md) + +## ExpressionValueError type + +Signature: + +```typescript +export declare type ExpressionValueError = ExpressionValueBoxed<'error', { + error: { + message: string; + type?: string; + name?: string; + stack?: string; + original?: Error; + }; + info?: unknown; +}>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md new file mode 100644 index 0000000000000..fb65bc2550513 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueFilter](./kibana-plugin-plugins-expressions-server.expressionvaluefilter.md) + +## ExpressionValueFilter type + +Represents an object that is a Filter. + +Signature: + +```typescript +export declare type ExpressionValueFilter = ExpressionValueBoxed<'filter', { + filterType?: string; + value?: string; + column?: string; + and: ExpressionValueFilter[]; + to?: string; + from?: string; + query?: string | null; +}>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md new file mode 100644 index 0000000000000..b109a23dc7259 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueNum](./kibana-plugin-plugins-expressions-server.expressionvaluenum.md) + +## ExpressionValueNum type + +Signature: + +```typescript +export declare type ExpressionValueNum = ExpressionValueBoxed<'num', { + value: number; +}>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md new file mode 100644 index 0000000000000..96958d753a78e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueRender](./kibana-plugin-plugins-expressions-server.expressionvaluerender.md) + +## ExpressionValueRender type + +Represents an object that is intended to be rendered. + +Signature: + +```typescript +export declare type ExpressionValueRender = ExpressionValueBoxed; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md new file mode 100644 index 0000000000000..6e38adde3ba91 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueSearchContext](./kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md) + +## ExpressionValueSearchContext type + +Signature: + +```typescript +export declare type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md new file mode 100644 index 0000000000000..2393b2bb70e6b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md) + +## ExpressionValueUnboxed type + +Signature: + +```typescript +export declare type ExpressionValueUnboxed = any; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md new file mode 100644 index 0000000000000..5f11f866be2f6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) > [label](./kibana-plugin-plugins-expressions-server.font.label.md) + +## Font.label property + +Signature: + +```typescript +label: FontLabel; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md new file mode 100644 index 0000000000000..f3ff25e034624 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) + +## Font interface + +An interface representing a font in Canvas, with a textual label and the CSS `font-value`. + +Signature: + +```typescript +export interface Font +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [label](./kibana-plugin-plugins-expressions-server.font.label.md) | FontLabel | | +| [value](./kibana-plugin-plugins-expressions-server.font.value.md) | FontValue | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md new file mode 100644 index 0000000000000..1bb1fac163661 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) > [value](./kibana-plugin-plugins-expressions-server.font.value.md) + +## Font.value property + +Signature: + +```typescript +value: FontValue; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md new file mode 100644 index 0000000000000..4837abb7542fa --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontLabel](./kibana-plugin-plugins-expressions-server.fontlabel.md) + +## FontLabel type + +This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. + +Signature: + +```typescript +export declare type FontLabel = typeof fonts[number]['label']; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md new file mode 100644 index 0000000000000..26588096666df --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontStyle](./kibana-plugin-plugins-expressions-server.fontstyle.md) + +## FontStyle enum + +Enum of supported CSS `font-style` properties. + +Signature: + +```typescript +export declare enum FontStyle +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| ITALIC | "italic" | | +| NORMAL | "normal" | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md new file mode 100644 index 0000000000000..6c0332067a369 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontValue](./kibana-plugin-plugins-expressions-server.fontvalue.md) + +## FontValue type + +This type contains a union of all supported font values, equivalent to the CSS `font-value` property. + +Signature: + +```typescript +export declare type FontValue = typeof fonts[number]['value']; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md new file mode 100644 index 0000000000000..314e4b17df01e --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontWeight](./kibana-plugin-plugins-expressions-server.fontweight.md) + +## FontWeight enum + +Enum of supported CSS `font-weight` properties. + +Signature: + +```typescript +export declare enum FontWeight +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| BOLD | "bold" | | +| BOLDER | "bolder" | | +| EIGHT | "800" | | +| FIVE | "500" | | +| FOUR | "400" | | +| LIGHTER | "lighter" | | +| NINE | "900" | | +| NORMAL | "normal" | | +| ONE | "100" | | +| SEVEN | "700" | | +| SIX | "600" | | +| THREE | "300" | | +| TWO | "200" | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md new file mode 100644 index 0000000000000..aae8498bce03f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [format](./kibana-plugin-plugins-expressions-server.format.md) + +## format() function + +Signature: + +```typescript +export declare function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | T | | +| type | T extends ExpressionAstExpression ? 'expression' : 'argument' | | + +Returns: + +`string` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md new file mode 100644 index 0000000000000..701d7b448f69f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [formatExpression](./kibana-plugin-plugins-expressions-server.formatexpression.md) + +## formatExpression() function + +Given expression pipeline AST, returns formatted string. + +Signature: + +```typescript +export declare function formatExpression(ast: ExpressionAstExpression): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| ast | ExpressionAstExpression | | + +Returns: + +`string` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md new file mode 100644 index 0000000000000..c3dc8b8e9b16f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md) + +## FunctionsRegistry.(constructor) + +Constructs a new instance of the `FunctionsRegistry` class + +Signature: + +```typescript +constructor(executor: Executor); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| executor | Executor<any> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md new file mode 100644 index 0000000000000..795b3a87eac09 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [get](./kibana-plugin-plugins-expressions-server.functionsregistry.get.md) + +## FunctionsRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionFunction | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionFunction | null` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md new file mode 100644 index 0000000000000..790105c68241a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) + +## FunctionsRegistry class + +Signature: + +```typescript +export declare class FunctionsRegistry implements IRegistry +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(executor)](./kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md) | | Constructs a new instance of the FunctionsRegistry class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-server.functionsregistry.get.md) | | | +| [register(functionDefinition)](./kibana-plugin-plugins-expressions-server.functionsregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md new file mode 100644 index 0000000000000..7da47937e80f0 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [register](./kibana-plugin-plugins-expressions-server.functionsregistry.register.md) + +## FunctionsRegistry.register() method + +Signature: + +```typescript +register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md new file mode 100644 index 0000000000000..5f9ca38990076 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md) + +## FunctionsRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionFunction[]; +``` +Returns: + +`ExpressionFunction[]` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md new file mode 100644 index 0000000000000..35751bb534e58 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md) + +## FunctionsRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md new file mode 100644 index 0000000000000..c6204769e893c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [done](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md) + +## IInterpreterRenderHandlers.done property + +Done increments the number of rendering successes + +Signature: + +```typescript +done: () => void; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md new file mode 100644 index 0000000000000..6a011aaf7f132 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [event](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md) + +## IInterpreterRenderHandlers.event property + +Signature: + +```typescript +event: (event: any) => void; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md new file mode 100644 index 0000000000000..cbaffa04bae8f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) + +## IInterpreterRenderHandlers interface + +Signature: + +```typescript +export interface IInterpreterRenderHandlers +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [done](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | +| [event](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md) | (event: any) => void | | +| [onDestroy](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | +| [reload](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md) | () => void | | +| [update](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md) | (params: any) => void | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md new file mode 100644 index 0000000000000..14ef98d17769c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [onDestroy](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md) + +## IInterpreterRenderHandlers.onDestroy property + +Signature: + +```typescript +onDestroy: (fn: () => void) => void; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md new file mode 100644 index 0000000000000..c5e74e79f652b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [reload](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md) + +## IInterpreterRenderHandlers.reload property + +Signature: + +```typescript +reload: () => void; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md new file mode 100644 index 0000000000000..2649ea99b3386 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [update](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md) + +## IInterpreterRenderHandlers.update property + +Signature: + +```typescript +update: (params: any) => void; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md new file mode 100644 index 0000000000000..032cea643c5bf --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [InterpreterErrorType](./kibana-plugin-plugins-expressions-server.interpretererrortype.md) + +## InterpreterErrorType type + +> Warning: This API is now obsolete. +> +> Exported for backwards compatibility. +> + +Signature: + +```typescript +export declare type InterpreterErrorType = ExpressionValueError; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md new file mode 100644 index 0000000000000..b0b4524afe40a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [get](./kibana-plugin-plugins-expressions-server.iregistry.get.md) + +## IRegistry.get() method + +Signature: + +```typescript +get(id: string): T | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`T | null` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md new file mode 100644 index 0000000000000..71aafe2db2dd1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) + +## IRegistry interface + +Signature: + +```typescript +export interface IRegistry +``` + +## Methods + +| Method | Description | +| --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-server.iregistry.get.md) | | +| [toArray()](./kibana-plugin-plugins-expressions-server.iregistry.toarray.md) | | +| [toJS()](./kibana-plugin-plugins-expressions-server.iregistry.tojs.md) | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md new file mode 100644 index 0000000000000..73718cd036c85 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.iregistry.toarray.md) + +## IRegistry.toArray() method + +Signature: + +```typescript +toArray(): T[]; +``` +Returns: + +`T[]` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md new file mode 100644 index 0000000000000..af83efbd99aa7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.iregistry.tojs.md) + +## IRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md new file mode 100644 index 0000000000000..7692ff21ae934 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [isExpressionAstBuilder](./kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md) + +## isExpressionAstBuilder() function + +Type guard that checks whether a given value is an `ExpressionAstExpressionBuilder`. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. + +Signature: + +```typescript +export declare function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| val | any | | + +Returns: + +`val is ExpressionAstExpressionBuilder` + +## Example + +const arg = myFunction.getArgument('foo'); if (isExpressionAstBuilder(foo)) { foo.toAst(); } + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibana_context_name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibana_context_name.md new file mode 100644 index 0000000000000..bd47c52e0d5ce --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibana_context_name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KIBANA\_CONTEXT\_NAME](./kibana-plugin-plugins-expressions-server.kibana_context_name.md) + +## KIBANA\_CONTEXT\_NAME type + +Signature: + +```typescript +export declare type KIBANA_CONTEXT_NAME = 'kibana_context'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanacontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanacontext.md new file mode 100644 index 0000000000000..023748173e7dd --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanacontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaContext](./kibana-plugin-plugins-expressions-server.kibanacontext.md) + +## KibanaContext type + +Signature: + +```typescript +export declare type KibanaContext = ExpressionValueSearchContext; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md new file mode 100644 index 0000000000000..423e543e4307a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-server.kibanadatatable.md) > [columns](./kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md) + +## KibanaDatatable.columns property + +Signature: + +```typescript +columns: KibanaDatatableColumn[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.md new file mode 100644 index 0000000000000..30ee3ac2fcd13 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-server.kibanadatatable.md) + +## KibanaDatatable interface + +Signature: + +```typescript +export interface KibanaDatatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [columns](./kibana-plugin-plugins-expressions-server.kibanadatatable.columns.md) | KibanaDatatableColumn[] | | +| [rows](./kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md) | KibanaDatatableRow[] | | +| [type](./kibana-plugin-plugins-expressions-server.kibanadatatable.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md new file mode 100644 index 0000000000000..42170a83fc3c8 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-server.kibanadatatable.md) > [rows](./kibana-plugin-plugins-expressions-server.kibanadatatable.rows.md) + +## KibanaDatatable.rows property + +Signature: + +```typescript +rows: KibanaDatatableRow[]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.type.md new file mode 100644 index 0000000000000..c36674540a1ba --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatable.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatable](./kibana-plugin-plugins-expressions-server.kibanadatatable.md) > [type](./kibana-plugin-plugins-expressions-server.kibanadatatable.type.md) + +## KibanaDatatable.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md new file mode 100644 index 0000000000000..a1e6949019dcb --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) > [formatHint](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md) + +## KibanaDatatableColumn.formatHint property + +Signature: + +```typescript +formatHint?: SerializedFieldFormat; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md new file mode 100644 index 0000000000000..6f90da1ac9c94 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md) + +## KibanaDatatableColumn.id property + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md new file mode 100644 index 0000000000000..171477911502f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) + +## KibanaDatatableColumn interface + +Signature: + +```typescript +export interface KibanaDatatableColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [formatHint](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.formathint.md) | SerializedFieldFormat | | +| [id](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.id.md) | string | | +| [meta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md) | KibanaDatatableColumnMeta | | +| [name](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md) | string | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md new file mode 100644 index 0000000000000..40b20d51e6ec6 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.meta.md) + +## KibanaDatatableColumn.meta property + +Signature: + +```typescript +meta?: KibanaDatatableColumnMeta; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md new file mode 100644 index 0000000000000..3a85e2325483a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.name.md) + +## KibanaDatatableColumn.name property + +Signature: + +```typescript +name: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md new file mode 100644 index 0000000000000..539b24174f725 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md) > [aggConfigParams](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md) + +## KibanaDatatableColumnMeta.aggConfigParams property + +Signature: + +```typescript +aggConfigParams?: Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md new file mode 100644 index 0000000000000..2704915a15071 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md) > [indexPatternId](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md) + +## KibanaDatatableColumnMeta.indexPatternId property + +Signature: + +```typescript +indexPatternId?: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md new file mode 100644 index 0000000000000..d9a96e665f010 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md) + +## KibanaDatatableColumnMeta interface + +Signature: + +```typescript +export interface KibanaDatatableColumnMeta +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aggConfigParams](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.aggconfigparams.md) | Record<string, any> | | +| [indexPatternId](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.indexpatternid.md) | string | | +| [type](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md) | string | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md new file mode 100644 index 0000000000000..56e3757ef621a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md) > [type](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.type.md) + +## KibanaDatatableColumnMeta.type property + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablerow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablerow.md new file mode 100644 index 0000000000000..dd0f3f4cb2f60 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.kibanadatatablerow.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KibanaDatatableRow](./kibana-plugin-plugins-expressions-server.kibanadatatablerow.md) + +## KibanaDatatableRow interface + +Signature: + +```typescript +export interface KibanaDatatableRow +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md new file mode 100644 index 0000000000000..ed536ac3b7173 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KnownTypeToString](./kibana-plugin-plugins-expressions-server.knowntypetostring.md) + +## KnownTypeToString type + +Map the type of the generic to a string-based representation of the type. + +If the provided generic is its own type interface, we use the value of the `type` key as a string literal type for it. + +Signature: + +```typescript +export declare type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { + type: string; +} ? T['type'] : never; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md new file mode 100644 index 0000000000000..c9fed2e00c66c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md @@ -0,0 +1,116 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) + +## kibana-plugin-plugins-expressions-server package + +## Classes + +| Class | Description | +| --- | --- | +| [Execution](./kibana-plugin-plugins-expressions-server.execution.md) | | +| [Executor](./kibana-plugin-plugins-expressions-server.executor.md) | | +| [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) | | +| [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) | | +| [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) | | +| [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) | | +| [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) | | +| [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) | | +| [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) | | +| [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) | | + +## Enumerations + +| Enumeration | Description | +| --- | --- | +| [FontStyle](./kibana-plugin-plugins-expressions-server.fontstyle.md) | Enum of supported CSS font-style properties. | +| [FontWeight](./kibana-plugin-plugins-expressions-server.fontweight.md) | Enum of supported CSS font-weight properties. | +| [Overflow](./kibana-plugin-plugins-expressions-server.overflow.md) | Enum of supported CSS overflow properties. | +| [TextAlignment](./kibana-plugin-plugins-expressions-server.textalignment.md) | Enum of supported CSS text-align properties. | +| [TextDecoration](./kibana-plugin-plugins-expressions-server.textdecoration.md) | Enum of supported CSS text-decoration properties. | + +## Functions + +| Function | Description | +| --- | --- | +| [buildExpression(initialState)](./kibana-plugin-plugins-expressions-server.buildexpression.md) | Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. | +| [buildExpressionFunction(fnName, initialArgs)](./kibana-plugin-plugins-expressions-server.buildexpressionfunction.md) | Manages an AST for a single expression function. The return value can be provided to buildExpression to add this function to an expression.Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. | +| [format(ast, type)](./kibana-plugin-plugins-expressions-server.format.md) | | +| [formatExpression(ast)](./kibana-plugin-plugins-expressions-server.formatexpression.md) | Given expression pipeline AST, returns formatted string. | +| [isExpressionAstBuilder(val)](./kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md) | Type guard that checks whether a given value is an ExpressionAstExpressionBuilder. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. | +| [parse(expression, startRule)](./kibana-plugin-plugins-expressions-server.parse.md) | | +| [parseExpression(expression)](./kibana-plugin-plugins-expressions-server.parseexpression.md) | Given expression pipeline string, returns parsed AST. | +| [plugin(initializerContext)](./kibana-plugin-plugins-expressions-server.plugin.md) | | + +## Interfaces + +| Interface | Description | +| --- | --- | +| [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) | A Datatable in Canvas is a unique structure that represents tabulated data. | +| [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) | This type represents the shape of a column in a Datatable. | +| [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) | ExecutionContext is an object available to all functions during a single execution; it provides various methods to perform side-effects. | +| [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) | | +| [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) | | +| [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) | | +| [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) | | +| [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) | | +| [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) | | +| [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) | | +| [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) | ExpressionFunctionDefinition is the interface plugins have to implement to register a function in expressions plugin. | +| [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) | A mapping of ExpressionFunctionDefinitions for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. | +| [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) | | +| [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) | | +| [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) | A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. | +| [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) | An object that represents style information, typically CSS. | +| [Font](./kibana-plugin-plugins-expressions-server.font.md) | An interface representing a font in Canvas, with a textual label and the CSS font-value. | +| [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) | | +| [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) | | +| [KibanaDatatable](./kibana-plugin-plugins-expressions-server.kibanadatatable.md) | | +| [KibanaDatatableColumn](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumn.md) | | +| [KibanaDatatableColumnMeta](./kibana-plugin-plugins-expressions-server.kibanadatatablecolumnmeta.md) | | +| [KibanaDatatableRow](./kibana-plugin-plugins-expressions-server.kibanadatatablerow.md) | | +| [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) | Column in a PointSeries | +| [Range](./kibana-plugin-plugins-expressions-server.range.md) | | +| [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) | | +| [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) | JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. | + +## Type Aliases + +| Type Alias | Description | +| --- | --- | +| [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md) | Type to capture every possible expression function definition. | +| [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md) | | +| [ArgumentType](./kibana-plugin-plugins-expressions-server.argumenttype.md) | This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each arg in the specification. | +| [DatatableColumnType](./kibana-plugin-plugins-expressions-server.datatablecolumntype.md) | This type represents the type of any DatatableColumn in a Datatable. | +| [DatatableRow](./kibana-plugin-plugins-expressions-server.datatablerow.md) | This type represents a row in a Datatable. | +| [ExecutionContainer](./kibana-plugin-plugins-expressions-server.executioncontainer.md) | | +| [ExecutorContainer](./kibana-plugin-plugins-expressions-server.executorcontainer.md) | | +| [ExpressionAstArgument](./kibana-plugin-plugins-expressions-server.expressionastargument.md) | | +| [ExpressionAstNode](./kibana-plugin-plugins-expressions-server.expressionastnode.md) | | +| [ExpressionFunctionKibana](./kibana-plugin-plugins-expressions-server.expressionfunctionkibana.md) | | +| [ExpressionsServerSetup](./kibana-plugin-plugins-expressions-server.expressionsserversetup.md) | | +| [ExpressionsServerStart](./kibana-plugin-plugins-expressions-server.expressionsserverstart.md) | | +| [ExpressionValue](./kibana-plugin-plugins-expressions-server.expressionvalue.md) | | +| [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-server.expressionvalueboxed.md) | | +| [ExpressionValueConverter](./kibana-plugin-plugins-expressions-server.expressionvalueconverter.md) | | +| [ExpressionValueError](./kibana-plugin-plugins-expressions-server.expressionvalueerror.md) | | +| [ExpressionValueFilter](./kibana-plugin-plugins-expressions-server.expressionvaluefilter.md) | Represents an object that is a Filter. | +| [ExpressionValueNum](./kibana-plugin-plugins-expressions-server.expressionvaluenum.md) | | +| [ExpressionValueRender](./kibana-plugin-plugins-expressions-server.expressionvaluerender.md) | Represents an object that is intended to be rendered. | +| [ExpressionValueSearchContext](./kibana-plugin-plugins-expressions-server.expressionvaluesearchcontext.md) | | +| [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md) | | +| [FontLabel](./kibana-plugin-plugins-expressions-server.fontlabel.md) | This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. | +| [FontValue](./kibana-plugin-plugins-expressions-server.fontvalue.md) | This type contains a union of all supported font values, equivalent to the CSS font-value property. | +| [InterpreterErrorType](./kibana-plugin-plugins-expressions-server.interpretererrortype.md) | | +| [KIBANA\_CONTEXT\_NAME](./kibana-plugin-plugins-expressions-server.kibana_context_name.md) | | +| [KibanaContext](./kibana-plugin-plugins-expressions-server.kibanacontext.md) | | +| [KnownTypeToString](./kibana-plugin-plugins-expressions-server.knowntypetostring.md) | Map the type of the generic to a string-based representation of the type.If the provided generic is its own type interface, we use the value of the type key as a string literal type for it. | +| [PointSeries](./kibana-plugin-plugins-expressions-server.pointseries.md) | A PointSeries is a unique structure that represents dots on a chart. | +| [PointSeriesColumnName](./kibana-plugin-plugins-expressions-server.pointseriescolumnname.md) | Allowed column names in a PointSeries | +| [PointSeriesColumns](./kibana-plugin-plugins-expressions-server.pointseriescolumns.md) | Represents a collection of valid Columns in a PointSeries | +| [PointSeriesRow](./kibana-plugin-plugins-expressions-server.pointseriesrow.md) | | +| [Style](./kibana-plugin-plugins-expressions-server.style.md) | | +| [TypeString](./kibana-plugin-plugins-expressions-server.typestring.md) | If the type extends a Promise, we still need to return the string representation:someArgument: Promise<boolean | string> results in types: ['boolean', 'string'] | +| [TypeToString](./kibana-plugin-plugins-expressions-server.typetostring.md) | This can convert a type into a known Expression string representation of that type. For example, TypeToString<Datatable> will resolve to 'datatable'. This allows Expression Functions to continue to specify their type in a simple string format. | +| [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-server.unmappedtypestrings.md) | Types used in Expressions that don't map to a primitive cleanly:date is typed as a number or string, and represents a date | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md new file mode 100644 index 0000000000000..2b1d1a34cd46a --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Overflow](./kibana-plugin-plugins-expressions-server.overflow.md) + +## Overflow enum + +Enum of supported CSS `overflow` properties. + +Signature: + +```typescript +export declare enum Overflow +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| AUTO | "auto" | | +| HIDDEN | "hidden" | | +| SCROLL | "scroll" | | +| VISIBLE | "visible" | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md new file mode 100644 index 0000000000000..ec2534986006f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [parse](./kibana-plugin-plugins-expressions-server.parse.md) + +## parse() function + +Signature: + +```typescript +export declare function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | E | | +| startRule | S | | + +Returns: + +`S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md new file mode 100644 index 0000000000000..0d8547fd5243b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [parseExpression](./kibana-plugin-plugins-expressions-server.parseexpression.md) + +## parseExpression() function + +Given expression pipeline string, returns parsed AST. + +Signature: + +```typescript +export declare function parseExpression(expression: string): ExpressionAstExpression; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | string | | + +Returns: + +`ExpressionAstExpression` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md new file mode 100644 index 0000000000000..79a7100ebf540 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [plugin](./kibana-plugin-plugins-expressions-server.plugin.md) + +## plugin() function + +Signature: + +```typescript +export declare function plugin(initializerContext: PluginInitializerContext): ExpressionsServerPlugin; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initializerContext | PluginInitializerContext | | + +Returns: + +`ExpressionsServerPlugin` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md new file mode 100644 index 0000000000000..f65efd705666d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeries](./kibana-plugin-plugins-expressions-server.pointseries.md) + +## PointSeries type + +A `PointSeries` is a unique structure that represents dots on a chart. + +Signature: + +```typescript +export declare type PointSeries = ExpressionValueBoxed<'pointseries', { + columns: PointSeriesColumns; + rows: PointSeriesRow[]; +}>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md new file mode 100644 index 0000000000000..c857a9f29fa60 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [expression](./kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md) + +## PointSeriesColumn.expression property + +Signature: + +```typescript +expression: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md new file mode 100644 index 0000000000000..5aec683421dd1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) + +## PointSeriesColumn interface + +Column in a PointSeries + +Signature: + +```typescript +export interface PointSeriesColumn +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [expression](./kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md) | string | | +| [role](./kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md) | 'measure' | 'dimension' | | +| [type](./kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md) | 'number' | 'string' | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md new file mode 100644 index 0000000000000..1f6b770ecba15 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [role](./kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md) + +## PointSeriesColumn.role property + +Signature: + +```typescript +role: 'measure' | 'dimension'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md new file mode 100644 index 0000000000000..5cb51f460d722 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [type](./kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md) + +## PointSeriesColumn.type property + +Signature: + +```typescript +type: 'number' | 'string'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md new file mode 100644 index 0000000000000..2d8522b30903c --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumnName](./kibana-plugin-plugins-expressions-server.pointseriescolumnname.md) + +## PointSeriesColumnName type + +Allowed column names in a PointSeries + +Signature: + +```typescript +export declare type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md new file mode 100644 index 0000000000000..f6eee6e2bc9d1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumns](./kibana-plugin-plugins-expressions-server.pointseriescolumns.md) + +## PointSeriesColumns type + +Represents a collection of valid Columns in a PointSeries + +Signature: + +```typescript +export declare type PointSeriesColumns = Record | {}; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md new file mode 100644 index 0000000000000..d9a77305e9f99 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesRow](./kibana-plugin-plugins-expressions-server.pointseriesrow.md) + +## PointSeriesRow type + +Signature: + +```typescript +export declare type PointSeriesRow = Record; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md new file mode 100644 index 0000000000000..f349681c1472f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [from](./kibana-plugin-plugins-expressions-server.range.from.md) + +## Range.from property + +Signature: + +```typescript +from: number; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md new file mode 100644 index 0000000000000..d369d882757fc --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) + +## Range interface + +Signature: + +```typescript +export interface Range +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [from](./kibana-plugin-plugins-expressions-server.range.from.md) | number | | +| [to](./kibana-plugin-plugins-expressions-server.range.to.md) | number | | +| [type](./kibana-plugin-plugins-expressions-server.range.type.md) | typeof name | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md new file mode 100644 index 0000000000000..c5a1fe2fe2080 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [to](./kibana-plugin-plugins-expressions-server.range.to.md) + +## Range.to property + +Signature: + +```typescript +to: number; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md new file mode 100644 index 0000000000000..dd856dc0eb713 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [type](./kibana-plugin-plugins-expressions-server.range.type.md) + +## Range.type property + +Signature: + +```typescript +type: typeof name; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md new file mode 100644 index 0000000000000..12951f9323503 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) + +## SerializedDatatable interface + +Signature: + +```typescript +export interface SerializedDatatable extends Datatable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [rows](./kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md) | string[][] | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md new file mode 100644 index 0000000000000..e82504f153f6b --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) > [rows](./kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md) + +## SerializedDatatable.rows property + +Signature: + +```typescript +rows: string[][]; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md new file mode 100644 index 0000000000000..def3296aedcf7 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) > [id](./kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md) + +## SerializedFieldFormat.id property + +Signature: + +```typescript +id?: string; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md new file mode 100644 index 0000000000000..c62e830ccf7b9 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) + +## SerializedFieldFormat interface + +JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. + +Signature: + +```typescript +export interface SerializedFieldFormat> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md) | string | | +| [params](./kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md) | TParams | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md new file mode 100644 index 0000000000000..8861f729aa2b1 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) > [params](./kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md) + +## SerializedFieldFormat.params property + +Signature: + +```typescript +params?: TParams; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md new file mode 100644 index 0000000000000..e43addfd5ff30 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Style](./kibana-plugin-plugins-expressions-server.style.md) + +## Style type + +Signature: + +```typescript +export declare type Style = ExpressionTypeStyle; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md new file mode 100644 index 0000000000000..2adc12371b4be --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TextAlignment](./kibana-plugin-plugins-expressions-server.textalignment.md) + +## TextAlignment enum + +Enum of supported CSS `text-align` properties. + +Signature: + +```typescript +export declare enum TextAlignment +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| CENTER | "center" | | +| JUSTIFY | "justify" | | +| LEFT | "left" | | +| RIGHT | "right" | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md new file mode 100644 index 0000000000000..98d9b38547baf --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TextDecoration](./kibana-plugin-plugins-expressions-server.textdecoration.md) + +## TextDecoration enum + +Enum of supported CSS `text-decoration` properties. + +Signature: + +```typescript +export declare enum TextDecoration +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| NONE | "none" | | +| UNDERLINE | "underline" | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md new file mode 100644 index 0000000000000..87290d88214d0 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md) + +## TypesRegistry.(constructor) + +Constructs a new instance of the `TypesRegistry` class + +Signature: + +```typescript +constructor(executor: Executor); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| executor | Executor<any> | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md new file mode 100644 index 0000000000000..c8d674eab50cd --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [get](./kibana-plugin-plugins-expressions-server.typesregistry.get.md) + +## TypesRegistry.get() method + +Signature: + +```typescript +get(id: string): ExpressionType | null; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | | + +Returns: + +`ExpressionType | null` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md new file mode 100644 index 0000000000000..2c4d75e020035 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) + +## TypesRegistry class + +Signature: + +```typescript +export declare class TypesRegistry implements IRegistry +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(executor)](./kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md) | | Constructs a new instance of the TypesRegistry class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [get(id)](./kibana-plugin-plugins-expressions-server.typesregistry.get.md) | | | +| [register(typeDefinition)](./kibana-plugin-plugins-expressions-server.typesregistry.register.md) | | | +| [toArray()](./kibana-plugin-plugins-expressions-server.typesregistry.toarray.md) | | | +| [toJS()](./kibana-plugin-plugins-expressions-server.typesregistry.tojs.md) | | | + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md new file mode 100644 index 0000000000000..935a862407dfe --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [register](./kibana-plugin-plugins-expressions-server.typesregistry.register.md) + +## TypesRegistry.register() method + +Signature: + +```typescript +register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | + +Returns: + +`void` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md new file mode 100644 index 0000000000000..e3c6b13a22a58 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.typesregistry.toarray.md) + +## TypesRegistry.toArray() method + +Signature: + +```typescript +toArray(): ExpressionType[]; +``` +Returns: + +`ExpressionType[]` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md new file mode 100644 index 0000000000000..2ff258bd54e44 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.typesregistry.tojs.md) + +## TypesRegistry.toJS() method + +Signature: + +```typescript +toJS(): Record; +``` +Returns: + +`Record` + diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md new file mode 100644 index 0000000000000..af4d5ae0bf814 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypeString](./kibana-plugin-plugins-expressions-server.typestring.md) + +## TypeString type + +If the type extends a Promise, we still need to return the string representation: + +`someArgument: Promise` results in `types: ['boolean', 'string']` + +Signature: + +```typescript +export declare type TypeString = KnownTypeToString>; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md new file mode 100644 index 0000000000000..578438c03a0e5 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypeToString](./kibana-plugin-plugins-expressions-server.typetostring.md) + +## TypeToString type + +This can convert a type into a known Expression string representation of that type. For example, `TypeToString` will resolve to `'datatable'`. This allows Expression Functions to continue to specify their type in a simple string format. + +Signature: + +```typescript +export declare type TypeToString = KnownTypeToString | UnmappedTypeStrings; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md new file mode 100644 index 0000000000000..da872bfabce4f --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-server.unmappedtypestrings.md) + +## UnmappedTypeStrings type + +Types used in Expressions that don't map to a primitive cleanly: + +`date` is typed as a number or string, and represents a date + +Signature: + +```typescript +export declare type UnmappedTypeStrings = 'date' | 'filter'; +``` diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts index 28e8570812915..5a6b6e092da2c 100644 --- a/src/dev/run_check_published_api_changes.ts +++ b/src/dev/run_check_published_api_changes.ts @@ -230,6 +230,8 @@ async function run(folder: string, { opts }: { opts: Options }): Promise { + getData = async (): Promise => { try { return await this.execution.result; } catch (e) { @@ -80,7 +82,7 @@ export class ExecutionContract< /** * Get AST used to execute the expression. */ - getAst = () => this.execution.state.get().ast; + getAst = (): ExpressionAstExpression => this.execution.state.get().ast; /** * Get Inspector adapters provided to all functions of expression through diff --git a/src/plugins/expressions/common/expression_types/specs/error.ts b/src/plugins/expressions/common/expression_types/specs/error.ts index c95a019f4e8d2..ebaedcbba0d23 100644 --- a/src/plugins/expressions/common/expression_types/specs/error.ts +++ b/src/plugins/expressions/common/expression_types/specs/error.ts @@ -28,6 +28,7 @@ export type ExpressionValueError = ExpressionValueBoxed< { error: { message: string; + type?: string; name?: string; stack?: string; original?: Error; diff --git a/src/plugins/expressions/common/service/expressions_services.ts b/src/plugins/expressions/common/service/expressions_services.ts index f1053c7bb8411..b5c98fada07c4 100644 --- a/src/plugins/expressions/common/service/expressions_services.ts +++ b/src/plugins/expressions/common/service/expressions_services.ts @@ -18,9 +18,11 @@ */ import { Executor } from '../executor'; -import { ExpressionRendererRegistry } from '../expression_renderers'; +import { AnyExpressionRenderDefinition, ExpressionRendererRegistry } from '../expression_renderers'; import { ExpressionAstExpression } from '../ast'; import { ExecutionContract } from '../execution/execution_contract'; +import { AnyExpressionTypeDefinition } from '../expression_types'; +import { AnyExpressionFunctionDefinition } from '../expression_functions'; /** * The public contract that `ExpressionsService` provides to other plugins @@ -45,18 +47,88 @@ export type ExpressionsServiceSetup = Pick< * The public contract that `ExpressionsService` provides to other plugins * in Kibana Platform in *start* life-cycle. */ -export type ExpressionsServiceStart = Pick< - ExpressionsService, - | 'getFunction' - | 'getFunctions' - | 'getRenderer' - | 'getRenderers' - | 'getType' - | 'getTypes' - | 'run' - | 'execute' - | 'fork' ->; +export interface ExpressionsServiceStart { + /** + * Get a registered `ExpressionFunction` by its name, which was registered + * using the `registerFunction` method. The returned `ExpressionFunction` + * instance is an internal representation of the function in Expressions + * service - do not mutate that object. + */ + getFunction: (name: string) => ReturnType; + + /** + * Get a registered `ExpressionRenderer` by its name, which was registered + * using the `registerRenderer` method. The returned `ExpressionRenderer` + * instance is an internal representation of the renderer in Expressions + * service - do not mutate that object. + */ + getRenderer: (name: string) => ReturnType; + + /** + * Get a registered `ExpressionType` by its name, which was registered + * using the `registerType` method. The returned `ExpressionType` + * instance is an internal representation of the type in Expressions + * service - do not mutate that object. + */ + getType: (name: string) => ReturnType; + + /** + * Executes expression string or a parsed expression AST and immediately + * returns the result. + * + * Below example will execute `sleep 100 | clog` expression with `123` initial + * input to the first function. + * + * ```ts + * expressions.run('sleep 100 | clog', 123); + * ``` + * + * - `sleep 100` will delay execution by 100 milliseconds and pass the `123` input as + * its output. + * - `clog` will print to console `123` and pass it as its output. + * - The final result of the execution will be `123`. + * + * Optionally, you can pass an object as the third argument which will be used + * to extend the `ExecutionContext`—an object passed to each function + * as the third argument, that allows functions to perform side-effects. + * + * ```ts + * expressions.run('...', null, { elasticsearchClient }); + * ``` + */ + run: = Record>( + ast: string | ExpressionAstExpression, + input: Input, + context?: ExtraContext + ) => Promise; + + /** + * Starts expression execution and immediately returns `ExecutionContract` + * instance that tracks the progress of the execution and can be used to + * interact with the execution. + */ + execute: < + Input = unknown, + Output = unknown, + ExtraContext extends Record = Record + >( + ast: string | ExpressionAstExpression, + // This any is for legacy reasons. + input: Input, + context?: ExtraContext + ) => ExecutionContract; + + /** + * Create a new instance of `ExpressionsService`. The new instance inherits + * all state of the original `ExpressionsService`, including all expression + * types, expression functions and context. Also, all new types and functions + * registered in the original services AFTER the forking event will be + * available in the forked instance. However, all new types and functions + * registered in the forked instances will NOT be available to the original + * service. + */ + fork: () => ExpressionsService; +} export interface ExpressionServiceParams { executor?: Executor; @@ -127,58 +199,21 @@ export class ExpressionsService { * passed to all functions that can be used for side-effects. */ public readonly registerFunction = ( - ...args: Parameters - ): ReturnType => this.executor.registerFunction(...args); + functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) + ): void => this.executor.registerFunction(functionDefinition); public readonly registerType = ( - ...args: Parameters - ): ReturnType => this.executor.registerType(...args); + typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) + ): void => this.executor.registerType(typeDefinition); public readonly registerRenderer = ( - ...args: Parameters - ): ReturnType => this.renderers.register(...args); + definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition) + ): void => this.renderers.register(definition); - /** - * Executes expression string or a parsed expression AST and immediately - * returns the result. - * - * Below example will execute `sleep 100 | clog` expression with `123` initial - * input to the first function. - * - * ```ts - * expressions.run('sleep 100 | clog', 123); - * ``` - * - * - `sleep 100` will delay execution by 100 milliseconds and pass the `123` input as - * its output. - * - `clog` will print to console `123` and pass it as its output. - * - The final result of the execution will be `123`. - * - * Optionally, you can pass an object as the third argument which will be used - * to extend the `ExecutionContext`—an object passed to each function - * as the third argument, that allows functions to perform side-effects. - * - * ```ts - * expressions.run('...', null, { elasticsearchClient }); - * ``` - */ - public readonly run = < - Input, - Output, - ExtraContext extends Record = Record - >( - ast: string | ExpressionAstExpression, - input: Input, - context?: ExtraContext - ): Promise => this.executor.run(ast, input, context); + public readonly run: ExpressionsServiceStart['run'] = (ast, input, context) => + this.executor.run(ast, input, context); - /** - * Get a registered `ExpressionFunction` by its name, which was registered - * using the `registerFunction` method. The returned `ExpressionFunction` - * instance is an internal representation of the function in Expressions - * service - do not mutate that object. - */ - public readonly getFunction = (name: string): ReturnType => + public readonly getFunction: ExpressionsServiceStart['getFunction'] = (name) => this.executor.getFunction(name); /** @@ -188,13 +223,7 @@ export class ExpressionsService { public readonly getFunctions = (): ReturnType => this.executor.getFunctions(); - /** - * Get a registered `ExpressionRenderer` by its name, which was registered - * using the `registerRenderer` method. The returned `ExpressionRenderer` - * instance is an internal representation of the renderer in Expressions - * service - do not mutate that object. - */ - public readonly getRenderer = (name: string): ReturnType => + public readonly getRenderer: ExpressionsServiceStart['getRenderer'] = (name) => this.renderers.get(name); /** @@ -204,13 +233,7 @@ export class ExpressionsService { public readonly getRenderers = (): ReturnType => this.renderers.toJS(); - /** - * Get a registered `ExpressionType` by its name, which was registered - * using the `registerType` method. The returned `ExpressionType` - * instance is an internal representation of the type in Expressions - * service - do not mutate that object. - */ - public readonly getType = (name: string): ReturnType => + public readonly getType: ExpressionsServiceStart['getType'] = (name) => this.executor.getType(name); /** @@ -219,36 +242,13 @@ export class ExpressionsService { */ public readonly getTypes = (): ReturnType => this.executor.getTypes(); - /** - * Starts expression execution and immediately returns `ExecutionContract` - * instance that tracks the progress of the execution and can be used to - * interact with the execution. - */ - public readonly execute = < - Input = unknown, - Output = unknown, - ExtraContext extends Record = Record - >( - ast: string | ExpressionAstExpression, - // This any is for legacy reasons. - input: Input = { type: 'null' } as any, - context?: ExtraContext - ): ExecutionContract => { - const execution = this.executor.createExecution(ast, context); + public readonly execute: ExpressionsServiceStart['execute'] = ((ast, input, context) => { + const execution = this.executor.createExecution(ast, context); execution.start(input); return execution.contract; - }; + }) as ExpressionsServiceStart['execute']; - /** - * Create a new instance of `ExpressionsService`. The new instance inherits - * all state of the original `ExpressionsService`, including all expression - * types, expression functions and context. Also, all new types and functions - * registered in the original services AFTER the forking event will be - * available in the forked instance. However, all new types and functions - * registered in the forked instances will NOT be available to the original - * service. - */ - public readonly fork = (): ExpressionsService => { + public readonly fork = () => { const executor = this.executor.fork(); const renderers = this.renderers; const fork = new ExpressionsService({ executor, renderers }); diff --git a/src/plugins/expressions/public/index.ts b/src/plugins/expressions/public/index.ts index 87406db89a2a8..039890c9233cf 100644 --- a/src/plugins/expressions/public/index.ts +++ b/src/plugins/expressions/public/index.ts @@ -122,4 +122,7 @@ export { TypeToString, UnmappedTypeStrings, ExpressionValueRender as Render, + ExpressionsService, + ExpressionsServiceSetup, + ExpressionsServiceStart, } from '../common'; diff --git a/src/plugins/expressions/public/mocks.tsx b/src/plugins/expressions/public/mocks.tsx index 3865b4d20620a..f6546a6b7ff35 100644 --- a/src/plugins/expressions/public/mocks.tsx +++ b/src/plugins/expressions/public/mocks.tsx @@ -49,11 +49,8 @@ const createStartContract = (): Start => { ExpressionRenderHandler: jest.fn(), fork: jest.fn(), getFunction: jest.fn(), - getFunctions: jest.fn(), getRenderer: jest.fn(), - getRenderers: jest.fn(), getType: jest.fn(), - getTypes: jest.fn(), loader: jest.fn(), ReactExpressionRenderer: jest.fn((props) => <>), render: jest.fn(), diff --git a/src/plugins/expressions/public/plugin.test.ts b/src/plugins/expressions/public/plugin.test.ts index 08f7135f033f1..d9dde1f6def68 100644 --- a/src/plugins/expressions/public/plugin.test.ts +++ b/src/plugins/expressions/public/plugin.test.ts @@ -67,7 +67,7 @@ describe('ExpressionsPublicPlugin', () => { const { doStart } = await expressionsPluginMock.createPlugin(); const start = await doStart(); - const handler = start.execute('clog'); + const handler = start.execute('clog', null); expect(handler.getAst()).toMatchInlineSnapshot(` Object { "chain": Array [ @@ -85,7 +85,7 @@ describe('ExpressionsPublicPlugin', () => { test('"kibana" function return value of type "kibana_context"', async () => { const { doStart } = await expressionsPluginMock.createPlugin(); const start = await doStart(); - const execution = start.execute('kibana'); + const execution = start.execute('kibana', null); const result = await execution.getData(); expect((result as any).type).toBe('kibana_context'); diff --git a/src/plugins/expressions/public/plugin.ts b/src/plugins/expressions/public/plugin.ts index 9768ece899dd4..4ad0e53cdd9c0 100644 --- a/src/plugins/expressions/public/plugin.ts +++ b/src/plugins/expressions/public/plugin.ts @@ -21,20 +21,26 @@ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from 'src/core import { ExpressionsService, ExpressionsServiceSetup, - ExpressionsServiceStart, ExecutionContext, + ExpressionsServiceStart, } from '../common'; import { setRenderersRegistry, setNotifications, setExpressionsService } from './services'; import { ReactExpressionRenderer } from './react_expression_renderer'; -import { ExpressionLoader, loader } from './loader'; +import { ExpressionLoader, IExpressionLoader, loader } from './loader'; import { render, ExpressionRenderHandler } from './render'; +/** + * Expressions public setup contract, extends {@link ExpressionsServiceSetup} + */ export type ExpressionsSetup = ExpressionsServiceSetup; +/** + * Expressions public start contrect, extends {@link ExpressionServiceStart} + */ export interface ExpressionsStart extends ExpressionsServiceStart { ExpressionLoader: typeof ExpressionLoader; ExpressionRenderHandler: typeof ExpressionRenderHandler; - loader: typeof loader; + loader: IExpressionLoader; ReactExpressionRenderer: typeof ReactExpressionRenderer; render: typeof render; } diff --git a/src/plugins/expressions/public/public.api.md b/src/plugins/expressions/public/public.api.md new file mode 100644 index 0000000000000..162f0ef6824f5 --- /dev/null +++ b/src/plugins/expressions/public/public.api.md @@ -0,0 +1,1164 @@ +## API Report File for "kibana" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { CoreSetup } from 'src/core/public'; +import { CoreStart } from 'src/core/public'; +import { Ensure } from '@kbn/utility-types'; +import { EnvironmentMode } from '@kbn/config'; +import { EventEmitter } from 'events'; +import { Observable } from 'rxjs'; +import { PackageInfo } from '@kbn/config'; +import { Plugin as Plugin_2 } from 'src/core/public'; +import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; +import React from 'react'; +import { UnwrapPromiseOrReturn } from '@kbn/utility-types'; + +// Warning: (ae-missing-release-tag) "AnyExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; + +// Warning: (ae-missing-release-tag) "AnyExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type AnyExpressionTypeDefinition = ExpressionTypeDefinition; + +// Warning: (ae-forgotten-export) The symbol "SingleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "MultipleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "UnresolvedSingleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "UnresolvedMultipleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ArgumentType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; + +// Warning: (ae-missing-release-tag) "buildExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; + +// Warning: (ae-forgotten-export) The symbol "InferFunctionDefinition" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "FunctionArgs" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "buildExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function buildExpressionFunction(fnName: InferFunctionDefinition['name'], +initialArgs: { + [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[]; +}): ExpressionAstFunctionBuilder; + +// Warning: (ae-missing-release-tag) "Datatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface Datatable { + // (undocumented) + columns: DatatableColumn[]; + // (undocumented) + rows: DatatableRow[]; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name; +} + +// Warning: (ae-missing-release-tag) "DatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface DatatableColumn { + // (undocumented) + id: string; + // Warning: (ae-forgotten-export) The symbol "DatatableColumnMeta" needs to be exported by the entry point index.d.ts + // + // (undocumented) + meta: DatatableColumnMeta; + // (undocumented) + name: string; +} + +// Warning: (ae-missing-release-tag) "DatatableColumnType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type DatatableColumnType = 'string' | 'number' | 'boolean' | 'date' | 'null'; + +// Warning: (ae-missing-release-tag) "DatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type DatatableRow = Record; + +// Warning: (ae-forgotten-export) The symbol "Adapters" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "DefaultInspectorAdapters" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "Execution" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class Execution = Record, Input = unknown, Output = unknown, InspectorAdapters extends Adapters = ExtraContext['inspectorAdapters'] extends object ? ExtraContext['inspectorAdapters'] : DefaultInspectorAdapters> { + constructor(params: ExecutionParams); + cancel(): void; + // (undocumented) + cast(value: any, toTypeNames?: string[]): any; + readonly context: ExecutionContext & ExtraContext; + readonly contract: ExecutionContract; + // (undocumented) + readonly expression: string; + input: Input; + // (undocumented) + get inspectorAdapters(): InspectorAdapters; + // Warning: (ae-forgotten-export) The symbol "ExpressionExecOptions" needs to be exported by the entry point index.d.ts + // + // (undocumented) + interpret(ast: ExpressionAstNode, input: T, options?: ExpressionExecOptions): Promise; + // (undocumented) + invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Promise; + // (undocumented) + invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Promise; + // (undocumented) + readonly params: ExecutionParams; + // (undocumented) + resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Promise; + // (undocumented) + get result(): Promise; + start(input?: Input): void; + readonly state: ExecutionContainer; +} + +// Warning: (ae-forgotten-export) The symbol "StateContainer" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "ExecutionPureTransitions" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExecutionContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExecutionContainer = StateContainer, ExecutionPureTransitions>; + +// Warning: (ae-missing-release-tag) "ExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExecutionContext { + abortSignal: AbortSignal; + getInitialInput: () => Input; + // Warning: (ae-forgotten-export) The symbol "SavedObjectAttributes" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "SavedObject" needs to be exported by the entry point index.d.ts + getSavedObject?: (type: string, id: string) => Promise>; + inspectorAdapters: InspectorAdapters; + // Warning: (ae-forgotten-export) The symbol "ExecutionContextSearch" needs to be exported by the entry point index.d.ts + search?: ExecutionContextSearch; + types: Record; + variables: Record; +} + +// Warning: (ae-missing-release-tag) "ExecutionContract" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export class ExecutionContract = Record, Input = unknown, Output = unknown, InspectorAdapters = unknown> { + constructor(execution: Execution); + cancel: () => void; + // (undocumented) + protected readonly execution: Execution; + getAst: () => ExpressionAstExpression; + getData: () => Promise; + getExpression: () => string; + inspect: () => InspectorAdapters; + // (undocumented) + get isPending(): boolean; +} + +// Warning: (ae-missing-release-tag) "ExecutionParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutionParams = Record> { + // (undocumented) + ast?: ExpressionAstExpression; + // (undocumented) + context?: ExtraContext; + debug?: boolean; + // (undocumented) + executor: Executor; + // (undocumented) + expression?: string; +} + +// Warning: (ae-missing-release-tag) "ExecutionState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutionState extends ExecutorState { + // (undocumented) + ast: ExpressionAstExpression; + error?: Error; + result?: Output; + state: 'not-started' | 'pending' | 'result' | 'error'; +} + +// Warning: (ae-missing-release-tag) "Executor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class Executor = Record> { + constructor(state?: ExecutorState); + // (undocumented) + get context(): Record; + // (undocumented) + createExecution = Record, Input = unknown, Output = unknown>(ast: string | ExpressionAstExpression, context?: ExtraContext, { debug }?: ExpressionExecOptions): Execution; + // (undocumented) + static createWithDefaults = Record>(state?: ExecutorState): Executor; + // (undocumented) + extendContext(extraContext: Record): void; + // (undocumented) + fork(): Executor; + // @deprecated (undocumented) + readonly functions: FunctionsRegistry; + // (undocumented) + getFunction(name: string): ExpressionFunction | undefined; + // (undocumented) + getFunctions(): Record; + // (undocumented) + getType(name: string): ExpressionType | undefined; + // (undocumented) + getTypes(): Record; + // (undocumented) + registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; + // (undocumented) + registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; + run = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext): Promise; + // (undocumented) + readonly state: ExecutorContainer; + // @deprecated (undocumented) + readonly types: TypesRegistry; +} + +// Warning: (ae-forgotten-export) The symbol "ExecutorPureTransitions" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "ExecutorPureSelectors" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExecutorContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; + +// Warning: (ae-missing-release-tag) "ExecutorState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutorState = Record> { + // (undocumented) + context: Context; + // (undocumented) + functions: Record; + // (undocumented) + types: Record; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstArgument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; + +// Warning: (ae-missing-release-tag) "ExpressionAstExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstExpression { + // (undocumented) + chain: ExpressionAstFunction[]; + // (undocumented) + type: 'expression'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstExpressionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstExpressionBuilder { + findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; + functions: ExpressionAstFunctionBuilder[]; + toAst: () => ExpressionAstExpression; + toString: () => string; + type: 'expression_builder'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstFunction { + // (undocumented) + arguments: Record; + // Warning: (ae-forgotten-export) The symbol "ExpressionAstFunctionDebug" needs to be exported by the entry point index.d.ts + debug?: ExpressionAstFunctionDebug; + // (undocumented) + function: string; + // (undocumented) + type: 'function'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstFunctionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstFunctionBuilder { + // Warning: (ae-forgotten-export) The symbol "FunctionArgName" needs to be exported by the entry point index.d.ts + addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; + // Warning: (ae-forgotten-export) The symbol "FunctionBuilderArguments" needs to be exported by the entry point index.d.ts + arguments: FunctionBuilderArguments; + getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; + name: InferFunctionDefinition['name']; + // Warning: (ae-forgotten-export) The symbol "OptionalKeys" needs to be exported by the entry point index.d.ts + removeArgument: >>(name: A) => this; + replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; + toAst: () => ExpressionAstFunction; + toString: () => string; + type: 'expression_function_builder'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; + +// Warning: (ae-missing-release-tag) "ExpressionExecutor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public @deprecated (undocumented) +export interface ExpressionExecutor { + // Warning: (ae-forgotten-export) The symbol "ExpressionInterpreter" needs to be exported by the entry point index.d.ts + // + // (undocumented) + interpreter: ExpressionInterpreter; +} + +// Warning: (ae-missing-release-tag) "ExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionFunction { + constructor(functionDefinition: AnyExpressionFunctionDefinition); + // (undocumented) + accepts: (type: string) => boolean; + aliases: string[]; + args: Record; + fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; + help: string; + inputTypes: string[] | undefined; + name: string; + type: string; +} + +// Warning: (ae-missing-release-tag) "ExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> { + aliases?: string[]; + args: { + [key in keyof Arguments]: ArgumentType; + }; + // @deprecated (undocumented) + context?: { + types: AnyExpressionFunctionDefinition['inputTypes']; + }; + fn(input: Input, args: Arguments, context: Context): Output; + help: string; + inputTypes?: Array>; + name: Name; + type?: TypeToString>; +} + +// @public +export interface ExpressionFunctionDefinitions { + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionClog" needs to be exported by the entry point index.d.ts + // + // (undocumented) + clog: ExpressionFunctionClog; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionFont" needs to be exported by the entry point index.d.ts + // + // (undocumented) + font: ExpressionFunctionFont; + // (undocumented) + kibana: ExpressionFunctionKibana; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionKibanaContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + kibana_context: ExpressionFunctionKibanaContext; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionTheme" needs to be exported by the entry point index.d.ts + // + // (undocumented) + theme: ExpressionFunctionTheme; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVar" needs to be exported by the entry point index.d.ts + // + // (undocumented) + var: ExpressionFunctionVar; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVarSet" needs to be exported by the entry point index.d.ts + // + // (undocumented) + var_set: ExpressionFunctionVarSet; +} + +// Warning: (ae-missing-release-tag) "ExpressionFunctionKibana" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext>; + +// Warning: (ae-missing-release-tag) "ExpressionFunctionParameter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionFunctionParameter { + constructor(name: string, arg: ArgumentType); + // (undocumented) + accepts(type: string): boolean; + // (undocumented) + aliases: string[]; + // (undocumented) + default: any; + // (undocumented) + help: string; + // (undocumented) + multi: boolean; + // (undocumented) + name: string; + // (undocumented) + options: any[]; + // (undocumented) + required: boolean; + // (undocumented) + resolve: boolean; + // (undocumented) + types: string[]; +} + +// Warning: (ae-missing-release-tag) "ExpressionImage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionImage { + // (undocumented) + dataurl: string; + // (undocumented) + mode: string; + // (undocumented) + type: 'image'; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionRenderDefinition { + displayName: string; + help?: string; + name: string; + render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; + reuseDomNode: boolean; + validate?: () => undefined | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionRenderer { + constructor(config: ExpressionRenderDefinition); + // (undocumented) + readonly displayName: string; + // (undocumented) + readonly help: string; + // (undocumented) + readonly name: string; + // (undocumented) + readonly render: ExpressionRenderDefinition['render']; + // (undocumented) + readonly reuseDomNode: boolean; + // (undocumented) + readonly validate: () => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionRendererComponent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionRendererComponent = React.FC; + +// Warning: (ae-missing-release-tag) "ExpressionRendererEvent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionRendererEvent { + // (undocumented) + data: any; + // (undocumented) + name: string; +} + +// Warning: (ae-missing-release-tag) "ExpressionRendererRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionRendererRegistry implements IRegistry { + // (undocumented) + get(id: string): ExpressionRenderer | null; + // Warning: (ae-forgotten-export) The symbol "AnyExpressionRenderDefinition" needs to be exported by the entry point index.d.ts + // + // (undocumented) + register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; + // (undocumented) + toArray(): ExpressionRenderer[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionRenderError extends Error { + // (undocumented) + type?: string; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderHandler" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionRenderHandler { + // Warning: (ae-forgotten-export) The symbol "ExpressionRenderHandlerParams" needs to be exported by the entry point index.d.ts + constructor(element: HTMLElement, { onRenderError }?: Partial); + // (undocumented) + destroy: () => void; + // (undocumented) + events$: Observable; + // (undocumented) + getElement: () => HTMLElement; + // (undocumented) + handleRenderError: (error: ExpressionRenderError) => void; + // (undocumented) + render$: Observable; + // (undocumented) + render: (data: any, uiState?: any) => Promise; + // Warning: (ae-forgotten-export) The symbol "UpdateValue" needs to be exported by the entry point index.d.ts + // + // (undocumented) + update$: Observable; + } + +// Warning: (ae-missing-release-tag) "ExpressionsPublicPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +class ExpressionsPublicPlugin implements Plugin_2 { + constructor(initializerContext: PluginInitializerContext_2); + // (undocumented) + setup(core: CoreSetup): ExpressionsSetup; + // (undocumented) + start(core: CoreStart): ExpressionsStart; + // (undocumented) + stop(): void; +} + +export { ExpressionsPublicPlugin } + +export { ExpressionsPublicPlugin as Plugin } + +// Warning: (ae-missing-release-tag) "ExpressionsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export class ExpressionsService { + // Warning: (ae-forgotten-export) The symbol "ExpressionServiceParams" needs to be exported by the entry point index.d.ts + constructor({ executor, renderers, }?: ExpressionServiceParams); + // (undocumented) + readonly execute: ExpressionsServiceStart['execute']; + // (undocumented) + readonly executor: Executor; + // (undocumented) + readonly fork: () => ExpressionsService; + // (undocumented) + readonly getFunction: ExpressionsServiceStart['getFunction']; + readonly getFunctions: () => ReturnType; + // (undocumented) + readonly getRenderer: ExpressionsServiceStart['getRenderer']; + readonly getRenderers: () => ReturnType; + // (undocumented) + readonly getType: ExpressionsServiceStart['getType']; + readonly getTypes: () => ReturnType; + readonly registerFunction: (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void; + // (undocumented) + readonly registerRenderer: (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void; + // (undocumented) + readonly registerType: (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void; + // (undocumented) + readonly renderers: ExpressionRendererRegistry; + // (undocumented) + readonly run: ExpressionsServiceStart['run']; + setup(): ExpressionsServiceSetup; + start(): ExpressionsServiceStart; + // (undocumented) + stop(): void; +} + +// Warning: (ae-missing-release-tag) "ExpressionsServiceSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ExpressionsServiceSetup = Pick; + +// Warning: (ae-missing-release-tag) "ExpressionsServiceStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionsServiceStart { + execute: = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => ExecutionContract; + fork: () => ExpressionsService; + getFunction: (name: string) => ReturnType; + getRenderer: (name: string) => ReturnType; + getType: (name: string) => ReturnType; + run: = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext) => Promise; +} + +// Warning: (ae-missing-release-tag) "ExpressionsSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ExpressionsSetup = ExpressionsServiceSetup; + +// Warning: (ae-missing-release-tag) "ExpressionsStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "ExpressionServiceStart" +// +// @public +export interface ExpressionsStart extends ExpressionsServiceStart { + // Warning: (ae-forgotten-export) The symbol "ExpressionLoader" needs to be exported by the entry point index.d.ts + // + // (undocumented) + ExpressionLoader: typeof ExpressionLoader; + // (undocumented) + ExpressionRenderHandler: typeof ExpressionRenderHandler; + // Warning: (ae-forgotten-export) The symbol "IExpressionLoader" needs to be exported by the entry point index.d.ts + // + // (undocumented) + loader: IExpressionLoader; + // (undocumented) + ReactExpressionRenderer: typeof ReactExpressionRenderer; + // Warning: (ae-forgotten-export) The symbol "render" needs to be exported by the entry point index.d.ts + // + // (undocumented) + render: typeof render; +} + +// Warning: (ae-missing-release-tag) "ExpressionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionType { + constructor(definition: AnyExpressionTypeDefinition); + // (undocumented) + castsFrom: (value: ExpressionValue) => boolean; + // (undocumented) + castsTo: (value: ExpressionValue) => boolean; + // (undocumented) + create: unknown; + // (undocumented) + deserialize?: (serialized: any) => ExpressionValue; + // (undocumented) + from: (value: ExpressionValue, types: Record) => any; + // (undocumented) + getFromFn: (typeName: string) => undefined | ExpressionValueConverter; + // (undocumented) + getToFn: (typeName: string) => undefined | ExpressionValueConverter; + help: string; + // (undocumented) + name: string; + serialize?: (value: ExpressionValue) => any; + // (undocumented) + to: (value: ExpressionValue, toTypeName: string, types: Record) => any; + validate: (type: any) => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionTypeDefinition { + // (undocumented) + deserialize?: (type: SerializedType) => Value; + // (undocumented) + from?: { + [type: string]: ExpressionValueConverter; + }; + // (undocumented) + help?: string; + // (undocumented) + name: Name; + // (undocumented) + serialize?: (type: Value) => SerializedType; + // (undocumented) + to?: { + [type: string]: ExpressionValueConverter; + }; + // (undocumented) + validate?: (type: any) => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionTypeStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionTypeStyle { + // (undocumented) + css: string; + // Warning: (ae-forgotten-export) The symbol "CSSStyle" needs to be exported by the entry point index.d.ts + // + // (undocumented) + spec: CSSStyle; + // (undocumented) + type: 'style'; +} + +// Warning: (ae-missing-release-tag) "ExpressionValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; + +// Warning: (ae-missing-release-tag) "ExpressionValueBoxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueBoxed = { + type: Type; +} & Value; + +// Warning: (ae-missing-release-tag) "ExpressionValueConverter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueConverter = (input: I, availableTypes: Record) => O; + +// Warning: (ae-missing-release-tag) "ExpressionValueError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueError = ExpressionValueBoxed<'error', { + error: { + message: string; + type?: string; + name?: string; + stack?: string; + original?: Error; + }; + info?: unknown; +}>; + +// Warning: (ae-missing-release-tag) "ExpressionValueFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ExpressionValueFilter = ExpressionValueBoxed<'filter', { + filterType?: string; + value?: string; + column?: string; + and: ExpressionValueFilter[]; + to?: string; + from?: string; + query?: string | null; +}>; + +// Warning: (ae-missing-release-tag) "ExpressionValueNum" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueNum = ExpressionValueBoxed<'num', { + value: number; +}>; + +// Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExpressionValueRender" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +type ExpressionValueRender = ExpressionValueBoxed; + +export { ExpressionValueRender } + +export { ExpressionValueRender as Render } + +// Warning: (ae-missing-release-tag) "ExpressionValueSearchContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; + +// Warning: (ae-missing-release-tag) "ExpressionValueUnboxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueUnboxed = any; + +// Warning: (ae-missing-release-tag) "Font" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface Font { + // (undocumented) + label: FontLabel; + // (undocumented) + value: FontValue; +} + +// Warning: (ae-forgotten-export) The symbol "fonts" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "FontLabel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type FontLabel = typeof fonts[number]['label']; + +// Warning: (ae-missing-release-tag) "FontStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum FontStyle { + // (undocumented) + ITALIC = "italic", + // (undocumented) + NORMAL = "normal" +} + +// Warning: (ae-missing-release-tag) "FontValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type FontValue = typeof fonts[number]['value']; + +// Warning: (ae-missing-release-tag) "FontWeight" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum FontWeight { + // (undocumented) + BOLD = "bold", + // (undocumented) + BOLDER = "bolder", + // (undocumented) + EIGHT = "800", + // (undocumented) + FIVE = "500", + // (undocumented) + FOUR = "400", + // (undocumented) + LIGHTER = "lighter", + // (undocumented) + NINE = "900", + // (undocumented) + NORMAL = "normal", + // (undocumented) + ONE = "100", + // (undocumented) + SEVEN = "700", + // (undocumented) + SIX = "600", + // (undocumented) + THREE = "300", + // (undocumented) + TWO = "200" +} + +// Warning: (ae-missing-release-tag) "format" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; + +// Warning: (ae-missing-release-tag) "formatExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function formatExpression(ast: ExpressionAstExpression): string; + +// Warning: (ae-missing-release-tag) "FunctionsRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class FunctionsRegistry implements IRegistry { + constructor(executor: Executor); + // (undocumented) + get(id: string): ExpressionFunction | null; + // (undocumented) + register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; + // (undocumented) + toArray(): ExpressionFunction[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "IExpressionLoaderParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface IExpressionLoaderParams { + // (undocumented) + context?: ExpressionValue; + // (undocumented) + customFunctions?: []; + // (undocumented) + customRenderers?: []; + // (undocumented) + disableCaching?: boolean; + // (undocumented) + inspectorAdapters?: Adapters; + // Warning: (ae-forgotten-export) The symbol "RenderErrorHandlerFnType" needs to be exported by the entry point index.d.ts + // + // (undocumented) + onRenderError?: RenderErrorHandlerFnType; + // (undocumented) + searchContext?: ExecutionContextSearch; + // (undocumented) + uiState?: unknown; + // (undocumented) + variables?: Record; +} + +// Warning: (ae-missing-release-tag) "IInterpreterRenderHandlers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface IInterpreterRenderHandlers { + done: () => void; + // (undocumented) + event: (event: any) => void; + // (undocumented) + onDestroy: (fn: () => void) => void; + // (undocumented) + reload: () => void; + // (undocumented) + update: (params: any) => void; +} + +// Warning: (ae-missing-release-tag) "InterpreterErrorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public @deprecated (undocumented) +export type InterpreterErrorType = ExpressionValueError; + +// Warning: (ae-missing-release-tag) "IRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface IRegistry { + // (undocumented) + get(id: string): T | null; + // (undocumented) + toArray(): T[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "isExpressionAstBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; + +// Warning: (ae-missing-release-tag) "KIBANA_CONTEXT_NAME" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type KIBANA_CONTEXT_NAME = 'kibana_context'; + +// Warning: (ae-missing-release-tag) "KibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type KibanaContext = ExpressionValueSearchContext; + +// Warning: (ae-missing-release-tag) "KibanaDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatable { + // (undocumented) + columns: KibanaDatatableColumn[]; + // (undocumented) + rows: KibanaDatatableRow[]; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name_3; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableColumn { + // (undocumented) + formatHint?: SerializedFieldFormat; + // (undocumented) + id: string; + // (undocumented) + meta?: KibanaDatatableColumnMeta; + // (undocumented) + name: string; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableColumnMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableColumnMeta { + // (undocumented) + aggConfigParams?: Record; + // (undocumented) + indexPatternId?: string; + // (undocumented) + type: string; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableRow { + // (undocumented) + [key: string]: unknown; +} + +// Warning: (ae-missing-release-tag) "KnownTypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { + type: string; +} ? T['type'] : never; + +// Warning: (ae-missing-release-tag) "Overflow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum Overflow { + // (undocumented) + AUTO = "auto", + // (undocumented) + HIDDEN = "hidden", + // (undocumented) + SCROLL = "scroll", + // (undocumented) + VISIBLE = "visible" +} + +// Warning: (ae-missing-release-tag) "parse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; + +// Warning: (ae-missing-release-tag) "parseExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function parseExpression(expression: string): ExpressionAstExpression; + +// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function plugin(initializerContext: PluginInitializerContext): ExpressionsPublicPlugin; + +// Warning: (ae-missing-release-tag) "PointSeries" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeries = ExpressionValueBoxed<'pointseries', { + columns: PointSeriesColumns; + rows: PointSeriesRow[]; +}>; + +// Warning: (ae-missing-release-tag) "PointSeriesColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface PointSeriesColumn { + // (undocumented) + expression: string; + // (undocumented) + role: 'measure' | 'dimension'; + // (undocumented) + type: 'number' | 'string'; +} + +// Warning: (ae-missing-release-tag) "PointSeriesColumnName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; + +// Warning: (ae-missing-release-tag) "PointSeriesColumns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeriesColumns = Record | {}; + +// Warning: (ae-missing-release-tag) "PointSeriesRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type PointSeriesRow = Record; + +// Warning: (ae-missing-release-tag) "Range" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface Range { + // (undocumented) + from: number; + // (undocumented) + to: number; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name_4; +} + +// Warning: (ae-missing-release-tag) "ReactExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ReactExpressionRenderer: ({ className, dataAttrs, padding, renderError, expression, onEvent, reload$, ...expressionLoaderOptions }: ReactExpressionRendererProps) => JSX.Element; + +// Warning: (ae-missing-release-tag) "ReactExpressionRendererProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ReactExpressionRendererProps extends IExpressionLoaderParams { + // (undocumented) + className?: string; + // (undocumented) + dataAttrs?: string[]; + // (undocumented) + expression: string | ExpressionAstExpression; + // (undocumented) + onEvent?: (event: ExpressionRendererEvent) => void; + // (undocumented) + padding?: 'xs' | 's' | 'm' | 'l' | 'xl'; + reload$?: Observable; + // (undocumented) + renderError?: (error?: string | null) => React.ReactElement | React.ReactElement[]; +} + +// Warning: (ae-missing-release-tag) "ReactExpressionRendererType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ReactExpressionRendererType = React.ComponentType; + +// Warning: (ae-missing-release-tag) "SerializedDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface SerializedDatatable extends Datatable { + // (undocumented) + rows: string[][]; +} + +// Warning: (ae-missing-release-tag) "SerializedFieldFormat" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface SerializedFieldFormat> { + // (undocumented) + id?: string; + // (undocumented) + params?: TParams; +} + +// Warning: (ae-missing-release-tag) "Style" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type Style = ExpressionTypeStyle; + +// Warning: (ae-missing-release-tag) "TextAlignment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum TextAlignment { + // (undocumented) + CENTER = "center", + // (undocumented) + JUSTIFY = "justify", + // (undocumented) + LEFT = "left", + // (undocumented) + RIGHT = "right" +} + +// Warning: (ae-missing-release-tag) "TextDecoration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum TextDecoration { + // (undocumented) + NONE = "none", + // (undocumented) + UNDERLINE = "underline" +} + +// Warning: (ae-missing-release-tag) "TypesRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class TypesRegistry implements IRegistry { + constructor(executor: Executor); + // (undocumented) + get(id: string): ExpressionType | null; + // (undocumented) + register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; + // (undocumented) + toArray(): ExpressionType[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "TypeString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type TypeString = KnownTypeToString>; + +// Warning: (ae-missing-release-tag) "TypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type TypeToString = KnownTypeToString | UnmappedTypeStrings; + +// Warning: (ae-missing-release-tag) "UnmappedTypeStrings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type UnmappedTypeStrings = 'date' | 'filter'; + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/src/plugins/expressions/server/mocks.ts b/src/plugins/expressions/server/mocks.ts index 0512789d76ab0..0beb4750c0d10 100644 --- a/src/plugins/expressions/server/mocks.ts +++ b/src/plugins/expressions/server/mocks.ts @@ -46,11 +46,8 @@ const createStartContract = (): Start => { execute: jest.fn(), fork: jest.fn(), getFunction: jest.fn(), - getFunctions: jest.fn(), getRenderer: jest.fn(), - getRenderers: jest.fn(), getType: jest.fn(), - getTypes: jest.fn(), run: jest.fn(), }; diff --git a/src/plugins/expressions/server/server.api.md b/src/plugins/expressions/server/server.api.md new file mode 100644 index 0000000000000..6ac251ea005b4 --- /dev/null +++ b/src/plugins/expressions/server/server.api.md @@ -0,0 +1,968 @@ +## API Report File for "kibana" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { CoreSetup } from 'src/core/server'; +import { CoreStart } from 'src/core/server'; +import { Ensure } from '@kbn/utility-types'; +import { EventEmitter } from 'events'; +import { Observable } from 'rxjs'; +import { Plugin as Plugin_2 } from 'src/core/server'; +import { PluginInitializerContext } from 'src/core/server'; +import { UnwrapPromiseOrReturn } from '@kbn/utility-types'; + +// Warning: (ae-missing-release-tag) "AnyExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; + +// Warning: (ae-missing-release-tag) "AnyExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type AnyExpressionTypeDefinition = ExpressionTypeDefinition; + +// Warning: (ae-forgotten-export) The symbol "SingleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "MultipleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "UnresolvedSingleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "UnresolvedMultipleArgumentType" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ArgumentType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; + +// Warning: (ae-missing-release-tag) "buildExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; + +// Warning: (ae-forgotten-export) The symbol "InferFunctionDefinition" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "FunctionArgs" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "buildExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function buildExpressionFunction(fnName: InferFunctionDefinition['name'], +initialArgs: { + [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[]; +}): ExpressionAstFunctionBuilder; + +// Warning: (ae-missing-release-tag) "Datatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface Datatable { + // (undocumented) + columns: DatatableColumn[]; + // (undocumented) + rows: DatatableRow[]; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name; +} + +// Warning: (ae-missing-release-tag) "DatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface DatatableColumn { + // (undocumented) + id: string; + // Warning: (ae-forgotten-export) The symbol "DatatableColumnMeta" needs to be exported by the entry point index.d.ts + // + // (undocumented) + meta: DatatableColumnMeta; + // (undocumented) + name: string; +} + +// Warning: (ae-missing-release-tag) "DatatableColumnType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type DatatableColumnType = 'string' | 'number' | 'boolean' | 'date' | 'null'; + +// Warning: (ae-missing-release-tag) "DatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type DatatableRow = Record; + +// Warning: (ae-forgotten-export) The symbol "Adapters" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "DefaultInspectorAdapters" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "Execution" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class Execution = Record, Input = unknown, Output = unknown, InspectorAdapters extends Adapters = ExtraContext['inspectorAdapters'] extends object ? ExtraContext['inspectorAdapters'] : DefaultInspectorAdapters> { + constructor(params: ExecutionParams); + cancel(): void; + // (undocumented) + cast(value: any, toTypeNames?: string[]): any; + readonly context: ExecutionContext & ExtraContext; + // Warning: (ae-forgotten-export) The symbol "ExecutionContract" needs to be exported by the entry point index.d.ts + readonly contract: ExecutionContract; + // (undocumented) + readonly expression: string; + input: Input; + // (undocumented) + get inspectorAdapters(): InspectorAdapters; + // Warning: (ae-forgotten-export) The symbol "ExpressionExecOptions" needs to be exported by the entry point index.d.ts + // + // (undocumented) + interpret(ast: ExpressionAstNode, input: T, options?: ExpressionExecOptions): Promise; + // (undocumented) + invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Promise; + // (undocumented) + invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Promise; + // (undocumented) + readonly params: ExecutionParams; + // (undocumented) + resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Promise; + // (undocumented) + get result(): Promise; + start(input?: Input): void; + readonly state: ExecutionContainer; +} + +// Warning: (ae-forgotten-export) The symbol "StateContainer" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "ExecutionPureTransitions" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExecutionContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExecutionContainer = StateContainer, ExecutionPureTransitions>; + +// Warning: (ae-missing-release-tag) "ExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExecutionContext { + abortSignal: AbortSignal; + getInitialInput: () => Input; + // Warning: (ae-forgotten-export) The symbol "SavedObjectAttributes" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "SavedObject" needs to be exported by the entry point index.d.ts + getSavedObject?: (type: string, id: string) => Promise>; + inspectorAdapters: InspectorAdapters; + // Warning: (ae-forgotten-export) The symbol "ExecutionContextSearch" needs to be exported by the entry point index.d.ts + search?: ExecutionContextSearch; + types: Record; + variables: Record; +} + +// Warning: (ae-missing-release-tag) "ExecutionParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutionParams = Record> { + // (undocumented) + ast?: ExpressionAstExpression; + // (undocumented) + context?: ExtraContext; + debug?: boolean; + // (undocumented) + executor: Executor; + // (undocumented) + expression?: string; +} + +// Warning: (ae-missing-release-tag) "ExecutionState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutionState extends ExecutorState { + // (undocumented) + ast: ExpressionAstExpression; + error?: Error; + result?: Output; + state: 'not-started' | 'pending' | 'result' | 'error'; +} + +// Warning: (ae-missing-release-tag) "Executor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class Executor = Record> { + constructor(state?: ExecutorState); + // (undocumented) + get context(): Record; + // (undocumented) + createExecution = Record, Input = unknown, Output = unknown>(ast: string | ExpressionAstExpression, context?: ExtraContext, { debug }?: ExpressionExecOptions): Execution; + // (undocumented) + static createWithDefaults = Record>(state?: ExecutorState): Executor; + // (undocumented) + extendContext(extraContext: Record): void; + // (undocumented) + fork(): Executor; + // @deprecated (undocumented) + readonly functions: FunctionsRegistry; + // (undocumented) + getFunction(name: string): ExpressionFunction | undefined; + // (undocumented) + getFunctions(): Record; + // (undocumented) + getType(name: string): ExpressionType | undefined; + // (undocumented) + getTypes(): Record; + // (undocumented) + registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; + // (undocumented) + registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; + run = Record>(ast: string | ExpressionAstExpression, input: Input, context?: ExtraContext): Promise; + // (undocumented) + readonly state: ExecutorContainer; + // @deprecated (undocumented) + readonly types: TypesRegistry; +} + +// Warning: (ae-forgotten-export) The symbol "ExecutorPureTransitions" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "ExecutorPureSelectors" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExecutorContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; + +// Warning: (ae-missing-release-tag) "ExecutorState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExecutorState = Record> { + // (undocumented) + context: Context; + // (undocumented) + functions: Record; + // (undocumented) + types: Record; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstArgument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; + +// Warning: (ae-missing-release-tag) "ExpressionAstExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstExpression { + // (undocumented) + chain: ExpressionAstFunction[]; + // (undocumented) + type: 'expression'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstExpressionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstExpressionBuilder { + findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; + functions: ExpressionAstFunctionBuilder[]; + toAst: () => ExpressionAstExpression; + toString: () => string; + type: 'expression_builder'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstFunction { + // (undocumented) + arguments: Record; + // Warning: (ae-forgotten-export) The symbol "ExpressionAstFunctionDebug" needs to be exported by the entry point index.d.ts + debug?: ExpressionAstFunctionDebug; + // (undocumented) + function: string; + // (undocumented) + type: 'function'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstFunctionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionAstFunctionBuilder { + // Warning: (ae-forgotten-export) The symbol "FunctionArgName" needs to be exported by the entry point index.d.ts + addArgument: >(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; + // Warning: (ae-forgotten-export) The symbol "FunctionBuilderArguments" needs to be exported by the entry point index.d.ts + arguments: FunctionBuilderArguments; + getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; + name: InferFunctionDefinition['name']; + // Warning: (ae-forgotten-export) The symbol "OptionalKeys" needs to be exported by the entry point index.d.ts + removeArgument: >>(name: A) => this; + replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; + toAst: () => ExpressionAstFunction; + toString: () => string; + type: 'expression_function_builder'; +} + +// Warning: (ae-missing-release-tag) "ExpressionAstNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; + +// Warning: (ae-missing-release-tag) "ExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionFunction { + constructor(functionDefinition: AnyExpressionFunctionDefinition); + // (undocumented) + accepts: (type: string) => boolean; + aliases: string[]; + args: Record; + fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; + help: string; + inputTypes: string[] | undefined; + name: string; + type: string; +} + +// Warning: (ae-missing-release-tag) "ExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> { + aliases?: string[]; + args: { + [key in keyof Arguments]: ArgumentType; + }; + // @deprecated (undocumented) + context?: { + types: AnyExpressionFunctionDefinition['inputTypes']; + }; + fn(input: Input, args: Arguments, context: Context): Output; + help: string; + inputTypes?: Array>; + name: Name; + type?: TypeToString>; +} + +// @public +export interface ExpressionFunctionDefinitions { + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionClog" needs to be exported by the entry point index.d.ts + // + // (undocumented) + clog: ExpressionFunctionClog; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionFont" needs to be exported by the entry point index.d.ts + // + // (undocumented) + font: ExpressionFunctionFont; + // (undocumented) + kibana: ExpressionFunctionKibana; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionKibanaContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + kibana_context: ExpressionFunctionKibanaContext; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionTheme" needs to be exported by the entry point index.d.ts + // + // (undocumented) + theme: ExpressionFunctionTheme; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVar" needs to be exported by the entry point index.d.ts + // + // (undocumented) + var: ExpressionFunctionVar; + // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVarSet" needs to be exported by the entry point index.d.ts + // + // (undocumented) + var_set: ExpressionFunctionVarSet; +} + +// Warning: (ae-missing-release-tag) "ExpressionFunctionKibana" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext>; + +// Warning: (ae-missing-release-tag) "ExpressionFunctionParameter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionFunctionParameter { + constructor(name: string, arg: ArgumentType); + // (undocumented) + accepts(type: string): boolean; + // (undocumented) + aliases: string[]; + // (undocumented) + default: any; + // (undocumented) + help: string; + // (undocumented) + multi: boolean; + // (undocumented) + name: string; + // (undocumented) + options: any[]; + // (undocumented) + required: boolean; + // (undocumented) + resolve: boolean; + // (undocumented) + types: string[]; +} + +// Warning: (ae-missing-release-tag) "ExpressionImage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionImage { + // (undocumented) + dataurl: string; + // (undocumented) + mode: string; + // (undocumented) + type: 'image'; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ExpressionRenderDefinition { + displayName: string; + help?: string; + name: string; + render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; + reuseDomNode: boolean; + validate?: () => undefined | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionRenderer { + constructor(config: ExpressionRenderDefinition); + // (undocumented) + readonly displayName: string; + // (undocumented) + readonly help: string; + // (undocumented) + readonly name: string; + // (undocumented) + readonly render: ExpressionRenderDefinition['render']; + // (undocumented) + readonly reuseDomNode: boolean; + // (undocumented) + readonly validate: () => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionRendererRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionRendererRegistry implements IRegistry { + // (undocumented) + get(id: string): ExpressionRenderer | null; + // Warning: (ae-forgotten-export) The symbol "AnyExpressionRenderDefinition" needs to be exported by the entry point index.d.ts + // + // (undocumented) + register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; + // (undocumented) + toArray(): ExpressionRenderer[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "ExpressionsServerPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +class ExpressionsServerPlugin implements Plugin_2 { + constructor(initializerContext: PluginInitializerContext); + // Warning: (ae-forgotten-export) The symbol "ExpressionsService" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readonly expressions: ExpressionsService; + // (undocumented) + setup(core: CoreSetup): ExpressionsServerSetup; + // (undocumented) + start(core: CoreStart): ExpressionsServerStart; + // (undocumented) + stop(): void; +} + +export { ExpressionsServerPlugin } + +export { ExpressionsServerPlugin as Plugin } + +// Warning: (ae-forgotten-export) The symbol "ExpressionsServiceSetup" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExpressionsServerSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionsServerSetup = ExpressionsServiceSetup; + +// Warning: (ae-forgotten-export) The symbol "ExpressionsServiceStart" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExpressionsServerStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionsServerStart = ExpressionsServiceStart; + +// Warning: (ae-missing-release-tag) "ExpressionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ExpressionType { + constructor(definition: AnyExpressionTypeDefinition); + // (undocumented) + castsFrom: (value: ExpressionValue) => boolean; + // (undocumented) + castsTo: (value: ExpressionValue) => boolean; + // (undocumented) + create: unknown; + // (undocumented) + deserialize?: (serialized: any) => ExpressionValue; + // (undocumented) + from: (value: ExpressionValue, types: Record) => any; + // (undocumented) + getFromFn: (typeName: string) => undefined | ExpressionValueConverter; + // (undocumented) + getToFn: (typeName: string) => undefined | ExpressionValueConverter; + help: string; + // (undocumented) + name: string; + serialize?: (value: ExpressionValue) => any; + // (undocumented) + to: (value: ExpressionValue, toTypeName: string, types: Record) => any; + validate: (type: any) => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionTypeDefinition { + // (undocumented) + deserialize?: (type: SerializedType) => Value; + // (undocumented) + from?: { + [type: string]: ExpressionValueConverter; + }; + // (undocumented) + help?: string; + // (undocumented) + name: Name; + // (undocumented) + serialize?: (type: Value) => SerializedType; + // (undocumented) + to?: { + [type: string]: ExpressionValueConverter; + }; + // (undocumented) + validate?: (type: any) => void | Error; +} + +// Warning: (ae-missing-release-tag) "ExpressionTypeStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ExpressionTypeStyle { + // (undocumented) + css: string; + // Warning: (ae-forgotten-export) The symbol "CSSStyle" needs to be exported by the entry point index.d.ts + // + // (undocumented) + spec: CSSStyle; + // (undocumented) + type: 'style'; +} + +// Warning: (ae-missing-release-tag) "ExpressionValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; + +// Warning: (ae-missing-release-tag) "ExpressionValueBoxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueBoxed = { + type: Type; +} & Value; + +// Warning: (ae-missing-release-tag) "ExpressionValueConverter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueConverter = (input: I, availableTypes: Record) => O; + +// Warning: (ae-missing-release-tag) "ExpressionValueError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueError = ExpressionValueBoxed<'error', { + error: { + message: string; + type?: string; + name?: string; + stack?: string; + original?: Error; + }; + info?: unknown; +}>; + +// Warning: (ae-missing-release-tag) "ExpressionValueFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ExpressionValueFilter = ExpressionValueBoxed<'filter', { + filterType?: string; + value?: string; + column?: string; + and: ExpressionValueFilter[]; + to?: string; + from?: string; + query?: string | null; +}>; + +// Warning: (ae-missing-release-tag) "ExpressionValueNum" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueNum = ExpressionValueBoxed<'num', { + value: number; +}>; + +// Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ExpressionValueRender" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +type ExpressionValueRender = ExpressionValueBoxed; + +export { ExpressionValueRender } + +export { ExpressionValueRender as Render } + +// Warning: (ae-missing-release-tag) "ExpressionValueSearchContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; + +// Warning: (ae-missing-release-tag) "ExpressionValueUnboxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ExpressionValueUnboxed = any; + +// Warning: (ae-missing-release-tag) "Font" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface Font { + // (undocumented) + label: FontLabel; + // (undocumented) + value: FontValue; +} + +// Warning: (ae-forgotten-export) The symbol "fonts" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "FontLabel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type FontLabel = typeof fonts[number]['label']; + +// Warning: (ae-missing-release-tag) "FontStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum FontStyle { + // (undocumented) + ITALIC = "italic", + // (undocumented) + NORMAL = "normal" +} + +// Warning: (ae-missing-release-tag) "FontValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type FontValue = typeof fonts[number]['value']; + +// Warning: (ae-missing-release-tag) "FontWeight" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum FontWeight { + // (undocumented) + BOLD = "bold", + // (undocumented) + BOLDER = "bolder", + // (undocumented) + EIGHT = "800", + // (undocumented) + FIVE = "500", + // (undocumented) + FOUR = "400", + // (undocumented) + LIGHTER = "lighter", + // (undocumented) + NINE = "900", + // (undocumented) + NORMAL = "normal", + // (undocumented) + ONE = "100", + // (undocumented) + SEVEN = "700", + // (undocumented) + SIX = "600", + // (undocumented) + THREE = "300", + // (undocumented) + TWO = "200" +} + +// Warning: (ae-missing-release-tag) "format" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; + +// Warning: (ae-missing-release-tag) "formatExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function formatExpression(ast: ExpressionAstExpression): string; + +// Warning: (ae-missing-release-tag) "FunctionsRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class FunctionsRegistry implements IRegistry { + constructor(executor: Executor); + // (undocumented) + get(id: string): ExpressionFunction | null; + // (undocumented) + register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; + // (undocumented) + toArray(): ExpressionFunction[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "IInterpreterRenderHandlers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface IInterpreterRenderHandlers { + done: () => void; + // (undocumented) + event: (event: any) => void; + // (undocumented) + onDestroy: (fn: () => void) => void; + // (undocumented) + reload: () => void; + // (undocumented) + update: (params: any) => void; +} + +// Warning: (ae-missing-release-tag) "InterpreterErrorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public @deprecated (undocumented) +export type InterpreterErrorType = ExpressionValueError; + +// Warning: (ae-missing-release-tag) "IRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface IRegistry { + // (undocumented) + get(id: string): T | null; + // (undocumented) + toArray(): T[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "isExpressionAstBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; + +// Warning: (ae-missing-release-tag) "KIBANA_CONTEXT_NAME" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type KIBANA_CONTEXT_NAME = 'kibana_context'; + +// Warning: (ae-missing-release-tag) "KibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type KibanaContext = ExpressionValueSearchContext; + +// Warning: (ae-missing-release-tag) "KibanaDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatable { + // (undocumented) + columns: KibanaDatatableColumn[]; + // (undocumented) + rows: KibanaDatatableRow[]; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name_3; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableColumn { + // (undocumented) + formatHint?: SerializedFieldFormat; + // (undocumented) + id: string; + // (undocumented) + meta?: KibanaDatatableColumnMeta; + // (undocumented) + name: string; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableColumnMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableColumnMeta { + // (undocumented) + aggConfigParams?: Record; + // (undocumented) + indexPatternId?: string; + // (undocumented) + type: string; +} + +// Warning: (ae-missing-release-tag) "KibanaDatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KibanaDatatableRow { + // (undocumented) + [key: string]: unknown; +} + +// Warning: (ae-missing-release-tag) "KnownTypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { + type: string; +} ? T['type'] : never; + +// Warning: (ae-missing-release-tag) "Overflow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum Overflow { + // (undocumented) + AUTO = "auto", + // (undocumented) + HIDDEN = "hidden", + // (undocumented) + SCROLL = "scroll", + // (undocumented) + VISIBLE = "visible" +} + +// Warning: (ae-missing-release-tag) "parse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; + +// Warning: (ae-missing-release-tag) "parseExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function parseExpression(expression: string): ExpressionAstExpression; + +// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function plugin(initializerContext: PluginInitializerContext): ExpressionsServerPlugin; + +// Warning: (ae-missing-release-tag) "PointSeries" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeries = ExpressionValueBoxed<'pointseries', { + columns: PointSeriesColumns; + rows: PointSeriesRow[]; +}>; + +// Warning: (ae-missing-release-tag) "PointSeriesColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface PointSeriesColumn { + // (undocumented) + expression: string; + // (undocumented) + role: 'measure' | 'dimension'; + // (undocumented) + type: 'number' | 'string'; +} + +// Warning: (ae-missing-release-tag) "PointSeriesColumnName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; + +// Warning: (ae-missing-release-tag) "PointSeriesColumns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type PointSeriesColumns = Record | {}; + +// Warning: (ae-missing-release-tag) "PointSeriesRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type PointSeriesRow = Record; + +// Warning: (ae-missing-release-tag) "Range" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface Range { + // (undocumented) + from: number; + // (undocumented) + to: number; + // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts + // + // (undocumented) + type: typeof name_4; +} + +// Warning: (ae-missing-release-tag) "SerializedDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface SerializedDatatable extends Datatable { + // (undocumented) + rows: string[][]; +} + +// Warning: (ae-missing-release-tag) "SerializedFieldFormat" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface SerializedFieldFormat> { + // (undocumented) + id?: string; + // (undocumented) + params?: TParams; +} + +// Warning: (ae-missing-release-tag) "Style" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type Style = ExpressionTypeStyle; + +// Warning: (ae-missing-release-tag) "TextAlignment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum TextAlignment { + // (undocumented) + CENTER = "center", + // (undocumented) + JUSTIFY = "justify", + // (undocumented) + LEFT = "left", + // (undocumented) + RIGHT = "right" +} + +// Warning: (ae-missing-release-tag) "TextDecoration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export enum TextDecoration { + // (undocumented) + NONE = "none", + // (undocumented) + UNDERLINE = "underline" +} + +// Warning: (ae-missing-release-tag) "TypesRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class TypesRegistry implements IRegistry { + constructor(executor: Executor); + // (undocumented) + get(id: string): ExpressionType | null; + // (undocumented) + register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; + // (undocumented) + toArray(): ExpressionType[]; + // (undocumented) + toJS(): Record; +} + +// Warning: (ae-missing-release-tag) "TypeString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type TypeString = KnownTypeToString>; + +// Warning: (ae-missing-release-tag) "TypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type TypeToString = KnownTypeToString | UnmappedTypeStrings; + +// Warning: (ae-missing-release-tag) "UnmappedTypeStrings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type UnmappedTypeStrings = 'date' | 'filter'; + + +// (No @packageDocumentation comment for this package) + +``` From 80c004cb01bb4f1b5e945b0f9e74e76c6f220f44 Mon Sep 17 00:00:00 2001 From: Pete Harverson Date: Wed, 30 Sep 2020 08:54:17 +0100 Subject: [PATCH 100/119] [ML] Replace use of rest_total_hits_as_int with track_total_hits (#78423) * [ML] Replace use of rest_total_hits_as_int with track_total_hits * [ML] Replace use of lodash get for obtaining hits total * [ML] Update mocks to use new total hits format --- .../jobs/components/custom_url_editor/utils.js | 3 +-- .../application/services/forecast_service.js | 6 ++---- .../results_service/result_service_rx.ts | 3 +-- .../services/results_service/results_service.js | 16 ++++++---------- .../analytics_audit_messages.ts | 3 +-- .../models/data_recognizer/data_recognizer.ts | 3 +-- .../models/data_visualizer/data_visualizer.ts | 10 ++++------ .../job_audit_messages/job_audit_messages.js | 6 ++---- .../models/job_service/new_job/line_chart.ts | 4 ++-- .../job_service/new_job/population_chart.ts | 4 ++-- .../__mocks__/mock_farequote_cardinality.json | 7 +++++-- .../mock_farequote_search_response.json | 2 +- .../__mocks__/mock_it_search_response.json | 2 +- .../__mocks__/mock_time_range.json | 2 +- .../models/job_validation/job_validation.test.ts | 2 +- .../models/results_service/results_service.ts | 13 +++++-------- .../routes/api/transforms_audit_messages.ts | 3 +-- 17 files changed, 37 insertions(+), 52 deletions(-) diff --git a/x-pack/plugins/ml/public/application/jobs/components/custom_url_editor/utils.js b/x-pack/plugins/ml/public/application/jobs/components/custom_url_editor/utils.js index 87c2219f4d441..a0e9c33e42dfa 100644 --- a/x-pack/plugins/ml/public/application/jobs/components/custom_url_editor/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/components/custom_url_editor/utils.js @@ -296,11 +296,10 @@ export function getTestUrl(job, customUrl) { return new Promise((resolve, reject) => { ml.results .anomalySearch({ - rest_total_hits_as_int: true, body, }) .then((resp) => { - if (resp.hits.total > 0) { + if (resp.hits.total.value > 0) { const record = resp.hits.hits[0]._source; testUrl = replaceTokensInUrlValue(customUrl, bucketSpanSecs, record, 'timestamp'); resolve(testUrl); diff --git a/x-pack/plugins/ml/public/application/services/forecast_service.js b/x-pack/plugins/ml/public/application/services/forecast_service.js index a36d57424eeb0..36d676fe25b35 100644 --- a/x-pack/plugins/ml/public/application/services/forecast_service.js +++ b/x-pack/plugins/ml/public/application/services/forecast_service.js @@ -50,7 +50,6 @@ function getForecastsSummary(job, query, earliestMs, maxResults) { ml.results .anomalySearch({ size: maxResults, - rest_total_hits_as_int: true, body: { query: { bool: { @@ -61,7 +60,7 @@ function getForecastsSummary(job, query, earliestMs, maxResults) { }, }) .then((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { obj.forecasts = resp.hits.hits.map((hit) => hit._source); } @@ -344,7 +343,6 @@ function getForecastRequestStats(job, forecastId) { ml.results .anomalySearch({ size: 1, - rest_total_hits_as_int: true, body: { query: { bool: { @@ -354,7 +352,7 @@ function getForecastRequestStats(job, forecastId) { }, }) .then((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { obj.stats = resp.hits.hits[0]._source; } resolve(obj); diff --git a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts index fd7055477a875..e1c322910e237 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts +++ b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts @@ -402,7 +402,6 @@ export function resultsServiceRxProvider(mlApiServices: MlApiServices) { return mlApiServices.results .anomalySearch$({ index: ML_RESULTS_INDEX_PATTERN, - rest_total_hits_as_int: true, size: maxResults !== undefined ? maxResults : 100, body: { query: { @@ -427,7 +426,7 @@ export function resultsServiceRxProvider(mlApiServices: MlApiServices) { }) .pipe( map((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { each(resp.hits.hits, (hit: any) => { obj.records.push(hit._source); }); diff --git a/x-pack/plugins/ml/public/application/services/results_service/results_service.js b/x-pack/plugins/ml/public/application/services/results_service/results_service.js index 4e55b092de5ad..df993079c6771 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/results_service.js +++ b/x-pack/plugins/ml/public/application/services/results_service/results_service.js @@ -725,7 +725,6 @@ export function resultsServiceProvider(mlApiServices) { mlApiServices.results .anomalySearch({ size: maxResults !== undefined ? maxResults : 100, - rest_total_hits_as_int: true, body: { _source: ['job_id', 'detector_index', 'influencers', 'record_score'], query: { @@ -749,7 +748,7 @@ export function resultsServiceProvider(mlApiServices) { }, }) .then((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { each(resp.hits.hits, (hit) => { obj.records.push(hit._source); }); @@ -857,7 +856,6 @@ export function resultsServiceProvider(mlApiServices) { mlApiServices.results .anomalySearch({ size: maxResults !== undefined ? maxResults : 100, - rest_total_hits_as_int: true, body: { query: { bool: { @@ -880,7 +878,7 @@ export function resultsServiceProvider(mlApiServices) { }, }) .then((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { each(resp.hits.hits, (hit) => { obj.records.push(hit._source); }); @@ -982,7 +980,6 @@ export function resultsServiceProvider(mlApiServices) { mlApiServices.results .anomalySearch({ size: maxResults !== undefined ? maxResults : 100, - rest_total_hits_as_int: true, body: { query: { bool: { @@ -1005,7 +1002,7 @@ export function resultsServiceProvider(mlApiServices) { }, }) .then((resp) => { - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { each(resp.hits.hits, (hit) => { obj.records.push(hit._source); }); @@ -1058,7 +1055,6 @@ export function resultsServiceProvider(mlApiServices) { mlApiServices .esSearch({ index, - rest_total_hits_as_int: true, size: 0, body: { query: { @@ -1090,7 +1086,7 @@ export function resultsServiceProvider(mlApiServices) { const time = dataForTime.key; obj.results[time] = dataForTime.doc_count; }); - obj.total = resp.hits.total; + obj.total = resp.hits.total.value; resolve(obj); }) @@ -1227,13 +1223,13 @@ export function resultsServiceProvider(mlApiServices) { .esSearch({ index, body, - rest_total_hits_as_int: true, + track_total_hits: true, }) .then((resp) => { // Because of the sampling, results of metricFunctions which use sum or count // can be significantly skewed. Taking into account totalHits we calculate a // a factor to normalize results for these metricFunctions. - const totalHits = get(resp, ['hits', 'total'], 0); + const totalHits = resp.hits.total.value; const successfulShards = get(resp, ['_shards', 'successful'], 0); let normalizeFactor = 1; diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_audit_messages.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_audit_messages.ts index 0f4cac37d2e8f..ae42469cc1af2 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_audit_messages.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_audit_messages.ts @@ -71,7 +71,6 @@ export function analyticsAuditMessagesProvider({ asInternalUser }: IScopedCluste const { body } = await asInternalUser.search({ index: ML_NOTIFICATION_INDEX_PATTERN, ignore_unavailable: true, - rest_total_hits_as_int: true, size: SIZE, body: { sort: [{ timestamp: { order: 'desc' } }, { job_id: { order: 'asc' } }], @@ -80,7 +79,7 @@ export function analyticsAuditMessagesProvider({ asInternalUser }: IScopedCluste }); let messages = []; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { messages = body.hits.hits.map((hit: Message) => hit._source); messages.reverse(); } diff --git a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts index 820fcfa9253b6..141e78a91cf0d 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts +++ b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts @@ -248,12 +248,11 @@ export class DataRecognizer { const { body } = await this._asCurrentUser.search({ index, - rest_total_hits_as_int: true, size, body: searchBody, }); - return body.hits.total !== 0; + return body.hits.total.value > 0; } async listModules() { diff --git a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts index 7ff25c22f4896..1f59e990096a4 100644 --- a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts +++ b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts @@ -627,12 +627,12 @@ export class DataVisualizer { const { body } = await this._asCurrentUser.search({ index, - rest_total_hits_as_int: true, + track_total_hits: true, size, body: searchBody, }); const aggregations = body.aggregations; - const totalCount = get(body, ['hits', 'total'], 0); + const totalCount = body.hits.total.value; const stats = { totalCount, aggregatableExistsFields: [] as FieldData[], @@ -694,11 +694,10 @@ export class DataVisualizer { const { body } = await this._asCurrentUser.search({ index, - rest_total_hits_as_int: true, size, body: searchBody, }); - return body.hits.total > 0; + return body.hits.total.value > 0; } async getDocumentCountStats( @@ -1164,7 +1163,6 @@ export class DataVisualizer { const { body } = await this._asCurrentUser.search({ index, - rest_total_hits_as_int: true, size, body: searchBody, }); @@ -1172,7 +1170,7 @@ export class DataVisualizer { fieldName: field, examples: [] as any[], }; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { const hits = body.hits.hits; for (let i = 0; i < hits.length; i++) { // Look in the _source for the field value. diff --git a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js index 3fd5ebf3f68f4..e8d21c7355ff7 100644 --- a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js +++ b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js @@ -102,7 +102,6 @@ export function jobAuditMessagesProvider({ asInternalUser }) { const { body } = await asInternalUser.search({ index: ML_NOTIFICATION_INDEX_PATTERN, ignore_unavailable: true, - rest_total_hits_as_int: true, size: SIZE, body: { sort: [{ timestamp: { order: 'desc' } }, { job_id: { order: 'asc' } }], @@ -111,7 +110,7 @@ export function jobAuditMessagesProvider({ asInternalUser }) { }); let messages = []; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { messages = body.hits.hits.map((hit) => hit._source); } return messages; @@ -153,7 +152,6 @@ export function jobAuditMessagesProvider({ asInternalUser }) { const { body } = await asInternalUser.search({ index: ML_NOTIFICATION_INDEX_PATTERN, ignore_unavailable: true, - rest_total_hits_as_int: true, size: 0, body: { query, @@ -196,7 +194,7 @@ export function jobAuditMessagesProvider({ asInternalUser }) { let messagesPerJob = []; const jobMessages = []; if ( - body.hits.total !== 0 && + body.hits.total.value > 0 && body.aggregations && body.aggregations.levelsPerJob && body.aggregations.levelsPerJob.buckets && diff --git a/x-pack/plugins/ml/server/models/job_service/new_job/line_chart.ts b/x-pack/plugins/ml/server/models/job_service/new_job/line_chart.ts index 128b28a223445..93f7c81c10023 100644 --- a/x-pack/plugins/ml/server/models/job_service/new_job/line_chart.ts +++ b/x-pack/plugins/ml/server/models/job_service/new_job/line_chart.ts @@ -89,7 +89,7 @@ function processSearchResults(resp: any, fields: string[]): ProcessedResults { return { success: true, results: tempResults, - totalResults: resp.hits.total, + totalResults: resp.hits.total.value, }; } @@ -107,7 +107,7 @@ function getSearchJsonFromConfig( const json = { index: indexPatternTitle, size: 0, - rest_total_hits_as_int: true, + track_total_hits: true, body: { query: {}, aggs: { diff --git a/x-pack/plugins/ml/server/models/job_service/new_job/population_chart.ts b/x-pack/plugins/ml/server/models/job_service/new_job/population_chart.ts index 71e81158d8885..e614f887e29bc 100644 --- a/x-pack/plugins/ml/server/models/job_service/new_job/population_chart.ts +++ b/x-pack/plugins/ml/server/models/job_service/new_job/population_chart.ts @@ -118,7 +118,7 @@ function processSearchResults(resp: any, fields: string[]): ProcessedResults { return { success: true, results: tempResults, - totalResults: resp.hits.total, + totalResults: resp.hits.total.value, }; } @@ -135,7 +135,7 @@ function getPopulationSearchJsonFromConfig( const json = { index: indexPatternTitle, size: 0, - rest_total_hits_as_int: true, + track_total_hits: true, body: { query: {}, aggs: { diff --git a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json index 8d408ff0310c9..8b9b1de453c11 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json +++ b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json @@ -2,6 +2,9 @@ "took": 0, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, - "hits": { "total": 86274, "max_score": 0, "hits": [] }, - "aggregations": { "airline_cardinality": { "value": 19 }, "airline_count": { "doc_count": 86274 } } + "hits": { "total": { "value": 86274, "relation": "eq" }, "max_score": 0, "hits": [] }, + "aggregations": { + "airline_cardinality": { "value": 19 }, + "airline_count": { "doc_count": 86274 } + } } diff --git a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json index 7bb449921a101..72536f8fdc08b 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json +++ b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json @@ -1 +1 @@ -{"took":41,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":86274,"max_score":0,"hits":[]},"aggregations":{"non_empty_buckets":{"buckets":[{"key_as_string":"2017-02-07T00:00:00.000Z","key":1486425600000,"doc_count":23},{"key_as_string":"2017-02-07T00:01:00.000Z","key":1486425660000,"doc_count":10},{"key_as_string":"2017-02-07T00:02:00.000Z","key":1486425720000,"doc_count":6},{"key_as_string":"2017-02-07T00:03:00.000Z","key":1486425780000,"doc_count":11},{"key_as_string":"2017-02-07T00:04:00.000Z","key":1486425840000,"doc_count":11},{"key_as_string":"2017-02-07T00:05:00.000Z","key":1486425900000,"doc_count":11},{"key_as_string":"2017-02-07T00:06:00.000Z","key":1486425960000,"doc_count":11},{"key_as_string":"2017-02-07T00:07:00.000Z","key":1486426020000,"doc_count":11},{"key_as_string":"2017-02-07T00:08:00.000Z","key":1486426080000,"doc_count":8},{"key_as_string":"2017-02-07T00:09:00.000Z","key":1486426140000,"doc_count":11},{"key_as_string":"2017-02-07T00:10:00.000Z","key":1486426200000,"doc_count":10},{"key_as_string":"2017-02-07T00:11:00.000Z","key":1486426260000,"doc_count":9},{"key_as_string":"2017-02-07T00:12:00.000Z","key":1486426320000,"doc_count":12},{"key_as_string":"2017-02-07T00:13:00.000Z","key":1486426380000,"doc_count":9},{"key_as_string":"2017-02-07T00:14:00.000Z","key":1486426440000,"doc_count":8},{"key_as_string":"2017-02-07T00:15:00.000Z","key":1486426500000,"doc_count":14},{"key_as_string":"2017-02-07T00:16:00.000Z","key":1486426560000,"doc_count":9},{"key_as_string":"2017-02-07T00:17:00.000Z","key":1486426620000,"doc_count":8},{"key_as_string":"2017-02-07T00:18:00.000Z","key":1486426680000,"doc_count":13},{"key_as_string":"2017-02-07T00:19:00.000Z","key":1486426740000,"doc_count":9},{"key_as_string":"2017-02-07T00:20:00.000Z","key":1486426800000,"doc_count":11},{"key_as_string":"2017-02-07T00:21:00.000Z","key":1486426860000,"doc_count":9},{"key_as_string":"2017-02-07T00:22:00.000Z","key":1486426920000,"doc_count":9},{"key_as_string":"2017-02-07T00:23:00.000Z","key":1486426980000,"doc_count":12},{"key_as_string":"2017-02-07T00:24:00.000Z","key":1486427040000,"doc_count":11},{"key_as_string":"2017-02-07T00:25:00.000Z","key":1486427100000,"doc_count":11},{"key_as_string":"2017-02-07T00:26:00.000Z","key":1486427160000,"doc_count":8},{"key_as_string":"2017-02-07T00:27:00.000Z","key":1486427220000,"doc_count":12},{"key_as_string":"2017-02-07T00:28:00.000Z","key":1486427280000,"doc_count":7},{"key_as_string":"2017-02-07T00:29:00.000Z","key":1486427340000,"doc_count":12},{"key_as_string":"2017-02-07T00:30:00.000Z","key":1486427400000,"doc_count":13},{"key_as_string":"2017-02-07T00:31:00.000Z","key":1486427460000,"doc_count":10},{"key_as_string":"2017-02-07T00:32:00.000Z","key":1486427520000,"doc_count":13},{"key_as_string":"2017-02-07T00:33:00.000Z","key":1486427580000,"doc_count":13},{"key_as_string":"2017-02-07T00:34:00.000Z","key":1486427640000,"doc_count":11},{"key_as_string":"2017-02-07T00:35:00.000Z","key":1486427700000,"doc_count":9},{"key_as_string":"2017-02-07T00:36:00.000Z","key":1486427760000,"doc_count":11},{"key_as_string":"2017-02-07T00:37:00.000Z","key":1486427820000,"doc_count":15},{"key_as_string":"2017-02-07T00:38:00.000Z","key":1486427880000,"doc_count":7},{"key_as_string":"2017-02-07T00:39:00.000Z","key":1486427940000,"doc_count":13},{"key_as_string":"2017-02-07T00:40:00.000Z","key":1486428000000,"doc_count":9},{"key_as_string":"2017-02-07T00:41:00.000Z","key":1486428060000,"doc_count":12},{"key_as_string":"2017-02-07T00:42:00.000Z","key":1486428120000,"doc_count":16},{"key_as_string":"2017-02-07T00:43:00.000Z","key":1486428180000,"doc_count":7},{"key_as_string":"2017-02-07T00:44:00.000Z","key":1486428240000,"doc_count":6},{"key_as_string":"2017-02-07T00:45:00.000Z","key":1486428300000,"doc_count":12},{"key_as_string":"2017-02-07T00:46:00.000Z","key":1486428360000,"doc_count":11},{"key_as_string":"2017-02-07T00:47:00.000Z","key":1486428420000,"doc_count":12},{"key_as_string":"2017-02-07T00:48:00.000Z","key":1486428480000,"doc_count":13},{"key_as_string":"2017-02-07T00:49:00.000Z","key":1486428540000,"doc_count":10},{"key_as_string":"2017-02-07T00:50:00.000Z","key":1486428600000,"doc_count":13},{"key_as_string":"2017-02-07T00:51:00.000Z","key":1486428660000,"doc_count":7},{"key_as_string":"2017-02-07T00:52:00.000Z","key":1486428720000,"doc_count":11},{"key_as_string":"2017-02-07T00:53:00.000Z","key":1486428780000,"doc_count":12},{"key_as_string":"2017-02-07T00:54:00.000Z","key":1486428840000,"doc_count":16},{"key_as_string":"2017-02-07T00:55:00.000Z","key":1486428900000,"doc_count":8},{"key_as_string":"2017-02-07T00:56:00.000Z","key":1486428960000,"doc_count":12},{"key_as_string":"2017-02-07T00:57:00.000Z","key":1486429020000,"doc_count":12},{"key_as_string":"2017-02-07T00:58:00.000Z","key":1486429080000,"doc_count":8},{"key_as_string":"2017-02-07T00:59:00.000Z","key":1486429140000,"doc_count":11},{"key_as_string":"2017-02-07T01:00:00.000Z","key":1486429200000,"doc_count":8},{"key_as_string":"2017-02-07T01:01:00.000Z","key":1486429260000,"doc_count":7},{"key_as_string":"2017-02-07T01:02:00.000Z","key":1486429320000,"doc_count":6},{"key_as_string":"2017-02-07T01:03:00.000Z","key":1486429380000,"doc_count":15},{"key_as_string":"2017-02-07T01:04:00.000Z","key":1486429440000,"doc_count":12},{"key_as_string":"2017-02-07T01:05:00.000Z","key":1486429500000,"doc_count":5},{"key_as_string":"2017-02-07T01:06:00.000Z","key":1486429560000,"doc_count":11},{"key_as_string":"2017-02-07T01:07:00.000Z","key":1486429620000,"doc_count":15},{"key_as_string":"2017-02-07T01:08:00.000Z","key":1486429680000,"doc_count":8},{"key_as_string":"2017-02-07T01:09:00.000Z","key":1486429740000,"doc_count":14},{"key_as_string":"2017-02-07T01:10:00.000Z","key":1486429800000,"doc_count":8},{"key_as_string":"2017-02-07T01:11:00.000Z","key":1486429860000,"doc_count":6},{"key_as_string":"2017-02-07T01:12:00.000Z","key":1486429920000,"doc_count":16},{"key_as_string":"2017-02-07T01:13:00.000Z","key":1486429980000,"doc_count":10},{"key_as_string":"2017-02-07T01:14:00.000Z","key":1486430040000,"doc_count":8},{"key_as_string":"2017-02-07T01:15:00.000Z","key":1486430100000,"doc_count":12},{"key_as_string":"2017-02-07T01:16:00.000Z","key":1486430160000,"doc_count":13},{"key_as_string":"2017-02-07T01:17:00.000Z","key":1486430220000,"doc_count":10},{"key_as_string":"2017-02-07T01:18:00.000Z","key":1486430280000,"doc_count":11},{"key_as_string":"2017-02-07T01:19:00.000Z","key":1486430340000,"doc_count":12},{"key_as_string":"2017-02-07T01:20:00.000Z","key":1486430400000,"doc_count":12},{"key_as_string":"2017-02-07T01:21:00.000Z","key":1486430460000,"doc_count":12},{"key_as_string":"2017-02-07T01:22:00.000Z","key":1486430520000,"doc_count":7},{"key_as_string":"2017-02-07T01:23:00.000Z","key":1486430580000,"doc_count":13},{"key_as_string":"2017-02-07T01:24:00.000Z","key":1486430640000,"doc_count":5},{"key_as_string":"2017-02-07T01:25:00.000Z","key":1486430700000,"doc_count":11},{"key_as_string":"2017-02-07T01:26:00.000Z","key":1486430760000,"doc_count":11},{"key_as_string":"2017-02-07T01:27:00.000Z","key":1486430820000,"doc_count":9},{"key_as_string":"2017-02-07T01:28:00.000Z","key":1486430880000,"doc_count":11},{"key_as_string":"2017-02-07T01:29:00.000Z","key":1486430940000,"doc_count":10},{"key_as_string":"2017-02-07T01:30:00.000Z","key":1486431000000,"doc_count":10},{"key_as_string":"2017-02-07T01:31:00.000Z","key":1486431060000,"doc_count":12},{"key_as_string":"2017-02-07T01:32:00.000Z","key":1486431120000,"doc_count":12},{"key_as_string":"2017-02-07T01:33:00.000Z","key":1486431180000,"doc_count":10},{"key_as_string":"2017-02-07T01:34:00.000Z","key":1486431240000,"doc_count":10},{"key_as_string":"2017-02-07T01:35:00.000Z","key":1486431300000,"doc_count":10},{"key_as_string":"2017-02-07T01:36:00.000Z","key":1486431360000,"doc_count":14},{"key_as_string":"2017-02-07T01:37:00.000Z","key":1486431420000,"doc_count":9},{"key_as_string":"2017-02-07T01:38:00.000Z","key":1486431480000,"doc_count":8},{"key_as_string":"2017-02-07T01:39:00.000Z","key":1486431540000,"doc_count":16},{"key_as_string":"2017-02-07T01:40:00.000Z","key":1486431600000,"doc_count":8},{"key_as_string":"2017-02-07T01:41:00.000Z","key":1486431660000,"doc_count":11},{"key_as_string":"2017-02-07T01:42:00.000Z","key":1486431720000,"doc_count":12},{"key_as_string":"2017-02-07T01:43:00.000Z","key":1486431780000,"doc_count":10},{"key_as_string":"2017-02-07T01:44:00.000Z","key":1486431840000,"doc_count":16},{"key_as_string":"2017-02-07T01:45:00.000Z","key":1486431900000,"doc_count":10},{"key_as_string":"2017-02-07T01:46:00.000Z","key":1486431960000,"doc_count":7},{"key_as_string":"2017-02-07T01:47:00.000Z","key":1486432020000,"doc_count":10},{"key_as_string":"2017-02-07T01:48:00.000Z","key":1486432080000,"doc_count":5},{"key_as_string":"2017-02-07T01:49:00.000Z","key":1486432140000,"doc_count":11},{"key_as_string":"2017-02-07T01:50:00.000Z","key":1486432200000,"doc_count":7},{"key_as_string":"2017-02-07T01:51:00.000Z","key":1486432260000,"doc_count":16},{"key_as_string":"2017-02-07T01:52:00.000Z","key":1486432320000,"doc_count":8},{"key_as_string":"2017-02-07T01:53:00.000Z","key":1486432380000,"doc_count":14},{"key_as_string":"2017-02-07T01:54:00.000Z","key":1486432440000,"doc_count":10},{"key_as_string":"2017-02-07T01:55:00.000Z","key":1486432500000,"doc_count":8},{"key_as_string":"2017-02-07T01:56:00.000Z","key":1486432560000,"doc_count":12},{"key_as_string":"2017-02-07T01:57:00.000Z","key":1486432620000,"doc_count":14},{"key_as_string":"2017-02-07T01:58:00.000Z","key":1486432680000,"doc_count":9},{"key_as_string":"2017-02-07T01:59:00.000Z","key":1486432740000,"doc_count":10},{"key_as_string":"2017-02-07T02:00:00.000Z","key":1486432800000,"doc_count":9},{"key_as_string":"2017-02-07T02:01:00.000Z","key":1486432860000,"doc_count":14},{"key_as_string":"2017-02-07T02:02:00.000Z","key":1486432920000,"doc_count":10},{"key_as_string":"2017-02-07T02:03:00.000Z","key":1486432980000,"doc_count":7},{"key_as_string":"2017-02-07T02:04:00.000Z","key":1486433040000,"doc_count":8},{"key_as_string":"2017-02-07T02:05:00.000Z","key":1486433100000,"doc_count":8},{"key_as_string":"2017-02-07T02:06:00.000Z","key":1486433160000,"doc_count":14},{"key_as_string":"2017-02-07T02:07:00.000Z","key":1486433220000,"doc_count":10},{"key_as_string":"2017-02-07T02:08:00.000Z","key":1486433280000,"doc_count":7},{"key_as_string":"2017-02-07T02:09:00.000Z","key":1486433340000,"doc_count":11},{"key_as_string":"2017-02-07T02:10:00.000Z","key":1486433400000,"doc_count":6},{"key_as_string":"2017-02-07T02:11:00.000Z","key":1486433460000,"doc_count":8},{"key_as_string":"2017-02-07T02:12:00.000Z","key":1486433520000,"doc_count":7},{"key_as_string":"2017-02-07T02:13:00.000Z","key":1486433580000,"doc_count":15},{"key_as_string":"2017-02-07T02:14:00.000Z","key":1486433640000,"doc_count":8},{"key_as_string":"2017-02-07T02:15:00.000Z","key":1486433700000,"doc_count":14},{"key_as_string":"2017-02-07T02:16:00.000Z","key":1486433760000,"doc_count":5},{"key_as_string":"2017-02-07T02:17:00.000Z","key":1486433820000,"doc_count":9},{"key_as_string":"2017-02-07T02:18:00.000Z","key":1486433880000,"doc_count":7},{"key_as_string":"2017-02-07T02:19:00.000Z","key":1486433940000,"doc_count":8},{"key_as_string":"2017-02-07T02:20:00.000Z","key":1486434000000,"doc_count":13},{"key_as_string":"2017-02-07T02:21:00.000Z","key":1486434060000,"doc_count":13},{"key_as_string":"2017-02-07T02:22:00.000Z","key":1486434120000,"doc_count":13},{"key_as_string":"2017-02-07T02:23:00.000Z","key":1486434180000,"doc_count":8},{"key_as_string":"2017-02-07T02:24:00.000Z","key":1486434240000,"doc_count":11},{"key_as_string":"2017-02-07T02:25:00.000Z","key":1486434300000,"doc_count":9},{"key_as_string":"2017-02-07T02:26:00.000Z","key":1486434360000,"doc_count":11},{"key_as_string":"2017-02-07T02:27:00.000Z","key":1486434420000,"doc_count":14},{"key_as_string":"2017-02-07T02:28:00.000Z","key":1486434480000,"doc_count":9},{"key_as_string":"2017-02-07T02:29:00.000Z","key":1486434540000,"doc_count":15},{"key_as_string":"2017-02-07T02:30:00.000Z","key":1486434600000,"doc_count":13},{"key_as_string":"2017-02-07T02:31:00.000Z","key":1486434660000,"doc_count":6},{"key_as_string":"2017-02-07T02:32:00.000Z","key":1486434720000,"doc_count":16},{"key_as_string":"2017-02-07T02:33:00.000Z","key":1486434780000,"doc_count":11},{"key_as_string":"2017-02-07T02:34:00.000Z","key":1486434840000,"doc_count":9},{"key_as_string":"2017-02-07T02:35:00.000Z","key":1486434900000,"doc_count":11},{"key_as_string":"2017-02-07T02:36:00.000Z","key":1486434960000,"doc_count":15},{"key_as_string":"2017-02-07T02:37:00.000Z","key":1486435020000,"doc_count":6},{"key_as_string":"2017-02-07T02:38:00.000Z","key":1486435080000,"doc_count":11},{"key_as_string":"2017-02-07T02:39:00.000Z","key":1486435140000,"doc_count":5},{"key_as_string":"2017-02-07T02:40:00.000Z","key":1486435200000,"doc_count":14},{"key_as_string":"2017-02-07T02:41:00.000Z","key":1486435260000,"doc_count":9},{"key_as_string":"2017-02-07T02:42:00.000Z","key":1486435320000,"doc_count":9},{"key_as_string":"2017-02-07T02:43:00.000Z","key":1486435380000,"doc_count":9},{"key_as_string":"2017-02-07T02:44:00.000Z","key":1486435440000,"doc_count":16},{"key_as_string":"2017-02-07T02:45:00.000Z","key":1486435500000,"doc_count":10},{"key_as_string":"2017-02-07T02:46:00.000Z","key":1486435560000,"doc_count":8},{"key_as_string":"2017-02-07T02:47:00.000Z","key":1486435620000,"doc_count":10},{"key_as_string":"2017-02-07T02:48:00.000Z","key":1486435680000,"doc_count":11},{"key_as_string":"2017-02-07T02:49:00.000Z","key":1486435740000,"doc_count":13},{"key_as_string":"2017-02-07T02:50:00.000Z","key":1486435800000,"doc_count":9},{"key_as_string":"2017-02-07T02:51:00.000Z","key":1486435860000,"doc_count":14},{"key_as_string":"2017-02-07T02:52:00.000Z","key":1486435920000,"doc_count":17},{"key_as_string":"2017-02-07T02:53:00.000Z","key":1486435980000,"doc_count":10},{"key_as_string":"2017-02-07T02:54:00.000Z","key":1486436040000,"doc_count":8},{"key_as_string":"2017-02-07T02:55:00.000Z","key":1486436100000,"doc_count":10},{"key_as_string":"2017-02-07T02:56:00.000Z","key":1486436160000,"doc_count":9},{"key_as_string":"2017-02-07T02:57:00.000Z","key":1486436220000,"doc_count":9},{"key_as_string":"2017-02-07T02:58:00.000Z","key":1486436280000,"doc_count":12},{"key_as_string":"2017-02-07T02:59:00.000Z","key":1486436340000,"doc_count":8},{"key_as_string":"2017-02-07T03:00:00.000Z","key":1486436400000,"doc_count":11},{"key_as_string":"2017-02-07T03:01:00.000Z","key":1486436460000,"doc_count":12},{"key_as_string":"2017-02-07T03:02:00.000Z","key":1486436520000,"doc_count":7},{"key_as_string":"2017-02-07T03:03:00.000Z","key":1486436580000,"doc_count":16},{"key_as_string":"2017-02-07T03:04:00.000Z","key":1486436640000,"doc_count":13},{"key_as_string":"2017-02-07T03:05:00.000Z","key":1486436700000,"doc_count":10},{"key_as_string":"2017-02-07T03:06:00.000Z","key":1486436760000,"doc_count":11},{"key_as_string":"2017-02-07T03:07:00.000Z","key":1486436820000,"doc_count":6},{"key_as_string":"2017-02-07T03:08:00.000Z","key":1486436880000,"doc_count":9},{"key_as_string":"2017-02-07T03:09:00.000Z","key":1486436940000,"doc_count":7},{"key_as_string":"2017-02-07T03:10:00.000Z","key":1486437000000,"doc_count":14},{"key_as_string":"2017-02-07T03:11:00.000Z","key":1486437060000,"doc_count":9},{"key_as_string":"2017-02-07T03:12:00.000Z","key":1486437120000,"doc_count":12},{"key_as_string":"2017-02-07T03:13:00.000Z","key":1486437180000,"doc_count":10},{"key_as_string":"2017-02-07T03:14:00.000Z","key":1486437240000,"doc_count":9},{"key_as_string":"2017-02-07T03:15:00.000Z","key":1486437300000,"doc_count":12},{"key_as_string":"2017-02-07T03:16:00.000Z","key":1486437360000,"doc_count":12},{"key_as_string":"2017-02-07T03:17:00.000Z","key":1486437420000,"doc_count":8},{"key_as_string":"2017-02-07T03:18:00.000Z","key":1486437480000,"doc_count":13},{"key_as_string":"2017-02-07T03:19:00.000Z","key":1486437540000,"doc_count":12},{"key_as_string":"2017-02-07T03:20:00.000Z","key":1486437600000,"doc_count":8},{"key_as_string":"2017-02-07T03:21:00.000Z","key":1486437660000,"doc_count":20},{"key_as_string":"2017-02-07T03:22:00.000Z","key":1486437720000,"doc_count":8},{"key_as_string":"2017-02-07T03:23:00.000Z","key":1486437780000,"doc_count":9},{"key_as_string":"2017-02-07T03:24:00.000Z","key":1486437840000,"doc_count":12},{"key_as_string":"2017-02-07T03:25:00.000Z","key":1486437900000,"doc_count":9},{"key_as_string":"2017-02-07T03:26:00.000Z","key":1486437960000,"doc_count":9},{"key_as_string":"2017-02-07T03:27:00.000Z","key":1486438020000,"doc_count":12},{"key_as_string":"2017-02-07T03:28:00.000Z","key":1486438080000,"doc_count":12},{"key_as_string":"2017-02-07T03:29:00.000Z","key":1486438140000,"doc_count":7},{"key_as_string":"2017-02-07T03:30:00.000Z","key":1486438200000,"doc_count":12},{"key_as_string":"2017-02-07T03:31:00.000Z","key":1486438260000,"doc_count":15},{"key_as_string":"2017-02-07T03:32:00.000Z","key":1486438320000,"doc_count":12},{"key_as_string":"2017-02-07T03:33:00.000Z","key":1486438380000,"doc_count":9},{"key_as_string":"2017-02-07T03:34:00.000Z","key":1486438440000,"doc_count":9},{"key_as_string":"2017-02-07T03:35:00.000Z","key":1486438500000,"doc_count":12},{"key_as_string":"2017-02-07T03:36:00.000Z","key":1486438560000,"doc_count":8},{"key_as_string":"2017-02-07T03:37:00.000Z","key":1486438620000,"doc_count":12},{"key_as_string":"2017-02-07T03:38:00.000Z","key":1486438680000,"doc_count":13},{"key_as_string":"2017-02-07T03:39:00.000Z","key":1486438740000,"doc_count":10},{"key_as_string":"2017-02-07T03:40:00.000Z","key":1486438800000,"doc_count":8},{"key_as_string":"2017-02-07T03:41:00.000Z","key":1486438860000,"doc_count":10},{"key_as_string":"2017-02-07T03:42:00.000Z","key":1486438920000,"doc_count":12},{"key_as_string":"2017-02-07T03:43:00.000Z","key":1486438980000,"doc_count":9},{"key_as_string":"2017-02-07T03:44:00.000Z","key":1486439040000,"doc_count":13},{"key_as_string":"2017-02-07T03:45:00.000Z","key":1486439100000,"doc_count":11},{"key_as_string":"2017-02-07T03:46:00.000Z","key":1486439160000,"doc_count":16},{"key_as_string":"2017-02-07T03:47:00.000Z","key":1486439220000,"doc_count":10},{"key_as_string":"2017-02-07T03:48:00.000Z","key":1486439280000,"doc_count":10},{"key_as_string":"2017-02-07T03:49:00.000Z","key":1486439340000,"doc_count":10},{"key_as_string":"2017-02-07T03:50:00.000Z","key":1486439400000,"doc_count":10},{"key_as_string":"2017-02-07T03:51:00.000Z","key":1486439460000,"doc_count":8},{"key_as_string":"2017-02-07T03:52:00.000Z","key":1486439520000,"doc_count":8},{"key_as_string":"2017-02-07T03:53:00.000Z","key":1486439580000,"doc_count":14},{"key_as_string":"2017-02-07T03:54:00.000Z","key":1486439640000,"doc_count":12},{"key_as_string":"2017-02-07T03:55:00.000Z","key":1486439700000,"doc_count":9},{"key_as_string":"2017-02-07T03:56:00.000Z","key":1486439760000,"doc_count":10},{"key_as_string":"2017-02-07T03:57:00.000Z","key":1486439820000,"doc_count":15},{"key_as_string":"2017-02-07T03:58:00.000Z","key":1486439880000,"doc_count":8},{"key_as_string":"2017-02-07T03:59:00.000Z","key":1486439940000,"doc_count":13},{"key_as_string":"2017-02-07T04:00:00.000Z","key":1486440000000,"doc_count":9},{"key_as_string":"2017-02-07T04:01:00.000Z","key":1486440060000,"doc_count":13},{"key_as_string":"2017-02-07T04:02:00.000Z","key":1486440120000,"doc_count":7},{"key_as_string":"2017-02-07T04:03:00.000Z","key":1486440180000,"doc_count":10},{"key_as_string":"2017-02-07T04:04:00.000Z","key":1486440240000,"doc_count":15},{"key_as_string":"2017-02-07T04:05:00.000Z","key":1486440300000,"doc_count":12},{"key_as_string":"2017-02-07T04:06:00.000Z","key":1486440360000,"doc_count":10},{"key_as_string":"2017-02-07T04:07:00.000Z","key":1486440420000,"doc_count":9},{"key_as_string":"2017-02-07T04:08:00.000Z","key":1486440480000,"doc_count":8},{"key_as_string":"2017-02-07T04:09:00.000Z","key":1486440540000,"doc_count":12},{"key_as_string":"2017-02-07T04:10:00.000Z","key":1486440600000,"doc_count":10},{"key_as_string":"2017-02-07T04:11:00.000Z","key":1486440660000,"doc_count":11},{"key_as_string":"2017-02-07T04:12:00.000Z","key":1486440720000,"doc_count":9},{"key_as_string":"2017-02-07T04:13:00.000Z","key":1486440780000,"doc_count":14},{"key_as_string":"2017-02-07T04:14:00.000Z","key":1486440840000,"doc_count":16},{"key_as_string":"2017-02-07T04:15:00.000Z","key":1486440900000,"doc_count":12},{"key_as_string":"2017-02-07T04:16:00.000Z","key":1486440960000,"doc_count":12},{"key_as_string":"2017-02-07T04:17:00.000Z","key":1486441020000,"doc_count":12},{"key_as_string":"2017-02-07T04:18:00.000Z","key":1486441080000,"doc_count":10},{"key_as_string":"2017-02-07T04:19:00.000Z","key":1486441140000,"doc_count":14},{"key_as_string":"2017-02-07T04:20:00.000Z","key":1486441200000,"doc_count":10},{"key_as_string":"2017-02-07T04:21:00.000Z","key":1486441260000,"doc_count":13},{"key_as_string":"2017-02-07T04:22:00.000Z","key":1486441320000,"doc_count":13},{"key_as_string":"2017-02-07T04:23:00.000Z","key":1486441380000,"doc_count":8},{"key_as_string":"2017-02-07T04:24:00.000Z","key":1486441440000,"doc_count":10},{"key_as_string":"2017-02-07T04:25:00.000Z","key":1486441500000,"doc_count":14},{"key_as_string":"2017-02-07T04:26:00.000Z","key":1486441560000,"doc_count":6},{"key_as_string":"2017-02-07T04:27:00.000Z","key":1486441620000,"doc_count":15},{"key_as_string":"2017-02-07T04:28:00.000Z","key":1486441680000,"doc_count":12},{"key_as_string":"2017-02-07T04:29:00.000Z","key":1486441740000,"doc_count":11},{"key_as_string":"2017-02-07T04:30:00.000Z","key":1486441800000,"doc_count":8},{"key_as_string":"2017-02-07T04:31:00.000Z","key":1486441860000,"doc_count":8},{"key_as_string":"2017-02-07T04:32:00.000Z","key":1486441920000,"doc_count":14},{"key_as_string":"2017-02-07T04:33:00.000Z","key":1486441980000,"doc_count":10},{"key_as_string":"2017-02-07T04:34:00.000Z","key":1486442040000,"doc_count":12},{"key_as_string":"2017-02-07T04:35:00.000Z","key":1486442100000,"doc_count":13},{"key_as_string":"2017-02-07T04:36:00.000Z","key":1486442160000,"doc_count":7},{"key_as_string":"2017-02-07T04:37:00.000Z","key":1486442220000,"doc_count":11},{"key_as_string":"2017-02-07T04:38:00.000Z","key":1486442280000,"doc_count":10},{"key_as_string":"2017-02-07T04:39:00.000Z","key":1486442340000,"doc_count":13},{"key_as_string":"2017-02-07T04:40:00.000Z","key":1486442400000,"doc_count":10},{"key_as_string":"2017-02-07T04:41:00.000Z","key":1486442460000,"doc_count":17},{"key_as_string":"2017-02-07T04:42:00.000Z","key":1486442520000,"doc_count":9},{"key_as_string":"2017-02-07T04:43:00.000Z","key":1486442580000,"doc_count":14},{"key_as_string":"2017-02-07T04:44:00.000Z","key":1486442640000,"doc_count":11},{"key_as_string":"2017-02-07T04:45:00.000Z","key":1486442700000,"doc_count":12},{"key_as_string":"2017-02-07T04:46:00.000Z","key":1486442760000,"doc_count":10},{"key_as_string":"2017-02-07T04:47:00.000Z","key":1486442820000,"doc_count":17},{"key_as_string":"2017-02-07T04:48:00.000Z","key":1486442880000,"doc_count":7},{"key_as_string":"2017-02-07T04:49:00.000Z","key":1486442940000,"doc_count":12},{"key_as_string":"2017-02-07T04:50:00.000Z","key":1486443000000,"doc_count":7},{"key_as_string":"2017-02-07T04:51:00.000Z","key":1486443060000,"doc_count":12},{"key_as_string":"2017-02-07T04:52:00.000Z","key":1486443120000,"doc_count":14},{"key_as_string":"2017-02-07T04:53:00.000Z","key":1486443180000,"doc_count":6},{"key_as_string":"2017-02-07T04:54:00.000Z","key":1486443240000,"doc_count":10},{"key_as_string":"2017-02-07T04:55:00.000Z","key":1486443300000,"doc_count":16},{"key_as_string":"2017-02-07T04:56:00.000Z","key":1486443360000,"doc_count":7},{"key_as_string":"2017-02-07T04:57:00.000Z","key":1486443420000,"doc_count":6},{"key_as_string":"2017-02-07T04:58:00.000Z","key":1486443480000,"doc_count":11},{"key_as_string":"2017-02-07T04:59:00.000Z","key":1486443540000,"doc_count":14},{"key_as_string":"2017-02-07T05:00:00.000Z","key":1486443600000,"doc_count":10},{"key_as_string":"2017-02-07T05:01:00.000Z","key":1486443660000,"doc_count":9},{"key_as_string":"2017-02-07T05:02:00.000Z","key":1486443720000,"doc_count":6},{"key_as_string":"2017-02-07T05:03:00.000Z","key":1486443780000,"doc_count":11},{"key_as_string":"2017-02-07T05:04:00.000Z","key":1486443840000,"doc_count":14},{"key_as_string":"2017-02-07T05:05:00.000Z","key":1486443900000,"doc_count":12},{"key_as_string":"2017-02-07T05:06:00.000Z","key":1486443960000,"doc_count":7},{"key_as_string":"2017-02-07T05:07:00.000Z","key":1486444020000,"doc_count":15},{"key_as_string":"2017-02-07T05:08:00.000Z","key":1486444080000,"doc_count":12},{"key_as_string":"2017-02-07T05:09:00.000Z","key":1486444140000,"doc_count":7},{"key_as_string":"2017-02-07T05:10:00.000Z","key":1486444200000,"doc_count":14},{"key_as_string":"2017-02-07T05:11:00.000Z","key":1486444260000,"doc_count":10},{"key_as_string":"2017-02-07T05:12:00.000Z","key":1486444320000,"doc_count":12},{"key_as_string":"2017-02-07T05:13:00.000Z","key":1486444380000,"doc_count":12},{"key_as_string":"2017-02-07T05:14:00.000Z","key":1486444440000,"doc_count":12},{"key_as_string":"2017-02-07T05:15:00.000Z","key":1486444500000,"doc_count":11},{"key_as_string":"2017-02-07T05:16:00.000Z","key":1486444560000,"doc_count":10},{"key_as_string":"2017-02-07T05:17:00.000Z","key":1486444620000,"doc_count":12},{"key_as_string":"2017-02-07T05:18:00.000Z","key":1486444680000,"doc_count":9},{"key_as_string":"2017-02-07T05:19:00.000Z","key":1486444740000,"doc_count":14},{"key_as_string":"2017-02-07T05:20:00.000Z","key":1486444800000,"doc_count":7},{"key_as_string":"2017-02-07T05:21:00.000Z","key":1486444860000,"doc_count":12},{"key_as_string":"2017-02-07T05:22:00.000Z","key":1486444920000,"doc_count":10},{"key_as_string":"2017-02-07T05:23:00.000Z","key":1486444980000,"doc_count":14},{"key_as_string":"2017-02-07T05:24:00.000Z","key":1486445040000,"doc_count":14},{"key_as_string":"2017-02-07T05:25:00.000Z","key":1486445100000,"doc_count":5},{"key_as_string":"2017-02-07T05:26:00.000Z","key":1486445160000,"doc_count":10},{"key_as_string":"2017-02-07T05:27:00.000Z","key":1486445220000,"doc_count":10},{"key_as_string":"2017-02-07T05:28:00.000Z","key":1486445280000,"doc_count":13},{"key_as_string":"2017-02-07T05:29:00.000Z","key":1486445340000,"doc_count":12},{"key_as_string":"2017-02-07T05:30:00.000Z","key":1486445400000,"doc_count":13},{"key_as_string":"2017-02-07T05:31:00.000Z","key":1486445460000,"doc_count":13},{"key_as_string":"2017-02-07T05:32:00.000Z","key":1486445520000,"doc_count":13},{"key_as_string":"2017-02-07T05:33:00.000Z","key":1486445580000,"doc_count":16},{"key_as_string":"2017-02-07T05:34:00.000Z","key":1486445640000,"doc_count":10},{"key_as_string":"2017-02-07T05:35:00.000Z","key":1486445700000,"doc_count":16},{"key_as_string":"2017-02-07T05:36:00.000Z","key":1486445760000,"doc_count":14},{"key_as_string":"2017-02-07T05:37:00.000Z","key":1486445820000,"doc_count":10},{"key_as_string":"2017-02-07T05:38:00.000Z","key":1486445880000,"doc_count":11},{"key_as_string":"2017-02-07T05:39:00.000Z","key":1486445940000,"doc_count":13},{"key_as_string":"2017-02-07T05:40:00.000Z","key":1486446000000,"doc_count":16},{"key_as_string":"2017-02-07T05:41:00.000Z","key":1486446060000,"doc_count":9},{"key_as_string":"2017-02-07T05:42:00.000Z","key":1486446120000,"doc_count":10},{"key_as_string":"2017-02-07T05:43:00.000Z","key":1486446180000,"doc_count":16},{"key_as_string":"2017-02-07T05:44:00.000Z","key":1486446240000,"doc_count":18},{"key_as_string":"2017-02-07T05:45:00.000Z","key":1486446300000,"doc_count":10},{"key_as_string":"2017-02-07T05:46:00.000Z","key":1486446360000,"doc_count":9},{"key_as_string":"2017-02-07T05:47:00.000Z","key":1486446420000,"doc_count":7},{"key_as_string":"2017-02-07T05:48:00.000Z","key":1486446480000,"doc_count":10},{"key_as_string":"2017-02-07T05:49:00.000Z","key":1486446540000,"doc_count":17},{"key_as_string":"2017-02-07T05:50:00.000Z","key":1486446600000,"doc_count":8},{"key_as_string":"2017-02-07T05:51:00.000Z","key":1486446660000,"doc_count":10},{"key_as_string":"2017-02-07T05:52:00.000Z","key":1486446720000,"doc_count":10},{"key_as_string":"2017-02-07T05:53:00.000Z","key":1486446780000,"doc_count":13},{"key_as_string":"2017-02-07T05:54:00.000Z","key":1486446840000,"doc_count":9},{"key_as_string":"2017-02-07T05:55:00.000Z","key":1486446900000,"doc_count":11},{"key_as_string":"2017-02-07T05:56:00.000Z","key":1486446960000,"doc_count":14},{"key_as_string":"2017-02-07T05:57:00.000Z","key":1486447020000,"doc_count":15},{"key_as_string":"2017-02-07T05:58:00.000Z","key":1486447080000,"doc_count":14},{"key_as_string":"2017-02-07T05:59:00.000Z","key":1486447140000,"doc_count":6},{"key_as_string":"2017-02-07T06:00:00.000Z","key":1486447200000,"doc_count":14},{"key_as_string":"2017-02-07T06:01:00.000Z","key":1486447260000,"doc_count":18},{"key_as_string":"2017-02-07T06:02:00.000Z","key":1486447320000,"doc_count":9},{"key_as_string":"2017-02-07T06:03:00.000Z","key":1486447380000,"doc_count":14},{"key_as_string":"2017-02-07T06:04:00.000Z","key":1486447440000,"doc_count":12},{"key_as_string":"2017-02-07T06:05:00.000Z","key":1486447500000,"doc_count":14},{"key_as_string":"2017-02-07T06:06:00.000Z","key":1486447560000,"doc_count":11},{"key_as_string":"2017-02-07T06:07:00.000Z","key":1486447620000,"doc_count":12},{"key_as_string":"2017-02-07T06:08:00.000Z","key":1486447680000,"doc_count":20},{"key_as_string":"2017-02-07T06:09:00.000Z","key":1486447740000,"doc_count":9},{"key_as_string":"2017-02-07T06:10:00.000Z","key":1486447800000,"doc_count":10},{"key_as_string":"2017-02-07T06:11:00.000Z","key":1486447860000,"doc_count":13},{"key_as_string":"2017-02-07T06:12:00.000Z","key":1486447920000,"doc_count":10},{"key_as_string":"2017-02-07T06:13:00.000Z","key":1486447980000,"doc_count":13},{"key_as_string":"2017-02-07T06:14:00.000Z","key":1486448040000,"doc_count":10},{"key_as_string":"2017-02-07T06:15:00.000Z","key":1486448100000,"doc_count":17},{"key_as_string":"2017-02-07T06:16:00.000Z","key":1486448160000,"doc_count":7},{"key_as_string":"2017-02-07T06:17:00.000Z","key":1486448220000,"doc_count":9},{"key_as_string":"2017-02-07T06:18:00.000Z","key":1486448280000,"doc_count":12},{"key_as_string":"2017-02-07T06:19:00.000Z","key":1486448340000,"doc_count":8},{"key_as_string":"2017-02-07T06:20:00.000Z","key":1486448400000,"doc_count":21},{"key_as_string":"2017-02-07T06:21:00.000Z","key":1486448460000,"doc_count":10},{"key_as_string":"2017-02-07T06:22:00.000Z","key":1486448520000,"doc_count":13},{"key_as_string":"2017-02-07T06:23:00.000Z","key":1486448580000,"doc_count":12},{"key_as_string":"2017-02-07T06:24:00.000Z","key":1486448640000,"doc_count":13},{"key_as_string":"2017-02-07T06:25:00.000Z","key":1486448700000,"doc_count":11},{"key_as_string":"2017-02-07T06:26:00.000Z","key":1486448760000,"doc_count":16},{"key_as_string":"2017-02-07T06:27:00.000Z","key":1486448820000,"doc_count":5},{"key_as_string":"2017-02-07T06:28:00.000Z","key":1486448880000,"doc_count":11},{"key_as_string":"2017-02-07T06:29:00.000Z","key":1486448940000,"doc_count":14},{"key_as_string":"2017-02-07T06:30:00.000Z","key":1486449000000,"doc_count":8},{"key_as_string":"2017-02-07T06:31:00.000Z","key":1486449060000,"doc_count":13},{"key_as_string":"2017-02-07T06:32:00.000Z","key":1486449120000,"doc_count":17},{"key_as_string":"2017-02-07T06:33:00.000Z","key":1486449180000,"doc_count":15},{"key_as_string":"2017-02-07T06:34:00.000Z","key":1486449240000,"doc_count":6},{"key_as_string":"2017-02-07T06:35:00.000Z","key":1486449300000,"doc_count":13},{"key_as_string":"2017-02-07T06:36:00.000Z","key":1486449360000,"doc_count":8},{"key_as_string":"2017-02-07T06:37:00.000Z","key":1486449420000,"doc_count":12},{"key_as_string":"2017-02-07T06:38:00.000Z","key":1486449480000,"doc_count":13},{"key_as_string":"2017-02-07T06:39:00.000Z","key":1486449540000,"doc_count":12},{"key_as_string":"2017-02-07T06:40:00.000Z","key":1486449600000,"doc_count":11},{"key_as_string":"2017-02-07T06:41:00.000Z","key":1486449660000,"doc_count":14},{"key_as_string":"2017-02-07T06:42:00.000Z","key":1486449720000,"doc_count":6},{"key_as_string":"2017-02-07T06:43:00.000Z","key":1486449780000,"doc_count":13},{"key_as_string":"2017-02-07T06:44:00.000Z","key":1486449840000,"doc_count":11},{"key_as_string":"2017-02-07T06:45:00.000Z","key":1486449900000,"doc_count":11},{"key_as_string":"2017-02-07T06:46:00.000Z","key":1486449960000,"doc_count":21},{"key_as_string":"2017-02-07T06:47:00.000Z","key":1486450020000,"doc_count":9},{"key_as_string":"2017-02-07T06:48:00.000Z","key":1486450080000,"doc_count":11},{"key_as_string":"2017-02-07T06:49:00.000Z","key":1486450140000,"doc_count":10},{"key_as_string":"2017-02-07T06:50:00.000Z","key":1486450200000,"doc_count":11},{"key_as_string":"2017-02-07T06:51:00.000Z","key":1486450260000,"doc_count":11},{"key_as_string":"2017-02-07T06:52:00.000Z","key":1486450320000,"doc_count":12},{"key_as_string":"2017-02-07T06:53:00.000Z","key":1486450380000,"doc_count":8},{"key_as_string":"2017-02-07T06:54:00.000Z","key":1486450440000,"doc_count":13},{"key_as_string":"2017-02-07T06:55:00.000Z","key":1486450500000,"doc_count":7},{"key_as_string":"2017-02-07T06:56:00.000Z","key":1486450560000,"doc_count":9},{"key_as_string":"2017-02-07T06:57:00.000Z","key":1486450620000,"doc_count":7},{"key_as_string":"2017-02-07T06:58:00.000Z","key":1486450680000,"doc_count":10},{"key_as_string":"2017-02-07T06:59:00.000Z","key":1486450740000,"doc_count":19},{"key_as_string":"2017-02-07T07:00:00.000Z","key":1486450800000,"doc_count":11},{"key_as_string":"2017-02-07T07:01:00.000Z","key":1486450860000,"doc_count":9},{"key_as_string":"2017-02-07T07:02:00.000Z","key":1486450920000,"doc_count":14},{"key_as_string":"2017-02-07T07:03:00.000Z","key":1486450980000,"doc_count":13},{"key_as_string":"2017-02-07T07:04:00.000Z","key":1486451040000,"doc_count":14},{"key_as_string":"2017-02-07T07:05:00.000Z","key":1486451100000,"doc_count":10},{"key_as_string":"2017-02-07T07:06:00.000Z","key":1486451160000,"doc_count":14},{"key_as_string":"2017-02-07T07:07:00.000Z","key":1486451220000,"doc_count":8},{"key_as_string":"2017-02-07T07:08:00.000Z","key":1486451280000,"doc_count":10},{"key_as_string":"2017-02-07T07:09:00.000Z","key":1486451340000,"doc_count":15},{"key_as_string":"2017-02-07T07:10:00.000Z","key":1486451400000,"doc_count":17},{"key_as_string":"2017-02-07T07:11:00.000Z","key":1486451460000,"doc_count":10},{"key_as_string":"2017-02-07T07:12:00.000Z","key":1486451520000,"doc_count":10},{"key_as_string":"2017-02-07T07:13:00.000Z","key":1486451580000,"doc_count":10},{"key_as_string":"2017-02-07T07:14:00.000Z","key":1486451640000,"doc_count":10},{"key_as_string":"2017-02-07T07:15:00.000Z","key":1486451700000,"doc_count":12},{"key_as_string":"2017-02-07T07:16:00.000Z","key":1486451760000,"doc_count":12},{"key_as_string":"2017-02-07T07:17:00.000Z","key":1486451820000,"doc_count":17},{"key_as_string":"2017-02-07T07:18:00.000Z","key":1486451880000,"doc_count":10},{"key_as_string":"2017-02-07T07:19:00.000Z","key":1486451940000,"doc_count":13},{"key_as_string":"2017-02-07T07:20:00.000Z","key":1486452000000,"doc_count":12},{"key_as_string":"2017-02-07T07:21:00.000Z","key":1486452060000,"doc_count":13},{"key_as_string":"2017-02-07T07:22:00.000Z","key":1486452120000,"doc_count":15},{"key_as_string":"2017-02-07T07:23:00.000Z","key":1486452180000,"doc_count":13},{"key_as_string":"2017-02-07T07:24:00.000Z","key":1486452240000,"doc_count":12},{"key_as_string":"2017-02-07T07:25:00.000Z","key":1486452300000,"doc_count":12},{"key_as_string":"2017-02-07T07:26:00.000Z","key":1486452360000,"doc_count":11},{"key_as_string":"2017-02-07T07:27:00.000Z","key":1486452420000,"doc_count":11},{"key_as_string":"2017-02-07T07:28:00.000Z","key":1486452480000,"doc_count":14},{"key_as_string":"2017-02-07T07:29:00.000Z","key":1486452540000,"doc_count":16},{"key_as_string":"2017-02-07T07:30:00.000Z","key":1486452600000,"doc_count":9},{"key_as_string":"2017-02-07T07:31:00.000Z","key":1486452660000,"doc_count":12},{"key_as_string":"2017-02-07T07:32:00.000Z","key":1486452720000,"doc_count":17},{"key_as_string":"2017-02-07T07:33:00.000Z","key":1486452780000,"doc_count":9},{"key_as_string":"2017-02-07T07:34:00.000Z","key":1486452840000,"doc_count":15},{"key_as_string":"2017-02-07T07:35:00.000Z","key":1486452900000,"doc_count":13},{"key_as_string":"2017-02-07T07:36:00.000Z","key":1486452960000,"doc_count":14},{"key_as_string":"2017-02-07T07:37:00.000Z","key":1486453020000,"doc_count":14},{"key_as_string":"2017-02-07T07:38:00.000Z","key":1486453080000,"doc_count":9},{"key_as_string":"2017-02-07T07:39:00.000Z","key":1486453140000,"doc_count":10},{"key_as_string":"2017-02-07T07:40:00.000Z","key":1486453200000,"doc_count":12},{"key_as_string":"2017-02-07T07:41:00.000Z","key":1486453260000,"doc_count":11},{"key_as_string":"2017-02-07T07:42:00.000Z","key":1486453320000,"doc_count":18},{"key_as_string":"2017-02-07T07:43:00.000Z","key":1486453380000,"doc_count":7},{"key_as_string":"2017-02-07T07:44:00.000Z","key":1486453440000,"doc_count":13},{"key_as_string":"2017-02-07T07:45:00.000Z","key":1486453500000,"doc_count":14},{"key_as_string":"2017-02-07T07:46:00.000Z","key":1486453560000,"doc_count":13},{"key_as_string":"2017-02-07T07:47:00.000Z","key":1486453620000,"doc_count":15},{"key_as_string":"2017-02-07T07:48:00.000Z","key":1486453680000,"doc_count":13},{"key_as_string":"2017-02-07T07:49:00.000Z","key":1486453740000,"doc_count":15},{"key_as_string":"2017-02-07T07:50:00.000Z","key":1486453800000,"doc_count":12},{"key_as_string":"2017-02-07T07:51:00.000Z","key":1486453860000,"doc_count":15},{"key_as_string":"2017-02-07T07:52:00.000Z","key":1486453920000,"doc_count":12},{"key_as_string":"2017-02-07T07:53:00.000Z","key":1486453980000,"doc_count":9},{"key_as_string":"2017-02-07T07:54:00.000Z","key":1486454040000,"doc_count":12},{"key_as_string":"2017-02-07T07:55:00.000Z","key":1486454100000,"doc_count":13},{"key_as_string":"2017-02-07T07:56:00.000Z","key":1486454160000,"doc_count":12},{"key_as_string":"2017-02-07T07:57:00.000Z","key":1486454220000,"doc_count":9},{"key_as_string":"2017-02-07T07:58:00.000Z","key":1486454280000,"doc_count":12},{"key_as_string":"2017-02-07T07:59:00.000Z","key":1486454340000,"doc_count":12},{"key_as_string":"2017-02-07T08:00:00.000Z","key":1486454400000,"doc_count":14},{"key_as_string":"2017-02-07T08:01:00.000Z","key":1486454460000,"doc_count":13},{"key_as_string":"2017-02-07T08:02:00.000Z","key":1486454520000,"doc_count":11},{"key_as_string":"2017-02-07T08:03:00.000Z","key":1486454580000,"doc_count":14},{"key_as_string":"2017-02-07T08:04:00.000Z","key":1486454640000,"doc_count":6},{"key_as_string":"2017-02-07T08:05:00.000Z","key":1486454700000,"doc_count":13},{"key_as_string":"2017-02-07T08:06:00.000Z","key":1486454760000,"doc_count":11},{"key_as_string":"2017-02-07T08:07:00.000Z","key":1486454820000,"doc_count":14},{"key_as_string":"2017-02-07T08:08:00.000Z","key":1486454880000,"doc_count":14},{"key_as_string":"2017-02-07T08:09:00.000Z","key":1486454940000,"doc_count":9},{"key_as_string":"2017-02-07T08:10:00.000Z","key":1486455000000,"doc_count":11},{"key_as_string":"2017-02-07T08:11:00.000Z","key":1486455060000,"doc_count":8},{"key_as_string":"2017-02-07T08:12:00.000Z","key":1486455120000,"doc_count":14},{"key_as_string":"2017-02-07T08:13:00.000Z","key":1486455180000,"doc_count":9},{"key_as_string":"2017-02-07T08:14:00.000Z","key":1486455240000,"doc_count":10},{"key_as_string":"2017-02-07T08:15:00.000Z","key":1486455300000,"doc_count":14},{"key_as_string":"2017-02-07T08:16:00.000Z","key":1486455360000,"doc_count":12},{"key_as_string":"2017-02-07T08:17:00.000Z","key":1486455420000,"doc_count":11},{"key_as_string":"2017-02-07T08:18:00.000Z","key":1486455480000,"doc_count":18},{"key_as_string":"2017-02-07T08:19:00.000Z","key":1486455540000,"doc_count":13},{"key_as_string":"2017-02-07T08:20:00.000Z","key":1486455600000,"doc_count":13},{"key_as_string":"2017-02-07T08:21:00.000Z","key":1486455660000,"doc_count":10},{"key_as_string":"2017-02-07T08:22:00.000Z","key":1486455720000,"doc_count":10},{"key_as_string":"2017-02-07T08:23:00.000Z","key":1486455780000,"doc_count":13},{"key_as_string":"2017-02-07T08:24:00.000Z","key":1486455840000,"doc_count":11},{"key_as_string":"2017-02-07T08:25:00.000Z","key":1486455900000,"doc_count":12},{"key_as_string":"2017-02-07T08:26:00.000Z","key":1486455960000,"doc_count":20},{"key_as_string":"2017-02-07T08:27:00.000Z","key":1486456020000,"doc_count":15},{"key_as_string":"2017-02-07T08:28:00.000Z","key":1486456080000,"doc_count":12},{"key_as_string":"2017-02-07T08:29:00.000Z","key":1486456140000,"doc_count":14},{"key_as_string":"2017-02-07T08:30:00.000Z","key":1486456200000,"doc_count":9},{"key_as_string":"2017-02-07T08:31:00.000Z","key":1486456260000,"doc_count":17},{"key_as_string":"2017-02-07T08:32:00.000Z","key":1486456320000,"doc_count":11},{"key_as_string":"2017-02-07T08:33:00.000Z","key":1486456380000,"doc_count":15},{"key_as_string":"2017-02-07T08:34:00.000Z","key":1486456440000,"doc_count":11},{"key_as_string":"2017-02-07T08:35:00.000Z","key":1486456500000,"doc_count":15},{"key_as_string":"2017-02-07T08:36:00.000Z","key":1486456560000,"doc_count":17},{"key_as_string":"2017-02-07T08:37:00.000Z","key":1486456620000,"doc_count":8},{"key_as_string":"2017-02-07T08:38:00.000Z","key":1486456680000,"doc_count":13},{"key_as_string":"2017-02-07T08:39:00.000Z","key":1486456740000,"doc_count":10},{"key_as_string":"2017-02-07T08:40:00.000Z","key":1486456800000,"doc_count":11},{"key_as_string":"2017-02-07T08:41:00.000Z","key":1486456860000,"doc_count":12},{"key_as_string":"2017-02-07T08:42:00.000Z","key":1486456920000,"doc_count":15},{"key_as_string":"2017-02-07T08:43:00.000Z","key":1486456980000,"doc_count":12},{"key_as_string":"2017-02-07T08:44:00.000Z","key":1486457040000,"doc_count":14},{"key_as_string":"2017-02-07T08:45:00.000Z","key":1486457100000,"doc_count":14},{"key_as_string":"2017-02-07T08:46:00.000Z","key":1486457160000,"doc_count":15},{"key_as_string":"2017-02-07T08:47:00.000Z","key":1486457220000,"doc_count":13},{"key_as_string":"2017-02-07T08:48:00.000Z","key":1486457280000,"doc_count":10},{"key_as_string":"2017-02-07T08:49:00.000Z","key":1486457340000,"doc_count":12},{"key_as_string":"2017-02-07T08:50:00.000Z","key":1486457400000,"doc_count":14},{"key_as_string":"2017-02-07T08:51:00.000Z","key":1486457460000,"doc_count":13},{"key_as_string":"2017-02-07T08:52:00.000Z","key":1486457520000,"doc_count":11},{"key_as_string":"2017-02-07T08:53:00.000Z","key":1486457580000,"doc_count":14},{"key_as_string":"2017-02-07T08:54:00.000Z","key":1486457640000,"doc_count":14},{"key_as_string":"2017-02-07T08:55:00.000Z","key":1486457700000,"doc_count":9},{"key_as_string":"2017-02-07T08:56:00.000Z","key":1486457760000,"doc_count":13},{"key_as_string":"2017-02-07T08:57:00.000Z","key":1486457820000,"doc_count":16},{"key_as_string":"2017-02-07T08:58:00.000Z","key":1486457880000,"doc_count":14},{"key_as_string":"2017-02-07T08:59:00.000Z","key":1486457940000,"doc_count":9},{"key_as_string":"2017-02-07T09:00:00.000Z","key":1486458000000,"doc_count":15},{"key_as_string":"2017-02-07T09:01:00.000Z","key":1486458060000,"doc_count":13},{"key_as_string":"2017-02-07T09:02:00.000Z","key":1486458120000,"doc_count":11},{"key_as_string":"2017-02-07T09:03:00.000Z","key":1486458180000,"doc_count":23},{"key_as_string":"2017-02-07T09:04:00.000Z","key":1486458240000,"doc_count":14},{"key_as_string":"2017-02-07T09:05:00.000Z","key":1486458300000,"doc_count":6},{"key_as_string":"2017-02-07T09:06:00.000Z","key":1486458360000,"doc_count":14},{"key_as_string":"2017-02-07T09:07:00.000Z","key":1486458420000,"doc_count":15},{"key_as_string":"2017-02-07T09:08:00.000Z","key":1486458480000,"doc_count":15},{"key_as_string":"2017-02-07T09:09:00.000Z","key":1486458540000,"doc_count":11},{"key_as_string":"2017-02-07T09:10:00.000Z","key":1486458600000,"doc_count":17},{"key_as_string":"2017-02-07T09:11:00.000Z","key":1486458660000,"doc_count":16},{"key_as_string":"2017-02-07T09:12:00.000Z","key":1486458720000,"doc_count":15},{"key_as_string":"2017-02-07T09:13:00.000Z","key":1486458780000,"doc_count":15},{"key_as_string":"2017-02-07T09:14:00.000Z","key":1486458840000,"doc_count":18},{"key_as_string":"2017-02-07T09:15:00.000Z","key":1486458900000,"doc_count":13},{"key_as_string":"2017-02-07T09:16:00.000Z","key":1486458960000,"doc_count":9},{"key_as_string":"2017-02-07T09:17:00.000Z","key":1486459020000,"doc_count":19},{"key_as_string":"2017-02-07T09:18:00.000Z","key":1486459080000,"doc_count":11},{"key_as_string":"2017-02-07T09:19:00.000Z","key":1486459140000,"doc_count":8},{"key_as_string":"2017-02-07T09:20:00.000Z","key":1486459200000,"doc_count":18},{"key_as_string":"2017-02-07T09:21:00.000Z","key":1486459260000,"doc_count":16},{"key_as_string":"2017-02-07T09:22:00.000Z","key":1486459320000,"doc_count":13},{"key_as_string":"2017-02-07T09:23:00.000Z","key":1486459380000,"doc_count":14},{"key_as_string":"2017-02-07T09:24:00.000Z","key":1486459440000,"doc_count":16},{"key_as_string":"2017-02-07T09:25:00.000Z","key":1486459500000,"doc_count":13},{"key_as_string":"2017-02-07T09:26:00.000Z","key":1486459560000,"doc_count":13},{"key_as_string":"2017-02-07T09:27:00.000Z","key":1486459620000,"doc_count":16},{"key_as_string":"2017-02-07T09:28:00.000Z","key":1486459680000,"doc_count":13},{"key_as_string":"2017-02-07T09:29:00.000Z","key":1486459740000,"doc_count":14},{"key_as_string":"2017-02-07T09:30:00.000Z","key":1486459800000,"doc_count":13},{"key_as_string":"2017-02-07T09:31:00.000Z","key":1486459860000,"doc_count":16},{"key_as_string":"2017-02-07T09:32:00.000Z","key":1486459920000,"doc_count":18},{"key_as_string":"2017-02-07T09:33:00.000Z","key":1486459980000,"doc_count":7},{"key_as_string":"2017-02-07T09:34:00.000Z","key":1486460040000,"doc_count":14},{"key_as_string":"2017-02-07T09:35:00.000Z","key":1486460100000,"doc_count":15},{"key_as_string":"2017-02-07T09:36:00.000Z","key":1486460160000,"doc_count":13},{"key_as_string":"2017-02-07T09:37:00.000Z","key":1486460220000,"doc_count":16},{"key_as_string":"2017-02-07T09:38:00.000Z","key":1486460280000,"doc_count":15},{"key_as_string":"2017-02-07T09:39:00.000Z","key":1486460340000,"doc_count":12},{"key_as_string":"2017-02-07T09:40:00.000Z","key":1486460400000,"doc_count":15},{"key_as_string":"2017-02-07T09:41:00.000Z","key":1486460460000,"doc_count":13},{"key_as_string":"2017-02-07T09:42:00.000Z","key":1486460520000,"doc_count":10},{"key_as_string":"2017-02-07T09:43:00.000Z","key":1486460580000,"doc_count":17},{"key_as_string":"2017-02-07T09:44:00.000Z","key":1486460640000,"doc_count":16},{"key_as_string":"2017-02-07T09:45:00.000Z","key":1486460700000,"doc_count":16},{"key_as_string":"2017-02-07T09:46:00.000Z","key":1486460760000,"doc_count":12},{"key_as_string":"2017-02-07T09:47:00.000Z","key":1486460820000,"doc_count":14},{"key_as_string":"2017-02-07T09:48:00.000Z","key":1486460880000,"doc_count":14},{"key_as_string":"2017-02-07T09:49:00.000Z","key":1486460940000,"doc_count":10},{"key_as_string":"2017-02-07T09:50:00.000Z","key":1486461000000,"doc_count":14},{"key_as_string":"2017-02-07T09:51:00.000Z","key":1486461060000,"doc_count":16},{"key_as_string":"2017-02-07T09:52:00.000Z","key":1486461120000,"doc_count":14},{"key_as_string":"2017-02-07T09:53:00.000Z","key":1486461180000,"doc_count":11},{"key_as_string":"2017-02-07T09:54:00.000Z","key":1486461240000,"doc_count":11},{"key_as_string":"2017-02-07T09:55:00.000Z","key":1486461300000,"doc_count":14},{"key_as_string":"2017-02-07T09:56:00.000Z","key":1486461360000,"doc_count":14},{"key_as_string":"2017-02-07T09:57:00.000Z","key":1486461420000,"doc_count":13},{"key_as_string":"2017-02-07T09:58:00.000Z","key":1486461480000,"doc_count":14},{"key_as_string":"2017-02-07T09:59:00.000Z","key":1486461540000,"doc_count":13},{"key_as_string":"2017-02-07T10:00:00.000Z","key":1486461600000,"doc_count":17},{"key_as_string":"2017-02-07T10:01:00.000Z","key":1486461660000,"doc_count":17},{"key_as_string":"2017-02-07T10:02:00.000Z","key":1486461720000,"doc_count":6},{"key_as_string":"2017-02-07T10:03:00.000Z","key":1486461780000,"doc_count":13},{"key_as_string":"2017-02-07T10:04:00.000Z","key":1486461840000,"doc_count":15},{"key_as_string":"2017-02-07T10:05:00.000Z","key":1486461900000,"doc_count":10},{"key_as_string":"2017-02-07T10:06:00.000Z","key":1486461960000,"doc_count":11},{"key_as_string":"2017-02-07T10:07:00.000Z","key":1486462020000,"doc_count":15},{"key_as_string":"2017-02-07T10:08:00.000Z","key":1486462080000,"doc_count":14},{"key_as_string":"2017-02-07T10:09:00.000Z","key":1486462140000,"doc_count":11},{"key_as_string":"2017-02-07T10:10:00.000Z","key":1486462200000,"doc_count":19},{"key_as_string":"2017-02-07T10:11:00.000Z","key":1486462260000,"doc_count":10},{"key_as_string":"2017-02-07T10:12:00.000Z","key":1486462320000,"doc_count":12},{"key_as_string":"2017-02-07T10:13:00.000Z","key":1486462380000,"doc_count":12},{"key_as_string":"2017-02-07T10:14:00.000Z","key":1486462440000,"doc_count":20},{"key_as_string":"2017-02-07T10:15:00.000Z","key":1486462500000,"doc_count":15},{"key_as_string":"2017-02-07T10:16:00.000Z","key":1486462560000,"doc_count":13},{"key_as_string":"2017-02-07T10:17:00.000Z","key":1486462620000,"doc_count":16},{"key_as_string":"2017-02-07T10:18:00.000Z","key":1486462680000,"doc_count":14},{"key_as_string":"2017-02-07T10:19:00.000Z","key":1486462740000,"doc_count":11},{"key_as_string":"2017-02-07T10:20:00.000Z","key":1486462800000,"doc_count":15},{"key_as_string":"2017-02-07T10:21:00.000Z","key":1486462860000,"doc_count":14},{"key_as_string":"2017-02-07T10:22:00.000Z","key":1486462920000,"doc_count":11},{"key_as_string":"2017-02-07T10:23:00.000Z","key":1486462980000,"doc_count":12},{"key_as_string":"2017-02-07T10:24:00.000Z","key":1486463040000,"doc_count":16},{"key_as_string":"2017-02-07T10:25:00.000Z","key":1486463100000,"doc_count":14},{"key_as_string":"2017-02-07T10:26:00.000Z","key":1486463160000,"doc_count":18},{"key_as_string":"2017-02-07T10:27:00.000Z","key":1486463220000,"doc_count":13},{"key_as_string":"2017-02-07T10:28:00.000Z","key":1486463280000,"doc_count":18},{"key_as_string":"2017-02-07T10:29:00.000Z","key":1486463340000,"doc_count":14},{"key_as_string":"2017-02-07T10:30:00.000Z","key":1486463400000,"doc_count":15},{"key_as_string":"2017-02-07T10:31:00.000Z","key":1486463460000,"doc_count":16},{"key_as_string":"2017-02-07T10:32:00.000Z","key":1486463520000,"doc_count":16},{"key_as_string":"2017-02-07T10:33:00.000Z","key":1486463580000,"doc_count":16},{"key_as_string":"2017-02-07T10:34:00.000Z","key":1486463640000,"doc_count":9},{"key_as_string":"2017-02-07T10:35:00.000Z","key":1486463700000,"doc_count":13},{"key_as_string":"2017-02-07T10:36:00.000Z","key":1486463760000,"doc_count":16},{"key_as_string":"2017-02-07T10:37:00.000Z","key":1486463820000,"doc_count":14},{"key_as_string":"2017-02-07T10:38:00.000Z","key":1486463880000,"doc_count":14},{"key_as_string":"2017-02-07T10:39:00.000Z","key":1486463940000,"doc_count":12},{"key_as_string":"2017-02-07T10:40:00.000Z","key":1486464000000,"doc_count":12},{"key_as_string":"2017-02-07T10:41:00.000Z","key":1486464060000,"doc_count":15},{"key_as_string":"2017-02-07T10:42:00.000Z","key":1486464120000,"doc_count":10},{"key_as_string":"2017-02-07T10:43:00.000Z","key":1486464180000,"doc_count":11},{"key_as_string":"2017-02-07T10:44:00.000Z","key":1486464240000,"doc_count":14},{"key_as_string":"2017-02-07T10:45:00.000Z","key":1486464300000,"doc_count":11},{"key_as_string":"2017-02-07T10:46:00.000Z","key":1486464360000,"doc_count":16},{"key_as_string":"2017-02-07T10:47:00.000Z","key":1486464420000,"doc_count":17},{"key_as_string":"2017-02-07T10:48:00.000Z","key":1486464480000,"doc_count":14},{"key_as_string":"2017-02-07T10:49:00.000Z","key":1486464540000,"doc_count":17},{"key_as_string":"2017-02-07T10:50:00.000Z","key":1486464600000,"doc_count":14},{"key_as_string":"2017-02-07T10:51:00.000Z","key":1486464660000,"doc_count":14},{"key_as_string":"2017-02-07T10:52:00.000Z","key":1486464720000,"doc_count":13},{"key_as_string":"2017-02-07T10:53:00.000Z","key":1486464780000,"doc_count":14},{"key_as_string":"2017-02-07T10:54:00.000Z","key":1486464840000,"doc_count":13},{"key_as_string":"2017-02-07T10:55:00.000Z","key":1486464900000,"doc_count":10},{"key_as_string":"2017-02-07T10:56:00.000Z","key":1486464960000,"doc_count":14},{"key_as_string":"2017-02-07T10:57:00.000Z","key":1486465020000,"doc_count":9},{"key_as_string":"2017-02-07T10:58:00.000Z","key":1486465080000,"doc_count":19},{"key_as_string":"2017-02-07T10:59:00.000Z","key":1486465140000,"doc_count":12},{"key_as_string":"2017-02-07T11:00:00.000Z","key":1486465200000,"doc_count":20},{"key_as_string":"2017-02-07T11:01:00.000Z","key":1486465260000,"doc_count":11},{"key_as_string":"2017-02-07T11:02:00.000Z","key":1486465320000,"doc_count":16},{"key_as_string":"2017-02-07T11:03:00.000Z","key":1486465380000,"doc_count":14},{"key_as_string":"2017-02-07T11:04:00.000Z","key":1486465440000,"doc_count":14},{"key_as_string":"2017-02-07T11:05:00.000Z","key":1486465500000,"doc_count":11},{"key_as_string":"2017-02-07T11:06:00.000Z","key":1486465560000,"doc_count":11},{"key_as_string":"2017-02-07T11:07:00.000Z","key":1486465620000,"doc_count":18},{"key_as_string":"2017-02-07T11:08:00.000Z","key":1486465680000,"doc_count":14},{"key_as_string":"2017-02-07T11:09:00.000Z","key":1486465740000,"doc_count":14},{"key_as_string":"2017-02-07T11:10:00.000Z","key":1486465800000,"doc_count":9},{"key_as_string":"2017-02-07T11:11:00.000Z","key":1486465860000,"doc_count":18},{"key_as_string":"2017-02-07T11:12:00.000Z","key":1486465920000,"doc_count":18},{"key_as_string":"2017-02-07T11:13:00.000Z","key":1486465980000,"doc_count":10},{"key_as_string":"2017-02-07T11:14:00.000Z","key":1486466040000,"doc_count":10},{"key_as_string":"2017-02-07T11:15:00.000Z","key":1486466100000,"doc_count":17},{"key_as_string":"2017-02-07T11:16:00.000Z","key":1486466160000,"doc_count":16},{"key_as_string":"2017-02-07T11:17:00.000Z","key":1486466220000,"doc_count":15},{"key_as_string":"2017-02-07T11:18:00.000Z","key":1486466280000,"doc_count":17},{"key_as_string":"2017-02-07T11:19:00.000Z","key":1486466340000,"doc_count":18},{"key_as_string":"2017-02-07T11:20:00.000Z","key":1486466400000,"doc_count":11},{"key_as_string":"2017-02-07T11:21:00.000Z","key":1486466460000,"doc_count":18},{"key_as_string":"2017-02-07T11:22:00.000Z","key":1486466520000,"doc_count":13},{"key_as_string":"2017-02-07T11:23:00.000Z","key":1486466580000,"doc_count":10},{"key_as_string":"2017-02-07T11:24:00.000Z","key":1486466640000,"doc_count":12},{"key_as_string":"2017-02-07T11:25:00.000Z","key":1486466700000,"doc_count":13},{"key_as_string":"2017-02-07T11:26:00.000Z","key":1486466760000,"doc_count":16},{"key_as_string":"2017-02-07T11:27:00.000Z","key":1486466820000,"doc_count":12},{"key_as_string":"2017-02-07T11:28:00.000Z","key":1486466880000,"doc_count":12},{"key_as_string":"2017-02-07T11:29:00.000Z","key":1486466940000,"doc_count":18},{"key_as_string":"2017-02-07T11:30:00.000Z","key":1486467000000,"doc_count":11},{"key_as_string":"2017-02-07T11:31:00.000Z","key":1486467060000,"doc_count":13},{"key_as_string":"2017-02-07T11:32:00.000Z","key":1486467120000,"doc_count":13},{"key_as_string":"2017-02-07T11:33:00.000Z","key":1486467180000,"doc_count":24},{"key_as_string":"2017-02-07T11:34:00.000Z","key":1486467240000,"doc_count":12},{"key_as_string":"2017-02-07T11:35:00.000Z","key":1486467300000,"doc_count":13},{"key_as_string":"2017-02-07T11:36:00.000Z","key":1486467360000,"doc_count":16},{"key_as_string":"2017-02-07T11:37:00.000Z","key":1486467420000,"doc_count":16},{"key_as_string":"2017-02-07T11:38:00.000Z","key":1486467480000,"doc_count":14},{"key_as_string":"2017-02-07T11:39:00.000Z","key":1486467540000,"doc_count":12},{"key_as_string":"2017-02-07T11:40:00.000Z","key":1486467600000,"doc_count":14},{"key_as_string":"2017-02-07T11:41:00.000Z","key":1486467660000,"doc_count":14},{"key_as_string":"2017-02-07T11:42:00.000Z","key":1486467720000,"doc_count":16},{"key_as_string":"2017-02-07T11:43:00.000Z","key":1486467780000,"doc_count":19},{"key_as_string":"2017-02-07T11:44:00.000Z","key":1486467840000,"doc_count":9},{"key_as_string":"2017-02-07T11:45:00.000Z","key":1486467900000,"doc_count":14},{"key_as_string":"2017-02-07T11:46:00.000Z","key":1486467960000,"doc_count":8},{"key_as_string":"2017-02-07T11:47:00.000Z","key":1486468020000,"doc_count":14},{"key_as_string":"2017-02-07T11:48:00.000Z","key":1486468080000,"doc_count":11},{"key_as_string":"2017-02-07T11:49:00.000Z","key":1486468140000,"doc_count":10},{"key_as_string":"2017-02-07T11:50:00.000Z","key":1486468200000,"doc_count":13},{"key_as_string":"2017-02-07T11:51:00.000Z","key":1486468260000,"doc_count":14},{"key_as_string":"2017-02-07T11:52:00.000Z","key":1486468320000,"doc_count":13},{"key_as_string":"2017-02-07T11:53:00.000Z","key":1486468380000,"doc_count":15},{"key_as_string":"2017-02-07T11:54:00.000Z","key":1486468440000,"doc_count":11},{"key_as_string":"2017-02-07T11:55:00.000Z","key":1486468500000,"doc_count":11},{"key_as_string":"2017-02-07T11:56:00.000Z","key":1486468560000,"doc_count":13},{"key_as_string":"2017-02-07T11:57:00.000Z","key":1486468620000,"doc_count":17},{"key_as_string":"2017-02-07T11:58:00.000Z","key":1486468680000,"doc_count":19},{"key_as_string":"2017-02-07T11:59:00.000Z","key":1486468740000,"doc_count":15},{"key_as_string":"2017-02-07T12:00:00.000Z","key":1486468800000,"doc_count":14},{"key_as_string":"2017-02-07T12:01:00.000Z","key":1486468860000,"doc_count":14},{"key_as_string":"2017-02-07T12:02:00.000Z","key":1486468920000,"doc_count":19},{"key_as_string":"2017-02-07T12:03:00.000Z","key":1486468980000,"doc_count":16},{"key_as_string":"2017-02-07T12:04:00.000Z","key":1486469040000,"doc_count":13},{"key_as_string":"2017-02-07T12:05:00.000Z","key":1486469100000,"doc_count":20},{"key_as_string":"2017-02-07T12:06:00.000Z","key":1486469160000,"doc_count":9},{"key_as_string":"2017-02-07T12:07:00.000Z","key":1486469220000,"doc_count":12},{"key_as_string":"2017-02-07T12:08:00.000Z","key":1486469280000,"doc_count":14},{"key_as_string":"2017-02-07T12:09:00.000Z","key":1486469340000,"doc_count":18},{"key_as_string":"2017-02-07T12:10:00.000Z","key":1486469400000,"doc_count":10},{"key_as_string":"2017-02-07T12:11:00.000Z","key":1486469460000,"doc_count":11},{"key_as_string":"2017-02-07T12:12:00.000Z","key":1486469520000,"doc_count":15},{"key_as_string":"2017-02-07T12:13:00.000Z","key":1486469580000,"doc_count":10},{"key_as_string":"2017-02-07T12:14:00.000Z","key":1486469640000,"doc_count":14},{"key_as_string":"2017-02-07T12:15:00.000Z","key":1486469700000,"doc_count":18},{"key_as_string":"2017-02-07T12:16:00.000Z","key":1486469760000,"doc_count":15},{"key_as_string":"2017-02-07T12:17:00.000Z","key":1486469820000,"doc_count":12},{"key_as_string":"2017-02-07T12:18:00.000Z","key":1486469880000,"doc_count":7},{"key_as_string":"2017-02-07T12:19:00.000Z","key":1486469940000,"doc_count":17},{"key_as_string":"2017-02-07T12:20:00.000Z","key":1486470000000,"doc_count":14},{"key_as_string":"2017-02-07T12:21:00.000Z","key":1486470060000,"doc_count":15},{"key_as_string":"2017-02-07T12:22:00.000Z","key":1486470120000,"doc_count":17},{"key_as_string":"2017-02-07T12:23:00.000Z","key":1486470180000,"doc_count":17},{"key_as_string":"2017-02-07T12:24:00.000Z","key":1486470240000,"doc_count":12},{"key_as_string":"2017-02-07T12:25:00.000Z","key":1486470300000,"doc_count":15},{"key_as_string":"2017-02-07T12:26:00.000Z","key":1486470360000,"doc_count":8},{"key_as_string":"2017-02-07T12:27:00.000Z","key":1486470420000,"doc_count":19},{"key_as_string":"2017-02-07T12:28:00.000Z","key":1486470480000,"doc_count":10},{"key_as_string":"2017-02-07T12:29:00.000Z","key":1486470540000,"doc_count":13},{"key_as_string":"2017-02-07T12:30:00.000Z","key":1486470600000,"doc_count":14},{"key_as_string":"2017-02-07T12:31:00.000Z","key":1486470660000,"doc_count":17},{"key_as_string":"2017-02-07T12:32:00.000Z","key":1486470720000,"doc_count":12},{"key_as_string":"2017-02-07T12:33:00.000Z","key":1486470780000,"doc_count":11},{"key_as_string":"2017-02-07T12:34:00.000Z","key":1486470840000,"doc_count":18},{"key_as_string":"2017-02-07T12:35:00.000Z","key":1486470900000,"doc_count":16},{"key_as_string":"2017-02-07T12:36:00.000Z","key":1486470960000,"doc_count":17},{"key_as_string":"2017-02-07T12:37:00.000Z","key":1486471020000,"doc_count":18},{"key_as_string":"2017-02-07T12:38:00.000Z","key":1486471080000,"doc_count":16},{"key_as_string":"2017-02-07T12:39:00.000Z","key":1486471140000,"doc_count":15},{"key_as_string":"2017-02-07T12:40:00.000Z","key":1486471200000,"doc_count":16},{"key_as_string":"2017-02-07T12:41:00.000Z","key":1486471260000,"doc_count":22},{"key_as_string":"2017-02-07T12:42:00.000Z","key":1486471320000,"doc_count":14},{"key_as_string":"2017-02-07T12:43:00.000Z","key":1486471380000,"doc_count":13},{"key_as_string":"2017-02-07T12:44:00.000Z","key":1486471440000,"doc_count":10},{"key_as_string":"2017-02-07T12:45:00.000Z","key":1486471500000,"doc_count":13},{"key_as_string":"2017-02-07T12:46:00.000Z","key":1486471560000,"doc_count":19},{"key_as_string":"2017-02-07T12:47:00.000Z","key":1486471620000,"doc_count":12},{"key_as_string":"2017-02-07T12:48:00.000Z","key":1486471680000,"doc_count":12},{"key_as_string":"2017-02-07T12:49:00.000Z","key":1486471740000,"doc_count":14},{"key_as_string":"2017-02-07T12:50:00.000Z","key":1486471800000,"doc_count":17},{"key_as_string":"2017-02-07T12:51:00.000Z","key":1486471860000,"doc_count":14},{"key_as_string":"2017-02-07T12:52:00.000Z","key":1486471920000,"doc_count":9},{"key_as_string":"2017-02-07T12:53:00.000Z","key":1486471980000,"doc_count":21},{"key_as_string":"2017-02-07T12:54:00.000Z","key":1486472040000,"doc_count":14},{"key_as_string":"2017-02-07T12:55:00.000Z","key":1486472100000,"doc_count":11},{"key_as_string":"2017-02-07T12:56:00.000Z","key":1486472160000,"doc_count":13},{"key_as_string":"2017-02-07T12:57:00.000Z","key":1486472220000,"doc_count":13},{"key_as_string":"2017-02-07T12:58:00.000Z","key":1486472280000,"doc_count":12},{"key_as_string":"2017-02-07T12:59:00.000Z","key":1486472340000,"doc_count":19},{"key_as_string":"2017-02-07T13:00:00.000Z","key":1486472400000,"doc_count":10},{"key_as_string":"2017-02-07T13:01:00.000Z","key":1486472460000,"doc_count":13},{"key_as_string":"2017-02-07T13:02:00.000Z","key":1486472520000,"doc_count":12},{"key_as_string":"2017-02-07T13:03:00.000Z","key":1486472580000,"doc_count":9},{"key_as_string":"2017-02-07T13:04:00.000Z","key":1486472640000,"doc_count":17},{"key_as_string":"2017-02-07T13:05:00.000Z","key":1486472700000,"doc_count":14},{"key_as_string":"2017-02-07T13:06:00.000Z","key":1486472760000,"doc_count":13},{"key_as_string":"2017-02-07T13:07:00.000Z","key":1486472820000,"doc_count":18},{"key_as_string":"2017-02-07T13:08:00.000Z","key":1486472880000,"doc_count":16},{"key_as_string":"2017-02-07T13:09:00.000Z","key":1486472940000,"doc_count":11},{"key_as_string":"2017-02-07T13:10:00.000Z","key":1486473000000,"doc_count":9},{"key_as_string":"2017-02-07T13:11:00.000Z","key":1486473060000,"doc_count":14},{"key_as_string":"2017-02-07T13:12:00.000Z","key":1486473120000,"doc_count":11},{"key_as_string":"2017-02-07T13:13:00.000Z","key":1486473180000,"doc_count":17},{"key_as_string":"2017-02-07T13:14:00.000Z","key":1486473240000,"doc_count":14},{"key_as_string":"2017-02-07T13:15:00.000Z","key":1486473300000,"doc_count":17},{"key_as_string":"2017-02-07T13:16:00.000Z","key":1486473360000,"doc_count":14},{"key_as_string":"2017-02-07T13:17:00.000Z","key":1486473420000,"doc_count":18},{"key_as_string":"2017-02-07T13:18:00.000Z","key":1486473480000,"doc_count":13},{"key_as_string":"2017-02-07T13:19:00.000Z","key":1486473540000,"doc_count":24},{"key_as_string":"2017-02-07T13:20:00.000Z","key":1486473600000,"doc_count":6},{"key_as_string":"2017-02-07T13:21:00.000Z","key":1486473660000,"doc_count":16},{"key_as_string":"2017-02-07T13:22:00.000Z","key":1486473720000,"doc_count":19},{"key_as_string":"2017-02-07T13:23:00.000Z","key":1486473780000,"doc_count":12},{"key_as_string":"2017-02-07T13:24:00.000Z","key":1486473840000,"doc_count":18},{"key_as_string":"2017-02-07T13:25:00.000Z","key":1486473900000,"doc_count":11},{"key_as_string":"2017-02-07T13:26:00.000Z","key":1486473960000,"doc_count":14},{"key_as_string":"2017-02-07T13:27:00.000Z","key":1486474020000,"doc_count":13},{"key_as_string":"2017-02-07T13:28:00.000Z","key":1486474080000,"doc_count":13},{"key_as_string":"2017-02-07T13:29:00.000Z","key":1486474140000,"doc_count":12},{"key_as_string":"2017-02-07T13:30:00.000Z","key":1486474200000,"doc_count":12},{"key_as_string":"2017-02-07T13:31:00.000Z","key":1486474260000,"doc_count":10},{"key_as_string":"2017-02-07T13:32:00.000Z","key":1486474320000,"doc_count":15},{"key_as_string":"2017-02-07T13:33:00.000Z","key":1486474380000,"doc_count":11},{"key_as_string":"2017-02-07T13:34:00.000Z","key":1486474440000,"doc_count":15},{"key_as_string":"2017-02-07T13:35:00.000Z","key":1486474500000,"doc_count":6},{"key_as_string":"2017-02-07T13:36:00.000Z","key":1486474560000,"doc_count":20},{"key_as_string":"2017-02-07T13:37:00.000Z","key":1486474620000,"doc_count":9},{"key_as_string":"2017-02-07T13:38:00.000Z","key":1486474680000,"doc_count":15},{"key_as_string":"2017-02-07T13:39:00.000Z","key":1486474740000,"doc_count":18},{"key_as_string":"2017-02-07T13:40:00.000Z","key":1486474800000,"doc_count":14},{"key_as_string":"2017-02-07T13:41:00.000Z","key":1486474860000,"doc_count":11},{"key_as_string":"2017-02-07T13:42:00.000Z","key":1486474920000,"doc_count":15},{"key_as_string":"2017-02-07T13:43:00.000Z","key":1486474980000,"doc_count":10},{"key_as_string":"2017-02-07T13:44:00.000Z","key":1486475040000,"doc_count":14},{"key_as_string":"2017-02-07T13:45:00.000Z","key":1486475100000,"doc_count":13},{"key_as_string":"2017-02-07T13:46:00.000Z","key":1486475160000,"doc_count":16},{"key_as_string":"2017-02-07T13:47:00.000Z","key":1486475220000,"doc_count":10},{"key_as_string":"2017-02-07T13:48:00.000Z","key":1486475280000,"doc_count":13},{"key_as_string":"2017-02-07T13:49:00.000Z","key":1486475340000,"doc_count":14},{"key_as_string":"2017-02-07T13:50:00.000Z","key":1486475400000,"doc_count":12},{"key_as_string":"2017-02-07T13:51:00.000Z","key":1486475460000,"doc_count":12},{"key_as_string":"2017-02-07T13:52:00.000Z","key":1486475520000,"doc_count":11},{"key_as_string":"2017-02-07T13:53:00.000Z","key":1486475580000,"doc_count":15},{"key_as_string":"2017-02-07T13:54:00.000Z","key":1486475640000,"doc_count":13},{"key_as_string":"2017-02-07T13:55:00.000Z","key":1486475700000,"doc_count":14},{"key_as_string":"2017-02-07T13:56:00.000Z","key":1486475760000,"doc_count":18},{"key_as_string":"2017-02-07T13:57:00.000Z","key":1486475820000,"doc_count":6},{"key_as_string":"2017-02-07T13:58:00.000Z","key":1486475880000,"doc_count":19},{"key_as_string":"2017-02-07T13:59:00.000Z","key":1486475940000,"doc_count":13},{"key_as_string":"2017-02-07T14:00:00.000Z","key":1486476000000,"doc_count":9},{"key_as_string":"2017-02-07T14:01:00.000Z","key":1486476060000,"doc_count":10},{"key_as_string":"2017-02-07T14:02:00.000Z","key":1486476120000,"doc_count":14},{"key_as_string":"2017-02-07T14:03:00.000Z","key":1486476180000,"doc_count":13},{"key_as_string":"2017-02-07T14:04:00.000Z","key":1486476240000,"doc_count":19},{"key_as_string":"2017-02-07T14:05:00.000Z","key":1486476300000,"doc_count":15},{"key_as_string":"2017-02-07T14:06:00.000Z","key":1486476360000,"doc_count":12},{"key_as_string":"2017-02-07T14:07:00.000Z","key":1486476420000,"doc_count":11},{"key_as_string":"2017-02-07T14:08:00.000Z","key":1486476480000,"doc_count":15},{"key_as_string":"2017-02-07T14:09:00.000Z","key":1486476540000,"doc_count":10},{"key_as_string":"2017-02-07T14:10:00.000Z","key":1486476600000,"doc_count":13},{"key_as_string":"2017-02-07T14:11:00.000Z","key":1486476660000,"doc_count":18},{"key_as_string":"2017-02-07T14:12:00.000Z","key":1486476720000,"doc_count":10},{"key_as_string":"2017-02-07T14:13:00.000Z","key":1486476780000,"doc_count":13},{"key_as_string":"2017-02-07T14:14:00.000Z","key":1486476840000,"doc_count":15},{"key_as_string":"2017-02-07T14:15:00.000Z","key":1486476900000,"doc_count":18},{"key_as_string":"2017-02-07T14:16:00.000Z","key":1486476960000,"doc_count":14},{"key_as_string":"2017-02-07T14:17:00.000Z","key":1486477020000,"doc_count":13},{"key_as_string":"2017-02-07T14:18:00.000Z","key":1486477080000,"doc_count":12},{"key_as_string":"2017-02-07T14:19:00.000Z","key":1486477140000,"doc_count":18},{"key_as_string":"2017-02-07T14:20:00.000Z","key":1486477200000,"doc_count":13},{"key_as_string":"2017-02-07T14:21:00.000Z","key":1486477260000,"doc_count":14},{"key_as_string":"2017-02-07T14:22:00.000Z","key":1486477320000,"doc_count":8},{"key_as_string":"2017-02-07T14:23:00.000Z","key":1486477380000,"doc_count":16},{"key_as_string":"2017-02-07T14:24:00.000Z","key":1486477440000,"doc_count":12},{"key_as_string":"2017-02-07T14:25:00.000Z","key":1486477500000,"doc_count":17},{"key_as_string":"2017-02-07T14:26:00.000Z","key":1486477560000,"doc_count":11},{"key_as_string":"2017-02-07T14:27:00.000Z","key":1486477620000,"doc_count":17},{"key_as_string":"2017-02-07T14:28:00.000Z","key":1486477680000,"doc_count":17},{"key_as_string":"2017-02-07T14:29:00.000Z","key":1486477740000,"doc_count":14},{"key_as_string":"2017-02-07T14:30:00.000Z","key":1486477800000,"doc_count":15},{"key_as_string":"2017-02-07T14:31:00.000Z","key":1486477860000,"doc_count":13},{"key_as_string":"2017-02-07T14:32:00.000Z","key":1486477920000,"doc_count":9},{"key_as_string":"2017-02-07T14:33:00.000Z","key":1486477980000,"doc_count":17},{"key_as_string":"2017-02-07T14:34:00.000Z","key":1486478040000,"doc_count":12},{"key_as_string":"2017-02-07T14:35:00.000Z","key":1486478100000,"doc_count":14},{"key_as_string":"2017-02-07T14:36:00.000Z","key":1486478160000,"doc_count":14},{"key_as_string":"2017-02-07T14:37:00.000Z","key":1486478220000,"doc_count":13},{"key_as_string":"2017-02-07T14:38:00.000Z","key":1486478280000,"doc_count":13},{"key_as_string":"2017-02-07T14:39:00.000Z","key":1486478340000,"doc_count":11},{"key_as_string":"2017-02-07T14:40:00.000Z","key":1486478400000,"doc_count":20},{"key_as_string":"2017-02-07T14:41:00.000Z","key":1486478460000,"doc_count":12},{"key_as_string":"2017-02-07T14:42:00.000Z","key":1486478520000,"doc_count":14},{"key_as_string":"2017-02-07T14:43:00.000Z","key":1486478580000,"doc_count":14},{"key_as_string":"2017-02-07T14:44:00.000Z","key":1486478640000,"doc_count":13},{"key_as_string":"2017-02-07T14:45:00.000Z","key":1486478700000,"doc_count":16},{"key_as_string":"2017-02-07T14:46:00.000Z","key":1486478760000,"doc_count":16},{"key_as_string":"2017-02-07T14:47:00.000Z","key":1486478820000,"doc_count":12},{"key_as_string":"2017-02-07T14:48:00.000Z","key":1486478880000,"doc_count":11},{"key_as_string":"2017-02-07T14:49:00.000Z","key":1486478940000,"doc_count":16},{"key_as_string":"2017-02-07T14:50:00.000Z","key":1486479000000,"doc_count":12},{"key_as_string":"2017-02-07T14:51:00.000Z","key":1486479060000,"doc_count":9},{"key_as_string":"2017-02-07T14:52:00.000Z","key":1486479120000,"doc_count":13},{"key_as_string":"2017-02-07T14:53:00.000Z","key":1486479180000,"doc_count":12},{"key_as_string":"2017-02-07T14:54:00.000Z","key":1486479240000,"doc_count":19},{"key_as_string":"2017-02-07T14:55:00.000Z","key":1486479300000,"doc_count":10},{"key_as_string":"2017-02-07T14:56:00.000Z","key":1486479360000,"doc_count":15},{"key_as_string":"2017-02-07T14:57:00.000Z","key":1486479420000,"doc_count":16},{"key_as_string":"2017-02-07T14:58:00.000Z","key":1486479480000,"doc_count":14},{"key_as_string":"2017-02-07T14:59:00.000Z","key":1486479540000,"doc_count":12},{"key_as_string":"2017-02-07T15:00:00.000Z","key":1486479600000,"doc_count":14},{"key_as_string":"2017-02-07T15:01:00.000Z","key":1486479660000,"doc_count":12},{"key_as_string":"2017-02-07T15:02:00.000Z","key":1486479720000,"doc_count":11},{"key_as_string":"2017-02-07T15:03:00.000Z","key":1486479780000,"doc_count":13},{"key_as_string":"2017-02-07T15:04:00.000Z","key":1486479840000,"doc_count":14},{"key_as_string":"2017-02-07T15:05:00.000Z","key":1486479900000,"doc_count":10},{"key_as_string":"2017-02-07T15:06:00.000Z","key":1486479960000,"doc_count":9},{"key_as_string":"2017-02-07T15:07:00.000Z","key":1486480020000,"doc_count":10},{"key_as_string":"2017-02-07T15:08:00.000Z","key":1486480080000,"doc_count":15},{"key_as_string":"2017-02-07T15:09:00.000Z","key":1486480140000,"doc_count":13},{"key_as_string":"2017-02-07T15:10:00.000Z","key":1486480200000,"doc_count":12},{"key_as_string":"2017-02-07T15:11:00.000Z","key":1486480260000,"doc_count":13},{"key_as_string":"2017-02-07T15:12:00.000Z","key":1486480320000,"doc_count":12},{"key_as_string":"2017-02-07T15:13:00.000Z","key":1486480380000,"doc_count":13},{"key_as_string":"2017-02-07T15:14:00.000Z","key":1486480440000,"doc_count":15},{"key_as_string":"2017-02-07T15:15:00.000Z","key":1486480500000,"doc_count":15},{"key_as_string":"2017-02-07T15:16:00.000Z","key":1486480560000,"doc_count":14},{"key_as_string":"2017-02-07T15:17:00.000Z","key":1486480620000,"doc_count":7},{"key_as_string":"2017-02-07T15:18:00.000Z","key":1486480680000,"doc_count":16},{"key_as_string":"2017-02-07T15:19:00.000Z","key":1486480740000,"doc_count":13},{"key_as_string":"2017-02-07T15:20:00.000Z","key":1486480800000,"doc_count":14},{"key_as_string":"2017-02-07T15:21:00.000Z","key":1486480860000,"doc_count":13},{"key_as_string":"2017-02-07T15:22:00.000Z","key":1486480920000,"doc_count":12},{"key_as_string":"2017-02-07T15:23:00.000Z","key":1486480980000,"doc_count":16},{"key_as_string":"2017-02-07T15:24:00.000Z","key":1486481040000,"doc_count":15},{"key_as_string":"2017-02-07T15:25:00.000Z","key":1486481100000,"doc_count":8},{"key_as_string":"2017-02-07T15:26:00.000Z","key":1486481160000,"doc_count":15},{"key_as_string":"2017-02-07T15:27:00.000Z","key":1486481220000,"doc_count":11},{"key_as_string":"2017-02-07T15:28:00.000Z","key":1486481280000,"doc_count":14},{"key_as_string":"2017-02-07T15:29:00.000Z","key":1486481340000,"doc_count":14},{"key_as_string":"2017-02-07T15:30:00.000Z","key":1486481400000,"doc_count":12},{"key_as_string":"2017-02-07T15:31:00.000Z","key":1486481460000,"doc_count":19},{"key_as_string":"2017-02-07T15:32:00.000Z","key":1486481520000,"doc_count":15},{"key_as_string":"2017-02-07T15:33:00.000Z","key":1486481580000,"doc_count":15},{"key_as_string":"2017-02-07T15:34:00.000Z","key":1486481640000,"doc_count":11},{"key_as_string":"2017-02-07T15:35:00.000Z","key":1486481700000,"doc_count":14},{"key_as_string":"2017-02-07T15:36:00.000Z","key":1486481760000,"doc_count":13},{"key_as_string":"2017-02-07T15:37:00.000Z","key":1486481820000,"doc_count":18},{"key_as_string":"2017-02-07T15:38:00.000Z","key":1486481880000,"doc_count":8},{"key_as_string":"2017-02-07T15:39:00.000Z","key":1486481940000,"doc_count":14},{"key_as_string":"2017-02-07T15:40:00.000Z","key":1486482000000,"doc_count":11},{"key_as_string":"2017-02-07T15:41:00.000Z","key":1486482060000,"doc_count":10},{"key_as_string":"2017-02-07T15:42:00.000Z","key":1486482120000,"doc_count":10},{"key_as_string":"2017-02-07T15:43:00.000Z","key":1486482180000,"doc_count":14},{"key_as_string":"2017-02-07T15:44:00.000Z","key":1486482240000,"doc_count":10},{"key_as_string":"2017-02-07T15:45:00.000Z","key":1486482300000,"doc_count":13},{"key_as_string":"2017-02-07T15:46:00.000Z","key":1486482360000,"doc_count":15},{"key_as_string":"2017-02-07T15:47:00.000Z","key":1486482420000,"doc_count":11},{"key_as_string":"2017-02-07T15:48:00.000Z","key":1486482480000,"doc_count":13},{"key_as_string":"2017-02-07T15:49:00.000Z","key":1486482540000,"doc_count":10},{"key_as_string":"2017-02-07T15:50:00.000Z","key":1486482600000,"doc_count":17},{"key_as_string":"2017-02-07T15:51:00.000Z","key":1486482660000,"doc_count":11},{"key_as_string":"2017-02-07T15:52:00.000Z","key":1486482720000,"doc_count":15},{"key_as_string":"2017-02-07T15:53:00.000Z","key":1486482780000,"doc_count":10},{"key_as_string":"2017-02-07T15:54:00.000Z","key":1486482840000,"doc_count":11},{"key_as_string":"2017-02-07T15:55:00.000Z","key":1486482900000,"doc_count":14},{"key_as_string":"2017-02-07T15:56:00.000Z","key":1486482960000,"doc_count":16},{"key_as_string":"2017-02-07T15:57:00.000Z","key":1486483020000,"doc_count":15},{"key_as_string":"2017-02-07T15:58:00.000Z","key":1486483080000,"doc_count":13},{"key_as_string":"2017-02-07T15:59:00.000Z","key":1486483140000,"doc_count":10},{"key_as_string":"2017-02-07T16:00:00.000Z","key":1486483200000,"doc_count":18},{"key_as_string":"2017-02-07T16:01:00.000Z","key":1486483260000,"doc_count":11},{"key_as_string":"2017-02-07T16:02:00.000Z","key":1486483320000,"doc_count":14},{"key_as_string":"2017-02-07T16:03:00.000Z","key":1486483380000,"doc_count":16},{"key_as_string":"2017-02-07T16:04:00.000Z","key":1486483440000,"doc_count":10},{"key_as_string":"2017-02-07T16:05:00.000Z","key":1486483500000,"doc_count":12},{"key_as_string":"2017-02-07T16:06:00.000Z","key":1486483560000,"doc_count":11},{"key_as_string":"2017-02-07T16:07:00.000Z","key":1486483620000,"doc_count":14},{"key_as_string":"2017-02-07T16:08:00.000Z","key":1486483680000,"doc_count":12},{"key_as_string":"2017-02-07T16:09:00.000Z","key":1486483740000,"doc_count":8},{"key_as_string":"2017-02-07T16:10:00.000Z","key":1486483800000,"doc_count":13},{"key_as_string":"2017-02-07T16:11:00.000Z","key":1486483860000,"doc_count":15},{"key_as_string":"2017-02-07T16:12:00.000Z","key":1486483920000,"doc_count":9},{"key_as_string":"2017-02-07T16:13:00.000Z","key":1486483980000,"doc_count":14},{"key_as_string":"2017-02-07T16:14:00.000Z","key":1486484040000,"doc_count":11},{"key_as_string":"2017-02-07T16:15:00.000Z","key":1486484100000,"doc_count":10},{"key_as_string":"2017-02-07T16:16:00.000Z","key":1486484160000,"doc_count":14},{"key_as_string":"2017-02-07T16:17:00.000Z","key":1486484220000,"doc_count":10},{"key_as_string":"2017-02-07T16:18:00.000Z","key":1486484280000,"doc_count":10},{"key_as_string":"2017-02-07T16:19:00.000Z","key":1486484340000,"doc_count":17},{"key_as_string":"2017-02-07T16:20:00.000Z","key":1486484400000,"doc_count":11},{"key_as_string":"2017-02-07T16:21:00.000Z","key":1486484460000,"doc_count":14},{"key_as_string":"2017-02-07T16:22:00.000Z","key":1486484520000,"doc_count":15},{"key_as_string":"2017-02-07T16:23:00.000Z","key":1486484580000,"doc_count":8},{"key_as_string":"2017-02-07T16:24:00.000Z","key":1486484640000,"doc_count":14},{"key_as_string":"2017-02-07T16:25:00.000Z","key":1486484700000,"doc_count":10},{"key_as_string":"2017-02-07T16:26:00.000Z","key":1486484760000,"doc_count":10},{"key_as_string":"2017-02-07T16:27:00.000Z","key":1486484820000,"doc_count":14},{"key_as_string":"2017-02-07T16:28:00.000Z","key":1486484880000,"doc_count":19},{"key_as_string":"2017-02-07T16:29:00.000Z","key":1486484940000,"doc_count":9},{"key_as_string":"2017-02-07T16:30:00.000Z","key":1486485000000,"doc_count":15},{"key_as_string":"2017-02-07T16:31:00.000Z","key":1486485060000,"doc_count":13},{"key_as_string":"2017-02-07T16:32:00.000Z","key":1486485120000,"doc_count":10},{"key_as_string":"2017-02-07T16:33:00.000Z","key":1486485180000,"doc_count":12},{"key_as_string":"2017-02-07T16:34:00.000Z","key":1486485240000,"doc_count":12},{"key_as_string":"2017-02-07T16:35:00.000Z","key":1486485300000,"doc_count":17},{"key_as_string":"2017-02-07T16:36:00.000Z","key":1486485360000,"doc_count":8},{"key_as_string":"2017-02-07T16:37:00.000Z","key":1486485420000,"doc_count":17},{"key_as_string":"2017-02-07T16:38:00.000Z","key":1486485480000,"doc_count":13},{"key_as_string":"2017-02-07T16:39:00.000Z","key":1486485540000,"doc_count":7},{"key_as_string":"2017-02-07T16:40:00.000Z","key":1486485600000,"doc_count":11},{"key_as_string":"2017-02-07T16:41:00.000Z","key":1486485660000,"doc_count":14},{"key_as_string":"2017-02-07T16:42:00.000Z","key":1486485720000,"doc_count":16},{"key_as_string":"2017-02-07T16:43:00.000Z","key":1486485780000,"doc_count":11},{"key_as_string":"2017-02-07T16:44:00.000Z","key":1486485840000,"doc_count":15},{"key_as_string":"2017-02-07T16:45:00.000Z","key":1486485900000,"doc_count":15},{"key_as_string":"2017-02-07T16:46:00.000Z","key":1486485960000,"doc_count":11},{"key_as_string":"2017-02-07T16:47:00.000Z","key":1486486020000,"doc_count":11},{"key_as_string":"2017-02-07T16:48:00.000Z","key":1486486080000,"doc_count":12},{"key_as_string":"2017-02-07T16:49:00.000Z","key":1486486140000,"doc_count":12},{"key_as_string":"2017-02-07T16:50:00.000Z","key":1486486200000,"doc_count":11},{"key_as_string":"2017-02-07T16:51:00.000Z","key":1486486260000,"doc_count":12},{"key_as_string":"2017-02-07T16:52:00.000Z","key":1486486320000,"doc_count":12},{"key_as_string":"2017-02-07T16:53:00.000Z","key":1486486380000,"doc_count":14},{"key_as_string":"2017-02-07T16:54:00.000Z","key":1486486440000,"doc_count":10},{"key_as_string":"2017-02-07T16:55:00.000Z","key":1486486500000,"doc_count":12},{"key_as_string":"2017-02-07T16:56:00.000Z","key":1486486560000,"doc_count":15},{"key_as_string":"2017-02-07T16:57:00.000Z","key":1486486620000,"doc_count":14},{"key_as_string":"2017-02-07T16:58:00.000Z","key":1486486680000,"doc_count":9},{"key_as_string":"2017-02-07T16:59:00.000Z","key":1486486740000,"doc_count":15},{"key_as_string":"2017-02-07T17:00:00.000Z","key":1486486800000,"doc_count":10},{"key_as_string":"2017-02-07T17:01:00.000Z","key":1486486860000,"doc_count":9},{"key_as_string":"2017-02-07T17:02:00.000Z","key":1486486920000,"doc_count":15},{"key_as_string":"2017-02-07T17:03:00.000Z","key":1486486980000,"doc_count":11},{"key_as_string":"2017-02-07T17:04:00.000Z","key":1486487040000,"doc_count":11},{"key_as_string":"2017-02-07T17:05:00.000Z","key":1486487100000,"doc_count":6},{"key_as_string":"2017-02-07T17:06:00.000Z","key":1486487160000,"doc_count":20},{"key_as_string":"2017-02-07T17:07:00.000Z","key":1486487220000,"doc_count":12},{"key_as_string":"2017-02-07T17:08:00.000Z","key":1486487280000,"doc_count":10},{"key_as_string":"2017-02-07T17:09:00.000Z","key":1486487340000,"doc_count":15},{"key_as_string":"2017-02-07T17:10:00.000Z","key":1486487400000,"doc_count":15},{"key_as_string":"2017-02-07T17:11:00.000Z","key":1486487460000,"doc_count":12},{"key_as_string":"2017-02-07T17:12:00.000Z","key":1486487520000,"doc_count":10},{"key_as_string":"2017-02-07T17:13:00.000Z","key":1486487580000,"doc_count":14},{"key_as_string":"2017-02-07T17:14:00.000Z","key":1486487640000,"doc_count":11},{"key_as_string":"2017-02-07T17:15:00.000Z","key":1486487700000,"doc_count":15},{"key_as_string":"2017-02-07T17:16:00.000Z","key":1486487760000,"doc_count":9},{"key_as_string":"2017-02-07T17:17:00.000Z","key":1486487820000,"doc_count":15},{"key_as_string":"2017-02-07T17:18:00.000Z","key":1486487880000,"doc_count":10},{"key_as_string":"2017-02-07T17:19:00.000Z","key":1486487940000,"doc_count":15},{"key_as_string":"2017-02-07T17:20:00.000Z","key":1486488000000,"doc_count":8},{"key_as_string":"2017-02-07T17:21:00.000Z","key":1486488060000,"doc_count":9},{"key_as_string":"2017-02-07T17:22:00.000Z","key":1486488120000,"doc_count":13},{"key_as_string":"2017-02-07T17:23:00.000Z","key":1486488180000,"doc_count":12},{"key_as_string":"2017-02-07T17:24:00.000Z","key":1486488240000,"doc_count":12},{"key_as_string":"2017-02-07T17:25:00.000Z","key":1486488300000,"doc_count":13},{"key_as_string":"2017-02-07T17:26:00.000Z","key":1486488360000,"doc_count":12},{"key_as_string":"2017-02-07T17:27:00.000Z","key":1486488420000,"doc_count":13},{"key_as_string":"2017-02-07T17:28:00.000Z","key":1486488480000,"doc_count":13},{"key_as_string":"2017-02-07T17:29:00.000Z","key":1486488540000,"doc_count":13},{"key_as_string":"2017-02-07T17:30:00.000Z","key":1486488600000,"doc_count":15},{"key_as_string":"2017-02-07T17:31:00.000Z","key":1486488660000,"doc_count":11},{"key_as_string":"2017-02-07T17:32:00.000Z","key":1486488720000,"doc_count":10},{"key_as_string":"2017-02-07T17:33:00.000Z","key":1486488780000,"doc_count":10},{"key_as_string":"2017-02-07T17:34:00.000Z","key":1486488840000,"doc_count":10},{"key_as_string":"2017-02-07T17:35:00.000Z","key":1486488900000,"doc_count":12},{"key_as_string":"2017-02-07T17:36:00.000Z","key":1486488960000,"doc_count":15},{"key_as_string":"2017-02-07T17:37:00.000Z","key":1486489020000,"doc_count":8},{"key_as_string":"2017-02-07T17:38:00.000Z","key":1486489080000,"doc_count":15},{"key_as_string":"2017-02-07T17:39:00.000Z","key":1486489140000,"doc_count":11},{"key_as_string":"2017-02-07T17:40:00.000Z","key":1486489200000,"doc_count":8},{"key_as_string":"2017-02-07T17:41:00.000Z","key":1486489260000,"doc_count":17},{"key_as_string":"2017-02-07T17:42:00.000Z","key":1486489320000,"doc_count":16},{"key_as_string":"2017-02-07T17:43:00.000Z","key":1486489380000,"doc_count":12},{"key_as_string":"2017-02-07T17:44:00.000Z","key":1486489440000,"doc_count":8},{"key_as_string":"2017-02-07T17:45:00.000Z","key":1486489500000,"doc_count":12},{"key_as_string":"2017-02-07T17:46:00.000Z","key":1486489560000,"doc_count":13},{"key_as_string":"2017-02-07T17:47:00.000Z","key":1486489620000,"doc_count":8},{"key_as_string":"2017-02-07T17:48:00.000Z","key":1486489680000,"doc_count":7},{"key_as_string":"2017-02-07T17:49:00.000Z","key":1486489740000,"doc_count":16},{"key_as_string":"2017-02-07T17:50:00.000Z","key":1486489800000,"doc_count":13},{"key_as_string":"2017-02-07T17:51:00.000Z","key":1486489860000,"doc_count":11},{"key_as_string":"2017-02-07T17:52:00.000Z","key":1486489920000,"doc_count":14},{"key_as_string":"2017-02-07T17:53:00.000Z","key":1486489980000,"doc_count":8},{"key_as_string":"2017-02-07T17:54:00.000Z","key":1486490040000,"doc_count":10},{"key_as_string":"2017-02-07T17:55:00.000Z","key":1486490100000,"doc_count":12},{"key_as_string":"2017-02-07T17:56:00.000Z","key":1486490160000,"doc_count":11},{"key_as_string":"2017-02-07T17:57:00.000Z","key":1486490220000,"doc_count":9},{"key_as_string":"2017-02-07T17:58:00.000Z","key":1486490280000,"doc_count":10},{"key_as_string":"2017-02-07T17:59:00.000Z","key":1486490340000,"doc_count":11},{"key_as_string":"2017-02-07T18:00:00.000Z","key":1486490400000,"doc_count":8},{"key_as_string":"2017-02-07T18:01:00.000Z","key":1486490460000,"doc_count":13},{"key_as_string":"2017-02-07T18:02:00.000Z","key":1486490520000,"doc_count":19},{"key_as_string":"2017-02-07T18:03:00.000Z","key":1486490580000,"doc_count":7},{"key_as_string":"2017-02-07T18:04:00.000Z","key":1486490640000,"doc_count":11},{"key_as_string":"2017-02-07T18:05:00.000Z","key":1486490700000,"doc_count":11},{"key_as_string":"2017-02-07T18:06:00.000Z","key":1486490760000,"doc_count":9},{"key_as_string":"2017-02-07T18:07:00.000Z","key":1486490820000,"doc_count":16},{"key_as_string":"2017-02-07T18:08:00.000Z","key":1486490880000,"doc_count":13},{"key_as_string":"2017-02-07T18:09:00.000Z","key":1486490940000,"doc_count":9},{"key_as_string":"2017-02-07T18:10:00.000Z","key":1486491000000,"doc_count":14},{"key_as_string":"2017-02-07T18:11:00.000Z","key":1486491060000,"doc_count":9},{"key_as_string":"2017-02-07T18:12:00.000Z","key":1486491120000,"doc_count":12},{"key_as_string":"2017-02-07T18:13:00.000Z","key":1486491180000,"doc_count":12},{"key_as_string":"2017-02-07T18:14:00.000Z","key":1486491240000,"doc_count":10},{"key_as_string":"2017-02-07T18:15:00.000Z","key":1486491300000,"doc_count":13},{"key_as_string":"2017-02-07T18:16:00.000Z","key":1486491360000,"doc_count":11},{"key_as_string":"2017-02-07T18:17:00.000Z","key":1486491420000,"doc_count":13},{"key_as_string":"2017-02-07T18:18:00.000Z","key":1486491480000,"doc_count":10},{"key_as_string":"2017-02-07T18:19:00.000Z","key":1486491540000,"doc_count":10},{"key_as_string":"2017-02-07T18:20:00.000Z","key":1486491600000,"doc_count":8},{"key_as_string":"2017-02-07T18:21:00.000Z","key":1486491660000,"doc_count":15},{"key_as_string":"2017-02-07T18:22:00.000Z","key":1486491720000,"doc_count":16},{"key_as_string":"2017-02-07T18:23:00.000Z","key":1486491780000,"doc_count":14},{"key_as_string":"2017-02-07T18:24:00.000Z","key":1486491840000,"doc_count":17},{"key_as_string":"2017-02-07T18:25:00.000Z","key":1486491900000,"doc_count":11},{"key_as_string":"2017-02-07T18:26:00.000Z","key":1486491960000,"doc_count":13},{"key_as_string":"2017-02-07T18:27:00.000Z","key":1486492020000,"doc_count":15},{"key_as_string":"2017-02-07T18:28:00.000Z","key":1486492080000,"doc_count":13},{"key_as_string":"2017-02-07T18:29:00.000Z","key":1486492140000,"doc_count":13},{"key_as_string":"2017-02-07T18:30:00.000Z","key":1486492200000,"doc_count":12},{"key_as_string":"2017-02-07T18:31:00.000Z","key":1486492260000,"doc_count":14},{"key_as_string":"2017-02-07T18:32:00.000Z","key":1486492320000,"doc_count":13},{"key_as_string":"2017-02-07T18:33:00.000Z","key":1486492380000,"doc_count":6},{"key_as_string":"2017-02-07T18:34:00.000Z","key":1486492440000,"doc_count":14},{"key_as_string":"2017-02-07T18:35:00.000Z","key":1486492500000,"doc_count":14},{"key_as_string":"2017-02-07T18:36:00.000Z","key":1486492560000,"doc_count":9},{"key_as_string":"2017-02-07T18:37:00.000Z","key":1486492620000,"doc_count":12},{"key_as_string":"2017-02-07T18:38:00.000Z","key":1486492680000,"doc_count":8},{"key_as_string":"2017-02-07T18:39:00.000Z","key":1486492740000,"doc_count":13},{"key_as_string":"2017-02-07T18:40:00.000Z","key":1486492800000,"doc_count":6},{"key_as_string":"2017-02-07T18:41:00.000Z","key":1486492860000,"doc_count":16},{"key_as_string":"2017-02-07T18:42:00.000Z","key":1486492920000,"doc_count":12},{"key_as_string":"2017-02-07T18:43:00.000Z","key":1486492980000,"doc_count":9},{"key_as_string":"2017-02-07T18:44:00.000Z","key":1486493040000,"doc_count":14},{"key_as_string":"2017-02-07T18:45:00.000Z","key":1486493100000,"doc_count":14},{"key_as_string":"2017-02-07T18:46:00.000Z","key":1486493160000,"doc_count":8},{"key_as_string":"2017-02-07T18:47:00.000Z","key":1486493220000,"doc_count":12},{"key_as_string":"2017-02-07T18:48:00.000Z","key":1486493280000,"doc_count":11},{"key_as_string":"2017-02-07T18:49:00.000Z","key":1486493340000,"doc_count":14},{"key_as_string":"2017-02-07T18:50:00.000Z","key":1486493400000,"doc_count":10},{"key_as_string":"2017-02-07T18:51:00.000Z","key":1486493460000,"doc_count":11},{"key_as_string":"2017-02-07T18:52:00.000Z","key":1486493520000,"doc_count":17},{"key_as_string":"2017-02-07T18:53:00.000Z","key":1486493580000,"doc_count":11},{"key_as_string":"2017-02-07T18:54:00.000Z","key":1486493640000,"doc_count":12},{"key_as_string":"2017-02-07T18:55:00.000Z","key":1486493700000,"doc_count":10},{"key_as_string":"2017-02-07T18:56:00.000Z","key":1486493760000,"doc_count":10},{"key_as_string":"2017-02-07T18:57:00.000Z","key":1486493820000,"doc_count":11},{"key_as_string":"2017-02-07T18:58:00.000Z","key":1486493880000,"doc_count":11},{"key_as_string":"2017-02-07T18:59:00.000Z","key":1486493940000,"doc_count":13},{"key_as_string":"2017-02-07T19:00:00.000Z","key":1486494000000,"doc_count":9},{"key_as_string":"2017-02-07T19:01:00.000Z","key":1486494060000,"doc_count":15},{"key_as_string":"2017-02-07T19:02:00.000Z","key":1486494120000,"doc_count":10},{"key_as_string":"2017-02-07T19:03:00.000Z","key":1486494180000,"doc_count":11},{"key_as_string":"2017-02-07T19:04:00.000Z","key":1486494240000,"doc_count":10},{"key_as_string":"2017-02-07T19:05:00.000Z","key":1486494300000,"doc_count":10},{"key_as_string":"2017-02-07T19:06:00.000Z","key":1486494360000,"doc_count":15},{"key_as_string":"2017-02-07T19:07:00.000Z","key":1486494420000,"doc_count":14},{"key_as_string":"2017-02-07T19:08:00.000Z","key":1486494480000,"doc_count":7},{"key_as_string":"2017-02-07T19:09:00.000Z","key":1486494540000,"doc_count":14},{"key_as_string":"2017-02-07T19:10:00.000Z","key":1486494600000,"doc_count":8},{"key_as_string":"2017-02-07T19:11:00.000Z","key":1486494660000,"doc_count":11},{"key_as_string":"2017-02-07T19:12:00.000Z","key":1486494720000,"doc_count":10},{"key_as_string":"2017-02-07T19:13:00.000Z","key":1486494780000,"doc_count":11},{"key_as_string":"2017-02-07T19:14:00.000Z","key":1486494840000,"doc_count":13},{"key_as_string":"2017-02-07T19:15:00.000Z","key":1486494900000,"doc_count":16},{"key_as_string":"2017-02-07T19:16:00.000Z","key":1486494960000,"doc_count":5},{"key_as_string":"2017-02-07T19:17:00.000Z","key":1486495020000,"doc_count":14},{"key_as_string":"2017-02-07T19:18:00.000Z","key":1486495080000,"doc_count":13},{"key_as_string":"2017-02-07T19:19:00.000Z","key":1486495140000,"doc_count":10},{"key_as_string":"2017-02-07T19:20:00.000Z","key":1486495200000,"doc_count":13},{"key_as_string":"2017-02-07T19:21:00.000Z","key":1486495260000,"doc_count":10},{"key_as_string":"2017-02-07T19:22:00.000Z","key":1486495320000,"doc_count":12},{"key_as_string":"2017-02-07T19:23:00.000Z","key":1486495380000,"doc_count":13},{"key_as_string":"2017-02-07T19:24:00.000Z","key":1486495440000,"doc_count":10},{"key_as_string":"2017-02-07T19:25:00.000Z","key":1486495500000,"doc_count":10},{"key_as_string":"2017-02-07T19:26:00.000Z","key":1486495560000,"doc_count":11},{"key_as_string":"2017-02-07T19:27:00.000Z","key":1486495620000,"doc_count":9},{"key_as_string":"2017-02-07T19:28:00.000Z","key":1486495680000,"doc_count":10},{"key_as_string":"2017-02-07T19:29:00.000Z","key":1486495740000,"doc_count":14},{"key_as_string":"2017-02-07T19:30:00.000Z","key":1486495800000,"doc_count":14},{"key_as_string":"2017-02-07T19:31:00.000Z","key":1486495860000,"doc_count":12},{"key_as_string":"2017-02-07T19:32:00.000Z","key":1486495920000,"doc_count":6},{"key_as_string":"2017-02-07T19:33:00.000Z","key":1486495980000,"doc_count":11},{"key_as_string":"2017-02-07T19:34:00.000Z","key":1486496040000,"doc_count":12},{"key_as_string":"2017-02-07T19:35:00.000Z","key":1486496100000,"doc_count":9},{"key_as_string":"2017-02-07T19:36:00.000Z","key":1486496160000,"doc_count":11},{"key_as_string":"2017-02-07T19:37:00.000Z","key":1486496220000,"doc_count":14},{"key_as_string":"2017-02-07T19:38:00.000Z","key":1486496280000,"doc_count":9},{"key_as_string":"2017-02-07T19:39:00.000Z","key":1486496340000,"doc_count":10},{"key_as_string":"2017-02-07T19:40:00.000Z","key":1486496400000,"doc_count":10},{"key_as_string":"2017-02-07T19:41:00.000Z","key":1486496460000,"doc_count":9},{"key_as_string":"2017-02-07T19:42:00.000Z","key":1486496520000,"doc_count":12},{"key_as_string":"2017-02-07T19:43:00.000Z","key":1486496580000,"doc_count":10},{"key_as_string":"2017-02-07T19:44:00.000Z","key":1486496640000,"doc_count":10},{"key_as_string":"2017-02-07T19:45:00.000Z","key":1486496700000,"doc_count":14},{"key_as_string":"2017-02-07T19:46:00.000Z","key":1486496760000,"doc_count":7},{"key_as_string":"2017-02-07T19:47:00.000Z","key":1486496820000,"doc_count":14},{"key_as_string":"2017-02-07T19:48:00.000Z","key":1486496880000,"doc_count":12},{"key_as_string":"2017-02-07T19:49:00.000Z","key":1486496940000,"doc_count":8},{"key_as_string":"2017-02-07T19:50:00.000Z","key":1486497000000,"doc_count":14},{"key_as_string":"2017-02-07T19:51:00.000Z","key":1486497060000,"doc_count":7},{"key_as_string":"2017-02-07T19:52:00.000Z","key":1486497120000,"doc_count":14},{"key_as_string":"2017-02-07T19:53:00.000Z","key":1486497180000,"doc_count":10},{"key_as_string":"2017-02-07T19:54:00.000Z","key":1486497240000,"doc_count":9},{"key_as_string":"2017-02-07T19:55:00.000Z","key":1486497300000,"doc_count":13},{"key_as_string":"2017-02-07T19:56:00.000Z","key":1486497360000,"doc_count":6},{"key_as_string":"2017-02-07T19:57:00.000Z","key":1486497420000,"doc_count":7},{"key_as_string":"2017-02-07T19:58:00.000Z","key":1486497480000,"doc_count":13},{"key_as_string":"2017-02-07T19:59:00.000Z","key":1486497540000,"doc_count":14},{"key_as_string":"2017-02-07T20:00:00.000Z","key":1486497600000,"doc_count":9},{"key_as_string":"2017-02-07T20:01:00.000Z","key":1486497660000,"doc_count":12},{"key_as_string":"2017-02-07T20:02:00.000Z","key":1486497720000,"doc_count":9},{"key_as_string":"2017-02-07T20:03:00.000Z","key":1486497780000,"doc_count":11},{"key_as_string":"2017-02-07T20:04:00.000Z","key":1486497840000,"doc_count":12},{"key_as_string":"2017-02-07T20:05:00.000Z","key":1486497900000,"doc_count":15},{"key_as_string":"2017-02-07T20:06:00.000Z","key":1486497960000,"doc_count":8},{"key_as_string":"2017-02-07T20:07:00.000Z","key":1486498020000,"doc_count":3},{"key_as_string":"2017-02-07T20:08:00.000Z","key":1486498080000,"doc_count":12},{"key_as_string":"2017-02-07T20:09:00.000Z","key":1486498140000,"doc_count":12},{"key_as_string":"2017-02-07T20:10:00.000Z","key":1486498200000,"doc_count":10},{"key_as_string":"2017-02-07T20:11:00.000Z","key":1486498260000,"doc_count":16},{"key_as_string":"2017-02-07T20:12:00.000Z","key":1486498320000,"doc_count":12},{"key_as_string":"2017-02-07T20:13:00.000Z","key":1486498380000,"doc_count":6},{"key_as_string":"2017-02-07T20:14:00.000Z","key":1486498440000,"doc_count":12},{"key_as_string":"2017-02-07T20:15:00.000Z","key":1486498500000,"doc_count":7},{"key_as_string":"2017-02-07T20:16:00.000Z","key":1486498560000,"doc_count":12},{"key_as_string":"2017-02-07T20:17:00.000Z","key":1486498620000,"doc_count":9},{"key_as_string":"2017-02-07T20:18:00.000Z","key":1486498680000,"doc_count":13},{"key_as_string":"2017-02-07T20:19:00.000Z","key":1486498740000,"doc_count":11},{"key_as_string":"2017-02-07T20:20:00.000Z","key":1486498800000,"doc_count":8},{"key_as_string":"2017-02-07T20:21:00.000Z","key":1486498860000,"doc_count":11},{"key_as_string":"2017-02-07T20:22:00.000Z","key":1486498920000,"doc_count":7},{"key_as_string":"2017-02-07T20:23:00.000Z","key":1486498980000,"doc_count":11},{"key_as_string":"2017-02-07T20:24:00.000Z","key":1486499040000,"doc_count":11},{"key_as_string":"2017-02-07T20:25:00.000Z","key":1486499100000,"doc_count":7},{"key_as_string":"2017-02-07T20:26:00.000Z","key":1486499160000,"doc_count":11},{"key_as_string":"2017-02-07T20:27:00.000Z","key":1486499220000,"doc_count":12},{"key_as_string":"2017-02-07T20:28:00.000Z","key":1486499280000,"doc_count":13},{"key_as_string":"2017-02-07T20:29:00.000Z","key":1486499340000,"doc_count":11},{"key_as_string":"2017-02-07T20:30:00.000Z","key":1486499400000,"doc_count":6},{"key_as_string":"2017-02-07T20:31:00.000Z","key":1486499460000,"doc_count":12},{"key_as_string":"2017-02-07T20:32:00.000Z","key":1486499520000,"doc_count":9},{"key_as_string":"2017-02-07T20:33:00.000Z","key":1486499580000,"doc_count":13},{"key_as_string":"2017-02-07T20:34:00.000Z","key":1486499640000,"doc_count":11},{"key_as_string":"2017-02-07T20:35:00.000Z","key":1486499700000,"doc_count":16},{"key_as_string":"2017-02-07T20:36:00.000Z","key":1486499760000,"doc_count":9},{"key_as_string":"2017-02-07T20:37:00.000Z","key":1486499820000,"doc_count":7},{"key_as_string":"2017-02-07T20:38:00.000Z","key":1486499880000,"doc_count":14},{"key_as_string":"2017-02-07T20:39:00.000Z","key":1486499940000,"doc_count":10},{"key_as_string":"2017-02-07T20:40:00.000Z","key":1486500000000,"doc_count":9},{"key_as_string":"2017-02-07T20:41:00.000Z","key":1486500060000,"doc_count":11},{"key_as_string":"2017-02-07T20:42:00.000Z","key":1486500120000,"doc_count":15},{"key_as_string":"2017-02-07T20:43:00.000Z","key":1486500180000,"doc_count":8},{"key_as_string":"2017-02-07T20:44:00.000Z","key":1486500240000,"doc_count":16},{"key_as_string":"2017-02-07T20:45:00.000Z","key":1486500300000,"doc_count":8},{"key_as_string":"2017-02-07T20:46:00.000Z","key":1486500360000,"doc_count":12},{"key_as_string":"2017-02-07T20:47:00.000Z","key":1486500420000,"doc_count":11},{"key_as_string":"2017-02-07T20:48:00.000Z","key":1486500480000,"doc_count":6},{"key_as_string":"2017-02-07T20:49:00.000Z","key":1486500540000,"doc_count":10},{"key_as_string":"2017-02-07T20:50:00.000Z","key":1486500600000,"doc_count":8},{"key_as_string":"2017-02-07T20:51:00.000Z","key":1486500660000,"doc_count":15},{"key_as_string":"2017-02-07T20:52:00.000Z","key":1486500720000,"doc_count":9},{"key_as_string":"2017-02-07T20:53:00.000Z","key":1486500780000,"doc_count":11},{"key_as_string":"2017-02-07T20:54:00.000Z","key":1486500840000,"doc_count":13},{"key_as_string":"2017-02-07T20:55:00.000Z","key":1486500900000,"doc_count":9},{"key_as_string":"2017-02-07T20:56:00.000Z","key":1486500960000,"doc_count":5},{"key_as_string":"2017-02-07T20:57:00.000Z","key":1486501020000,"doc_count":10},{"key_as_string":"2017-02-07T20:58:00.000Z","key":1486501080000,"doc_count":13},{"key_as_string":"2017-02-07T20:59:00.000Z","key":1486501140000,"doc_count":14},{"key_as_string":"2017-02-07T21:00:00.000Z","key":1486501200000,"doc_count":13},{"key_as_string":"2017-02-07T21:01:00.000Z","key":1486501260000,"doc_count":8},{"key_as_string":"2017-02-07T21:02:00.000Z","key":1486501320000,"doc_count":11},{"key_as_string":"2017-02-07T21:03:00.000Z","key":1486501380000,"doc_count":9},{"key_as_string":"2017-02-07T21:04:00.000Z","key":1486501440000,"doc_count":16},{"key_as_string":"2017-02-07T21:05:00.000Z","key":1486501500000,"doc_count":10},{"key_as_string":"2017-02-07T21:06:00.000Z","key":1486501560000,"doc_count":8},{"key_as_string":"2017-02-07T21:07:00.000Z","key":1486501620000,"doc_count":16},{"key_as_string":"2017-02-07T21:08:00.000Z","key":1486501680000,"doc_count":13},{"key_as_string":"2017-02-07T21:09:00.000Z","key":1486501740000,"doc_count":10},{"key_as_string":"2017-02-07T21:10:00.000Z","key":1486501800000,"doc_count":11},{"key_as_string":"2017-02-07T21:11:00.000Z","key":1486501860000,"doc_count":8},{"key_as_string":"2017-02-07T21:12:00.000Z","key":1486501920000,"doc_count":12},{"key_as_string":"2017-02-07T21:13:00.000Z","key":1486501980000,"doc_count":17},{"key_as_string":"2017-02-07T21:14:00.000Z","key":1486502040000,"doc_count":6},{"key_as_string":"2017-02-07T21:15:00.000Z","key":1486502100000,"doc_count":12},{"key_as_string":"2017-02-07T21:16:00.000Z","key":1486502160000,"doc_count":9},{"key_as_string":"2017-02-07T21:17:00.000Z","key":1486502220000,"doc_count":8},{"key_as_string":"2017-02-07T21:18:00.000Z","key":1486502280000,"doc_count":8},{"key_as_string":"2017-02-07T21:19:00.000Z","key":1486502340000,"doc_count":11},{"key_as_string":"2017-02-07T21:20:00.000Z","key":1486502400000,"doc_count":11},{"key_as_string":"2017-02-07T21:21:00.000Z","key":1486502460000,"doc_count":10},{"key_as_string":"2017-02-07T21:22:00.000Z","key":1486502520000,"doc_count":10},{"key_as_string":"2017-02-07T21:23:00.000Z","key":1486502580000,"doc_count":13},{"key_as_string":"2017-02-07T21:24:00.000Z","key":1486502640000,"doc_count":10},{"key_as_string":"2017-02-07T21:25:00.000Z","key":1486502700000,"doc_count":11},{"key_as_string":"2017-02-07T21:26:00.000Z","key":1486502760000,"doc_count":7},{"key_as_string":"2017-02-07T21:27:00.000Z","key":1486502820000,"doc_count":15},{"key_as_string":"2017-02-07T21:28:00.000Z","key":1486502880000,"doc_count":14},{"key_as_string":"2017-02-07T21:29:00.000Z","key":1486502940000,"doc_count":8},{"key_as_string":"2017-02-07T21:30:00.000Z","key":1486503000000,"doc_count":7},{"key_as_string":"2017-02-07T21:31:00.000Z","key":1486503060000,"doc_count":12},{"key_as_string":"2017-02-07T21:32:00.000Z","key":1486503120000,"doc_count":10},{"key_as_string":"2017-02-07T21:33:00.000Z","key":1486503180000,"doc_count":10},{"key_as_string":"2017-02-07T21:34:00.000Z","key":1486503240000,"doc_count":14},{"key_as_string":"2017-02-07T21:35:00.000Z","key":1486503300000,"doc_count":9},{"key_as_string":"2017-02-07T21:36:00.000Z","key":1486503360000,"doc_count":9},{"key_as_string":"2017-02-07T21:37:00.000Z","key":1486503420000,"doc_count":13},{"key_as_string":"2017-02-07T21:38:00.000Z","key":1486503480000,"doc_count":7},{"key_as_string":"2017-02-07T21:39:00.000Z","key":1486503540000,"doc_count":6},{"key_as_string":"2017-02-07T21:40:00.000Z","key":1486503600000,"doc_count":16},{"key_as_string":"2017-02-07T21:41:00.000Z","key":1486503660000,"doc_count":13},{"key_as_string":"2017-02-07T21:42:00.000Z","key":1486503720000,"doc_count":9},{"key_as_string":"2017-02-07T21:43:00.000Z","key":1486503780000,"doc_count":10},{"key_as_string":"2017-02-07T21:44:00.000Z","key":1486503840000,"doc_count":9},{"key_as_string":"2017-02-07T21:45:00.000Z","key":1486503900000,"doc_count":10},{"key_as_string":"2017-02-07T21:46:00.000Z","key":1486503960000,"doc_count":13},{"key_as_string":"2017-02-07T21:47:00.000Z","key":1486504020000,"doc_count":11},{"key_as_string":"2017-02-07T21:48:00.000Z","key":1486504080000,"doc_count":8},{"key_as_string":"2017-02-07T21:49:00.000Z","key":1486504140000,"doc_count":11},{"key_as_string":"2017-02-07T21:50:00.000Z","key":1486504200000,"doc_count":14},{"key_as_string":"2017-02-07T21:51:00.000Z","key":1486504260000,"doc_count":7},{"key_as_string":"2017-02-07T21:52:00.000Z","key":1486504320000,"doc_count":11},{"key_as_string":"2017-02-07T21:53:00.000Z","key":1486504380000,"doc_count":9},{"key_as_string":"2017-02-07T21:54:00.000Z","key":1486504440000,"doc_count":10},{"key_as_string":"2017-02-07T21:55:00.000Z","key":1486504500000,"doc_count":11},{"key_as_string":"2017-02-07T21:56:00.000Z","key":1486504560000,"doc_count":12},{"key_as_string":"2017-02-07T21:57:00.000Z","key":1486504620000,"doc_count":14},{"key_as_string":"2017-02-07T21:58:00.000Z","key":1486504680000,"doc_count":9},{"key_as_string":"2017-02-07T21:59:00.000Z","key":1486504740000,"doc_count":7},{"key_as_string":"2017-02-07T22:00:00.000Z","key":1486504800000,"doc_count":14},{"key_as_string":"2017-02-07T22:01:00.000Z","key":1486504860000,"doc_count":12},{"key_as_string":"2017-02-07T22:02:00.000Z","key":1486504920000,"doc_count":7},{"key_as_string":"2017-02-07T22:03:00.000Z","key":1486504980000,"doc_count":16},{"key_as_string":"2017-02-07T22:04:00.000Z","key":1486505040000,"doc_count":9},{"key_as_string":"2017-02-07T22:05:00.000Z","key":1486505100000,"doc_count":10},{"key_as_string":"2017-02-07T22:06:00.000Z","key":1486505160000,"doc_count":11},{"key_as_string":"2017-02-07T22:07:00.000Z","key":1486505220000,"doc_count":16},{"key_as_string":"2017-02-07T22:08:00.000Z","key":1486505280000,"doc_count":9},{"key_as_string":"2017-02-07T22:09:00.000Z","key":1486505340000,"doc_count":7},{"key_as_string":"2017-02-07T22:10:00.000Z","key":1486505400000,"doc_count":15},{"key_as_string":"2017-02-07T22:11:00.000Z","key":1486505460000,"doc_count":12},{"key_as_string":"2017-02-07T22:12:00.000Z","key":1486505520000,"doc_count":8},{"key_as_string":"2017-02-07T22:13:00.000Z","key":1486505580000,"doc_count":12},{"key_as_string":"2017-02-07T22:14:00.000Z","key":1486505640000,"doc_count":15},{"key_as_string":"2017-02-07T22:15:00.000Z","key":1486505700000,"doc_count":10},{"key_as_string":"2017-02-07T22:16:00.000Z","key":1486505760000,"doc_count":11},{"key_as_string":"2017-02-07T22:17:00.000Z","key":1486505820000,"doc_count":6},{"key_as_string":"2017-02-07T22:18:00.000Z","key":1486505880000,"doc_count":13},{"key_as_string":"2017-02-07T22:19:00.000Z","key":1486505940000,"doc_count":8},{"key_as_string":"2017-02-07T22:20:00.000Z","key":1486506000000,"doc_count":5},{"key_as_string":"2017-02-07T22:21:00.000Z","key":1486506060000,"doc_count":15},{"key_as_string":"2017-02-07T22:22:00.000Z","key":1486506120000,"doc_count":10},{"key_as_string":"2017-02-07T22:23:00.000Z","key":1486506180000,"doc_count":10},{"key_as_string":"2017-02-07T22:24:00.000Z","key":1486506240000,"doc_count":14},{"key_as_string":"2017-02-07T22:25:00.000Z","key":1486506300000,"doc_count":8},{"key_as_string":"2017-02-07T22:26:00.000Z","key":1486506360000,"doc_count":12},{"key_as_string":"2017-02-07T22:27:00.000Z","key":1486506420000,"doc_count":6},{"key_as_string":"2017-02-07T22:28:00.000Z","key":1486506480000,"doc_count":12},{"key_as_string":"2017-02-07T22:29:00.000Z","key":1486506540000,"doc_count":14},{"key_as_string":"2017-02-07T22:30:00.000Z","key":1486506600000,"doc_count":8},{"key_as_string":"2017-02-07T22:31:00.000Z","key":1486506660000,"doc_count":10},{"key_as_string":"2017-02-07T22:32:00.000Z","key":1486506720000,"doc_count":15},{"key_as_string":"2017-02-07T22:33:00.000Z","key":1486506780000,"doc_count":9},{"key_as_string":"2017-02-07T22:34:00.000Z","key":1486506840000,"doc_count":7},{"key_as_string":"2017-02-07T22:35:00.000Z","key":1486506900000,"doc_count":12},{"key_as_string":"2017-02-07T22:36:00.000Z","key":1486506960000,"doc_count":9},{"key_as_string":"2017-02-07T22:37:00.000Z","key":1486507020000,"doc_count":15},{"key_as_string":"2017-02-07T22:38:00.000Z","key":1486507080000,"doc_count":6},{"key_as_string":"2017-02-07T22:39:00.000Z","key":1486507140000,"doc_count":12},{"key_as_string":"2017-02-07T22:40:00.000Z","key":1486507200000,"doc_count":13},{"key_as_string":"2017-02-07T22:41:00.000Z","key":1486507260000,"doc_count":8},{"key_as_string":"2017-02-07T22:42:00.000Z","key":1486507320000,"doc_count":13},{"key_as_string":"2017-02-07T22:43:00.000Z","key":1486507380000,"doc_count":7},{"key_as_string":"2017-02-07T22:44:00.000Z","key":1486507440000,"doc_count":10},{"key_as_string":"2017-02-07T22:45:00.000Z","key":1486507500000,"doc_count":7},{"key_as_string":"2017-02-07T22:46:00.000Z","key":1486507560000,"doc_count":9},{"key_as_string":"2017-02-07T22:47:00.000Z","key":1486507620000,"doc_count":12},{"key_as_string":"2017-02-07T22:48:00.000Z","key":1486507680000,"doc_count":9},{"key_as_string":"2017-02-07T22:49:00.000Z","key":1486507740000,"doc_count":6},{"key_as_string":"2017-02-07T22:50:00.000Z","key":1486507800000,"doc_count":12},{"key_as_string":"2017-02-07T22:51:00.000Z","key":1486507860000,"doc_count":12},{"key_as_string":"2017-02-07T22:52:00.000Z","key":1486507920000,"doc_count":9},{"key_as_string":"2017-02-07T22:53:00.000Z","key":1486507980000,"doc_count":10},{"key_as_string":"2017-02-07T22:54:00.000Z","key":1486508040000,"doc_count":12},{"key_as_string":"2017-02-07T22:55:00.000Z","key":1486508100000,"doc_count":8},{"key_as_string":"2017-02-07T22:56:00.000Z","key":1486508160000,"doc_count":9},{"key_as_string":"2017-02-07T22:57:00.000Z","key":1486508220000,"doc_count":10},{"key_as_string":"2017-02-07T22:58:00.000Z","key":1486508280000,"doc_count":13},{"key_as_string":"2017-02-07T22:59:00.000Z","key":1486508340000,"doc_count":12},{"key_as_string":"2017-02-07T23:00:00.000Z","key":1486508400000,"doc_count":9},{"key_as_string":"2017-02-07T23:01:00.000Z","key":1486508460000,"doc_count":9},{"key_as_string":"2017-02-07T23:02:00.000Z","key":1486508520000,"doc_count":10},{"key_as_string":"2017-02-07T23:03:00.000Z","key":1486508580000,"doc_count":14},{"key_as_string":"2017-02-07T23:04:00.000Z","key":1486508640000,"doc_count":9},{"key_as_string":"2017-02-07T23:05:00.000Z","key":1486508700000,"doc_count":11},{"key_as_string":"2017-02-07T23:06:00.000Z","key":1486508760000,"doc_count":10},{"key_as_string":"2017-02-07T23:07:00.000Z","key":1486508820000,"doc_count":16},{"key_as_string":"2017-02-07T23:08:00.000Z","key":1486508880000,"doc_count":12},{"key_as_string":"2017-02-07T23:09:00.000Z","key":1486508940000,"doc_count":11},{"key_as_string":"2017-02-07T23:10:00.000Z","key":1486509000000,"doc_count":9},{"key_as_string":"2017-02-07T23:11:00.000Z","key":1486509060000,"doc_count":13},{"key_as_string":"2017-02-07T23:12:00.000Z","key":1486509120000,"doc_count":5},{"key_as_string":"2017-02-07T23:13:00.000Z","key":1486509180000,"doc_count":9},{"key_as_string":"2017-02-07T23:14:00.000Z","key":1486509240000,"doc_count":11},{"key_as_string":"2017-02-07T23:15:00.000Z","key":1486509300000,"doc_count":14},{"key_as_string":"2017-02-07T23:16:00.000Z","key":1486509360000,"doc_count":11},{"key_as_string":"2017-02-07T23:17:00.000Z","key":1486509420000,"doc_count":8},{"key_as_string":"2017-02-07T23:18:00.000Z","key":1486509480000,"doc_count":12},{"key_as_string":"2017-02-07T23:19:00.000Z","key":1486509540000,"doc_count":8},{"key_as_string":"2017-02-07T23:20:00.000Z","key":1486509600000,"doc_count":7},{"key_as_string":"2017-02-07T23:21:00.000Z","key":1486509660000,"doc_count":13},{"key_as_string":"2017-02-07T23:22:00.000Z","key":1486509720000,"doc_count":13},{"key_as_string":"2017-02-07T23:23:00.000Z","key":1486509780000,"doc_count":5},{"key_as_string":"2017-02-07T23:24:00.000Z","key":1486509840000,"doc_count":13},{"key_as_string":"2017-02-07T23:25:00.000Z","key":1486509900000,"doc_count":5},{"key_as_string":"2017-02-07T23:26:00.000Z","key":1486509960000,"doc_count":11},{"key_as_string":"2017-02-07T23:27:00.000Z","key":1486510020000,"doc_count":11},{"key_as_string":"2017-02-07T23:28:00.000Z","key":1486510080000,"doc_count":12},{"key_as_string":"2017-02-07T23:29:00.000Z","key":1486510140000,"doc_count":5},{"key_as_string":"2017-02-07T23:30:00.000Z","key":1486510200000,"doc_count":11},{"key_as_string":"2017-02-07T23:31:00.000Z","key":1486510260000,"doc_count":6},{"key_as_string":"2017-02-07T23:32:00.000Z","key":1486510320000,"doc_count":15},{"key_as_string":"2017-02-07T23:33:00.000Z","key":1486510380000,"doc_count":13},{"key_as_string":"2017-02-07T23:34:00.000Z","key":1486510440000,"doc_count":15},{"key_as_string":"2017-02-07T23:35:00.000Z","key":1486510500000,"doc_count":8},{"key_as_string":"2017-02-07T23:36:00.000Z","key":1486510560000,"doc_count":11},{"key_as_string":"2017-02-07T23:37:00.000Z","key":1486510620000,"doc_count":15},{"key_as_string":"2017-02-07T23:38:00.000Z","key":1486510680000,"doc_count":7},{"key_as_string":"2017-02-07T23:39:00.000Z","key":1486510740000,"doc_count":11},{"key_as_string":"2017-02-07T23:40:00.000Z","key":1486510800000,"doc_count":7},{"key_as_string":"2017-02-07T23:41:00.000Z","key":1486510860000,"doc_count":9},{"key_as_string":"2017-02-07T23:42:00.000Z","key":1486510920000,"doc_count":11},{"key_as_string":"2017-02-07T23:43:00.000Z","key":1486510980000,"doc_count":12},{"key_as_string":"2017-02-07T23:44:00.000Z","key":1486511040000,"doc_count":19},{"key_as_string":"2017-02-07T23:45:00.000Z","key":1486511100000,"doc_count":6},{"key_as_string":"2017-02-07T23:46:00.000Z","key":1486511160000,"doc_count":12},{"key_as_string":"2017-02-07T23:47:00.000Z","key":1486511220000,"doc_count":7},{"key_as_string":"2017-02-07T23:48:00.000Z","key":1486511280000,"doc_count":19},{"key_as_string":"2017-02-07T23:49:00.000Z","key":1486511340000,"doc_count":4},{"key_as_string":"2017-02-07T23:50:00.000Z","key":1486511400000,"doc_count":15},{"key_as_string":"2017-02-07T23:51:00.000Z","key":1486511460000,"doc_count":9},{"key_as_string":"2017-02-07T23:52:00.000Z","key":1486511520000,"doc_count":7},{"key_as_string":"2017-02-07T23:53:00.000Z","key":1486511580000,"doc_count":11},{"key_as_string":"2017-02-07T23:54:00.000Z","key":1486511640000,"doc_count":11},{"key_as_string":"2017-02-07T23:55:00.000Z","key":1486511700000,"doc_count":10},{"key_as_string":"2017-02-07T23:56:00.000Z","key":1486511760000,"doc_count":7},{"key_as_string":"2017-02-07T23:57:00.000Z","key":1486511820000,"doc_count":16},{"key_as_string":"2017-02-07T23:58:00.000Z","key":1486511880000,"doc_count":9},{"key_as_string":"2017-02-07T23:59:00.000Z","key":1486511940000,"doc_count":13},{"key_as_string":"2017-02-08T00:00:00.000Z","key":1486512000000,"doc_count":11},{"key_as_string":"2017-02-08T00:01:00.000Z","key":1486512060000,"doc_count":8},{"key_as_string":"2017-02-08T00:02:00.000Z","key":1486512120000,"doc_count":11},{"key_as_string":"2017-02-08T00:03:00.000Z","key":1486512180000,"doc_count":11},{"key_as_string":"2017-02-08T00:04:00.000Z","key":1486512240000,"doc_count":10},{"key_as_string":"2017-02-08T00:05:00.000Z","key":1486512300000,"doc_count":11},{"key_as_string":"2017-02-08T00:06:00.000Z","key":1486512360000,"doc_count":9},{"key_as_string":"2017-02-08T00:07:00.000Z","key":1486512420000,"doc_count":10},{"key_as_string":"2017-02-08T00:08:00.000Z","key":1486512480000,"doc_count":9},{"key_as_string":"2017-02-08T00:09:00.000Z","key":1486512540000,"doc_count":12},{"key_as_string":"2017-02-08T00:10:00.000Z","key":1486512600000,"doc_count":7},{"key_as_string":"2017-02-08T00:11:00.000Z","key":1486512660000,"doc_count":14},{"key_as_string":"2017-02-08T00:12:00.000Z","key":1486512720000,"doc_count":10},{"key_as_string":"2017-02-08T00:13:00.000Z","key":1486512780000,"doc_count":8},{"key_as_string":"2017-02-08T00:14:00.000Z","key":1486512840000,"doc_count":7},{"key_as_string":"2017-02-08T00:15:00.000Z","key":1486512900000,"doc_count":10},{"key_as_string":"2017-02-08T00:16:00.000Z","key":1486512960000,"doc_count":12},{"key_as_string":"2017-02-08T00:17:00.000Z","key":1486513020000,"doc_count":13},{"key_as_string":"2017-02-08T00:18:00.000Z","key":1486513080000,"doc_count":7},{"key_as_string":"2017-02-08T00:19:00.000Z","key":1486513140000,"doc_count":7},{"key_as_string":"2017-02-08T00:20:00.000Z","key":1486513200000,"doc_count":7},{"key_as_string":"2017-02-08T00:21:00.000Z","key":1486513260000,"doc_count":9},{"key_as_string":"2017-02-08T00:22:00.000Z","key":1486513320000,"doc_count":13},{"key_as_string":"2017-02-08T00:23:00.000Z","key":1486513380000,"doc_count":10},{"key_as_string":"2017-02-08T00:24:00.000Z","key":1486513440000,"doc_count":8},{"key_as_string":"2017-02-08T00:25:00.000Z","key":1486513500000,"doc_count":13},{"key_as_string":"2017-02-08T00:26:00.000Z","key":1486513560000,"doc_count":10},{"key_as_string":"2017-02-08T00:27:00.000Z","key":1486513620000,"doc_count":8},{"key_as_string":"2017-02-08T00:28:00.000Z","key":1486513680000,"doc_count":15},{"key_as_string":"2017-02-08T00:29:00.000Z","key":1486513740000,"doc_count":7},{"key_as_string":"2017-02-08T00:30:00.000Z","key":1486513800000,"doc_count":9},{"key_as_string":"2017-02-08T00:31:00.000Z","key":1486513860000,"doc_count":13},{"key_as_string":"2017-02-08T00:32:00.000Z","key":1486513920000,"doc_count":8},{"key_as_string":"2017-02-08T00:33:00.000Z","key":1486513980000,"doc_count":12},{"key_as_string":"2017-02-08T00:34:00.000Z","key":1486514040000,"doc_count":13},{"key_as_string":"2017-02-08T00:35:00.000Z","key":1486514100000,"doc_count":9},{"key_as_string":"2017-02-08T00:36:00.000Z","key":1486514160000,"doc_count":12},{"key_as_string":"2017-02-08T00:37:00.000Z","key":1486514220000,"doc_count":9},{"key_as_string":"2017-02-08T00:38:00.000Z","key":1486514280000,"doc_count":9},{"key_as_string":"2017-02-08T00:39:00.000Z","key":1486514340000,"doc_count":16},{"key_as_string":"2017-02-08T00:40:00.000Z","key":1486514400000,"doc_count":10},{"key_as_string":"2017-02-08T00:41:00.000Z","key":1486514460000,"doc_count":13},{"key_as_string":"2017-02-08T00:42:00.000Z","key":1486514520000,"doc_count":6},{"key_as_string":"2017-02-08T00:43:00.000Z","key":1486514580000,"doc_count":16},{"key_as_string":"2017-02-08T00:44:00.000Z","key":1486514640000,"doc_count":16},{"key_as_string":"2017-02-08T00:45:00.000Z","key":1486514700000,"doc_count":6},{"key_as_string":"2017-02-08T00:46:00.000Z","key":1486514760000,"doc_count":11},{"key_as_string":"2017-02-08T00:47:00.000Z","key":1486514820000,"doc_count":11},{"key_as_string":"2017-02-08T00:48:00.000Z","key":1486514880000,"doc_count":9},{"key_as_string":"2017-02-08T00:49:00.000Z","key":1486514940000,"doc_count":11},{"key_as_string":"2017-02-08T00:50:00.000Z","key":1486515000000,"doc_count":9},{"key_as_string":"2017-02-08T00:51:00.000Z","key":1486515060000,"doc_count":12},{"key_as_string":"2017-02-08T00:52:00.000Z","key":1486515120000,"doc_count":10},{"key_as_string":"2017-02-08T00:53:00.000Z","key":1486515180000,"doc_count":13},{"key_as_string":"2017-02-08T00:54:00.000Z","key":1486515240000,"doc_count":9},{"key_as_string":"2017-02-08T00:55:00.000Z","key":1486515300000,"doc_count":15},{"key_as_string":"2017-02-08T00:56:00.000Z","key":1486515360000,"doc_count":11},{"key_as_string":"2017-02-08T00:57:00.000Z","key":1486515420000,"doc_count":12},{"key_as_string":"2017-02-08T00:58:00.000Z","key":1486515480000,"doc_count":17},{"key_as_string":"2017-02-08T00:59:00.000Z","key":1486515540000,"doc_count":11},{"key_as_string":"2017-02-08T01:00:00.000Z","key":1486515600000,"doc_count":14},{"key_as_string":"2017-02-08T01:01:00.000Z","key":1486515660000,"doc_count":12},{"key_as_string":"2017-02-08T01:02:00.000Z","key":1486515720000,"doc_count":8},{"key_as_string":"2017-02-08T01:03:00.000Z","key":1486515780000,"doc_count":12},{"key_as_string":"2017-02-08T01:04:00.000Z","key":1486515840000,"doc_count":8},{"key_as_string":"2017-02-08T01:05:00.000Z","key":1486515900000,"doc_count":13},{"key_as_string":"2017-02-08T01:06:00.000Z","key":1486515960000,"doc_count":9},{"key_as_string":"2017-02-08T01:07:00.000Z","key":1486516020000,"doc_count":7},{"key_as_string":"2017-02-08T01:08:00.000Z","key":1486516080000,"doc_count":14},{"key_as_string":"2017-02-08T01:09:00.000Z","key":1486516140000,"doc_count":9},{"key_as_string":"2017-02-08T01:10:00.000Z","key":1486516200000,"doc_count":10},{"key_as_string":"2017-02-08T01:11:00.000Z","key":1486516260000,"doc_count":12},{"key_as_string":"2017-02-08T01:12:00.000Z","key":1486516320000,"doc_count":8},{"key_as_string":"2017-02-08T01:13:00.000Z","key":1486516380000,"doc_count":9},{"key_as_string":"2017-02-08T01:14:00.000Z","key":1486516440000,"doc_count":11},{"key_as_string":"2017-02-08T01:15:00.000Z","key":1486516500000,"doc_count":10},{"key_as_string":"2017-02-08T01:16:00.000Z","key":1486516560000,"doc_count":16},{"key_as_string":"2017-02-08T01:17:00.000Z","key":1486516620000,"doc_count":12},{"key_as_string":"2017-02-08T01:18:00.000Z","key":1486516680000,"doc_count":7},{"key_as_string":"2017-02-08T01:19:00.000Z","key":1486516740000,"doc_count":7},{"key_as_string":"2017-02-08T01:20:00.000Z","key":1486516800000,"doc_count":12},{"key_as_string":"2017-02-08T01:21:00.000Z","key":1486516860000,"doc_count":10},{"key_as_string":"2017-02-08T01:22:00.000Z","key":1486516920000,"doc_count":15},{"key_as_string":"2017-02-08T01:23:00.000Z","key":1486516980000,"doc_count":9},{"key_as_string":"2017-02-08T01:24:00.000Z","key":1486517040000,"doc_count":15},{"key_as_string":"2017-02-08T01:25:00.000Z","key":1486517100000,"doc_count":9},{"key_as_string":"2017-02-08T01:26:00.000Z","key":1486517160000,"doc_count":15},{"key_as_string":"2017-02-08T01:27:00.000Z","key":1486517220000,"doc_count":11},{"key_as_string":"2017-02-08T01:28:00.000Z","key":1486517280000,"doc_count":15},{"key_as_string":"2017-02-08T01:29:00.000Z","key":1486517340000,"doc_count":17},{"key_as_string":"2017-02-08T01:30:00.000Z","key":1486517400000,"doc_count":5},{"key_as_string":"2017-02-08T01:31:00.000Z","key":1486517460000,"doc_count":10},{"key_as_string":"2017-02-08T01:32:00.000Z","key":1486517520000,"doc_count":9},{"key_as_string":"2017-02-08T01:33:00.000Z","key":1486517580000,"doc_count":13},{"key_as_string":"2017-02-08T01:34:00.000Z","key":1486517640000,"doc_count":17},{"key_as_string":"2017-02-08T01:35:00.000Z","key":1486517700000,"doc_count":8},{"key_as_string":"2017-02-08T01:36:00.000Z","key":1486517760000,"doc_count":7},{"key_as_string":"2017-02-08T01:37:00.000Z","key":1486517820000,"doc_count":14},{"key_as_string":"2017-02-08T01:38:00.000Z","key":1486517880000,"doc_count":11},{"key_as_string":"2017-02-08T01:39:00.000Z","key":1486517940000,"doc_count":4},{"key_as_string":"2017-02-08T01:40:00.000Z","key":1486518000000,"doc_count":13},{"key_as_string":"2017-02-08T01:41:00.000Z","key":1486518060000,"doc_count":13},{"key_as_string":"2017-02-08T01:42:00.000Z","key":1486518120000,"doc_count":6},{"key_as_string":"2017-02-08T01:43:00.000Z","key":1486518180000,"doc_count":12},{"key_as_string":"2017-02-08T01:44:00.000Z","key":1486518240000,"doc_count":13},{"key_as_string":"2017-02-08T01:45:00.000Z","key":1486518300000,"doc_count":9},{"key_as_string":"2017-02-08T01:46:00.000Z","key":1486518360000,"doc_count":15},{"key_as_string":"2017-02-08T01:47:00.000Z","key":1486518420000,"doc_count":14},{"key_as_string":"2017-02-08T01:48:00.000Z","key":1486518480000,"doc_count":7},{"key_as_string":"2017-02-08T01:49:00.000Z","key":1486518540000,"doc_count":15},{"key_as_string":"2017-02-08T01:50:00.000Z","key":1486518600000,"doc_count":10},{"key_as_string":"2017-02-08T01:51:00.000Z","key":1486518660000,"doc_count":9},{"key_as_string":"2017-02-08T01:52:00.000Z","key":1486518720000,"doc_count":7},{"key_as_string":"2017-02-08T01:53:00.000Z","key":1486518780000,"doc_count":14},{"key_as_string":"2017-02-08T01:54:00.000Z","key":1486518840000,"doc_count":10},{"key_as_string":"2017-02-08T01:55:00.000Z","key":1486518900000,"doc_count":9},{"key_as_string":"2017-02-08T01:56:00.000Z","key":1486518960000,"doc_count":11},{"key_as_string":"2017-02-08T01:57:00.000Z","key":1486519020000,"doc_count":7},{"key_as_string":"2017-02-08T01:58:00.000Z","key":1486519080000,"doc_count":12},{"key_as_string":"2017-02-08T01:59:00.000Z","key":1486519140000,"doc_count":7},{"key_as_string":"2017-02-08T02:00:00.000Z","key":1486519200000,"doc_count":16},{"key_as_string":"2017-02-08T02:01:00.000Z","key":1486519260000,"doc_count":8},{"key_as_string":"2017-02-08T02:02:00.000Z","key":1486519320000,"doc_count":5},{"key_as_string":"2017-02-08T02:03:00.000Z","key":1486519380000,"doc_count":12},{"key_as_string":"2017-02-08T02:04:00.000Z","key":1486519440000,"doc_count":11},{"key_as_string":"2017-02-08T02:05:00.000Z","key":1486519500000,"doc_count":12},{"key_as_string":"2017-02-08T02:06:00.000Z","key":1486519560000,"doc_count":12},{"key_as_string":"2017-02-08T02:07:00.000Z","key":1486519620000,"doc_count":9},{"key_as_string":"2017-02-08T02:08:00.000Z","key":1486519680000,"doc_count":11},{"key_as_string":"2017-02-08T02:09:00.000Z","key":1486519740000,"doc_count":16},{"key_as_string":"2017-02-08T02:10:00.000Z","key":1486519800000,"doc_count":9},{"key_as_string":"2017-02-08T02:11:00.000Z","key":1486519860000,"doc_count":8},{"key_as_string":"2017-02-08T02:12:00.000Z","key":1486519920000,"doc_count":9},{"key_as_string":"2017-02-08T02:13:00.000Z","key":1486519980000,"doc_count":8},{"key_as_string":"2017-02-08T02:14:00.000Z","key":1486520040000,"doc_count":12},{"key_as_string":"2017-02-08T02:15:00.000Z","key":1486520100000,"doc_count":8},{"key_as_string":"2017-02-08T02:16:00.000Z","key":1486520160000,"doc_count":9},{"key_as_string":"2017-02-08T02:17:00.000Z","key":1486520220000,"doc_count":11},{"key_as_string":"2017-02-08T02:18:00.000Z","key":1486520280000,"doc_count":8},{"key_as_string":"2017-02-08T02:19:00.000Z","key":1486520340000,"doc_count":9},{"key_as_string":"2017-02-08T02:20:00.000Z","key":1486520400000,"doc_count":7},{"key_as_string":"2017-02-08T02:21:00.000Z","key":1486520460000,"doc_count":15},{"key_as_string":"2017-02-08T02:22:00.000Z","key":1486520520000,"doc_count":6},{"key_as_string":"2017-02-08T02:23:00.000Z","key":1486520580000,"doc_count":11},{"key_as_string":"2017-02-08T02:24:00.000Z","key":1486520640000,"doc_count":14},{"key_as_string":"2017-02-08T02:25:00.000Z","key":1486520700000,"doc_count":8},{"key_as_string":"2017-02-08T02:26:00.000Z","key":1486520760000,"doc_count":11},{"key_as_string":"2017-02-08T02:27:00.000Z","key":1486520820000,"doc_count":15},{"key_as_string":"2017-02-08T02:28:00.000Z","key":1486520880000,"doc_count":6},{"key_as_string":"2017-02-08T02:29:00.000Z","key":1486520940000,"doc_count":5},{"key_as_string":"2017-02-08T02:30:00.000Z","key":1486521000000,"doc_count":18},{"key_as_string":"2017-02-08T02:31:00.000Z","key":1486521060000,"doc_count":7},{"key_as_string":"2017-02-08T02:32:00.000Z","key":1486521120000,"doc_count":6},{"key_as_string":"2017-02-08T02:33:00.000Z","key":1486521180000,"doc_count":15},{"key_as_string":"2017-02-08T02:34:00.000Z","key":1486521240000,"doc_count":11},{"key_as_string":"2017-02-08T02:35:00.000Z","key":1486521300000,"doc_count":13},{"key_as_string":"2017-02-08T02:36:00.000Z","key":1486521360000,"doc_count":12},{"key_as_string":"2017-02-08T02:37:00.000Z","key":1486521420000,"doc_count":9},{"key_as_string":"2017-02-08T02:38:00.000Z","key":1486521480000,"doc_count":14},{"key_as_string":"2017-02-08T02:39:00.000Z","key":1486521540000,"doc_count":9},{"key_as_string":"2017-02-08T02:40:00.000Z","key":1486521600000,"doc_count":12},{"key_as_string":"2017-02-08T02:41:00.000Z","key":1486521660000,"doc_count":10},{"key_as_string":"2017-02-08T02:42:00.000Z","key":1486521720000,"doc_count":12},{"key_as_string":"2017-02-08T02:43:00.000Z","key":1486521780000,"doc_count":8},{"key_as_string":"2017-02-08T02:44:00.000Z","key":1486521840000,"doc_count":15},{"key_as_string":"2017-02-08T02:45:00.000Z","key":1486521900000,"doc_count":6},{"key_as_string":"2017-02-08T02:46:00.000Z","key":1486521960000,"doc_count":12},{"key_as_string":"2017-02-08T02:47:00.000Z","key":1486522020000,"doc_count":10},{"key_as_string":"2017-02-08T02:48:00.000Z","key":1486522080000,"doc_count":13},{"key_as_string":"2017-02-08T02:49:00.000Z","key":1486522140000,"doc_count":14},{"key_as_string":"2017-02-08T02:50:00.000Z","key":1486522200000,"doc_count":8},{"key_as_string":"2017-02-08T02:51:00.000Z","key":1486522260000,"doc_count":12},{"key_as_string":"2017-02-08T02:52:00.000Z","key":1486522320000,"doc_count":6},{"key_as_string":"2017-02-08T02:53:00.000Z","key":1486522380000,"doc_count":14},{"key_as_string":"2017-02-08T02:54:00.000Z","key":1486522440000,"doc_count":12},{"key_as_string":"2017-02-08T02:55:00.000Z","key":1486522500000,"doc_count":11},{"key_as_string":"2017-02-08T02:56:00.000Z","key":1486522560000,"doc_count":14},{"key_as_string":"2017-02-08T02:57:00.000Z","key":1486522620000,"doc_count":13},{"key_as_string":"2017-02-08T02:58:00.000Z","key":1486522680000,"doc_count":7},{"key_as_string":"2017-02-08T02:59:00.000Z","key":1486522740000,"doc_count":9},{"key_as_string":"2017-02-08T03:00:00.000Z","key":1486522800000,"doc_count":9},{"key_as_string":"2017-02-08T03:01:00.000Z","key":1486522860000,"doc_count":13},{"key_as_string":"2017-02-08T03:02:00.000Z","key":1486522920000,"doc_count":10},{"key_as_string":"2017-02-08T03:03:00.000Z","key":1486522980000,"doc_count":12},{"key_as_string":"2017-02-08T03:04:00.000Z","key":1486523040000,"doc_count":4},{"key_as_string":"2017-02-08T03:05:00.000Z","key":1486523100000,"doc_count":12},{"key_as_string":"2017-02-08T03:06:00.000Z","key":1486523160000,"doc_count":10},{"key_as_string":"2017-02-08T03:07:00.000Z","key":1486523220000,"doc_count":8},{"key_as_string":"2017-02-08T03:08:00.000Z","key":1486523280000,"doc_count":12},{"key_as_string":"2017-02-08T03:09:00.000Z","key":1486523340000,"doc_count":12},{"key_as_string":"2017-02-08T03:10:00.000Z","key":1486523400000,"doc_count":9},{"key_as_string":"2017-02-08T03:11:00.000Z","key":1486523460000,"doc_count":12},{"key_as_string":"2017-02-08T03:12:00.000Z","key":1486523520000,"doc_count":6},{"key_as_string":"2017-02-08T03:13:00.000Z","key":1486523580000,"doc_count":11},{"key_as_string":"2017-02-08T03:14:00.000Z","key":1486523640000,"doc_count":8},{"key_as_string":"2017-02-08T03:15:00.000Z","key":1486523700000,"doc_count":11},{"key_as_string":"2017-02-08T03:16:00.000Z","key":1486523760000,"doc_count":9},{"key_as_string":"2017-02-08T03:17:00.000Z","key":1486523820000,"doc_count":9},{"key_as_string":"2017-02-08T03:18:00.000Z","key":1486523880000,"doc_count":16},{"key_as_string":"2017-02-08T03:19:00.000Z","key":1486523940000,"doc_count":6},{"key_as_string":"2017-02-08T03:20:00.000Z","key":1486524000000,"doc_count":10},{"key_as_string":"2017-02-08T03:21:00.000Z","key":1486524060000,"doc_count":14},{"key_as_string":"2017-02-08T03:22:00.000Z","key":1486524120000,"doc_count":3},{"key_as_string":"2017-02-08T03:23:00.000Z","key":1486524180000,"doc_count":11},{"key_as_string":"2017-02-08T03:24:00.000Z","key":1486524240000,"doc_count":13},{"key_as_string":"2017-02-08T03:25:00.000Z","key":1486524300000,"doc_count":11},{"key_as_string":"2017-02-08T03:26:00.000Z","key":1486524360000,"doc_count":18},{"key_as_string":"2017-02-08T03:27:00.000Z","key":1486524420000,"doc_count":12},{"key_as_string":"2017-02-08T03:28:00.000Z","key":1486524480000,"doc_count":11},{"key_as_string":"2017-02-08T03:29:00.000Z","key":1486524540000,"doc_count":8},{"key_as_string":"2017-02-08T03:30:00.000Z","key":1486524600000,"doc_count":18},{"key_as_string":"2017-02-08T03:31:00.000Z","key":1486524660000,"doc_count":12},{"key_as_string":"2017-02-08T03:32:00.000Z","key":1486524720000,"doc_count":13},{"key_as_string":"2017-02-08T03:33:00.000Z","key":1486524780000,"doc_count":12},{"key_as_string":"2017-02-08T03:34:00.000Z","key":1486524840000,"doc_count":10},{"key_as_string":"2017-02-08T03:35:00.000Z","key":1486524900000,"doc_count":10},{"key_as_string":"2017-02-08T03:36:00.000Z","key":1486524960000,"doc_count":10},{"key_as_string":"2017-02-08T03:37:00.000Z","key":1486525020000,"doc_count":9},{"key_as_string":"2017-02-08T03:38:00.000Z","key":1486525080000,"doc_count":20},{"key_as_string":"2017-02-08T03:39:00.000Z","key":1486525140000,"doc_count":8},{"key_as_string":"2017-02-08T03:40:00.000Z","key":1486525200000,"doc_count":7},{"key_as_string":"2017-02-08T03:41:00.000Z","key":1486525260000,"doc_count":10},{"key_as_string":"2017-02-08T03:42:00.000Z","key":1486525320000,"doc_count":12},{"key_as_string":"2017-02-08T03:43:00.000Z","key":1486525380000,"doc_count":9},{"key_as_string":"2017-02-08T03:44:00.000Z","key":1486525440000,"doc_count":7},{"key_as_string":"2017-02-08T03:45:00.000Z","key":1486525500000,"doc_count":8},{"key_as_string":"2017-02-08T03:46:00.000Z","key":1486525560000,"doc_count":10},{"key_as_string":"2017-02-08T03:47:00.000Z","key":1486525620000,"doc_count":10},{"key_as_string":"2017-02-08T03:48:00.000Z","key":1486525680000,"doc_count":7},{"key_as_string":"2017-02-08T03:49:00.000Z","key":1486525740000,"doc_count":9},{"key_as_string":"2017-02-08T03:50:00.000Z","key":1486525800000,"doc_count":11},{"key_as_string":"2017-02-08T03:51:00.000Z","key":1486525860000,"doc_count":8},{"key_as_string":"2017-02-08T03:52:00.000Z","key":1486525920000,"doc_count":10},{"key_as_string":"2017-02-08T03:53:00.000Z","key":1486525980000,"doc_count":12},{"key_as_string":"2017-02-08T03:54:00.000Z","key":1486526040000,"doc_count":14},{"key_as_string":"2017-02-08T03:55:00.000Z","key":1486526100000,"doc_count":9},{"key_as_string":"2017-02-08T03:56:00.000Z","key":1486526160000,"doc_count":11},{"key_as_string":"2017-02-08T03:57:00.000Z","key":1486526220000,"doc_count":7},{"key_as_string":"2017-02-08T03:58:00.000Z","key":1486526280000,"doc_count":11},{"key_as_string":"2017-02-08T03:59:00.000Z","key":1486526340000,"doc_count":14},{"key_as_string":"2017-02-08T04:00:00.000Z","key":1486526400000,"doc_count":10},{"key_as_string":"2017-02-08T04:01:00.000Z","key":1486526460000,"doc_count":11},{"key_as_string":"2017-02-08T04:02:00.000Z","key":1486526520000,"doc_count":12},{"key_as_string":"2017-02-08T04:03:00.000Z","key":1486526580000,"doc_count":8},{"key_as_string":"2017-02-08T04:04:00.000Z","key":1486526640000,"doc_count":11},{"key_as_string":"2017-02-08T04:05:00.000Z","key":1486526700000,"doc_count":15},{"key_as_string":"2017-02-08T04:06:00.000Z","key":1486526760000,"doc_count":8},{"key_as_string":"2017-02-08T04:07:00.000Z","key":1486526820000,"doc_count":13},{"key_as_string":"2017-02-08T04:08:00.000Z","key":1486526880000,"doc_count":12},{"key_as_string":"2017-02-08T04:09:00.000Z","key":1486526940000,"doc_count":11},{"key_as_string":"2017-02-08T04:10:00.000Z","key":1486527000000,"doc_count":12},{"key_as_string":"2017-02-08T04:11:00.000Z","key":1486527060000,"doc_count":10},{"key_as_string":"2017-02-08T04:12:00.000Z","key":1486527120000,"doc_count":13},{"key_as_string":"2017-02-08T04:13:00.000Z","key":1486527180000,"doc_count":5},{"key_as_string":"2017-02-08T04:14:00.000Z","key":1486527240000,"doc_count":6},{"key_as_string":"2017-02-08T04:15:00.000Z","key":1486527300000,"doc_count":16},{"key_as_string":"2017-02-08T04:16:00.000Z","key":1486527360000,"doc_count":12},{"key_as_string":"2017-02-08T04:17:00.000Z","key":1486527420000,"doc_count":17},{"key_as_string":"2017-02-08T04:18:00.000Z","key":1486527480000,"doc_count":11},{"key_as_string":"2017-02-08T04:19:00.000Z","key":1486527540000,"doc_count":16},{"key_as_string":"2017-02-08T04:20:00.000Z","key":1486527600000,"doc_count":8},{"key_as_string":"2017-02-08T04:21:00.000Z","key":1486527660000,"doc_count":10},{"key_as_string":"2017-02-08T04:22:00.000Z","key":1486527720000,"doc_count":14},{"key_as_string":"2017-02-08T04:23:00.000Z","key":1486527780000,"doc_count":10},{"key_as_string":"2017-02-08T04:24:00.000Z","key":1486527840000,"doc_count":9},{"key_as_string":"2017-02-08T04:25:00.000Z","key":1486527900000,"doc_count":13},{"key_as_string":"2017-02-08T04:26:00.000Z","key":1486527960000,"doc_count":8},{"key_as_string":"2017-02-08T04:27:00.000Z","key":1486528020000,"doc_count":13},{"key_as_string":"2017-02-08T04:28:00.000Z","key":1486528080000,"doc_count":16},{"key_as_string":"2017-02-08T04:29:00.000Z","key":1486528140000,"doc_count":8},{"key_as_string":"2017-02-08T04:30:00.000Z","key":1486528200000,"doc_count":13},{"key_as_string":"2017-02-08T04:31:00.000Z","key":1486528260000,"doc_count":12},{"key_as_string":"2017-02-08T04:32:00.000Z","key":1486528320000,"doc_count":9},{"key_as_string":"2017-02-08T04:33:00.000Z","key":1486528380000,"doc_count":14},{"key_as_string":"2017-02-08T04:34:00.000Z","key":1486528440000,"doc_count":8},{"key_as_string":"2017-02-08T04:35:00.000Z","key":1486528500000,"doc_count":9},{"key_as_string":"2017-02-08T04:36:00.000Z","key":1486528560000,"doc_count":19},{"key_as_string":"2017-02-08T04:37:00.000Z","key":1486528620000,"doc_count":8},{"key_as_string":"2017-02-08T04:38:00.000Z","key":1486528680000,"doc_count":12},{"key_as_string":"2017-02-08T04:39:00.000Z","key":1486528740000,"doc_count":13},{"key_as_string":"2017-02-08T04:40:00.000Z","key":1486528800000,"doc_count":13},{"key_as_string":"2017-02-08T04:41:00.000Z","key":1486528860000,"doc_count":9},{"key_as_string":"2017-02-08T04:42:00.000Z","key":1486528920000,"doc_count":8},{"key_as_string":"2017-02-08T04:43:00.000Z","key":1486528980000,"doc_count":8},{"key_as_string":"2017-02-08T04:44:00.000Z","key":1486529040000,"doc_count":11},{"key_as_string":"2017-02-08T04:45:00.000Z","key":1486529100000,"doc_count":11},{"key_as_string":"2017-02-08T04:46:00.000Z","key":1486529160000,"doc_count":14},{"key_as_string":"2017-02-08T04:47:00.000Z","key":1486529220000,"doc_count":9},{"key_as_string":"2017-02-08T04:48:00.000Z","key":1486529280000,"doc_count":11},{"key_as_string":"2017-02-08T04:49:00.000Z","key":1486529340000,"doc_count":16},{"key_as_string":"2017-02-08T04:50:00.000Z","key":1486529400000,"doc_count":6},{"key_as_string":"2017-02-08T04:51:00.000Z","key":1486529460000,"doc_count":14},{"key_as_string":"2017-02-08T04:52:00.000Z","key":1486529520000,"doc_count":12},{"key_as_string":"2017-02-08T04:53:00.000Z","key":1486529580000,"doc_count":13},{"key_as_string":"2017-02-08T04:54:00.000Z","key":1486529640000,"doc_count":12},{"key_as_string":"2017-02-08T04:55:00.000Z","key":1486529700000,"doc_count":12},{"key_as_string":"2017-02-08T04:56:00.000Z","key":1486529760000,"doc_count":15},{"key_as_string":"2017-02-08T04:57:00.000Z","key":1486529820000,"doc_count":12},{"key_as_string":"2017-02-08T04:58:00.000Z","key":1486529880000,"doc_count":11},{"key_as_string":"2017-02-08T04:59:00.000Z","key":1486529940000,"doc_count":7},{"key_as_string":"2017-02-08T05:00:00.000Z","key":1486530000000,"doc_count":10},{"key_as_string":"2017-02-08T05:01:00.000Z","key":1486530060000,"doc_count":15},{"key_as_string":"2017-02-08T05:02:00.000Z","key":1486530120000,"doc_count":15},{"key_as_string":"2017-02-08T05:03:00.000Z","key":1486530180000,"doc_count":11},{"key_as_string":"2017-02-08T05:04:00.000Z","key":1486530240000,"doc_count":11},{"key_as_string":"2017-02-08T05:05:00.000Z","key":1486530300000,"doc_count":14},{"key_as_string":"2017-02-08T05:06:00.000Z","key":1486530360000,"doc_count":9},{"key_as_string":"2017-02-08T05:07:00.000Z","key":1486530420000,"doc_count":15},{"key_as_string":"2017-02-08T05:08:00.000Z","key":1486530480000,"doc_count":8},{"key_as_string":"2017-02-08T05:09:00.000Z","key":1486530540000,"doc_count":13},{"key_as_string":"2017-02-08T05:10:00.000Z","key":1486530600000,"doc_count":12},{"key_as_string":"2017-02-08T05:11:00.000Z","key":1486530660000,"doc_count":7},{"key_as_string":"2017-02-08T05:12:00.000Z","key":1486530720000,"doc_count":9},{"key_as_string":"2017-02-08T05:13:00.000Z","key":1486530780000,"doc_count":12},{"key_as_string":"2017-02-08T05:14:00.000Z","key":1486530840000,"doc_count":14},{"key_as_string":"2017-02-08T05:15:00.000Z","key":1486530900000,"doc_count":15},{"key_as_string":"2017-02-08T05:16:00.000Z","key":1486530960000,"doc_count":7},{"key_as_string":"2017-02-08T05:17:00.000Z","key":1486531020000,"doc_count":10},{"key_as_string":"2017-02-08T05:18:00.000Z","key":1486531080000,"doc_count":10},{"key_as_string":"2017-02-08T05:19:00.000Z","key":1486531140000,"doc_count":12},{"key_as_string":"2017-02-08T05:20:00.000Z","key":1486531200000,"doc_count":7},{"key_as_string":"2017-02-08T05:21:00.000Z","key":1486531260000,"doc_count":9},{"key_as_string":"2017-02-08T05:22:00.000Z","key":1486531320000,"doc_count":13},{"key_as_string":"2017-02-08T05:23:00.000Z","key":1486531380000,"doc_count":9},{"key_as_string":"2017-02-08T05:24:00.000Z","key":1486531440000,"doc_count":10},{"key_as_string":"2017-02-08T05:25:00.000Z","key":1486531500000,"doc_count":12},{"key_as_string":"2017-02-08T05:26:00.000Z","key":1486531560000,"doc_count":7},{"key_as_string":"2017-02-08T05:27:00.000Z","key":1486531620000,"doc_count":16},{"key_as_string":"2017-02-08T05:28:00.000Z","key":1486531680000,"doc_count":12},{"key_as_string":"2017-02-08T05:29:00.000Z","key":1486531740000,"doc_count":13},{"key_as_string":"2017-02-08T05:30:00.000Z","key":1486531800000,"doc_count":10},{"key_as_string":"2017-02-08T05:31:00.000Z","key":1486531860000,"doc_count":12},{"key_as_string":"2017-02-08T05:32:00.000Z","key":1486531920000,"doc_count":6},{"key_as_string":"2017-02-08T05:33:00.000Z","key":1486531980000,"doc_count":16},{"key_as_string":"2017-02-08T05:34:00.000Z","key":1486532040000,"doc_count":11},{"key_as_string":"2017-02-08T05:35:00.000Z","key":1486532100000,"doc_count":13},{"key_as_string":"2017-02-08T05:36:00.000Z","key":1486532160000,"doc_count":12},{"key_as_string":"2017-02-08T05:37:00.000Z","key":1486532220000,"doc_count":14},{"key_as_string":"2017-02-08T05:38:00.000Z","key":1486532280000,"doc_count":9},{"key_as_string":"2017-02-08T05:39:00.000Z","key":1486532340000,"doc_count":9},{"key_as_string":"2017-02-08T05:40:00.000Z","key":1486532400000,"doc_count":11},{"key_as_string":"2017-02-08T05:41:00.000Z","key":1486532460000,"doc_count":17},{"key_as_string":"2017-02-08T05:42:00.000Z","key":1486532520000,"doc_count":13},{"key_as_string":"2017-02-08T05:43:00.000Z","key":1486532580000,"doc_count":10},{"key_as_string":"2017-02-08T05:44:00.000Z","key":1486532640000,"doc_count":12},{"key_as_string":"2017-02-08T05:45:00.000Z","key":1486532700000,"doc_count":17},{"key_as_string":"2017-02-08T05:46:00.000Z","key":1486532760000,"doc_count":7},{"key_as_string":"2017-02-08T05:47:00.000Z","key":1486532820000,"doc_count":11},{"key_as_string":"2017-02-08T05:48:00.000Z","key":1486532880000,"doc_count":10},{"key_as_string":"2017-02-08T05:49:00.000Z","key":1486532940000,"doc_count":7},{"key_as_string":"2017-02-08T05:50:00.000Z","key":1486533000000,"doc_count":12},{"key_as_string":"2017-02-08T05:51:00.000Z","key":1486533060000,"doc_count":12},{"key_as_string":"2017-02-08T05:52:00.000Z","key":1486533120000,"doc_count":6},{"key_as_string":"2017-02-08T05:53:00.000Z","key":1486533180000,"doc_count":11},{"key_as_string":"2017-02-08T05:54:00.000Z","key":1486533240000,"doc_count":14},{"key_as_string":"2017-02-08T05:55:00.000Z","key":1486533300000,"doc_count":10},{"key_as_string":"2017-02-08T05:56:00.000Z","key":1486533360000,"doc_count":11},{"key_as_string":"2017-02-08T05:57:00.000Z","key":1486533420000,"doc_count":14},{"key_as_string":"2017-02-08T05:58:00.000Z","key":1486533480000,"doc_count":5},{"key_as_string":"2017-02-08T05:59:00.000Z","key":1486533540000,"doc_count":16},{"key_as_string":"2017-02-08T06:00:00.000Z","key":1486533600000,"doc_count":9},{"key_as_string":"2017-02-08T06:01:00.000Z","key":1486533660000,"doc_count":12},{"key_as_string":"2017-02-08T06:02:00.000Z","key":1486533720000,"doc_count":10},{"key_as_string":"2017-02-08T06:03:00.000Z","key":1486533780000,"doc_count":13},{"key_as_string":"2017-02-08T06:04:00.000Z","key":1486533840000,"doc_count":14},{"key_as_string":"2017-02-08T06:05:00.000Z","key":1486533900000,"doc_count":11},{"key_as_string":"2017-02-08T06:06:00.000Z","key":1486533960000,"doc_count":9},{"key_as_string":"2017-02-08T06:07:00.000Z","key":1486534020000,"doc_count":10},{"key_as_string":"2017-02-08T06:08:00.000Z","key":1486534080000,"doc_count":7},{"key_as_string":"2017-02-08T06:09:00.000Z","key":1486534140000,"doc_count":14},{"key_as_string":"2017-02-08T06:10:00.000Z","key":1486534200000,"doc_count":13},{"key_as_string":"2017-02-08T06:11:00.000Z","key":1486534260000,"doc_count":15},{"key_as_string":"2017-02-08T06:12:00.000Z","key":1486534320000,"doc_count":9},{"key_as_string":"2017-02-08T06:13:00.000Z","key":1486534380000,"doc_count":8},{"key_as_string":"2017-02-08T06:14:00.000Z","key":1486534440000,"doc_count":7},{"key_as_string":"2017-02-08T06:15:00.000Z","key":1486534500000,"doc_count":15},{"key_as_string":"2017-02-08T06:16:00.000Z","key":1486534560000,"doc_count":11},{"key_as_string":"2017-02-08T06:17:00.000Z","key":1486534620000,"doc_count":15},{"key_as_string":"2017-02-08T06:18:00.000Z","key":1486534680000,"doc_count":14},{"key_as_string":"2017-02-08T06:19:00.000Z","key":1486534740000,"doc_count":12},{"key_as_string":"2017-02-08T06:20:00.000Z","key":1486534800000,"doc_count":15},{"key_as_string":"2017-02-08T06:21:00.000Z","key":1486534860000,"doc_count":13},{"key_as_string":"2017-02-08T06:22:00.000Z","key":1486534920000,"doc_count":10},{"key_as_string":"2017-02-08T06:23:00.000Z","key":1486534980000,"doc_count":14},{"key_as_string":"2017-02-08T06:24:00.000Z","key":1486535040000,"doc_count":15},{"key_as_string":"2017-02-08T06:25:00.000Z","key":1486535100000,"doc_count":14},{"key_as_string":"2017-02-08T06:26:00.000Z","key":1486535160000,"doc_count":11},{"key_as_string":"2017-02-08T06:27:00.000Z","key":1486535220000,"doc_count":13},{"key_as_string":"2017-02-08T06:28:00.000Z","key":1486535280000,"doc_count":11},{"key_as_string":"2017-02-08T06:29:00.000Z","key":1486535340000,"doc_count":16},{"key_as_string":"2017-02-08T06:30:00.000Z","key":1486535400000,"doc_count":12},{"key_as_string":"2017-02-08T06:31:00.000Z","key":1486535460000,"doc_count":11},{"key_as_string":"2017-02-08T06:32:00.000Z","key":1486535520000,"doc_count":10},{"key_as_string":"2017-02-08T06:33:00.000Z","key":1486535580000,"doc_count":8},{"key_as_string":"2017-02-08T06:34:00.000Z","key":1486535640000,"doc_count":14},{"key_as_string":"2017-02-08T06:35:00.000Z","key":1486535700000,"doc_count":9},{"key_as_string":"2017-02-08T06:36:00.000Z","key":1486535760000,"doc_count":16},{"key_as_string":"2017-02-08T06:37:00.000Z","key":1486535820000,"doc_count":13},{"key_as_string":"2017-02-08T06:38:00.000Z","key":1486535880000,"doc_count":10},{"key_as_string":"2017-02-08T06:39:00.000Z","key":1486535940000,"doc_count":13},{"key_as_string":"2017-02-08T06:40:00.000Z","key":1486536000000,"doc_count":13},{"key_as_string":"2017-02-08T06:41:00.000Z","key":1486536060000,"doc_count":10},{"key_as_string":"2017-02-08T06:42:00.000Z","key":1486536120000,"doc_count":12},{"key_as_string":"2017-02-08T06:43:00.000Z","key":1486536180000,"doc_count":10},{"key_as_string":"2017-02-08T06:44:00.000Z","key":1486536240000,"doc_count":15},{"key_as_string":"2017-02-08T06:45:00.000Z","key":1486536300000,"doc_count":10},{"key_as_string":"2017-02-08T06:46:00.000Z","key":1486536360000,"doc_count":8},{"key_as_string":"2017-02-08T06:47:00.000Z","key":1486536420000,"doc_count":15},{"key_as_string":"2017-02-08T06:48:00.000Z","key":1486536480000,"doc_count":14},{"key_as_string":"2017-02-08T06:49:00.000Z","key":1486536540000,"doc_count":8},{"key_as_string":"2017-02-08T06:50:00.000Z","key":1486536600000,"doc_count":10},{"key_as_string":"2017-02-08T06:51:00.000Z","key":1486536660000,"doc_count":12},{"key_as_string":"2017-02-08T06:52:00.000Z","key":1486536720000,"doc_count":19},{"key_as_string":"2017-02-08T06:53:00.000Z","key":1486536780000,"doc_count":10},{"key_as_string":"2017-02-08T06:54:00.000Z","key":1486536840000,"doc_count":12},{"key_as_string":"2017-02-08T06:55:00.000Z","key":1486536900000,"doc_count":13},{"key_as_string":"2017-02-08T06:56:00.000Z","key":1486536960000,"doc_count":12},{"key_as_string":"2017-02-08T06:57:00.000Z","key":1486537020000,"doc_count":10},{"key_as_string":"2017-02-08T06:58:00.000Z","key":1486537080000,"doc_count":13},{"key_as_string":"2017-02-08T06:59:00.000Z","key":1486537140000,"doc_count":9},{"key_as_string":"2017-02-08T07:00:00.000Z","key":1486537200000,"doc_count":17},{"key_as_string":"2017-02-08T07:01:00.000Z","key":1486537260000,"doc_count":14},{"key_as_string":"2017-02-08T07:02:00.000Z","key":1486537320000,"doc_count":11},{"key_as_string":"2017-02-08T07:03:00.000Z","key":1486537380000,"doc_count":13},{"key_as_string":"2017-02-08T07:04:00.000Z","key":1486537440000,"doc_count":15},{"key_as_string":"2017-02-08T07:05:00.000Z","key":1486537500000,"doc_count":16},{"key_as_string":"2017-02-08T07:06:00.000Z","key":1486537560000,"doc_count":11},{"key_as_string":"2017-02-08T07:07:00.000Z","key":1486537620000,"doc_count":7},{"key_as_string":"2017-02-08T07:08:00.000Z","key":1486537680000,"doc_count":12},{"key_as_string":"2017-02-08T07:09:00.000Z","key":1486537740000,"doc_count":14},{"key_as_string":"2017-02-08T07:10:00.000Z","key":1486537800000,"doc_count":9},{"key_as_string":"2017-02-08T07:11:00.000Z","key":1486537860000,"doc_count":11},{"key_as_string":"2017-02-08T07:12:00.000Z","key":1486537920000,"doc_count":12},{"key_as_string":"2017-02-08T07:13:00.000Z","key":1486537980000,"doc_count":7},{"key_as_string":"2017-02-08T07:14:00.000Z","key":1486538040000,"doc_count":15},{"key_as_string":"2017-02-08T07:15:00.000Z","key":1486538100000,"doc_count":13},{"key_as_string":"2017-02-08T07:16:00.000Z","key":1486538160000,"doc_count":10},{"key_as_string":"2017-02-08T07:17:00.000Z","key":1486538220000,"doc_count":8},{"key_as_string":"2017-02-08T07:18:00.000Z","key":1486538280000,"doc_count":16},{"key_as_string":"2017-02-08T07:19:00.000Z","key":1486538340000,"doc_count":12},{"key_as_string":"2017-02-08T07:20:00.000Z","key":1486538400000,"doc_count":13},{"key_as_string":"2017-02-08T07:21:00.000Z","key":1486538460000,"doc_count":15},{"key_as_string":"2017-02-08T07:22:00.000Z","key":1486538520000,"doc_count":12},{"key_as_string":"2017-02-08T07:23:00.000Z","key":1486538580000,"doc_count":17},{"key_as_string":"2017-02-08T07:24:00.000Z","key":1486538640000,"doc_count":10},{"key_as_string":"2017-02-08T07:25:00.000Z","key":1486538700000,"doc_count":11},{"key_as_string":"2017-02-08T07:26:00.000Z","key":1486538760000,"doc_count":11},{"key_as_string":"2017-02-08T07:27:00.000Z","key":1486538820000,"doc_count":13},{"key_as_string":"2017-02-08T07:28:00.000Z","key":1486538880000,"doc_count":10},{"key_as_string":"2017-02-08T07:29:00.000Z","key":1486538940000,"doc_count":13},{"key_as_string":"2017-02-08T07:30:00.000Z","key":1486539000000,"doc_count":11},{"key_as_string":"2017-02-08T07:31:00.000Z","key":1486539060000,"doc_count":17},{"key_as_string":"2017-02-08T07:32:00.000Z","key":1486539120000,"doc_count":12},{"key_as_string":"2017-02-08T07:33:00.000Z","key":1486539180000,"doc_count":11},{"key_as_string":"2017-02-08T07:34:00.000Z","key":1486539240000,"doc_count":11},{"key_as_string":"2017-02-08T07:35:00.000Z","key":1486539300000,"doc_count":17},{"key_as_string":"2017-02-08T07:36:00.000Z","key":1486539360000,"doc_count":12},{"key_as_string":"2017-02-08T07:37:00.000Z","key":1486539420000,"doc_count":15},{"key_as_string":"2017-02-08T07:38:00.000Z","key":1486539480000,"doc_count":12},{"key_as_string":"2017-02-08T07:39:00.000Z","key":1486539540000,"doc_count":19},{"key_as_string":"2017-02-08T07:40:00.000Z","key":1486539600000,"doc_count":10},{"key_as_string":"2017-02-08T07:41:00.000Z","key":1486539660000,"doc_count":10},{"key_as_string":"2017-02-08T07:42:00.000Z","key":1486539720000,"doc_count":13},{"key_as_string":"2017-02-08T07:43:00.000Z","key":1486539780000,"doc_count":17},{"key_as_string":"2017-02-08T07:44:00.000Z","key":1486539840000,"doc_count":15},{"key_as_string":"2017-02-08T07:45:00.000Z","key":1486539900000,"doc_count":8},{"key_as_string":"2017-02-08T07:46:00.000Z","key":1486539960000,"doc_count":13},{"key_as_string":"2017-02-08T07:47:00.000Z","key":1486540020000,"doc_count":9},{"key_as_string":"2017-02-08T07:48:00.000Z","key":1486540080000,"doc_count":10},{"key_as_string":"2017-02-08T07:49:00.000Z","key":1486540140000,"doc_count":10},{"key_as_string":"2017-02-08T07:50:00.000Z","key":1486540200000,"doc_count":15},{"key_as_string":"2017-02-08T07:51:00.000Z","key":1486540260000,"doc_count":13},{"key_as_string":"2017-02-08T07:52:00.000Z","key":1486540320000,"doc_count":14},{"key_as_string":"2017-02-08T07:53:00.000Z","key":1486540380000,"doc_count":13},{"key_as_string":"2017-02-08T07:54:00.000Z","key":1486540440000,"doc_count":14},{"key_as_string":"2017-02-08T07:55:00.000Z","key":1486540500000,"doc_count":11},{"key_as_string":"2017-02-08T07:56:00.000Z","key":1486540560000,"doc_count":10},{"key_as_string":"2017-02-08T07:57:00.000Z","key":1486540620000,"doc_count":9},{"key_as_string":"2017-02-08T07:58:00.000Z","key":1486540680000,"doc_count":16},{"key_as_string":"2017-02-08T07:59:00.000Z","key":1486540740000,"doc_count":17},{"key_as_string":"2017-02-08T08:00:00.000Z","key":1486540800000,"doc_count":14},{"key_as_string":"2017-02-08T08:01:00.000Z","key":1486540860000,"doc_count":12},{"key_as_string":"2017-02-08T08:02:00.000Z","key":1486540920000,"doc_count":15},{"key_as_string":"2017-02-08T08:03:00.000Z","key":1486540980000,"doc_count":15},{"key_as_string":"2017-02-08T08:04:00.000Z","key":1486541040000,"doc_count":10},{"key_as_string":"2017-02-08T08:05:00.000Z","key":1486541100000,"doc_count":12},{"key_as_string":"2017-02-08T08:06:00.000Z","key":1486541160000,"doc_count":6},{"key_as_string":"2017-02-08T08:07:00.000Z","key":1486541220000,"doc_count":17},{"key_as_string":"2017-02-08T08:08:00.000Z","key":1486541280000,"doc_count":15},{"key_as_string":"2017-02-08T08:09:00.000Z","key":1486541340000,"doc_count":14},{"key_as_string":"2017-02-08T08:10:00.000Z","key":1486541400000,"doc_count":12},{"key_as_string":"2017-02-08T08:11:00.000Z","key":1486541460000,"doc_count":18},{"key_as_string":"2017-02-08T08:12:00.000Z","key":1486541520000,"doc_count":9},{"key_as_string":"2017-02-08T08:13:00.000Z","key":1486541580000,"doc_count":12},{"key_as_string":"2017-02-08T08:14:00.000Z","key":1486541640000,"doc_count":11},{"key_as_string":"2017-02-08T08:15:00.000Z","key":1486541700000,"doc_count":19},{"key_as_string":"2017-02-08T08:16:00.000Z","key":1486541760000,"doc_count":12},{"key_as_string":"2017-02-08T08:17:00.000Z","key":1486541820000,"doc_count":10},{"key_as_string":"2017-02-08T08:18:00.000Z","key":1486541880000,"doc_count":16},{"key_as_string":"2017-02-08T08:19:00.000Z","key":1486541940000,"doc_count":12},{"key_as_string":"2017-02-08T08:20:00.000Z","key":1486542000000,"doc_count":15},{"key_as_string":"2017-02-08T08:21:00.000Z","key":1486542060000,"doc_count":14},{"key_as_string":"2017-02-08T08:22:00.000Z","key":1486542120000,"doc_count":15},{"key_as_string":"2017-02-08T08:23:00.000Z","key":1486542180000,"doc_count":12},{"key_as_string":"2017-02-08T08:24:00.000Z","key":1486542240000,"doc_count":15},{"key_as_string":"2017-02-08T08:25:00.000Z","key":1486542300000,"doc_count":7},{"key_as_string":"2017-02-08T08:26:00.000Z","key":1486542360000,"doc_count":10},{"key_as_string":"2017-02-08T08:27:00.000Z","key":1486542420000,"doc_count":12},{"key_as_string":"2017-02-08T08:28:00.000Z","key":1486542480000,"doc_count":10},{"key_as_string":"2017-02-08T08:29:00.000Z","key":1486542540000,"doc_count":12},{"key_as_string":"2017-02-08T08:30:00.000Z","key":1486542600000,"doc_count":17},{"key_as_string":"2017-02-08T08:31:00.000Z","key":1486542660000,"doc_count":13},{"key_as_string":"2017-02-08T08:32:00.000Z","key":1486542720000,"doc_count":14},{"key_as_string":"2017-02-08T08:33:00.000Z","key":1486542780000,"doc_count":10},{"key_as_string":"2017-02-08T08:34:00.000Z","key":1486542840000,"doc_count":12},{"key_as_string":"2017-02-08T08:35:00.000Z","key":1486542900000,"doc_count":14},{"key_as_string":"2017-02-08T08:36:00.000Z","key":1486542960000,"doc_count":11},{"key_as_string":"2017-02-08T08:37:00.000Z","key":1486543020000,"doc_count":16},{"key_as_string":"2017-02-08T08:38:00.000Z","key":1486543080000,"doc_count":13},{"key_as_string":"2017-02-08T08:39:00.000Z","key":1486543140000,"doc_count":11},{"key_as_string":"2017-02-08T08:40:00.000Z","key":1486543200000,"doc_count":9},{"key_as_string":"2017-02-08T08:41:00.000Z","key":1486543260000,"doc_count":15},{"key_as_string":"2017-02-08T08:42:00.000Z","key":1486543320000,"doc_count":12},{"key_as_string":"2017-02-08T08:43:00.000Z","key":1486543380000,"doc_count":9},{"key_as_string":"2017-02-08T08:44:00.000Z","key":1486543440000,"doc_count":15},{"key_as_string":"2017-02-08T08:45:00.000Z","key":1486543500000,"doc_count":17},{"key_as_string":"2017-02-08T08:46:00.000Z","key":1486543560000,"doc_count":5},{"key_as_string":"2017-02-08T08:47:00.000Z","key":1486543620000,"doc_count":19},{"key_as_string":"2017-02-08T08:48:00.000Z","key":1486543680000,"doc_count":14},{"key_as_string":"2017-02-08T08:49:00.000Z","key":1486543740000,"doc_count":13},{"key_as_string":"2017-02-08T08:50:00.000Z","key":1486543800000,"doc_count":16},{"key_as_string":"2017-02-08T08:51:00.000Z","key":1486543860000,"doc_count":14},{"key_as_string":"2017-02-08T08:52:00.000Z","key":1486543920000,"doc_count":17},{"key_as_string":"2017-02-08T08:53:00.000Z","key":1486543980000,"doc_count":12},{"key_as_string":"2017-02-08T08:54:00.000Z","key":1486544040000,"doc_count":13},{"key_as_string":"2017-02-08T08:55:00.000Z","key":1486544100000,"doc_count":17},{"key_as_string":"2017-02-08T08:56:00.000Z","key":1486544160000,"doc_count":11},{"key_as_string":"2017-02-08T08:57:00.000Z","key":1486544220000,"doc_count":10},{"key_as_string":"2017-02-08T08:58:00.000Z","key":1486544280000,"doc_count":13},{"key_as_string":"2017-02-08T08:59:00.000Z","key":1486544340000,"doc_count":11},{"key_as_string":"2017-02-08T09:00:00.000Z","key":1486544400000,"doc_count":12},{"key_as_string":"2017-02-08T09:01:00.000Z","key":1486544460000,"doc_count":15},{"key_as_string":"2017-02-08T09:02:00.000Z","key":1486544520000,"doc_count":8},{"key_as_string":"2017-02-08T09:03:00.000Z","key":1486544580000,"doc_count":14},{"key_as_string":"2017-02-08T09:04:00.000Z","key":1486544640000,"doc_count":13},{"key_as_string":"2017-02-08T09:05:00.000Z","key":1486544700000,"doc_count":12},{"key_as_string":"2017-02-08T09:06:00.000Z","key":1486544760000,"doc_count":15},{"key_as_string":"2017-02-08T09:07:00.000Z","key":1486544820000,"doc_count":13},{"key_as_string":"2017-02-08T09:08:00.000Z","key":1486544880000,"doc_count":19},{"key_as_string":"2017-02-08T09:09:00.000Z","key":1486544940000,"doc_count":14},{"key_as_string":"2017-02-08T09:10:00.000Z","key":1486545000000,"doc_count":11},{"key_as_string":"2017-02-08T09:11:00.000Z","key":1486545060000,"doc_count":15},{"key_as_string":"2017-02-08T09:12:00.000Z","key":1486545120000,"doc_count":15},{"key_as_string":"2017-02-08T09:13:00.000Z","key":1486545180000,"doc_count":10},{"key_as_string":"2017-02-08T09:14:00.000Z","key":1486545240000,"doc_count":17},{"key_as_string":"2017-02-08T09:15:00.000Z","key":1486545300000,"doc_count":18},{"key_as_string":"2017-02-08T09:16:00.000Z","key":1486545360000,"doc_count":15},{"key_as_string":"2017-02-08T09:17:00.000Z","key":1486545420000,"doc_count":13},{"key_as_string":"2017-02-08T09:18:00.000Z","key":1486545480000,"doc_count":9},{"key_as_string":"2017-02-08T09:19:00.000Z","key":1486545540000,"doc_count":15},{"key_as_string":"2017-02-08T09:20:00.000Z","key":1486545600000,"doc_count":10},{"key_as_string":"2017-02-08T09:21:00.000Z","key":1486545660000,"doc_count":9},{"key_as_string":"2017-02-08T09:22:00.000Z","key":1486545720000,"doc_count":13},{"key_as_string":"2017-02-08T09:23:00.000Z","key":1486545780000,"doc_count":18},{"key_as_string":"2017-02-08T09:24:00.000Z","key":1486545840000,"doc_count":12},{"key_as_string":"2017-02-08T09:25:00.000Z","key":1486545900000,"doc_count":15},{"key_as_string":"2017-02-08T09:26:00.000Z","key":1486545960000,"doc_count":10},{"key_as_string":"2017-02-08T09:27:00.000Z","key":1486546020000,"doc_count":16},{"key_as_string":"2017-02-08T09:28:00.000Z","key":1486546080000,"doc_count":17},{"key_as_string":"2017-02-08T09:29:00.000Z","key":1486546140000,"doc_count":14},{"key_as_string":"2017-02-08T09:30:00.000Z","key":1486546200000,"doc_count":13},{"key_as_string":"2017-02-08T09:31:00.000Z","key":1486546260000,"doc_count":14},{"key_as_string":"2017-02-08T09:32:00.000Z","key":1486546320000,"doc_count":11},{"key_as_string":"2017-02-08T09:33:00.000Z","key":1486546380000,"doc_count":13},{"key_as_string":"2017-02-08T09:34:00.000Z","key":1486546440000,"doc_count":10},{"key_as_string":"2017-02-08T09:35:00.000Z","key":1486546500000,"doc_count":15},{"key_as_string":"2017-02-08T09:36:00.000Z","key":1486546560000,"doc_count":15},{"key_as_string":"2017-02-08T09:37:00.000Z","key":1486546620000,"doc_count":11},{"key_as_string":"2017-02-08T09:38:00.000Z","key":1486546680000,"doc_count":13},{"key_as_string":"2017-02-08T09:39:00.000Z","key":1486546740000,"doc_count":12},{"key_as_string":"2017-02-08T09:40:00.000Z","key":1486546800000,"doc_count":12},{"key_as_string":"2017-02-08T09:41:00.000Z","key":1486546860000,"doc_count":11},{"key_as_string":"2017-02-08T09:42:00.000Z","key":1486546920000,"doc_count":10},{"key_as_string":"2017-02-08T09:43:00.000Z","key":1486546980000,"doc_count":15},{"key_as_string":"2017-02-08T09:44:00.000Z","key":1486547040000,"doc_count":12},{"key_as_string":"2017-02-08T09:45:00.000Z","key":1486547100000,"doc_count":11},{"key_as_string":"2017-02-08T09:46:00.000Z","key":1486547160000,"doc_count":12},{"key_as_string":"2017-02-08T09:47:00.000Z","key":1486547220000,"doc_count":12},{"key_as_string":"2017-02-08T09:48:00.000Z","key":1486547280000,"doc_count":10},{"key_as_string":"2017-02-08T09:49:00.000Z","key":1486547340000,"doc_count":18},{"key_as_string":"2017-02-08T09:50:00.000Z","key":1486547400000,"doc_count":16},{"key_as_string":"2017-02-08T09:51:00.000Z","key":1486547460000,"doc_count":20},{"key_as_string":"2017-02-08T09:52:00.000Z","key":1486547520000,"doc_count":12},{"key_as_string":"2017-02-08T09:53:00.000Z","key":1486547580000,"doc_count":13},{"key_as_string":"2017-02-08T09:54:00.000Z","key":1486547640000,"doc_count":16},{"key_as_string":"2017-02-08T09:55:00.000Z","key":1486547700000,"doc_count":14},{"key_as_string":"2017-02-08T09:56:00.000Z","key":1486547760000,"doc_count":12},{"key_as_string":"2017-02-08T09:57:00.000Z","key":1486547820000,"doc_count":18},{"key_as_string":"2017-02-08T09:58:00.000Z","key":1486547880000,"doc_count":11},{"key_as_string":"2017-02-08T09:59:00.000Z","key":1486547940000,"doc_count":17},{"key_as_string":"2017-02-08T10:00:00.000Z","key":1486548000000,"doc_count":12},{"key_as_string":"2017-02-08T10:01:00.000Z","key":1486548060000,"doc_count":13},{"key_as_string":"2017-02-08T10:02:00.000Z","key":1486548120000,"doc_count":21},{"key_as_string":"2017-02-08T10:03:00.000Z","key":1486548180000,"doc_count":17},{"key_as_string":"2017-02-08T10:04:00.000Z","key":1486548240000,"doc_count":16},{"key_as_string":"2017-02-08T10:05:00.000Z","key":1486548300000,"doc_count":11},{"key_as_string":"2017-02-08T10:06:00.000Z","key":1486548360000,"doc_count":16},{"key_as_string":"2017-02-08T10:07:00.000Z","key":1486548420000,"doc_count":11},{"key_as_string":"2017-02-08T10:08:00.000Z","key":1486548480000,"doc_count":15},{"key_as_string":"2017-02-08T10:09:00.000Z","key":1486548540000,"doc_count":12},{"key_as_string":"2017-02-08T10:10:00.000Z","key":1486548600000,"doc_count":14},{"key_as_string":"2017-02-08T10:11:00.000Z","key":1486548660000,"doc_count":11},{"key_as_string":"2017-02-08T10:12:00.000Z","key":1486548720000,"doc_count":19},{"key_as_string":"2017-02-08T10:13:00.000Z","key":1486548780000,"doc_count":13},{"key_as_string":"2017-02-08T10:14:00.000Z","key":1486548840000,"doc_count":16},{"key_as_string":"2017-02-08T10:15:00.000Z","key":1486548900000,"doc_count":10},{"key_as_string":"2017-02-08T10:16:00.000Z","key":1486548960000,"doc_count":13},{"key_as_string":"2017-02-08T10:17:00.000Z","key":1486549020000,"doc_count":8},{"key_as_string":"2017-02-08T10:18:00.000Z","key":1486549080000,"doc_count":15},{"key_as_string":"2017-02-08T10:19:00.000Z","key":1486549140000,"doc_count":14},{"key_as_string":"2017-02-08T10:20:00.000Z","key":1486549200000,"doc_count":14},{"key_as_string":"2017-02-08T10:21:00.000Z","key":1486549260000,"doc_count":10},{"key_as_string":"2017-02-08T10:22:00.000Z","key":1486549320000,"doc_count":15},{"key_as_string":"2017-02-08T10:23:00.000Z","key":1486549380000,"doc_count":10},{"key_as_string":"2017-02-08T10:24:00.000Z","key":1486549440000,"doc_count":13},{"key_as_string":"2017-02-08T10:25:00.000Z","key":1486549500000,"doc_count":14},{"key_as_string":"2017-02-08T10:26:00.000Z","key":1486549560000,"doc_count":14},{"key_as_string":"2017-02-08T10:27:00.000Z","key":1486549620000,"doc_count":17},{"key_as_string":"2017-02-08T10:28:00.000Z","key":1486549680000,"doc_count":10},{"key_as_string":"2017-02-08T10:29:00.000Z","key":1486549740000,"doc_count":13},{"key_as_string":"2017-02-08T10:30:00.000Z","key":1486549800000,"doc_count":16},{"key_as_string":"2017-02-08T10:31:00.000Z","key":1486549860000,"doc_count":14},{"key_as_string":"2017-02-08T10:32:00.000Z","key":1486549920000,"doc_count":16},{"key_as_string":"2017-02-08T10:33:00.000Z","key":1486549980000,"doc_count":15},{"key_as_string":"2017-02-08T10:34:00.000Z","key":1486550040000,"doc_count":15},{"key_as_string":"2017-02-08T10:35:00.000Z","key":1486550100000,"doc_count":15},{"key_as_string":"2017-02-08T10:36:00.000Z","key":1486550160000,"doc_count":10},{"key_as_string":"2017-02-08T10:37:00.000Z","key":1486550220000,"doc_count":15},{"key_as_string":"2017-02-08T10:38:00.000Z","key":1486550280000,"doc_count":14},{"key_as_string":"2017-02-08T10:39:00.000Z","key":1486550340000,"doc_count":17},{"key_as_string":"2017-02-08T10:40:00.000Z","key":1486550400000,"doc_count":15},{"key_as_string":"2017-02-08T10:41:00.000Z","key":1486550460000,"doc_count":19},{"key_as_string":"2017-02-08T10:42:00.000Z","key":1486550520000,"doc_count":9},{"key_as_string":"2017-02-08T10:43:00.000Z","key":1486550580000,"doc_count":14},{"key_as_string":"2017-02-08T10:44:00.000Z","key":1486550640000,"doc_count":10},{"key_as_string":"2017-02-08T10:45:00.000Z","key":1486550700000,"doc_count":20},{"key_as_string":"2017-02-08T10:46:00.000Z","key":1486550760000,"doc_count":10},{"key_as_string":"2017-02-08T10:47:00.000Z","key":1486550820000,"doc_count":16},{"key_as_string":"2017-02-08T10:48:00.000Z","key":1486550880000,"doc_count":13},{"key_as_string":"2017-02-08T10:49:00.000Z","key":1486550940000,"doc_count":14},{"key_as_string":"2017-02-08T10:50:00.000Z","key":1486551000000,"doc_count":10},{"key_as_string":"2017-02-08T10:51:00.000Z","key":1486551060000,"doc_count":17},{"key_as_string":"2017-02-08T10:52:00.000Z","key":1486551120000,"doc_count":16},{"key_as_string":"2017-02-08T10:53:00.000Z","key":1486551180000,"doc_count":9},{"key_as_string":"2017-02-08T10:54:00.000Z","key":1486551240000,"doc_count":15},{"key_as_string":"2017-02-08T10:55:00.000Z","key":1486551300000,"doc_count":16},{"key_as_string":"2017-02-08T10:56:00.000Z","key":1486551360000,"doc_count":5},{"key_as_string":"2017-02-08T10:57:00.000Z","key":1486551420000,"doc_count":15},{"key_as_string":"2017-02-08T10:58:00.000Z","key":1486551480000,"doc_count":9},{"key_as_string":"2017-02-08T10:59:00.000Z","key":1486551540000,"doc_count":14},{"key_as_string":"2017-02-08T11:00:00.000Z","key":1486551600000,"doc_count":16},{"key_as_string":"2017-02-08T11:01:00.000Z","key":1486551660000,"doc_count":9},{"key_as_string":"2017-02-08T11:02:00.000Z","key":1486551720000,"doc_count":17},{"key_as_string":"2017-02-08T11:03:00.000Z","key":1486551780000,"doc_count":9},{"key_as_string":"2017-02-08T11:04:00.000Z","key":1486551840000,"doc_count":18},{"key_as_string":"2017-02-08T11:05:00.000Z","key":1486551900000,"doc_count":12},{"key_as_string":"2017-02-08T11:06:00.000Z","key":1486551960000,"doc_count":16},{"key_as_string":"2017-02-08T11:07:00.000Z","key":1486552020000,"doc_count":13},{"key_as_string":"2017-02-08T11:08:00.000Z","key":1486552080000,"doc_count":14},{"key_as_string":"2017-02-08T11:09:00.000Z","key":1486552140000,"doc_count":13},{"key_as_string":"2017-02-08T11:10:00.000Z","key":1486552200000,"doc_count":17},{"key_as_string":"2017-02-08T11:11:00.000Z","key":1486552260000,"doc_count":12},{"key_as_string":"2017-02-08T11:12:00.000Z","key":1486552320000,"doc_count":11},{"key_as_string":"2017-02-08T11:13:00.000Z","key":1486552380000,"doc_count":15},{"key_as_string":"2017-02-08T11:14:00.000Z","key":1486552440000,"doc_count":10},{"key_as_string":"2017-02-08T11:15:00.000Z","key":1486552500000,"doc_count":9},{"key_as_string":"2017-02-08T11:16:00.000Z","key":1486552560000,"doc_count":14},{"key_as_string":"2017-02-08T11:17:00.000Z","key":1486552620000,"doc_count":16},{"key_as_string":"2017-02-08T11:18:00.000Z","key":1486552680000,"doc_count":19},{"key_as_string":"2017-02-08T11:19:00.000Z","key":1486552740000,"doc_count":14},{"key_as_string":"2017-02-08T11:20:00.000Z","key":1486552800000,"doc_count":10},{"key_as_string":"2017-02-08T11:21:00.000Z","key":1486552860000,"doc_count":14},{"key_as_string":"2017-02-08T11:22:00.000Z","key":1486552920000,"doc_count":13},{"key_as_string":"2017-02-08T11:23:00.000Z","key":1486552980000,"doc_count":16},{"key_as_string":"2017-02-08T11:24:00.000Z","key":1486553040000,"doc_count":15},{"key_as_string":"2017-02-08T11:25:00.000Z","key":1486553100000,"doc_count":16},{"key_as_string":"2017-02-08T11:26:00.000Z","key":1486553160000,"doc_count":18},{"key_as_string":"2017-02-08T11:27:00.000Z","key":1486553220000,"doc_count":13},{"key_as_string":"2017-02-08T11:28:00.000Z","key":1486553280000,"doc_count":13},{"key_as_string":"2017-02-08T11:29:00.000Z","key":1486553340000,"doc_count":16},{"key_as_string":"2017-02-08T11:30:00.000Z","key":1486553400000,"doc_count":13},{"key_as_string":"2017-02-08T11:31:00.000Z","key":1486553460000,"doc_count":16},{"key_as_string":"2017-02-08T11:32:00.000Z","key":1486553520000,"doc_count":13},{"key_as_string":"2017-02-08T11:33:00.000Z","key":1486553580000,"doc_count":18},{"key_as_string":"2017-02-08T11:34:00.000Z","key":1486553640000,"doc_count":12},{"key_as_string":"2017-02-08T11:35:00.000Z","key":1486553700000,"doc_count":11},{"key_as_string":"2017-02-08T11:36:00.000Z","key":1486553760000,"doc_count":16},{"key_as_string":"2017-02-08T11:37:00.000Z","key":1486553820000,"doc_count":18},{"key_as_string":"2017-02-08T11:38:00.000Z","key":1486553880000,"doc_count":10},{"key_as_string":"2017-02-08T11:39:00.000Z","key":1486553940000,"doc_count":17},{"key_as_string":"2017-02-08T11:40:00.000Z","key":1486554000000,"doc_count":11},{"key_as_string":"2017-02-08T11:41:00.000Z","key":1486554060000,"doc_count":20},{"key_as_string":"2017-02-08T11:42:00.000Z","key":1486554120000,"doc_count":10},{"key_as_string":"2017-02-08T11:43:00.000Z","key":1486554180000,"doc_count":17},{"key_as_string":"2017-02-08T11:44:00.000Z","key":1486554240000,"doc_count":21},{"key_as_string":"2017-02-08T11:45:00.000Z","key":1486554300000,"doc_count":13},{"key_as_string":"2017-02-08T11:46:00.000Z","key":1486554360000,"doc_count":12},{"key_as_string":"2017-02-08T11:47:00.000Z","key":1486554420000,"doc_count":11},{"key_as_string":"2017-02-08T11:48:00.000Z","key":1486554480000,"doc_count":14},{"key_as_string":"2017-02-08T11:49:00.000Z","key":1486554540000,"doc_count":11},{"key_as_string":"2017-02-08T11:50:00.000Z","key":1486554600000,"doc_count":9},{"key_as_string":"2017-02-08T11:51:00.000Z","key":1486554660000,"doc_count":14},{"key_as_string":"2017-02-08T11:52:00.000Z","key":1486554720000,"doc_count":13},{"key_as_string":"2017-02-08T11:53:00.000Z","key":1486554780000,"doc_count":12},{"key_as_string":"2017-02-08T11:54:00.000Z","key":1486554840000,"doc_count":13},{"key_as_string":"2017-02-08T11:55:00.000Z","key":1486554900000,"doc_count":18},{"key_as_string":"2017-02-08T11:56:00.000Z","key":1486554960000,"doc_count":18},{"key_as_string":"2017-02-08T11:57:00.000Z","key":1486555020000,"doc_count":13},{"key_as_string":"2017-02-08T11:58:00.000Z","key":1486555080000,"doc_count":13},{"key_as_string":"2017-02-08T11:59:00.000Z","key":1486555140000,"doc_count":14},{"key_as_string":"2017-02-08T12:00:00.000Z","key":1486555200000,"doc_count":18},{"key_as_string":"2017-02-08T12:01:00.000Z","key":1486555260000,"doc_count":14},{"key_as_string":"2017-02-08T12:02:00.000Z","key":1486555320000,"doc_count":14},{"key_as_string":"2017-02-08T12:03:00.000Z","key":1486555380000,"doc_count":13},{"key_as_string":"2017-02-08T12:04:00.000Z","key":1486555440000,"doc_count":18},{"key_as_string":"2017-02-08T12:05:00.000Z","key":1486555500000,"doc_count":13},{"key_as_string":"2017-02-08T12:06:00.000Z","key":1486555560000,"doc_count":16},{"key_as_string":"2017-02-08T12:07:00.000Z","key":1486555620000,"doc_count":13},{"key_as_string":"2017-02-08T12:08:00.000Z","key":1486555680000,"doc_count":14},{"key_as_string":"2017-02-08T12:09:00.000Z","key":1486555740000,"doc_count":16},{"key_as_string":"2017-02-08T12:10:00.000Z","key":1486555800000,"doc_count":13},{"key_as_string":"2017-02-08T12:11:00.000Z","key":1486555860000,"doc_count":13},{"key_as_string":"2017-02-08T12:12:00.000Z","key":1486555920000,"doc_count":15},{"key_as_string":"2017-02-08T12:13:00.000Z","key":1486555980000,"doc_count":11},{"key_as_string":"2017-02-08T12:14:00.000Z","key":1486556040000,"doc_count":15},{"key_as_string":"2017-02-08T12:15:00.000Z","key":1486556100000,"doc_count":12},{"key_as_string":"2017-02-08T12:16:00.000Z","key":1486556160000,"doc_count":14},{"key_as_string":"2017-02-08T12:17:00.000Z","key":1486556220000,"doc_count":13},{"key_as_string":"2017-02-08T12:18:00.000Z","key":1486556280000,"doc_count":19},{"key_as_string":"2017-02-08T12:19:00.000Z","key":1486556340000,"doc_count":13},{"key_as_string":"2017-02-08T12:20:00.000Z","key":1486556400000,"doc_count":14},{"key_as_string":"2017-02-08T12:21:00.000Z","key":1486556460000,"doc_count":12},{"key_as_string":"2017-02-08T12:22:00.000Z","key":1486556520000,"doc_count":15},{"key_as_string":"2017-02-08T12:23:00.000Z","key":1486556580000,"doc_count":17},{"key_as_string":"2017-02-08T12:24:00.000Z","key":1486556640000,"doc_count":14},{"key_as_string":"2017-02-08T12:25:00.000Z","key":1486556700000,"doc_count":10},{"key_as_string":"2017-02-08T12:26:00.000Z","key":1486556760000,"doc_count":13},{"key_as_string":"2017-02-08T12:27:00.000Z","key":1486556820000,"doc_count":14},{"key_as_string":"2017-02-08T12:28:00.000Z","key":1486556880000,"doc_count":10},{"key_as_string":"2017-02-08T12:29:00.000Z","key":1486556940000,"doc_count":13},{"key_as_string":"2017-02-08T12:30:00.000Z","key":1486557000000,"doc_count":16},{"key_as_string":"2017-02-08T12:31:00.000Z","key":1486557060000,"doc_count":15},{"key_as_string":"2017-02-08T12:32:00.000Z","key":1486557120000,"doc_count":9},{"key_as_string":"2017-02-08T12:33:00.000Z","key":1486557180000,"doc_count":16},{"key_as_string":"2017-02-08T12:34:00.000Z","key":1486557240000,"doc_count":16},{"key_as_string":"2017-02-08T12:35:00.000Z","key":1486557300000,"doc_count":9},{"key_as_string":"2017-02-08T12:36:00.000Z","key":1486557360000,"doc_count":11},{"key_as_string":"2017-02-08T12:37:00.000Z","key":1486557420000,"doc_count":12},{"key_as_string":"2017-02-08T12:38:00.000Z","key":1486557480000,"doc_count":16},{"key_as_string":"2017-02-08T12:39:00.000Z","key":1486557540000,"doc_count":13},{"key_as_string":"2017-02-08T12:40:00.000Z","key":1486557600000,"doc_count":12},{"key_as_string":"2017-02-08T12:41:00.000Z","key":1486557660000,"doc_count":15},{"key_as_string":"2017-02-08T12:42:00.000Z","key":1486557720000,"doc_count":12},{"key_as_string":"2017-02-08T12:43:00.000Z","key":1486557780000,"doc_count":13},{"key_as_string":"2017-02-08T12:44:00.000Z","key":1486557840000,"doc_count":13},{"key_as_string":"2017-02-08T12:45:00.000Z","key":1486557900000,"doc_count":15},{"key_as_string":"2017-02-08T12:46:00.000Z","key":1486557960000,"doc_count":15},{"key_as_string":"2017-02-08T12:47:00.000Z","key":1486558020000,"doc_count":12},{"key_as_string":"2017-02-08T12:48:00.000Z","key":1486558080000,"doc_count":13},{"key_as_string":"2017-02-08T12:49:00.000Z","key":1486558140000,"doc_count":15},{"key_as_string":"2017-02-08T12:50:00.000Z","key":1486558200000,"doc_count":16},{"key_as_string":"2017-02-08T12:51:00.000Z","key":1486558260000,"doc_count":14},{"key_as_string":"2017-02-08T12:52:00.000Z","key":1486558320000,"doc_count":11},{"key_as_string":"2017-02-08T12:53:00.000Z","key":1486558380000,"doc_count":10},{"key_as_string":"2017-02-08T12:54:00.000Z","key":1486558440000,"doc_count":14},{"key_as_string":"2017-02-08T12:55:00.000Z","key":1486558500000,"doc_count":11},{"key_as_string":"2017-02-08T12:56:00.000Z","key":1486558560000,"doc_count":9},{"key_as_string":"2017-02-08T12:57:00.000Z","key":1486558620000,"doc_count":13},{"key_as_string":"2017-02-08T12:58:00.000Z","key":1486558680000,"doc_count":13},{"key_as_string":"2017-02-08T12:59:00.000Z","key":1486558740000,"doc_count":13},{"key_as_string":"2017-02-08T13:00:00.000Z","key":1486558800000,"doc_count":18},{"key_as_string":"2017-02-08T13:01:00.000Z","key":1486558860000,"doc_count":13},{"key_as_string":"2017-02-08T13:02:00.000Z","key":1486558920000,"doc_count":20},{"key_as_string":"2017-02-08T13:03:00.000Z","key":1486558980000,"doc_count":10},{"key_as_string":"2017-02-08T13:04:00.000Z","key":1486559040000,"doc_count":16},{"key_as_string":"2017-02-08T13:05:00.000Z","key":1486559100000,"doc_count":11},{"key_as_string":"2017-02-08T13:06:00.000Z","key":1486559160000,"doc_count":18},{"key_as_string":"2017-02-08T13:07:00.000Z","key":1486559220000,"doc_count":10},{"key_as_string":"2017-02-08T13:08:00.000Z","key":1486559280000,"doc_count":15},{"key_as_string":"2017-02-08T13:09:00.000Z","key":1486559340000,"doc_count":17},{"key_as_string":"2017-02-08T13:10:00.000Z","key":1486559400000,"doc_count":6},{"key_as_string":"2017-02-08T13:11:00.000Z","key":1486559460000,"doc_count":19},{"key_as_string":"2017-02-08T13:12:00.000Z","key":1486559520000,"doc_count":12},{"key_as_string":"2017-02-08T13:13:00.000Z","key":1486559580000,"doc_count":11},{"key_as_string":"2017-02-08T13:14:00.000Z","key":1486559640000,"doc_count":15},{"key_as_string":"2017-02-08T13:15:00.000Z","key":1486559700000,"doc_count":10},{"key_as_string":"2017-02-08T13:16:00.000Z","key":1486559760000,"doc_count":16},{"key_as_string":"2017-02-08T13:17:00.000Z","key":1486559820000,"doc_count":16},{"key_as_string":"2017-02-08T13:18:00.000Z","key":1486559880000,"doc_count":14},{"key_as_string":"2017-02-08T13:19:00.000Z","key":1486559940000,"doc_count":12},{"key_as_string":"2017-02-08T13:20:00.000Z","key":1486560000000,"doc_count":10},{"key_as_string":"2017-02-08T13:21:00.000Z","key":1486560060000,"doc_count":18},{"key_as_string":"2017-02-08T13:22:00.000Z","key":1486560120000,"doc_count":14},{"key_as_string":"2017-02-08T13:23:00.000Z","key":1486560180000,"doc_count":11},{"key_as_string":"2017-02-08T13:24:00.000Z","key":1486560240000,"doc_count":15},{"key_as_string":"2017-02-08T13:25:00.000Z","key":1486560300000,"doc_count":17},{"key_as_string":"2017-02-08T13:26:00.000Z","key":1486560360000,"doc_count":10},{"key_as_string":"2017-02-08T13:27:00.000Z","key":1486560420000,"doc_count":14},{"key_as_string":"2017-02-08T13:28:00.000Z","key":1486560480000,"doc_count":14},{"key_as_string":"2017-02-08T13:29:00.000Z","key":1486560540000,"doc_count":13},{"key_as_string":"2017-02-08T13:30:00.000Z","key":1486560600000,"doc_count":15},{"key_as_string":"2017-02-08T13:31:00.000Z","key":1486560660000,"doc_count":16},{"key_as_string":"2017-02-08T13:32:00.000Z","key":1486560720000,"doc_count":13},{"key_as_string":"2017-02-08T13:33:00.000Z","key":1486560780000,"doc_count":13},{"key_as_string":"2017-02-08T13:34:00.000Z","key":1486560840000,"doc_count":15},{"key_as_string":"2017-02-08T13:35:00.000Z","key":1486560900000,"doc_count":8},{"key_as_string":"2017-02-08T13:36:00.000Z","key":1486560960000,"doc_count":18},{"key_as_string":"2017-02-08T13:37:00.000Z","key":1486561020000,"doc_count":13},{"key_as_string":"2017-02-08T13:38:00.000Z","key":1486561080000,"doc_count":14},{"key_as_string":"2017-02-08T13:39:00.000Z","key":1486561140000,"doc_count":14},{"key_as_string":"2017-02-08T13:40:00.000Z","key":1486561200000,"doc_count":17},{"key_as_string":"2017-02-08T13:41:00.000Z","key":1486561260000,"doc_count":12},{"key_as_string":"2017-02-08T13:42:00.000Z","key":1486561320000,"doc_count":10},{"key_as_string":"2017-02-08T13:43:00.000Z","key":1486561380000,"doc_count":17},{"key_as_string":"2017-02-08T13:44:00.000Z","key":1486561440000,"doc_count":12},{"key_as_string":"2017-02-08T13:45:00.000Z","key":1486561500000,"doc_count":9},{"key_as_string":"2017-02-08T13:46:00.000Z","key":1486561560000,"doc_count":21},{"key_as_string":"2017-02-08T13:47:00.000Z","key":1486561620000,"doc_count":16},{"key_as_string":"2017-02-08T13:48:00.000Z","key":1486561680000,"doc_count":17},{"key_as_string":"2017-02-08T13:49:00.000Z","key":1486561740000,"doc_count":11},{"key_as_string":"2017-02-08T13:50:00.000Z","key":1486561800000,"doc_count":17},{"key_as_string":"2017-02-08T13:51:00.000Z","key":1486561860000,"doc_count":9},{"key_as_string":"2017-02-08T13:52:00.000Z","key":1486561920000,"doc_count":14},{"key_as_string":"2017-02-08T13:53:00.000Z","key":1486561980000,"doc_count":10},{"key_as_string":"2017-02-08T13:54:00.000Z","key":1486562040000,"doc_count":9},{"key_as_string":"2017-02-08T13:55:00.000Z","key":1486562100000,"doc_count":21},{"key_as_string":"2017-02-08T13:56:00.000Z","key":1486562160000,"doc_count":14},{"key_as_string":"2017-02-08T13:57:00.000Z","key":1486562220000,"doc_count":11},{"key_as_string":"2017-02-08T13:58:00.000Z","key":1486562280000,"doc_count":15},{"key_as_string":"2017-02-08T13:59:00.000Z","key":1486562340000,"doc_count":10},{"key_as_string":"2017-02-08T14:00:00.000Z","key":1486562400000,"doc_count":12},{"key_as_string":"2017-02-08T14:01:00.000Z","key":1486562460000,"doc_count":15},{"key_as_string":"2017-02-08T14:02:00.000Z","key":1486562520000,"doc_count":11},{"key_as_string":"2017-02-08T14:03:00.000Z","key":1486562580000,"doc_count":14},{"key_as_string":"2017-02-08T14:04:00.000Z","key":1486562640000,"doc_count":18},{"key_as_string":"2017-02-08T14:05:00.000Z","key":1486562700000,"doc_count":11},{"key_as_string":"2017-02-08T14:06:00.000Z","key":1486562760000,"doc_count":11},{"key_as_string":"2017-02-08T14:07:00.000Z","key":1486562820000,"doc_count":16},{"key_as_string":"2017-02-08T14:08:00.000Z","key":1486562880000,"doc_count":10},{"key_as_string":"2017-02-08T14:09:00.000Z","key":1486562940000,"doc_count":14},{"key_as_string":"2017-02-08T14:10:00.000Z","key":1486563000000,"doc_count":14},{"key_as_string":"2017-02-08T14:11:00.000Z","key":1486563060000,"doc_count":9},{"key_as_string":"2017-02-08T14:12:00.000Z","key":1486563120000,"doc_count":15},{"key_as_string":"2017-02-08T14:13:00.000Z","key":1486563180000,"doc_count":17},{"key_as_string":"2017-02-08T14:14:00.000Z","key":1486563240000,"doc_count":5},{"key_as_string":"2017-02-08T14:15:00.000Z","key":1486563300000,"doc_count":15},{"key_as_string":"2017-02-08T14:16:00.000Z","key":1486563360000,"doc_count":15},{"key_as_string":"2017-02-08T14:17:00.000Z","key":1486563420000,"doc_count":13},{"key_as_string":"2017-02-08T14:18:00.000Z","key":1486563480000,"doc_count":15},{"key_as_string":"2017-02-08T14:19:00.000Z","key":1486563540000,"doc_count":14},{"key_as_string":"2017-02-08T14:20:00.000Z","key":1486563600000,"doc_count":8},{"key_as_string":"2017-02-08T14:21:00.000Z","key":1486563660000,"doc_count":14},{"key_as_string":"2017-02-08T14:22:00.000Z","key":1486563720000,"doc_count":11},{"key_as_string":"2017-02-08T14:23:00.000Z","key":1486563780000,"doc_count":14},{"key_as_string":"2017-02-08T14:24:00.000Z","key":1486563840000,"doc_count":15},{"key_as_string":"2017-02-08T14:25:00.000Z","key":1486563900000,"doc_count":9},{"key_as_string":"2017-02-08T14:26:00.000Z","key":1486563960000,"doc_count":16},{"key_as_string":"2017-02-08T14:27:00.000Z","key":1486564020000,"doc_count":15},{"key_as_string":"2017-02-08T14:28:00.000Z","key":1486564080000,"doc_count":13},{"key_as_string":"2017-02-08T14:29:00.000Z","key":1486564140000,"doc_count":14},{"key_as_string":"2017-02-08T14:30:00.000Z","key":1486564200000,"doc_count":10},{"key_as_string":"2017-02-08T14:31:00.000Z","key":1486564260000,"doc_count":15},{"key_as_string":"2017-02-08T14:32:00.000Z","key":1486564320000,"doc_count":15},{"key_as_string":"2017-02-08T14:33:00.000Z","key":1486564380000,"doc_count":11},{"key_as_string":"2017-02-08T14:34:00.000Z","key":1486564440000,"doc_count":13},{"key_as_string":"2017-02-08T14:35:00.000Z","key":1486564500000,"doc_count":14},{"key_as_string":"2017-02-08T14:36:00.000Z","key":1486564560000,"doc_count":11},{"key_as_string":"2017-02-08T14:37:00.000Z","key":1486564620000,"doc_count":10},{"key_as_string":"2017-02-08T14:38:00.000Z","key":1486564680000,"doc_count":18},{"key_as_string":"2017-02-08T14:39:00.000Z","key":1486564740000,"doc_count":12},{"key_as_string":"2017-02-08T14:40:00.000Z","key":1486564800000,"doc_count":14},{"key_as_string":"2017-02-08T14:41:00.000Z","key":1486564860000,"doc_count":15},{"key_as_string":"2017-02-08T14:42:00.000Z","key":1486564920000,"doc_count":17},{"key_as_string":"2017-02-08T14:43:00.000Z","key":1486564980000,"doc_count":9},{"key_as_string":"2017-02-08T14:44:00.000Z","key":1486565040000,"doc_count":10},{"key_as_string":"2017-02-08T14:45:00.000Z","key":1486565100000,"doc_count":9},{"key_as_string":"2017-02-08T14:46:00.000Z","key":1486565160000,"doc_count":15},{"key_as_string":"2017-02-08T14:47:00.000Z","key":1486565220000,"doc_count":12},{"key_as_string":"2017-02-08T14:48:00.000Z","key":1486565280000,"doc_count":10},{"key_as_string":"2017-02-08T14:49:00.000Z","key":1486565340000,"doc_count":18},{"key_as_string":"2017-02-08T14:50:00.000Z","key":1486565400000,"doc_count":9},{"key_as_string":"2017-02-08T14:51:00.000Z","key":1486565460000,"doc_count":15},{"key_as_string":"2017-02-08T14:52:00.000Z","key":1486565520000,"doc_count":19},{"key_as_string":"2017-02-08T14:53:00.000Z","key":1486565580000,"doc_count":11},{"key_as_string":"2017-02-08T14:54:00.000Z","key":1486565640000,"doc_count":12},{"key_as_string":"2017-02-08T14:55:00.000Z","key":1486565700000,"doc_count":10},{"key_as_string":"2017-02-08T14:56:00.000Z","key":1486565760000,"doc_count":9},{"key_as_string":"2017-02-08T14:57:00.000Z","key":1486565820000,"doc_count":21},{"key_as_string":"2017-02-08T14:58:00.000Z","key":1486565880000,"doc_count":13},{"key_as_string":"2017-02-08T14:59:00.000Z","key":1486565940000,"doc_count":16},{"key_as_string":"2017-02-08T15:00:00.000Z","key":1486566000000,"doc_count":9},{"key_as_string":"2017-02-08T15:01:00.000Z","key":1486566060000,"doc_count":16},{"key_as_string":"2017-02-08T15:02:00.000Z","key":1486566120000,"doc_count":11},{"key_as_string":"2017-02-08T15:03:00.000Z","key":1486566180000,"doc_count":14},{"key_as_string":"2017-02-08T15:04:00.000Z","key":1486566240000,"doc_count":16},{"key_as_string":"2017-02-08T15:05:00.000Z","key":1486566300000,"doc_count":10},{"key_as_string":"2017-02-08T15:06:00.000Z","key":1486566360000,"doc_count":14},{"key_as_string":"2017-02-08T15:07:00.000Z","key":1486566420000,"doc_count":9},{"key_as_string":"2017-02-08T15:08:00.000Z","key":1486566480000,"doc_count":13},{"key_as_string":"2017-02-08T15:09:00.000Z","key":1486566540000,"doc_count":13},{"key_as_string":"2017-02-08T15:10:00.000Z","key":1486566600000,"doc_count":14},{"key_as_string":"2017-02-08T15:11:00.000Z","key":1486566660000,"doc_count":15},{"key_as_string":"2017-02-08T15:12:00.000Z","key":1486566720000,"doc_count":15},{"key_as_string":"2017-02-08T15:13:00.000Z","key":1486566780000,"doc_count":11},{"key_as_string":"2017-02-08T15:14:00.000Z","key":1486566840000,"doc_count":7},{"key_as_string":"2017-02-08T15:15:00.000Z","key":1486566900000,"doc_count":20},{"key_as_string":"2017-02-08T15:16:00.000Z","key":1486566960000,"doc_count":11},{"key_as_string":"2017-02-08T15:17:00.000Z","key":1486567020000,"doc_count":15},{"key_as_string":"2017-02-08T15:18:00.000Z","key":1486567080000,"doc_count":14},{"key_as_string":"2017-02-08T15:19:00.000Z","key":1486567140000,"doc_count":11},{"key_as_string":"2017-02-08T15:20:00.000Z","key":1486567200000,"doc_count":18},{"key_as_string":"2017-02-08T15:21:00.000Z","key":1486567260000,"doc_count":11},{"key_as_string":"2017-02-08T15:22:00.000Z","key":1486567320000,"doc_count":12},{"key_as_string":"2017-02-08T15:23:00.000Z","key":1486567380000,"doc_count":12},{"key_as_string":"2017-02-08T15:24:00.000Z","key":1486567440000,"doc_count":8},{"key_as_string":"2017-02-08T15:25:00.000Z","key":1486567500000,"doc_count":11},{"key_as_string":"2017-02-08T15:26:00.000Z","key":1486567560000,"doc_count":12},{"key_as_string":"2017-02-08T15:27:00.000Z","key":1486567620000,"doc_count":12},{"key_as_string":"2017-02-08T15:28:00.000Z","key":1486567680000,"doc_count":14},{"key_as_string":"2017-02-08T15:29:00.000Z","key":1486567740000,"doc_count":13},{"key_as_string":"2017-02-08T15:30:00.000Z","key":1486567800000,"doc_count":13},{"key_as_string":"2017-02-08T15:31:00.000Z","key":1486567860000,"doc_count":14},{"key_as_string":"2017-02-08T15:32:00.000Z","key":1486567920000,"doc_count":15},{"key_as_string":"2017-02-08T15:33:00.000Z","key":1486567980000,"doc_count":12},{"key_as_string":"2017-02-08T15:34:00.000Z","key":1486568040000,"doc_count":15},{"key_as_string":"2017-02-08T15:35:00.000Z","key":1486568100000,"doc_count":20},{"key_as_string":"2017-02-08T15:36:00.000Z","key":1486568160000,"doc_count":11},{"key_as_string":"2017-02-08T15:37:00.000Z","key":1486568220000,"doc_count":13},{"key_as_string":"2017-02-08T15:38:00.000Z","key":1486568280000,"doc_count":13},{"key_as_string":"2017-02-08T15:39:00.000Z","key":1486568340000,"doc_count":10},{"key_as_string":"2017-02-08T15:40:00.000Z","key":1486568400000,"doc_count":14},{"key_as_string":"2017-02-08T15:41:00.000Z","key":1486568460000,"doc_count":16},{"key_as_string":"2017-02-08T15:42:00.000Z","key":1486568520000,"doc_count":17},{"key_as_string":"2017-02-08T15:43:00.000Z","key":1486568580000,"doc_count":15},{"key_as_string":"2017-02-08T15:44:00.000Z","key":1486568640000,"doc_count":14},{"key_as_string":"2017-02-08T15:45:00.000Z","key":1486568700000,"doc_count":14},{"key_as_string":"2017-02-08T15:46:00.000Z","key":1486568760000,"doc_count":12},{"key_as_string":"2017-02-08T15:47:00.000Z","key":1486568820000,"doc_count":16},{"key_as_string":"2017-02-08T15:48:00.000Z","key":1486568880000,"doc_count":16},{"key_as_string":"2017-02-08T15:49:00.000Z","key":1486568940000,"doc_count":12},{"key_as_string":"2017-02-08T15:50:00.000Z","key":1486569000000,"doc_count":15},{"key_as_string":"2017-02-08T15:51:00.000Z","key":1486569060000,"doc_count":10},{"key_as_string":"2017-02-08T15:52:00.000Z","key":1486569120000,"doc_count":12},{"key_as_string":"2017-02-08T15:53:00.000Z","key":1486569180000,"doc_count":12},{"key_as_string":"2017-02-08T15:54:00.000Z","key":1486569240000,"doc_count":16},{"key_as_string":"2017-02-08T15:55:00.000Z","key":1486569300000,"doc_count":12},{"key_as_string":"2017-02-08T15:56:00.000Z","key":1486569360000,"doc_count":9},{"key_as_string":"2017-02-08T15:57:00.000Z","key":1486569420000,"doc_count":11},{"key_as_string":"2017-02-08T15:58:00.000Z","key":1486569480000,"doc_count":10},{"key_as_string":"2017-02-08T15:59:00.000Z","key":1486569540000,"doc_count":12},{"key_as_string":"2017-02-08T16:00:00.000Z","key":1486569600000,"doc_count":12},{"key_as_string":"2017-02-08T16:01:00.000Z","key":1486569660000,"doc_count":14},{"key_as_string":"2017-02-08T16:02:00.000Z","key":1486569720000,"doc_count":13},{"key_as_string":"2017-02-08T16:03:00.000Z","key":1486569780000,"doc_count":11},{"key_as_string":"2017-02-08T16:04:00.000Z","key":1486569840000,"doc_count":12},{"key_as_string":"2017-02-08T16:05:00.000Z","key":1486569900000,"doc_count":16},{"key_as_string":"2017-02-08T16:06:00.000Z","key":1486569960000,"doc_count":13},{"key_as_string":"2017-02-08T16:07:00.000Z","key":1486570020000,"doc_count":12},{"key_as_string":"2017-02-08T16:08:00.000Z","key":1486570080000,"doc_count":15},{"key_as_string":"2017-02-08T16:09:00.000Z","key":1486570140000,"doc_count":7},{"key_as_string":"2017-02-08T16:10:00.000Z","key":1486570200000,"doc_count":15},{"key_as_string":"2017-02-08T16:11:00.000Z","key":1486570260000,"doc_count":13},{"key_as_string":"2017-02-08T16:12:00.000Z","key":1486570320000,"doc_count":10},{"key_as_string":"2017-02-08T16:13:00.000Z","key":1486570380000,"doc_count":13},{"key_as_string":"2017-02-08T16:14:00.000Z","key":1486570440000,"doc_count":13},{"key_as_string":"2017-02-08T16:15:00.000Z","key":1486570500000,"doc_count":7},{"key_as_string":"2017-02-08T16:16:00.000Z","key":1486570560000,"doc_count":12},{"key_as_string":"2017-02-08T16:17:00.000Z","key":1486570620000,"doc_count":11},{"key_as_string":"2017-02-08T16:18:00.000Z","key":1486570680000,"doc_count":10},{"key_as_string":"2017-02-08T16:19:00.000Z","key":1486570740000,"doc_count":8},{"key_as_string":"2017-02-08T16:20:00.000Z","key":1486570800000,"doc_count":13},{"key_as_string":"2017-02-08T16:21:00.000Z","key":1486570860000,"doc_count":12},{"key_as_string":"2017-02-08T16:22:00.000Z","key":1486570920000,"doc_count":12},{"key_as_string":"2017-02-08T16:23:00.000Z","key":1486570980000,"doc_count":9},{"key_as_string":"2017-02-08T16:24:00.000Z","key":1486571040000,"doc_count":12},{"key_as_string":"2017-02-08T16:25:00.000Z","key":1486571100000,"doc_count":13},{"key_as_string":"2017-02-08T16:26:00.000Z","key":1486571160000,"doc_count":17},{"key_as_string":"2017-02-08T16:27:00.000Z","key":1486571220000,"doc_count":15},{"key_as_string":"2017-02-08T16:28:00.000Z","key":1486571280000,"doc_count":14},{"key_as_string":"2017-02-08T16:29:00.000Z","key":1486571340000,"doc_count":15},{"key_as_string":"2017-02-08T16:30:00.000Z","key":1486571400000,"doc_count":12},{"key_as_string":"2017-02-08T16:31:00.000Z","key":1486571460000,"doc_count":11},{"key_as_string":"2017-02-08T16:32:00.000Z","key":1486571520000,"doc_count":16},{"key_as_string":"2017-02-08T16:33:00.000Z","key":1486571580000,"doc_count":9},{"key_as_string":"2017-02-08T16:34:00.000Z","key":1486571640000,"doc_count":10},{"key_as_string":"2017-02-08T16:35:00.000Z","key":1486571700000,"doc_count":16},{"key_as_string":"2017-02-08T16:36:00.000Z","key":1486571760000,"doc_count":18},{"key_as_string":"2017-02-08T16:37:00.000Z","key":1486571820000,"doc_count":13},{"key_as_string":"2017-02-08T16:38:00.000Z","key":1486571880000,"doc_count":12},{"key_as_string":"2017-02-08T16:39:00.000Z","key":1486571940000,"doc_count":12},{"key_as_string":"2017-02-08T16:40:00.000Z","key":1486572000000,"doc_count":15},{"key_as_string":"2017-02-08T16:41:00.000Z","key":1486572060000,"doc_count":14},{"key_as_string":"2017-02-08T16:42:00.000Z","key":1486572120000,"doc_count":9},{"key_as_string":"2017-02-08T16:43:00.000Z","key":1486572180000,"doc_count":10},{"key_as_string":"2017-02-08T16:44:00.000Z","key":1486572240000,"doc_count":14},{"key_as_string":"2017-02-08T16:45:00.000Z","key":1486572300000,"doc_count":15},{"key_as_string":"2017-02-08T16:46:00.000Z","key":1486572360000,"doc_count":18},{"key_as_string":"2017-02-08T16:47:00.000Z","key":1486572420000,"doc_count":8},{"key_as_string":"2017-02-08T16:48:00.000Z","key":1486572480000,"doc_count":14},{"key_as_string":"2017-02-08T16:49:00.000Z","key":1486572540000,"doc_count":11},{"key_as_string":"2017-02-08T16:50:00.000Z","key":1486572600000,"doc_count":12},{"key_as_string":"2017-02-08T16:51:00.000Z","key":1486572660000,"doc_count":8},{"key_as_string":"2017-02-08T16:52:00.000Z","key":1486572720000,"doc_count":13},{"key_as_string":"2017-02-08T16:53:00.000Z","key":1486572780000,"doc_count":12},{"key_as_string":"2017-02-08T16:54:00.000Z","key":1486572840000,"doc_count":15},{"key_as_string":"2017-02-08T16:55:00.000Z","key":1486572900000,"doc_count":15},{"key_as_string":"2017-02-08T16:56:00.000Z","key":1486572960000,"doc_count":12},{"key_as_string":"2017-02-08T16:57:00.000Z","key":1486573020000,"doc_count":10},{"key_as_string":"2017-02-08T16:58:00.000Z","key":1486573080000,"doc_count":11},{"key_as_string":"2017-02-08T16:59:00.000Z","key":1486573140000,"doc_count":18},{"key_as_string":"2017-02-08T17:00:00.000Z","key":1486573200000,"doc_count":11},{"key_as_string":"2017-02-08T17:01:00.000Z","key":1486573260000,"doc_count":10},{"key_as_string":"2017-02-08T17:02:00.000Z","key":1486573320000,"doc_count":14},{"key_as_string":"2017-02-08T17:03:00.000Z","key":1486573380000,"doc_count":11},{"key_as_string":"2017-02-08T17:04:00.000Z","key":1486573440000,"doc_count":14},{"key_as_string":"2017-02-08T17:05:00.000Z","key":1486573500000,"doc_count":7},{"key_as_string":"2017-02-08T17:06:00.000Z","key":1486573560000,"doc_count":17},{"key_as_string":"2017-02-08T17:07:00.000Z","key":1486573620000,"doc_count":6},{"key_as_string":"2017-02-08T17:08:00.000Z","key":1486573680000,"doc_count":12},{"key_as_string":"2017-02-08T17:09:00.000Z","key":1486573740000,"doc_count":7},{"key_as_string":"2017-02-08T17:10:00.000Z","key":1486573800000,"doc_count":17},{"key_as_string":"2017-02-08T17:11:00.000Z","key":1486573860000,"doc_count":19},{"key_as_string":"2017-02-08T17:12:00.000Z","key":1486573920000,"doc_count":13},{"key_as_string":"2017-02-08T17:13:00.000Z","key":1486573980000,"doc_count":9},{"key_as_string":"2017-02-08T17:14:00.000Z","key":1486574040000,"doc_count":16},{"key_as_string":"2017-02-08T17:15:00.000Z","key":1486574100000,"doc_count":15},{"key_as_string":"2017-02-08T17:16:00.000Z","key":1486574160000,"doc_count":11},{"key_as_string":"2017-02-08T17:17:00.000Z","key":1486574220000,"doc_count":18},{"key_as_string":"2017-02-08T17:18:00.000Z","key":1486574280000,"doc_count":13},{"key_as_string":"2017-02-08T17:19:00.000Z","key":1486574340000,"doc_count":16},{"key_as_string":"2017-02-08T17:20:00.000Z","key":1486574400000,"doc_count":14},{"key_as_string":"2017-02-08T17:21:00.000Z","key":1486574460000,"doc_count":13},{"key_as_string":"2017-02-08T17:22:00.000Z","key":1486574520000,"doc_count":13},{"key_as_string":"2017-02-08T17:23:00.000Z","key":1486574580000,"doc_count":11},{"key_as_string":"2017-02-08T17:24:00.000Z","key":1486574640000,"doc_count":8},{"key_as_string":"2017-02-08T17:25:00.000Z","key":1486574700000,"doc_count":9},{"key_as_string":"2017-02-08T17:26:00.000Z","key":1486574760000,"doc_count":16},{"key_as_string":"2017-02-08T17:27:00.000Z","key":1486574820000,"doc_count":13},{"key_as_string":"2017-02-08T17:28:00.000Z","key":1486574880000,"doc_count":9},{"key_as_string":"2017-02-08T17:29:00.000Z","key":1486574940000,"doc_count":13},{"key_as_string":"2017-02-08T17:30:00.000Z","key":1486575000000,"doc_count":13},{"key_as_string":"2017-02-08T17:31:00.000Z","key":1486575060000,"doc_count":15},{"key_as_string":"2017-02-08T17:32:00.000Z","key":1486575120000,"doc_count":10},{"key_as_string":"2017-02-08T17:33:00.000Z","key":1486575180000,"doc_count":14},{"key_as_string":"2017-02-08T17:34:00.000Z","key":1486575240000,"doc_count":10},{"key_as_string":"2017-02-08T17:35:00.000Z","key":1486575300000,"doc_count":14},{"key_as_string":"2017-02-08T17:36:00.000Z","key":1486575360000,"doc_count":10},{"key_as_string":"2017-02-08T17:37:00.000Z","key":1486575420000,"doc_count":9},{"key_as_string":"2017-02-08T17:38:00.000Z","key":1486575480000,"doc_count":11},{"key_as_string":"2017-02-08T17:39:00.000Z","key":1486575540000,"doc_count":12},{"key_as_string":"2017-02-08T17:40:00.000Z","key":1486575600000,"doc_count":10},{"key_as_string":"2017-02-08T17:41:00.000Z","key":1486575660000,"doc_count":15},{"key_as_string":"2017-02-08T17:42:00.000Z","key":1486575720000,"doc_count":18},{"key_as_string":"2017-02-08T17:43:00.000Z","key":1486575780000,"doc_count":9},{"key_as_string":"2017-02-08T17:44:00.000Z","key":1486575840000,"doc_count":14},{"key_as_string":"2017-02-08T17:45:00.000Z","key":1486575900000,"doc_count":9},{"key_as_string":"2017-02-08T17:46:00.000Z","key":1486575960000,"doc_count":11},{"key_as_string":"2017-02-08T17:47:00.000Z","key":1486576020000,"doc_count":13},{"key_as_string":"2017-02-08T17:48:00.000Z","key":1486576080000,"doc_count":10},{"key_as_string":"2017-02-08T17:49:00.000Z","key":1486576140000,"doc_count":9},{"key_as_string":"2017-02-08T17:50:00.000Z","key":1486576200000,"doc_count":13},{"key_as_string":"2017-02-08T17:51:00.000Z","key":1486576260000,"doc_count":12},{"key_as_string":"2017-02-08T17:52:00.000Z","key":1486576320000,"doc_count":11},{"key_as_string":"2017-02-08T17:53:00.000Z","key":1486576380000,"doc_count":12},{"key_as_string":"2017-02-08T17:54:00.000Z","key":1486576440000,"doc_count":11},{"key_as_string":"2017-02-08T17:55:00.000Z","key":1486576500000,"doc_count":14},{"key_as_string":"2017-02-08T17:56:00.000Z","key":1486576560000,"doc_count":17},{"key_as_string":"2017-02-08T17:57:00.000Z","key":1486576620000,"doc_count":12},{"key_as_string":"2017-02-08T17:58:00.000Z","key":1486576680000,"doc_count":8},{"key_as_string":"2017-02-08T17:59:00.000Z","key":1486576740000,"doc_count":12},{"key_as_string":"2017-02-08T18:00:00.000Z","key":1486576800000,"doc_count":15},{"key_as_string":"2017-02-08T18:01:00.000Z","key":1486576860000,"doc_count":10},{"key_as_string":"2017-02-08T18:02:00.000Z","key":1486576920000,"doc_count":11},{"key_as_string":"2017-02-08T18:03:00.000Z","key":1486576980000,"doc_count":11},{"key_as_string":"2017-02-08T18:04:00.000Z","key":1486577040000,"doc_count":13},{"key_as_string":"2017-02-08T18:05:00.000Z","key":1486577100000,"doc_count":11},{"key_as_string":"2017-02-08T18:06:00.000Z","key":1486577160000,"doc_count":10},{"key_as_string":"2017-02-08T18:07:00.000Z","key":1486577220000,"doc_count":12},{"key_as_string":"2017-02-08T18:08:00.000Z","key":1486577280000,"doc_count":13},{"key_as_string":"2017-02-08T18:09:00.000Z","key":1486577340000,"doc_count":8},{"key_as_string":"2017-02-08T18:10:00.000Z","key":1486577400000,"doc_count":6},{"key_as_string":"2017-02-08T18:11:00.000Z","key":1486577460000,"doc_count":17},{"key_as_string":"2017-02-08T18:12:00.000Z","key":1486577520000,"doc_count":11},{"key_as_string":"2017-02-08T18:13:00.000Z","key":1486577580000,"doc_count":13},{"key_as_string":"2017-02-08T18:14:00.000Z","key":1486577640000,"doc_count":10},{"key_as_string":"2017-02-08T18:15:00.000Z","key":1486577700000,"doc_count":11},{"key_as_string":"2017-02-08T18:16:00.000Z","key":1486577760000,"doc_count":13},{"key_as_string":"2017-02-08T18:17:00.000Z","key":1486577820000,"doc_count":12},{"key_as_string":"2017-02-08T18:18:00.000Z","key":1486577880000,"doc_count":15},{"key_as_string":"2017-02-08T18:19:00.000Z","key":1486577940000,"doc_count":10},{"key_as_string":"2017-02-08T18:20:00.000Z","key":1486578000000,"doc_count":10},{"key_as_string":"2017-02-08T18:21:00.000Z","key":1486578060000,"doc_count":12},{"key_as_string":"2017-02-08T18:22:00.000Z","key":1486578120000,"doc_count":16},{"key_as_string":"2017-02-08T18:23:00.000Z","key":1486578180000,"doc_count":7},{"key_as_string":"2017-02-08T18:24:00.000Z","key":1486578240000,"doc_count":12},{"key_as_string":"2017-02-08T18:25:00.000Z","key":1486578300000,"doc_count":10},{"key_as_string":"2017-02-08T18:26:00.000Z","key":1486578360000,"doc_count":8},{"key_as_string":"2017-02-08T18:27:00.000Z","key":1486578420000,"doc_count":15},{"key_as_string":"2017-02-08T18:28:00.000Z","key":1486578480000,"doc_count":10},{"key_as_string":"2017-02-08T18:29:00.000Z","key":1486578540000,"doc_count":13},{"key_as_string":"2017-02-08T18:30:00.000Z","key":1486578600000,"doc_count":10},{"key_as_string":"2017-02-08T18:31:00.000Z","key":1486578660000,"doc_count":11},{"key_as_string":"2017-02-08T18:32:00.000Z","key":1486578720000,"doc_count":12},{"key_as_string":"2017-02-08T18:33:00.000Z","key":1486578780000,"doc_count":10},{"key_as_string":"2017-02-08T18:34:00.000Z","key":1486578840000,"doc_count":15},{"key_as_string":"2017-02-08T18:35:00.000Z","key":1486578900000,"doc_count":13},{"key_as_string":"2017-02-08T18:36:00.000Z","key":1486578960000,"doc_count":13},{"key_as_string":"2017-02-08T18:37:00.000Z","key":1486579020000,"doc_count":11},{"key_as_string":"2017-02-08T18:38:00.000Z","key":1486579080000,"doc_count":9},{"key_as_string":"2017-02-08T18:39:00.000Z","key":1486579140000,"doc_count":14},{"key_as_string":"2017-02-08T18:40:00.000Z","key":1486579200000,"doc_count":12},{"key_as_string":"2017-02-08T18:41:00.000Z","key":1486579260000,"doc_count":14},{"key_as_string":"2017-02-08T18:42:00.000Z","key":1486579320000,"doc_count":13},{"key_as_string":"2017-02-08T18:43:00.000Z","key":1486579380000,"doc_count":11},{"key_as_string":"2017-02-08T18:44:00.000Z","key":1486579440000,"doc_count":11},{"key_as_string":"2017-02-08T18:45:00.000Z","key":1486579500000,"doc_count":11},{"key_as_string":"2017-02-08T18:46:00.000Z","key":1486579560000,"doc_count":9},{"key_as_string":"2017-02-08T18:47:00.000Z","key":1486579620000,"doc_count":14},{"key_as_string":"2017-02-08T18:48:00.000Z","key":1486579680000,"doc_count":9},{"key_as_string":"2017-02-08T18:49:00.000Z","key":1486579740000,"doc_count":13},{"key_as_string":"2017-02-08T18:50:00.000Z","key":1486579800000,"doc_count":16},{"key_as_string":"2017-02-08T18:51:00.000Z","key":1486579860000,"doc_count":10},{"key_as_string":"2017-02-08T18:52:00.000Z","key":1486579920000,"doc_count":9},{"key_as_string":"2017-02-08T18:53:00.000Z","key":1486579980000,"doc_count":9},{"key_as_string":"2017-02-08T18:54:00.000Z","key":1486580040000,"doc_count":11},{"key_as_string":"2017-02-08T18:55:00.000Z","key":1486580100000,"doc_count":13},{"key_as_string":"2017-02-08T18:56:00.000Z","key":1486580160000,"doc_count":11},{"key_as_string":"2017-02-08T18:57:00.000Z","key":1486580220000,"doc_count":16},{"key_as_string":"2017-02-08T18:58:00.000Z","key":1486580280000,"doc_count":11},{"key_as_string":"2017-02-08T18:59:00.000Z","key":1486580340000,"doc_count":14},{"key_as_string":"2017-02-08T19:00:00.000Z","key":1486580400000,"doc_count":14},{"key_as_string":"2017-02-08T19:01:00.000Z","key":1486580460000,"doc_count":7},{"key_as_string":"2017-02-08T19:02:00.000Z","key":1486580520000,"doc_count":12},{"key_as_string":"2017-02-08T19:03:00.000Z","key":1486580580000,"doc_count":12},{"key_as_string":"2017-02-08T19:04:00.000Z","key":1486580640000,"doc_count":8},{"key_as_string":"2017-02-08T19:05:00.000Z","key":1486580700000,"doc_count":7},{"key_as_string":"2017-02-08T19:06:00.000Z","key":1486580760000,"doc_count":17},{"key_as_string":"2017-02-08T19:07:00.000Z","key":1486580820000,"doc_count":8},{"key_as_string":"2017-02-08T19:08:00.000Z","key":1486580880000,"doc_count":15},{"key_as_string":"2017-02-08T19:09:00.000Z","key":1486580940000,"doc_count":11},{"key_as_string":"2017-02-08T19:10:00.000Z","key":1486581000000,"doc_count":9},{"key_as_string":"2017-02-08T19:11:00.000Z","key":1486581060000,"doc_count":14},{"key_as_string":"2017-02-08T19:12:00.000Z","key":1486581120000,"doc_count":15},{"key_as_string":"2017-02-08T19:13:00.000Z","key":1486581180000,"doc_count":12},{"key_as_string":"2017-02-08T19:14:00.000Z","key":1486581240000,"doc_count":7},{"key_as_string":"2017-02-08T19:15:00.000Z","key":1486581300000,"doc_count":10},{"key_as_string":"2017-02-08T19:16:00.000Z","key":1486581360000,"doc_count":13},{"key_as_string":"2017-02-08T19:17:00.000Z","key":1486581420000,"doc_count":13},{"key_as_string":"2017-02-08T19:18:00.000Z","key":1486581480000,"doc_count":8},{"key_as_string":"2017-02-08T19:19:00.000Z","key":1486581540000,"doc_count":9},{"key_as_string":"2017-02-08T19:20:00.000Z","key":1486581600000,"doc_count":12},{"key_as_string":"2017-02-08T19:21:00.000Z","key":1486581660000,"doc_count":8},{"key_as_string":"2017-02-08T19:22:00.000Z","key":1486581720000,"doc_count":16},{"key_as_string":"2017-02-08T19:23:00.000Z","key":1486581780000,"doc_count":10},{"key_as_string":"2017-02-08T19:24:00.000Z","key":1486581840000,"doc_count":12},{"key_as_string":"2017-02-08T19:25:00.000Z","key":1486581900000,"doc_count":11},{"key_as_string":"2017-02-08T19:26:00.000Z","key":1486581960000,"doc_count":8},{"key_as_string":"2017-02-08T19:27:00.000Z","key":1486582020000,"doc_count":11},{"key_as_string":"2017-02-08T19:28:00.000Z","key":1486582080000,"doc_count":19},{"key_as_string":"2017-02-08T19:29:00.000Z","key":1486582140000,"doc_count":8},{"key_as_string":"2017-02-08T19:30:00.000Z","key":1486582200000,"doc_count":13},{"key_as_string":"2017-02-08T19:31:00.000Z","key":1486582260000,"doc_count":17},{"key_as_string":"2017-02-08T19:32:00.000Z","key":1486582320000,"doc_count":11},{"key_as_string":"2017-02-08T19:33:00.000Z","key":1486582380000,"doc_count":9},{"key_as_string":"2017-02-08T19:34:00.000Z","key":1486582440000,"doc_count":9},{"key_as_string":"2017-02-08T19:35:00.000Z","key":1486582500000,"doc_count":18},{"key_as_string":"2017-02-08T19:36:00.000Z","key":1486582560000,"doc_count":8},{"key_as_string":"2017-02-08T19:37:00.000Z","key":1486582620000,"doc_count":9},{"key_as_string":"2017-02-08T19:38:00.000Z","key":1486582680000,"doc_count":12},{"key_as_string":"2017-02-08T19:39:00.000Z","key":1486582740000,"doc_count":11},{"key_as_string":"2017-02-08T19:40:00.000Z","key":1486582800000,"doc_count":13},{"key_as_string":"2017-02-08T19:41:00.000Z","key":1486582860000,"doc_count":8},{"key_as_string":"2017-02-08T19:42:00.000Z","key":1486582920000,"doc_count":10},{"key_as_string":"2017-02-08T19:43:00.000Z","key":1486582980000,"doc_count":10},{"key_as_string":"2017-02-08T19:44:00.000Z","key":1486583040000,"doc_count":15},{"key_as_string":"2017-02-08T19:45:00.000Z","key":1486583100000,"doc_count":7},{"key_as_string":"2017-02-08T19:46:00.000Z","key":1486583160000,"doc_count":12},{"key_as_string":"2017-02-08T19:47:00.000Z","key":1486583220000,"doc_count":8},{"key_as_string":"2017-02-08T19:48:00.000Z","key":1486583280000,"doc_count":11},{"key_as_string":"2017-02-08T19:49:00.000Z","key":1486583340000,"doc_count":10},{"key_as_string":"2017-02-08T19:50:00.000Z","key":1486583400000,"doc_count":10},{"key_as_string":"2017-02-08T19:51:00.000Z","key":1486583460000,"doc_count":9},{"key_as_string":"2017-02-08T19:52:00.000Z","key":1486583520000,"doc_count":13},{"key_as_string":"2017-02-08T19:53:00.000Z","key":1486583580000,"doc_count":6},{"key_as_string":"2017-02-08T19:54:00.000Z","key":1486583640000,"doc_count":16},{"key_as_string":"2017-02-08T19:55:00.000Z","key":1486583700000,"doc_count":15},{"key_as_string":"2017-02-08T19:56:00.000Z","key":1486583760000,"doc_count":14},{"key_as_string":"2017-02-08T19:57:00.000Z","key":1486583820000,"doc_count":6},{"key_as_string":"2017-02-08T19:58:00.000Z","key":1486583880000,"doc_count":13},{"key_as_string":"2017-02-08T19:59:00.000Z","key":1486583940000,"doc_count":11},{"key_as_string":"2017-02-08T20:00:00.000Z","key":1486584000000,"doc_count":9},{"key_as_string":"2017-02-08T20:01:00.000Z","key":1486584060000,"doc_count":11},{"key_as_string":"2017-02-08T20:02:00.000Z","key":1486584120000,"doc_count":16},{"key_as_string":"2017-02-08T20:03:00.000Z","key":1486584180000,"doc_count":8},{"key_as_string":"2017-02-08T20:04:00.000Z","key":1486584240000,"doc_count":9},{"key_as_string":"2017-02-08T20:05:00.000Z","key":1486584300000,"doc_count":8},{"key_as_string":"2017-02-08T20:06:00.000Z","key":1486584360000,"doc_count":13},{"key_as_string":"2017-02-08T20:07:00.000Z","key":1486584420000,"doc_count":15},{"key_as_string":"2017-02-08T20:08:00.000Z","key":1486584480000,"doc_count":7},{"key_as_string":"2017-02-08T20:09:00.000Z","key":1486584540000,"doc_count":13},{"key_as_string":"2017-02-08T20:10:00.000Z","key":1486584600000,"doc_count":12},{"key_as_string":"2017-02-08T20:11:00.000Z","key":1486584660000,"doc_count":6},{"key_as_string":"2017-02-08T20:12:00.000Z","key":1486584720000,"doc_count":9},{"key_as_string":"2017-02-08T20:13:00.000Z","key":1486584780000,"doc_count":12},{"key_as_string":"2017-02-08T20:14:00.000Z","key":1486584840000,"doc_count":13},{"key_as_string":"2017-02-08T20:15:00.000Z","key":1486584900000,"doc_count":13},{"key_as_string":"2017-02-08T20:16:00.000Z","key":1486584960000,"doc_count":10},{"key_as_string":"2017-02-08T20:17:00.000Z","key":1486585020000,"doc_count":8},{"key_as_string":"2017-02-08T20:18:00.000Z","key":1486585080000,"doc_count":12},{"key_as_string":"2017-02-08T20:19:00.000Z","key":1486585140000,"doc_count":12},{"key_as_string":"2017-02-08T20:20:00.000Z","key":1486585200000,"doc_count":14},{"key_as_string":"2017-02-08T20:21:00.000Z","key":1486585260000,"doc_count":11},{"key_as_string":"2017-02-08T20:22:00.000Z","key":1486585320000,"doc_count":13},{"key_as_string":"2017-02-08T20:23:00.000Z","key":1486585380000,"doc_count":13},{"key_as_string":"2017-02-08T20:24:00.000Z","key":1486585440000,"doc_count":9},{"key_as_string":"2017-02-08T20:25:00.000Z","key":1486585500000,"doc_count":11},{"key_as_string":"2017-02-08T20:26:00.000Z","key":1486585560000,"doc_count":9},{"key_as_string":"2017-02-08T20:27:00.000Z","key":1486585620000,"doc_count":20},{"key_as_string":"2017-02-08T20:28:00.000Z","key":1486585680000,"doc_count":6},{"key_as_string":"2017-02-08T20:29:00.000Z","key":1486585740000,"doc_count":12},{"key_as_string":"2017-02-08T20:30:00.000Z","key":1486585800000,"doc_count":11},{"key_as_string":"2017-02-08T20:31:00.000Z","key":1486585860000,"doc_count":9},{"key_as_string":"2017-02-08T20:32:00.000Z","key":1486585920000,"doc_count":12},{"key_as_string":"2017-02-08T20:33:00.000Z","key":1486585980000,"doc_count":8},{"key_as_string":"2017-02-08T20:34:00.000Z","key":1486586040000,"doc_count":12},{"key_as_string":"2017-02-08T20:35:00.000Z","key":1486586100000,"doc_count":11},{"key_as_string":"2017-02-08T20:36:00.000Z","key":1486586160000,"doc_count":9},{"key_as_string":"2017-02-08T20:37:00.000Z","key":1486586220000,"doc_count":14},{"key_as_string":"2017-02-08T20:38:00.000Z","key":1486586280000,"doc_count":12},{"key_as_string":"2017-02-08T20:39:00.000Z","key":1486586340000,"doc_count":8},{"key_as_string":"2017-02-08T20:40:00.000Z","key":1486586400000,"doc_count":11},{"key_as_string":"2017-02-08T20:41:00.000Z","key":1486586460000,"doc_count":10},{"key_as_string":"2017-02-08T20:42:00.000Z","key":1486586520000,"doc_count":8},{"key_as_string":"2017-02-08T20:43:00.000Z","key":1486586580000,"doc_count":11},{"key_as_string":"2017-02-08T20:44:00.000Z","key":1486586640000,"doc_count":16},{"key_as_string":"2017-02-08T20:45:00.000Z","key":1486586700000,"doc_count":9},{"key_as_string":"2017-02-08T20:46:00.000Z","key":1486586760000,"doc_count":9},{"key_as_string":"2017-02-08T20:47:00.000Z","key":1486586820000,"doc_count":8},{"key_as_string":"2017-02-08T20:48:00.000Z","key":1486586880000,"doc_count":13},{"key_as_string":"2017-02-08T20:49:00.000Z","key":1486586940000,"doc_count":10},{"key_as_string":"2017-02-08T20:50:00.000Z","key":1486587000000,"doc_count":9},{"key_as_string":"2017-02-08T20:51:00.000Z","key":1486587060000,"doc_count":10},{"key_as_string":"2017-02-08T20:52:00.000Z","key":1486587120000,"doc_count":10},{"key_as_string":"2017-02-08T20:53:00.000Z","key":1486587180000,"doc_count":10},{"key_as_string":"2017-02-08T20:54:00.000Z","key":1486587240000,"doc_count":12},{"key_as_string":"2017-02-08T20:55:00.000Z","key":1486587300000,"doc_count":8},{"key_as_string":"2017-02-08T20:56:00.000Z","key":1486587360000,"doc_count":10},{"key_as_string":"2017-02-08T20:57:00.000Z","key":1486587420000,"doc_count":11},{"key_as_string":"2017-02-08T20:58:00.000Z","key":1486587480000,"doc_count":9},{"key_as_string":"2017-02-08T20:59:00.000Z","key":1486587540000,"doc_count":15},{"key_as_string":"2017-02-08T21:00:00.000Z","key":1486587600000,"doc_count":12},{"key_as_string":"2017-02-08T21:01:00.000Z","key":1486587660000,"doc_count":13},{"key_as_string":"2017-02-08T21:02:00.000Z","key":1486587720000,"doc_count":10},{"key_as_string":"2017-02-08T21:03:00.000Z","key":1486587780000,"doc_count":7},{"key_as_string":"2017-02-08T21:04:00.000Z","key":1486587840000,"doc_count":9},{"key_as_string":"2017-02-08T21:05:00.000Z","key":1486587900000,"doc_count":13},{"key_as_string":"2017-02-08T21:06:00.000Z","key":1486587960000,"doc_count":9},{"key_as_string":"2017-02-08T21:07:00.000Z","key":1486588020000,"doc_count":12},{"key_as_string":"2017-02-08T21:08:00.000Z","key":1486588080000,"doc_count":6},{"key_as_string":"2017-02-08T21:09:00.000Z","key":1486588140000,"doc_count":17},{"key_as_string":"2017-02-08T21:10:00.000Z","key":1486588200000,"doc_count":4},{"key_as_string":"2017-02-08T21:11:00.000Z","key":1486588260000,"doc_count":13},{"key_as_string":"2017-02-08T21:12:00.000Z","key":1486588320000,"doc_count":9},{"key_as_string":"2017-02-08T21:13:00.000Z","key":1486588380000,"doc_count":13},{"key_as_string":"2017-02-08T21:14:00.000Z","key":1486588440000,"doc_count":10},{"key_as_string":"2017-02-08T21:15:00.000Z","key":1486588500000,"doc_count":8},{"key_as_string":"2017-02-08T21:16:00.000Z","key":1486588560000,"doc_count":8},{"key_as_string":"2017-02-08T21:17:00.000Z","key":1486588620000,"doc_count":10},{"key_as_string":"2017-02-08T21:18:00.000Z","key":1486588680000,"doc_count":12},{"key_as_string":"2017-02-08T21:19:00.000Z","key":1486588740000,"doc_count":10},{"key_as_string":"2017-02-08T21:20:00.000Z","key":1486588800000,"doc_count":13},{"key_as_string":"2017-02-08T21:21:00.000Z","key":1486588860000,"doc_count":14},{"key_as_string":"2017-02-08T21:22:00.000Z","key":1486588920000,"doc_count":9},{"key_as_string":"2017-02-08T21:23:00.000Z","key":1486588980000,"doc_count":9},{"key_as_string":"2017-02-08T21:24:00.000Z","key":1486589040000,"doc_count":12},{"key_as_string":"2017-02-08T21:25:00.000Z","key":1486589100000,"doc_count":12},{"key_as_string":"2017-02-08T21:26:00.000Z","key":1486589160000,"doc_count":19},{"key_as_string":"2017-02-08T21:27:00.000Z","key":1486589220000,"doc_count":6},{"key_as_string":"2017-02-08T21:28:00.000Z","key":1486589280000,"doc_count":15},{"key_as_string":"2017-02-08T21:29:00.000Z","key":1486589340000,"doc_count":10},{"key_as_string":"2017-02-08T21:30:00.000Z","key":1486589400000,"doc_count":9},{"key_as_string":"2017-02-08T21:31:00.000Z","key":1486589460000,"doc_count":9},{"key_as_string":"2017-02-08T21:32:00.000Z","key":1486589520000,"doc_count":12},{"key_as_string":"2017-02-08T21:33:00.000Z","key":1486589580000,"doc_count":10},{"key_as_string":"2017-02-08T21:34:00.000Z","key":1486589640000,"doc_count":11},{"key_as_string":"2017-02-08T21:35:00.000Z","key":1486589700000,"doc_count":10},{"key_as_string":"2017-02-08T21:36:00.000Z","key":1486589760000,"doc_count":15},{"key_as_string":"2017-02-08T21:37:00.000Z","key":1486589820000,"doc_count":8},{"key_as_string":"2017-02-08T21:38:00.000Z","key":1486589880000,"doc_count":11},{"key_as_string":"2017-02-08T21:39:00.000Z","key":1486589940000,"doc_count":9},{"key_as_string":"2017-02-08T21:40:00.000Z","key":1486590000000,"doc_count":9},{"key_as_string":"2017-02-08T21:41:00.000Z","key":1486590060000,"doc_count":10},{"key_as_string":"2017-02-08T21:42:00.000Z","key":1486590120000,"doc_count":8},{"key_as_string":"2017-02-08T21:43:00.000Z","key":1486590180000,"doc_count":13},{"key_as_string":"2017-02-08T21:44:00.000Z","key":1486590240000,"doc_count":13},{"key_as_string":"2017-02-08T21:45:00.000Z","key":1486590300000,"doc_count":15},{"key_as_string":"2017-02-08T21:46:00.000Z","key":1486590360000,"doc_count":8},{"key_as_string":"2017-02-08T21:47:00.000Z","key":1486590420000,"doc_count":7},{"key_as_string":"2017-02-08T21:48:00.000Z","key":1486590480000,"doc_count":14},{"key_as_string":"2017-02-08T21:49:00.000Z","key":1486590540000,"doc_count":8},{"key_as_string":"2017-02-08T21:50:00.000Z","key":1486590600000,"doc_count":11},{"key_as_string":"2017-02-08T21:51:00.000Z","key":1486590660000,"doc_count":12},{"key_as_string":"2017-02-08T21:52:00.000Z","key":1486590720000,"doc_count":9},{"key_as_string":"2017-02-08T21:53:00.000Z","key":1486590780000,"doc_count":11},{"key_as_string":"2017-02-08T21:54:00.000Z","key":1486590840000,"doc_count":9},{"key_as_string":"2017-02-08T21:55:00.000Z","key":1486590900000,"doc_count":7},{"key_as_string":"2017-02-08T21:56:00.000Z","key":1486590960000,"doc_count":13},{"key_as_string":"2017-02-08T21:57:00.000Z","key":1486591020000,"doc_count":10},{"key_as_string":"2017-02-08T21:58:00.000Z","key":1486591080000,"doc_count":12},{"key_as_string":"2017-02-08T21:59:00.000Z","key":1486591140000,"doc_count":15},{"key_as_string":"2017-02-08T22:00:00.000Z","key":1486591200000,"doc_count":13},{"key_as_string":"2017-02-08T22:01:00.000Z","key":1486591260000,"doc_count":14},{"key_as_string":"2017-02-08T22:02:00.000Z","key":1486591320000,"doc_count":7},{"key_as_string":"2017-02-08T22:03:00.000Z","key":1486591380000,"doc_count":12},{"key_as_string":"2017-02-08T22:04:00.000Z","key":1486591440000,"doc_count":11},{"key_as_string":"2017-02-08T22:05:00.000Z","key":1486591500000,"doc_count":11},{"key_as_string":"2017-02-08T22:06:00.000Z","key":1486591560000,"doc_count":11},{"key_as_string":"2017-02-08T22:07:00.000Z","key":1486591620000,"doc_count":8},{"key_as_string":"2017-02-08T22:08:00.000Z","key":1486591680000,"doc_count":14},{"key_as_string":"2017-02-08T22:09:00.000Z","key":1486591740000,"doc_count":11},{"key_as_string":"2017-02-08T22:10:00.000Z","key":1486591800000,"doc_count":16},{"key_as_string":"2017-02-08T22:11:00.000Z","key":1486591860000,"doc_count":8},{"key_as_string":"2017-02-08T22:12:00.000Z","key":1486591920000,"doc_count":15},{"key_as_string":"2017-02-08T22:13:00.000Z","key":1486591980000,"doc_count":11},{"key_as_string":"2017-02-08T22:14:00.000Z","key":1486592040000,"doc_count":6},{"key_as_string":"2017-02-08T22:15:00.000Z","key":1486592100000,"doc_count":11},{"key_as_string":"2017-02-08T22:16:00.000Z","key":1486592160000,"doc_count":9},{"key_as_string":"2017-02-08T22:17:00.000Z","key":1486592220000,"doc_count":15},{"key_as_string":"2017-02-08T22:18:00.000Z","key":1486592280000,"doc_count":10},{"key_as_string":"2017-02-08T22:19:00.000Z","key":1486592340000,"doc_count":7},{"key_as_string":"2017-02-08T22:20:00.000Z","key":1486592400000,"doc_count":11},{"key_as_string":"2017-02-08T22:21:00.000Z","key":1486592460000,"doc_count":8},{"key_as_string":"2017-02-08T22:22:00.000Z","key":1486592520000,"doc_count":11},{"key_as_string":"2017-02-08T22:23:00.000Z","key":1486592580000,"doc_count":5},{"key_as_string":"2017-02-08T22:24:00.000Z","key":1486592640000,"doc_count":13},{"key_as_string":"2017-02-08T22:25:00.000Z","key":1486592700000,"doc_count":11},{"key_as_string":"2017-02-08T22:26:00.000Z","key":1486592760000,"doc_count":13},{"key_as_string":"2017-02-08T22:27:00.000Z","key":1486592820000,"doc_count":15},{"key_as_string":"2017-02-08T22:28:00.000Z","key":1486592880000,"doc_count":12},{"key_as_string":"2017-02-08T22:29:00.000Z","key":1486592940000,"doc_count":7},{"key_as_string":"2017-02-08T22:30:00.000Z","key":1486593000000,"doc_count":14},{"key_as_string":"2017-02-08T22:31:00.000Z","key":1486593060000,"doc_count":13},{"key_as_string":"2017-02-08T22:32:00.000Z","key":1486593120000,"doc_count":13},{"key_as_string":"2017-02-08T22:33:00.000Z","key":1486593180000,"doc_count":9},{"key_as_string":"2017-02-08T22:34:00.000Z","key":1486593240000,"doc_count":13},{"key_as_string":"2017-02-08T22:35:00.000Z","key":1486593300000,"doc_count":14},{"key_as_string":"2017-02-08T22:36:00.000Z","key":1486593360000,"doc_count":9},{"key_as_string":"2017-02-08T22:37:00.000Z","key":1486593420000,"doc_count":11},{"key_as_string":"2017-02-08T22:38:00.000Z","key":1486593480000,"doc_count":8},{"key_as_string":"2017-02-08T22:39:00.000Z","key":1486593540000,"doc_count":14},{"key_as_string":"2017-02-08T22:40:00.000Z","key":1486593600000,"doc_count":16},{"key_as_string":"2017-02-08T22:41:00.000Z","key":1486593660000,"doc_count":7},{"key_as_string":"2017-02-08T22:42:00.000Z","key":1486593720000,"doc_count":14},{"key_as_string":"2017-02-08T22:43:00.000Z","key":1486593780000,"doc_count":10},{"key_as_string":"2017-02-08T22:44:00.000Z","key":1486593840000,"doc_count":12},{"key_as_string":"2017-02-08T22:45:00.000Z","key":1486593900000,"doc_count":7},{"key_as_string":"2017-02-08T22:46:00.000Z","key":1486593960000,"doc_count":13},{"key_as_string":"2017-02-08T22:47:00.000Z","key":1486594020000,"doc_count":11},{"key_as_string":"2017-02-08T22:48:00.000Z","key":1486594080000,"doc_count":18},{"key_as_string":"2017-02-08T22:49:00.000Z","key":1486594140000,"doc_count":4},{"key_as_string":"2017-02-08T22:50:00.000Z","key":1486594200000,"doc_count":5},{"key_as_string":"2017-02-08T22:51:00.000Z","key":1486594260000,"doc_count":16},{"key_as_string":"2017-02-08T22:52:00.000Z","key":1486594320000,"doc_count":8},{"key_as_string":"2017-02-08T22:53:00.000Z","key":1486594380000,"doc_count":11},{"key_as_string":"2017-02-08T22:54:00.000Z","key":1486594440000,"doc_count":10},{"key_as_string":"2017-02-08T22:55:00.000Z","key":1486594500000,"doc_count":10},{"key_as_string":"2017-02-08T22:56:00.000Z","key":1486594560000,"doc_count":15},{"key_as_string":"2017-02-08T22:57:00.000Z","key":1486594620000,"doc_count":7},{"key_as_string":"2017-02-08T22:58:00.000Z","key":1486594680000,"doc_count":14},{"key_as_string":"2017-02-08T22:59:00.000Z","key":1486594740000,"doc_count":14},{"key_as_string":"2017-02-08T23:00:00.000Z","key":1486594800000,"doc_count":6},{"key_as_string":"2017-02-08T23:01:00.000Z","key":1486594860000,"doc_count":9},{"key_as_string":"2017-02-08T23:02:00.000Z","key":1486594920000,"doc_count":14},{"key_as_string":"2017-02-08T23:03:00.000Z","key":1486594980000,"doc_count":9},{"key_as_string":"2017-02-08T23:04:00.000Z","key":1486595040000,"doc_count":11},{"key_as_string":"2017-02-08T23:05:00.000Z","key":1486595100000,"doc_count":14},{"key_as_string":"2017-02-08T23:06:00.000Z","key":1486595160000,"doc_count":6},{"key_as_string":"2017-02-08T23:07:00.000Z","key":1486595220000,"doc_count":10},{"key_as_string":"2017-02-08T23:08:00.000Z","key":1486595280000,"doc_count":9},{"key_as_string":"2017-02-08T23:09:00.000Z","key":1486595340000,"doc_count":5},{"key_as_string":"2017-02-08T23:10:00.000Z","key":1486595400000,"doc_count":12},{"key_as_string":"2017-02-08T23:11:00.000Z","key":1486595460000,"doc_count":11},{"key_as_string":"2017-02-08T23:12:00.000Z","key":1486595520000,"doc_count":8},{"key_as_string":"2017-02-08T23:13:00.000Z","key":1486595580000,"doc_count":10},{"key_as_string":"2017-02-08T23:14:00.000Z","key":1486595640000,"doc_count":14},{"key_as_string":"2017-02-08T23:15:00.000Z","key":1486595700000,"doc_count":6},{"key_as_string":"2017-02-08T23:16:00.000Z","key":1486595760000,"doc_count":9},{"key_as_string":"2017-02-08T23:17:00.000Z","key":1486595820000,"doc_count":12},{"key_as_string":"2017-02-08T23:18:00.000Z","key":1486595880000,"doc_count":12},{"key_as_string":"2017-02-08T23:19:00.000Z","key":1486595940000,"doc_count":5},{"key_as_string":"2017-02-08T23:20:00.000Z","key":1486596000000,"doc_count":12},{"key_as_string":"2017-02-08T23:21:00.000Z","key":1486596060000,"doc_count":10},{"key_as_string":"2017-02-08T23:22:00.000Z","key":1486596120000,"doc_count":13},{"key_as_string":"2017-02-08T23:23:00.000Z","key":1486596180000,"doc_count":10},{"key_as_string":"2017-02-08T23:24:00.000Z","key":1486596240000,"doc_count":8},{"key_as_string":"2017-02-08T23:25:00.000Z","key":1486596300000,"doc_count":11},{"key_as_string":"2017-02-08T23:26:00.000Z","key":1486596360000,"doc_count":11},{"key_as_string":"2017-02-08T23:27:00.000Z","key":1486596420000,"doc_count":5},{"key_as_string":"2017-02-08T23:28:00.000Z","key":1486596480000,"doc_count":9},{"key_as_string":"2017-02-08T23:29:00.000Z","key":1486596540000,"doc_count":12},{"key_as_string":"2017-02-08T23:30:00.000Z","key":1486596600000,"doc_count":7},{"key_as_string":"2017-02-08T23:31:00.000Z","key":1486596660000,"doc_count":14},{"key_as_string":"2017-02-08T23:32:00.000Z","key":1486596720000,"doc_count":12},{"key_as_string":"2017-02-08T23:33:00.000Z","key":1486596780000,"doc_count":12},{"key_as_string":"2017-02-08T23:34:00.000Z","key":1486596840000,"doc_count":18},{"key_as_string":"2017-02-08T23:35:00.000Z","key":1486596900000,"doc_count":6},{"key_as_string":"2017-02-08T23:36:00.000Z","key":1486596960000,"doc_count":7},{"key_as_string":"2017-02-08T23:37:00.000Z","key":1486597020000,"doc_count":12},{"key_as_string":"2017-02-08T23:38:00.000Z","key":1486597080000,"doc_count":11},{"key_as_string":"2017-02-08T23:39:00.000Z","key":1486597140000,"doc_count":7},{"key_as_string":"2017-02-08T23:40:00.000Z","key":1486597200000,"doc_count":12},{"key_as_string":"2017-02-08T23:41:00.000Z","key":1486597260000,"doc_count":16},{"key_as_string":"2017-02-08T23:42:00.000Z","key":1486597320000,"doc_count":8},{"key_as_string":"2017-02-08T23:43:00.000Z","key":1486597380000,"doc_count":11},{"key_as_string":"2017-02-08T23:44:00.000Z","key":1486597440000,"doc_count":8},{"key_as_string":"2017-02-08T23:45:00.000Z","key":1486597500000,"doc_count":11},{"key_as_string":"2017-02-08T23:46:00.000Z","key":1486597560000,"doc_count":11},{"key_as_string":"2017-02-08T23:47:00.000Z","key":1486597620000,"doc_count":9},{"key_as_string":"2017-02-08T23:48:00.000Z","key":1486597680000,"doc_count":7},{"key_as_string":"2017-02-08T23:49:00.000Z","key":1486597740000,"doc_count":11},{"key_as_string":"2017-02-08T23:50:00.000Z","key":1486597800000,"doc_count":11},{"key_as_string":"2017-02-08T23:51:00.000Z","key":1486597860000,"doc_count":8},{"key_as_string":"2017-02-08T23:52:00.000Z","key":1486597920000,"doc_count":11},{"key_as_string":"2017-02-08T23:53:00.000Z","key":1486597980000,"doc_count":10},{"key_as_string":"2017-02-08T23:54:00.000Z","key":1486598040000,"doc_count":11},{"key_as_string":"2017-02-08T23:55:00.000Z","key":1486598100000,"doc_count":9},{"key_as_string":"2017-02-08T23:56:00.000Z","key":1486598160000,"doc_count":6},{"key_as_string":"2017-02-08T23:57:00.000Z","key":1486598220000,"doc_count":13},{"key_as_string":"2017-02-08T23:58:00.000Z","key":1486598280000,"doc_count":10},{"key_as_string":"2017-02-08T23:59:00.000Z","key":1486598340000,"doc_count":9},{"key_as_string":"2017-02-09T00:00:00.000Z","key":1486598400000,"doc_count":14},{"key_as_string":"2017-02-09T00:01:00.000Z","key":1486598460000,"doc_count":7},{"key_as_string":"2017-02-09T00:02:00.000Z","key":1486598520000,"doc_count":11},{"key_as_string":"2017-02-09T00:03:00.000Z","key":1486598580000,"doc_count":14},{"key_as_string":"2017-02-09T00:04:00.000Z","key":1486598640000,"doc_count":7},{"key_as_string":"2017-02-09T00:05:00.000Z","key":1486598700000,"doc_count":15},{"key_as_string":"2017-02-09T00:06:00.000Z","key":1486598760000,"doc_count":4},{"key_as_string":"2017-02-09T00:07:00.000Z","key":1486598820000,"doc_count":14},{"key_as_string":"2017-02-09T00:08:00.000Z","key":1486598880000,"doc_count":11},{"key_as_string":"2017-02-09T00:09:00.000Z","key":1486598940000,"doc_count":8},{"key_as_string":"2017-02-09T00:10:00.000Z","key":1486599000000,"doc_count":9},{"key_as_string":"2017-02-09T00:11:00.000Z","key":1486599060000,"doc_count":13},{"key_as_string":"2017-02-09T00:12:00.000Z","key":1486599120000,"doc_count":8},{"key_as_string":"2017-02-09T00:13:00.000Z","key":1486599180000,"doc_count":9},{"key_as_string":"2017-02-09T00:14:00.000Z","key":1486599240000,"doc_count":14},{"key_as_string":"2017-02-09T00:15:00.000Z","key":1486599300000,"doc_count":13},{"key_as_string":"2017-02-09T00:16:00.000Z","key":1486599360000,"doc_count":8},{"key_as_string":"2017-02-09T00:17:00.000Z","key":1486599420000,"doc_count":6},{"key_as_string":"2017-02-09T00:18:00.000Z","key":1486599480000,"doc_count":14},{"key_as_string":"2017-02-09T00:19:00.000Z","key":1486599540000,"doc_count":15},{"key_as_string":"2017-02-09T00:20:00.000Z","key":1486599600000,"doc_count":9},{"key_as_string":"2017-02-09T00:21:00.000Z","key":1486599660000,"doc_count":6},{"key_as_string":"2017-02-09T00:22:00.000Z","key":1486599720000,"doc_count":9},{"key_as_string":"2017-02-09T00:23:00.000Z","key":1486599780000,"doc_count":15},{"key_as_string":"2017-02-09T00:24:00.000Z","key":1486599840000,"doc_count":10},{"key_as_string":"2017-02-09T00:25:00.000Z","key":1486599900000,"doc_count":9},{"key_as_string":"2017-02-09T00:26:00.000Z","key":1486599960000,"doc_count":11},{"key_as_string":"2017-02-09T00:27:00.000Z","key":1486600020000,"doc_count":10},{"key_as_string":"2017-02-09T00:28:00.000Z","key":1486600080000,"doc_count":11},{"key_as_string":"2017-02-09T00:29:00.000Z","key":1486600140000,"doc_count":8},{"key_as_string":"2017-02-09T00:30:00.000Z","key":1486600200000,"doc_count":5},{"key_as_string":"2017-02-09T00:31:00.000Z","key":1486600260000,"doc_count":15},{"key_as_string":"2017-02-09T00:32:00.000Z","key":1486600320000,"doc_count":5},{"key_as_string":"2017-02-09T00:33:00.000Z","key":1486600380000,"doc_count":12},{"key_as_string":"2017-02-09T00:34:00.000Z","key":1486600440000,"doc_count":11},{"key_as_string":"2017-02-09T00:35:00.000Z","key":1486600500000,"doc_count":8},{"key_as_string":"2017-02-09T00:36:00.000Z","key":1486600560000,"doc_count":10},{"key_as_string":"2017-02-09T00:37:00.000Z","key":1486600620000,"doc_count":11},{"key_as_string":"2017-02-09T00:38:00.000Z","key":1486600680000,"doc_count":11},{"key_as_string":"2017-02-09T00:39:00.000Z","key":1486600740000,"doc_count":7},{"key_as_string":"2017-02-09T00:40:00.000Z","key":1486600800000,"doc_count":8},{"key_as_string":"2017-02-09T00:41:00.000Z","key":1486600860000,"doc_count":10},{"key_as_string":"2017-02-09T00:42:00.000Z","key":1486600920000,"doc_count":11},{"key_as_string":"2017-02-09T00:43:00.000Z","key":1486600980000,"doc_count":10},{"key_as_string":"2017-02-09T00:44:00.000Z","key":1486601040000,"doc_count":9},{"key_as_string":"2017-02-09T00:45:00.000Z","key":1486601100000,"doc_count":10},{"key_as_string":"2017-02-09T00:46:00.000Z","key":1486601160000,"doc_count":9},{"key_as_string":"2017-02-09T00:47:00.000Z","key":1486601220000,"doc_count":9},{"key_as_string":"2017-02-09T00:48:00.000Z","key":1486601280000,"doc_count":11},{"key_as_string":"2017-02-09T00:49:00.000Z","key":1486601340000,"doc_count":6},{"key_as_string":"2017-02-09T00:50:00.000Z","key":1486601400000,"doc_count":13},{"key_as_string":"2017-02-09T00:51:00.000Z","key":1486601460000,"doc_count":8},{"key_as_string":"2017-02-09T00:52:00.000Z","key":1486601520000,"doc_count":9},{"key_as_string":"2017-02-09T00:53:00.000Z","key":1486601580000,"doc_count":12},{"key_as_string":"2017-02-09T00:54:00.000Z","key":1486601640000,"doc_count":11},{"key_as_string":"2017-02-09T00:55:00.000Z","key":1486601700000,"doc_count":7},{"key_as_string":"2017-02-09T00:56:00.000Z","key":1486601760000,"doc_count":16},{"key_as_string":"2017-02-09T00:57:00.000Z","key":1486601820000,"doc_count":11},{"key_as_string":"2017-02-09T00:58:00.000Z","key":1486601880000,"doc_count":7},{"key_as_string":"2017-02-09T00:59:00.000Z","key":1486601940000,"doc_count":9},{"key_as_string":"2017-02-09T01:00:00.000Z","key":1486602000000,"doc_count":14},{"key_as_string":"2017-02-09T01:01:00.000Z","key":1486602060000,"doc_count":9},{"key_as_string":"2017-02-09T01:02:00.000Z","key":1486602120000,"doc_count":15},{"key_as_string":"2017-02-09T01:03:00.000Z","key":1486602180000,"doc_count":10},{"key_as_string":"2017-02-09T01:04:00.000Z","key":1486602240000,"doc_count":14},{"key_as_string":"2017-02-09T01:05:00.000Z","key":1486602300000,"doc_count":8},{"key_as_string":"2017-02-09T01:06:00.000Z","key":1486602360000,"doc_count":13},{"key_as_string":"2017-02-09T01:07:00.000Z","key":1486602420000,"doc_count":10},{"key_as_string":"2017-02-09T01:08:00.000Z","key":1486602480000,"doc_count":7},{"key_as_string":"2017-02-09T01:09:00.000Z","key":1486602540000,"doc_count":15},{"key_as_string":"2017-02-09T01:10:00.000Z","key":1486602600000,"doc_count":10},{"key_as_string":"2017-02-09T01:11:00.000Z","key":1486602660000,"doc_count":7},{"key_as_string":"2017-02-09T01:12:00.000Z","key":1486602720000,"doc_count":14},{"key_as_string":"2017-02-09T01:13:00.000Z","key":1486602780000,"doc_count":11},{"key_as_string":"2017-02-09T01:14:00.000Z","key":1486602840000,"doc_count":10},{"key_as_string":"2017-02-09T01:15:00.000Z","key":1486602900000,"doc_count":12},{"key_as_string":"2017-02-09T01:16:00.000Z","key":1486602960000,"doc_count":10},{"key_as_string":"2017-02-09T01:17:00.000Z","key":1486603020000,"doc_count":9},{"key_as_string":"2017-02-09T01:18:00.000Z","key":1486603080000,"doc_count":12},{"key_as_string":"2017-02-09T01:19:00.000Z","key":1486603140000,"doc_count":6},{"key_as_string":"2017-02-09T01:20:00.000Z","key":1486603200000,"doc_count":12},{"key_as_string":"2017-02-09T01:21:00.000Z","key":1486603260000,"doc_count":7},{"key_as_string":"2017-02-09T01:22:00.000Z","key":1486603320000,"doc_count":11},{"key_as_string":"2017-02-09T01:23:00.000Z","key":1486603380000,"doc_count":6},{"key_as_string":"2017-02-09T01:24:00.000Z","key":1486603440000,"doc_count":14},{"key_as_string":"2017-02-09T01:25:00.000Z","key":1486603500000,"doc_count":6},{"key_as_string":"2017-02-09T01:26:00.000Z","key":1486603560000,"doc_count":9},{"key_as_string":"2017-02-09T01:27:00.000Z","key":1486603620000,"doc_count":14},{"key_as_string":"2017-02-09T01:28:00.000Z","key":1486603680000,"doc_count":9},{"key_as_string":"2017-02-09T01:29:00.000Z","key":1486603740000,"doc_count":13},{"key_as_string":"2017-02-09T01:30:00.000Z","key":1486603800000,"doc_count":9},{"key_as_string":"2017-02-09T01:31:00.000Z","key":1486603860000,"doc_count":11},{"key_as_string":"2017-02-09T01:32:00.000Z","key":1486603920000,"doc_count":13},{"key_as_string":"2017-02-09T01:33:00.000Z","key":1486603980000,"doc_count":6},{"key_as_string":"2017-02-09T01:34:00.000Z","key":1486604040000,"doc_count":13},{"key_as_string":"2017-02-09T01:35:00.000Z","key":1486604100000,"doc_count":7},{"key_as_string":"2017-02-09T01:36:00.000Z","key":1486604160000,"doc_count":11},{"key_as_string":"2017-02-09T01:37:00.000Z","key":1486604220000,"doc_count":10},{"key_as_string":"2017-02-09T01:38:00.000Z","key":1486604280000,"doc_count":6},{"key_as_string":"2017-02-09T01:39:00.000Z","key":1486604340000,"doc_count":14},{"key_as_string":"2017-02-09T01:40:00.000Z","key":1486604400000,"doc_count":5},{"key_as_string":"2017-02-09T01:41:00.000Z","key":1486604460000,"doc_count":8},{"key_as_string":"2017-02-09T01:42:00.000Z","key":1486604520000,"doc_count":12},{"key_as_string":"2017-02-09T01:43:00.000Z","key":1486604580000,"doc_count":16},{"key_as_string":"2017-02-09T01:44:00.000Z","key":1486604640000,"doc_count":8},{"key_as_string":"2017-02-09T01:45:00.000Z","key":1486604700000,"doc_count":5},{"key_as_string":"2017-02-09T01:46:00.000Z","key":1486604760000,"doc_count":13},{"key_as_string":"2017-02-09T01:47:00.000Z","key":1486604820000,"doc_count":7},{"key_as_string":"2017-02-09T01:48:00.000Z","key":1486604880000,"doc_count":8},{"key_as_string":"2017-02-09T01:49:00.000Z","key":1486604940000,"doc_count":17},{"key_as_string":"2017-02-09T01:50:00.000Z","key":1486605000000,"doc_count":7},{"key_as_string":"2017-02-09T01:51:00.000Z","key":1486605060000,"doc_count":10},{"key_as_string":"2017-02-09T01:52:00.000Z","key":1486605120000,"doc_count":13},{"key_as_string":"2017-02-09T01:53:00.000Z","key":1486605180000,"doc_count":15},{"key_as_string":"2017-02-09T01:54:00.000Z","key":1486605240000,"doc_count":12},{"key_as_string":"2017-02-09T01:55:00.000Z","key":1486605300000,"doc_count":6},{"key_as_string":"2017-02-09T01:56:00.000Z","key":1486605360000,"doc_count":14},{"key_as_string":"2017-02-09T01:57:00.000Z","key":1486605420000,"doc_count":13},{"key_as_string":"2017-02-09T01:58:00.000Z","key":1486605480000,"doc_count":12},{"key_as_string":"2017-02-09T01:59:00.000Z","key":1486605540000,"doc_count":11},{"key_as_string":"2017-02-09T02:00:00.000Z","key":1486605600000,"doc_count":12},{"key_as_string":"2017-02-09T02:01:00.000Z","key":1486605660000,"doc_count":15},{"key_as_string":"2017-02-09T02:02:00.000Z","key":1486605720000,"doc_count":6},{"key_as_string":"2017-02-09T02:03:00.000Z","key":1486605780000,"doc_count":15},{"key_as_string":"2017-02-09T02:04:00.000Z","key":1486605840000,"doc_count":4},{"key_as_string":"2017-02-09T02:05:00.000Z","key":1486605900000,"doc_count":14},{"key_as_string":"2017-02-09T02:06:00.000Z","key":1486605960000,"doc_count":15},{"key_as_string":"2017-02-09T02:07:00.000Z","key":1486606020000,"doc_count":8},{"key_as_string":"2017-02-09T02:08:00.000Z","key":1486606080000,"doc_count":9},{"key_as_string":"2017-02-09T02:09:00.000Z","key":1486606140000,"doc_count":13},{"key_as_string":"2017-02-09T02:10:00.000Z","key":1486606200000,"doc_count":8},{"key_as_string":"2017-02-09T02:11:00.000Z","key":1486606260000,"doc_count":12},{"key_as_string":"2017-02-09T02:12:00.000Z","key":1486606320000,"doc_count":12},{"key_as_string":"2017-02-09T02:13:00.000Z","key":1486606380000,"doc_count":16},{"key_as_string":"2017-02-09T02:14:00.000Z","key":1486606440000,"doc_count":9},{"key_as_string":"2017-02-09T02:15:00.000Z","key":1486606500000,"doc_count":10},{"key_as_string":"2017-02-09T02:16:00.000Z","key":1486606560000,"doc_count":12},{"key_as_string":"2017-02-09T02:17:00.000Z","key":1486606620000,"doc_count":11},{"key_as_string":"2017-02-09T02:18:00.000Z","key":1486606680000,"doc_count":10},{"key_as_string":"2017-02-09T02:19:00.000Z","key":1486606740000,"doc_count":10},{"key_as_string":"2017-02-09T02:20:00.000Z","key":1486606800000,"doc_count":9},{"key_as_string":"2017-02-09T02:21:00.000Z","key":1486606860000,"doc_count":16},{"key_as_string":"2017-02-09T02:22:00.000Z","key":1486606920000,"doc_count":11},{"key_as_string":"2017-02-09T02:23:00.000Z","key":1486606980000,"doc_count":10},{"key_as_string":"2017-02-09T02:24:00.000Z","key":1486607040000,"doc_count":10},{"key_as_string":"2017-02-09T02:25:00.000Z","key":1486607100000,"doc_count":11},{"key_as_string":"2017-02-09T02:26:00.000Z","key":1486607160000,"doc_count":7},{"key_as_string":"2017-02-09T02:27:00.000Z","key":1486607220000,"doc_count":12},{"key_as_string":"2017-02-09T02:28:00.000Z","key":1486607280000,"doc_count":9},{"key_as_string":"2017-02-09T02:29:00.000Z","key":1486607340000,"doc_count":6},{"key_as_string":"2017-02-09T02:30:00.000Z","key":1486607400000,"doc_count":10},{"key_as_string":"2017-02-09T02:31:00.000Z","key":1486607460000,"doc_count":8},{"key_as_string":"2017-02-09T02:32:00.000Z","key":1486607520000,"doc_count":14},{"key_as_string":"2017-02-09T02:33:00.000Z","key":1486607580000,"doc_count":9},{"key_as_string":"2017-02-09T02:34:00.000Z","key":1486607640000,"doc_count":10},{"key_as_string":"2017-02-09T02:35:00.000Z","key":1486607700000,"doc_count":9},{"key_as_string":"2017-02-09T02:36:00.000Z","key":1486607760000,"doc_count":11},{"key_as_string":"2017-02-09T02:37:00.000Z","key":1486607820000,"doc_count":11},{"key_as_string":"2017-02-09T02:38:00.000Z","key":1486607880000,"doc_count":6},{"key_as_string":"2017-02-09T02:39:00.000Z","key":1486607940000,"doc_count":20},{"key_as_string":"2017-02-09T02:40:00.000Z","key":1486608000000,"doc_count":11},{"key_as_string":"2017-02-09T02:41:00.000Z","key":1486608060000,"doc_count":11},{"key_as_string":"2017-02-09T02:42:00.000Z","key":1486608120000,"doc_count":11},{"key_as_string":"2017-02-09T02:43:00.000Z","key":1486608180000,"doc_count":5},{"key_as_string":"2017-02-09T02:44:00.000Z","key":1486608240000,"doc_count":10},{"key_as_string":"2017-02-09T02:45:00.000Z","key":1486608300000,"doc_count":10},{"key_as_string":"2017-02-09T02:46:00.000Z","key":1486608360000,"doc_count":14},{"key_as_string":"2017-02-09T02:47:00.000Z","key":1486608420000,"doc_count":10},{"key_as_string":"2017-02-09T02:48:00.000Z","key":1486608480000,"doc_count":13},{"key_as_string":"2017-02-09T02:49:00.000Z","key":1486608540000,"doc_count":9},{"key_as_string":"2017-02-09T02:50:00.000Z","key":1486608600000,"doc_count":10},{"key_as_string":"2017-02-09T02:51:00.000Z","key":1486608660000,"doc_count":9},{"key_as_string":"2017-02-09T02:52:00.000Z","key":1486608720000,"doc_count":13},{"key_as_string":"2017-02-09T02:53:00.000Z","key":1486608780000,"doc_count":16},{"key_as_string":"2017-02-09T02:54:00.000Z","key":1486608840000,"doc_count":5},{"key_as_string":"2017-02-09T02:55:00.000Z","key":1486608900000,"doc_count":8},{"key_as_string":"2017-02-09T02:56:00.000Z","key":1486608960000,"doc_count":13},{"key_as_string":"2017-02-09T02:57:00.000Z","key":1486609020000,"doc_count":10},{"key_as_string":"2017-02-09T02:58:00.000Z","key":1486609080000,"doc_count":11},{"key_as_string":"2017-02-09T02:59:00.000Z","key":1486609140000,"doc_count":9},{"key_as_string":"2017-02-09T03:00:00.000Z","key":1486609200000,"doc_count":14},{"key_as_string":"2017-02-09T03:01:00.000Z","key":1486609260000,"doc_count":7},{"key_as_string":"2017-02-09T03:02:00.000Z","key":1486609320000,"doc_count":9},{"key_as_string":"2017-02-09T03:03:00.000Z","key":1486609380000,"doc_count":11},{"key_as_string":"2017-02-09T03:04:00.000Z","key":1486609440000,"doc_count":21},{"key_as_string":"2017-02-09T03:05:00.000Z","key":1486609500000,"doc_count":12},{"key_as_string":"2017-02-09T03:06:00.000Z","key":1486609560000,"doc_count":14},{"key_as_string":"2017-02-09T03:07:00.000Z","key":1486609620000,"doc_count":9},{"key_as_string":"2017-02-09T03:08:00.000Z","key":1486609680000,"doc_count":12},{"key_as_string":"2017-02-09T03:09:00.000Z","key":1486609740000,"doc_count":12},{"key_as_string":"2017-02-09T03:10:00.000Z","key":1486609800000,"doc_count":10},{"key_as_string":"2017-02-09T03:11:00.000Z","key":1486609860000,"doc_count":7},{"key_as_string":"2017-02-09T03:12:00.000Z","key":1486609920000,"doc_count":11},{"key_as_string":"2017-02-09T03:13:00.000Z","key":1486609980000,"doc_count":9},{"key_as_string":"2017-02-09T03:14:00.000Z","key":1486610040000,"doc_count":5},{"key_as_string":"2017-02-09T03:15:00.000Z","key":1486610100000,"doc_count":14},{"key_as_string":"2017-02-09T03:16:00.000Z","key":1486610160000,"doc_count":7},{"key_as_string":"2017-02-09T03:17:00.000Z","key":1486610220000,"doc_count":11},{"key_as_string":"2017-02-09T03:18:00.000Z","key":1486610280000,"doc_count":14},{"key_as_string":"2017-02-09T03:19:00.000Z","key":1486610340000,"doc_count":12},{"key_as_string":"2017-02-09T03:20:00.000Z","key":1486610400000,"doc_count":7},{"key_as_string":"2017-02-09T03:21:00.000Z","key":1486610460000,"doc_count":15},{"key_as_string":"2017-02-09T03:22:00.000Z","key":1486610520000,"doc_count":12},{"key_as_string":"2017-02-09T03:23:00.000Z","key":1486610580000,"doc_count":10},{"key_as_string":"2017-02-09T03:24:00.000Z","key":1486610640000,"doc_count":6},{"key_as_string":"2017-02-09T03:25:00.000Z","key":1486610700000,"doc_count":11},{"key_as_string":"2017-02-09T03:26:00.000Z","key":1486610760000,"doc_count":10},{"key_as_string":"2017-02-09T03:27:00.000Z","key":1486610820000,"doc_count":11},{"key_as_string":"2017-02-09T03:28:00.000Z","key":1486610880000,"doc_count":12},{"key_as_string":"2017-02-09T03:29:00.000Z","key":1486610940000,"doc_count":11},{"key_as_string":"2017-02-09T03:30:00.000Z","key":1486611000000,"doc_count":15},{"key_as_string":"2017-02-09T03:31:00.000Z","key":1486611060000,"doc_count":10},{"key_as_string":"2017-02-09T03:32:00.000Z","key":1486611120000,"doc_count":14},{"key_as_string":"2017-02-09T03:33:00.000Z","key":1486611180000,"doc_count":10},{"key_as_string":"2017-02-09T03:34:00.000Z","key":1486611240000,"doc_count":10},{"key_as_string":"2017-02-09T03:35:00.000Z","key":1486611300000,"doc_count":15},{"key_as_string":"2017-02-09T03:36:00.000Z","key":1486611360000,"doc_count":8},{"key_as_string":"2017-02-09T03:37:00.000Z","key":1486611420000,"doc_count":8},{"key_as_string":"2017-02-09T03:38:00.000Z","key":1486611480000,"doc_count":15},{"key_as_string":"2017-02-09T03:39:00.000Z","key":1486611540000,"doc_count":7},{"key_as_string":"2017-02-09T03:40:00.000Z","key":1486611600000,"doc_count":15},{"key_as_string":"2017-02-09T03:41:00.000Z","key":1486611660000,"doc_count":7},{"key_as_string":"2017-02-09T03:42:00.000Z","key":1486611720000,"doc_count":14},{"key_as_string":"2017-02-09T03:43:00.000Z","key":1486611780000,"doc_count":8},{"key_as_string":"2017-02-09T03:44:00.000Z","key":1486611840000,"doc_count":9},{"key_as_string":"2017-02-09T03:45:00.000Z","key":1486611900000,"doc_count":11},{"key_as_string":"2017-02-09T03:46:00.000Z","key":1486611960000,"doc_count":15},{"key_as_string":"2017-02-09T03:47:00.000Z","key":1486612020000,"doc_count":6},{"key_as_string":"2017-02-09T03:48:00.000Z","key":1486612080000,"doc_count":9},{"key_as_string":"2017-02-09T03:49:00.000Z","key":1486612140000,"doc_count":13},{"key_as_string":"2017-02-09T03:50:00.000Z","key":1486612200000,"doc_count":9},{"key_as_string":"2017-02-09T03:51:00.000Z","key":1486612260000,"doc_count":11},{"key_as_string":"2017-02-09T03:52:00.000Z","key":1486612320000,"doc_count":12},{"key_as_string":"2017-02-09T03:53:00.000Z","key":1486612380000,"doc_count":13},{"key_as_string":"2017-02-09T03:54:00.000Z","key":1486612440000,"doc_count":7},{"key_as_string":"2017-02-09T03:55:00.000Z","key":1486612500000,"doc_count":14},{"key_as_string":"2017-02-09T03:56:00.000Z","key":1486612560000,"doc_count":10},{"key_as_string":"2017-02-09T03:57:00.000Z","key":1486612620000,"doc_count":8},{"key_as_string":"2017-02-09T03:58:00.000Z","key":1486612680000,"doc_count":6},{"key_as_string":"2017-02-09T03:59:00.000Z","key":1486612740000,"doc_count":11},{"key_as_string":"2017-02-09T04:00:00.000Z","key":1486612800000,"doc_count":8},{"key_as_string":"2017-02-09T04:01:00.000Z","key":1486612860000,"doc_count":12},{"key_as_string":"2017-02-09T04:02:00.000Z","key":1486612920000,"doc_count":13},{"key_as_string":"2017-02-09T04:03:00.000Z","key":1486612980000,"doc_count":10},{"key_as_string":"2017-02-09T04:04:00.000Z","key":1486613040000,"doc_count":12},{"key_as_string":"2017-02-09T04:05:00.000Z","key":1486613100000,"doc_count":9},{"key_as_string":"2017-02-09T04:06:00.000Z","key":1486613160000,"doc_count":16},{"key_as_string":"2017-02-09T04:07:00.000Z","key":1486613220000,"doc_count":12},{"key_as_string":"2017-02-09T04:08:00.000Z","key":1486613280000,"doc_count":16},{"key_as_string":"2017-02-09T04:09:00.000Z","key":1486613340000,"doc_count":10},{"key_as_string":"2017-02-09T04:10:00.000Z","key":1486613400000,"doc_count":9},{"key_as_string":"2017-02-09T04:11:00.000Z","key":1486613460000,"doc_count":9},{"key_as_string":"2017-02-09T04:12:00.000Z","key":1486613520000,"doc_count":11},{"key_as_string":"2017-02-09T04:13:00.000Z","key":1486613580000,"doc_count":8},{"key_as_string":"2017-02-09T04:14:00.000Z","key":1486613640000,"doc_count":11},{"key_as_string":"2017-02-09T04:15:00.000Z","key":1486613700000,"doc_count":7},{"key_as_string":"2017-02-09T04:16:00.000Z","key":1486613760000,"doc_count":9},{"key_as_string":"2017-02-09T04:17:00.000Z","key":1486613820000,"doc_count":14},{"key_as_string":"2017-02-09T04:18:00.000Z","key":1486613880000,"doc_count":12},{"key_as_string":"2017-02-09T04:19:00.000Z","key":1486613940000,"doc_count":12},{"key_as_string":"2017-02-09T04:20:00.000Z","key":1486614000000,"doc_count":11},{"key_as_string":"2017-02-09T04:21:00.000Z","key":1486614060000,"doc_count":15},{"key_as_string":"2017-02-09T04:22:00.000Z","key":1486614120000,"doc_count":15},{"key_as_string":"2017-02-09T04:23:00.000Z","key":1486614180000,"doc_count":14},{"key_as_string":"2017-02-09T04:24:00.000Z","key":1486614240000,"doc_count":10},{"key_as_string":"2017-02-09T04:25:00.000Z","key":1486614300000,"doc_count":8},{"key_as_string":"2017-02-09T04:26:00.000Z","key":1486614360000,"doc_count":8},{"key_as_string":"2017-02-09T04:27:00.000Z","key":1486614420000,"doc_count":14},{"key_as_string":"2017-02-09T04:28:00.000Z","key":1486614480000,"doc_count":9},{"key_as_string":"2017-02-09T04:29:00.000Z","key":1486614540000,"doc_count":16},{"key_as_string":"2017-02-09T04:30:00.000Z","key":1486614600000,"doc_count":11},{"key_as_string":"2017-02-09T04:31:00.000Z","key":1486614660000,"doc_count":13},{"key_as_string":"2017-02-09T04:32:00.000Z","key":1486614720000,"doc_count":9},{"key_as_string":"2017-02-09T04:33:00.000Z","key":1486614780000,"doc_count":16},{"key_as_string":"2017-02-09T04:34:00.000Z","key":1486614840000,"doc_count":11},{"key_as_string":"2017-02-09T04:35:00.000Z","key":1486614900000,"doc_count":9},{"key_as_string":"2017-02-09T04:36:00.000Z","key":1486614960000,"doc_count":11},{"key_as_string":"2017-02-09T04:37:00.000Z","key":1486615020000,"doc_count":14},{"key_as_string":"2017-02-09T04:38:00.000Z","key":1486615080000,"doc_count":14},{"key_as_string":"2017-02-09T04:39:00.000Z","key":1486615140000,"doc_count":10},{"key_as_string":"2017-02-09T04:40:00.000Z","key":1486615200000,"doc_count":7},{"key_as_string":"2017-02-09T04:41:00.000Z","key":1486615260000,"doc_count":13},{"key_as_string":"2017-02-09T04:42:00.000Z","key":1486615320000,"doc_count":10},{"key_as_string":"2017-02-09T04:43:00.000Z","key":1486615380000,"doc_count":17},{"key_as_string":"2017-02-09T04:44:00.000Z","key":1486615440000,"doc_count":12},{"key_as_string":"2017-02-09T04:45:00.000Z","key":1486615500000,"doc_count":9},{"key_as_string":"2017-02-09T04:46:00.000Z","key":1486615560000,"doc_count":7},{"key_as_string":"2017-02-09T04:47:00.000Z","key":1486615620000,"doc_count":14},{"key_as_string":"2017-02-09T04:48:00.000Z","key":1486615680000,"doc_count":11},{"key_as_string":"2017-02-09T04:49:00.000Z","key":1486615740000,"doc_count":15},{"key_as_string":"2017-02-09T04:50:00.000Z","key":1486615800000,"doc_count":12},{"key_as_string":"2017-02-09T04:51:00.000Z","key":1486615860000,"doc_count":11},{"key_as_string":"2017-02-09T04:52:00.000Z","key":1486615920000,"doc_count":10},{"key_as_string":"2017-02-09T04:53:00.000Z","key":1486615980000,"doc_count":10},{"key_as_string":"2017-02-09T04:54:00.000Z","key":1486616040000,"doc_count":12},{"key_as_string":"2017-02-09T04:55:00.000Z","key":1486616100000,"doc_count":10},{"key_as_string":"2017-02-09T04:56:00.000Z","key":1486616160000,"doc_count":13},{"key_as_string":"2017-02-09T04:57:00.000Z","key":1486616220000,"doc_count":10},{"key_as_string":"2017-02-09T04:58:00.000Z","key":1486616280000,"doc_count":12},{"key_as_string":"2017-02-09T04:59:00.000Z","key":1486616340000,"doc_count":13},{"key_as_string":"2017-02-09T05:00:00.000Z","key":1486616400000,"doc_count":11},{"key_as_string":"2017-02-09T05:01:00.000Z","key":1486616460000,"doc_count":14},{"key_as_string":"2017-02-09T05:02:00.000Z","key":1486616520000,"doc_count":10},{"key_as_string":"2017-02-09T05:03:00.000Z","key":1486616580000,"doc_count":13},{"key_as_string":"2017-02-09T05:04:00.000Z","key":1486616640000,"doc_count":11},{"key_as_string":"2017-02-09T05:05:00.000Z","key":1486616700000,"doc_count":11},{"key_as_string":"2017-02-09T05:06:00.000Z","key":1486616760000,"doc_count":12},{"key_as_string":"2017-02-09T05:07:00.000Z","key":1486616820000,"doc_count":21},{"key_as_string":"2017-02-09T05:08:00.000Z","key":1486616880000,"doc_count":7},{"key_as_string":"2017-02-09T05:09:00.000Z","key":1486616940000,"doc_count":14},{"key_as_string":"2017-02-09T05:10:00.000Z","key":1486617000000,"doc_count":9},{"key_as_string":"2017-02-09T05:11:00.000Z","key":1486617060000,"doc_count":7},{"key_as_string":"2017-02-09T05:12:00.000Z","key":1486617120000,"doc_count":15},{"key_as_string":"2017-02-09T05:13:00.000Z","key":1486617180000,"doc_count":12},{"key_as_string":"2017-02-09T05:14:00.000Z","key":1486617240000,"doc_count":15},{"key_as_string":"2017-02-09T05:15:00.000Z","key":1486617300000,"doc_count":12},{"key_as_string":"2017-02-09T05:16:00.000Z","key":1486617360000,"doc_count":15},{"key_as_string":"2017-02-09T05:17:00.000Z","key":1486617420000,"doc_count":11},{"key_as_string":"2017-02-09T05:18:00.000Z","key":1486617480000,"doc_count":16},{"key_as_string":"2017-02-09T05:19:00.000Z","key":1486617540000,"doc_count":8},{"key_as_string":"2017-02-09T05:20:00.000Z","key":1486617600000,"doc_count":12},{"key_as_string":"2017-02-09T05:21:00.000Z","key":1486617660000,"doc_count":12},{"key_as_string":"2017-02-09T05:22:00.000Z","key":1486617720000,"doc_count":11},{"key_as_string":"2017-02-09T05:23:00.000Z","key":1486617780000,"doc_count":10},{"key_as_string":"2017-02-09T05:24:00.000Z","key":1486617840000,"doc_count":15},{"key_as_string":"2017-02-09T05:25:00.000Z","key":1486617900000,"doc_count":8},{"key_as_string":"2017-02-09T05:26:00.000Z","key":1486617960000,"doc_count":13},{"key_as_string":"2017-02-09T05:27:00.000Z","key":1486618020000,"doc_count":14},{"key_as_string":"2017-02-09T05:28:00.000Z","key":1486618080000,"doc_count":7},{"key_as_string":"2017-02-09T05:29:00.000Z","key":1486618140000,"doc_count":9},{"key_as_string":"2017-02-09T05:30:00.000Z","key":1486618200000,"doc_count":10},{"key_as_string":"2017-02-09T05:31:00.000Z","key":1486618260000,"doc_count":11},{"key_as_string":"2017-02-09T05:32:00.000Z","key":1486618320000,"doc_count":8},{"key_as_string":"2017-02-09T05:33:00.000Z","key":1486618380000,"doc_count":12},{"key_as_string":"2017-02-09T05:34:00.000Z","key":1486618440000,"doc_count":13},{"key_as_string":"2017-02-09T05:35:00.000Z","key":1486618500000,"doc_count":10},{"key_as_string":"2017-02-09T05:36:00.000Z","key":1486618560000,"doc_count":13},{"key_as_string":"2017-02-09T05:37:00.000Z","key":1486618620000,"doc_count":5},{"key_as_string":"2017-02-09T05:38:00.000Z","key":1486618680000,"doc_count":13},{"key_as_string":"2017-02-09T05:39:00.000Z","key":1486618740000,"doc_count":5},{"key_as_string":"2017-02-09T05:40:00.000Z","key":1486618800000,"doc_count":13},{"key_as_string":"2017-02-09T05:41:00.000Z","key":1486618860000,"doc_count":12},{"key_as_string":"2017-02-09T05:42:00.000Z","key":1486618920000,"doc_count":21},{"key_as_string":"2017-02-09T05:43:00.000Z","key":1486618980000,"doc_count":6},{"key_as_string":"2017-02-09T05:44:00.000Z","key":1486619040000,"doc_count":16},{"key_as_string":"2017-02-09T05:45:00.000Z","key":1486619100000,"doc_count":11},{"key_as_string":"2017-02-09T05:46:00.000Z","key":1486619160000,"doc_count":10},{"key_as_string":"2017-02-09T05:47:00.000Z","key":1486619220000,"doc_count":10},{"key_as_string":"2017-02-09T05:48:00.000Z","key":1486619280000,"doc_count":12},{"key_as_string":"2017-02-09T05:49:00.000Z","key":1486619340000,"doc_count":11},{"key_as_string":"2017-02-09T05:50:00.000Z","key":1486619400000,"doc_count":13},{"key_as_string":"2017-02-09T05:51:00.000Z","key":1486619460000,"doc_count":12},{"key_as_string":"2017-02-09T05:52:00.000Z","key":1486619520000,"doc_count":6},{"key_as_string":"2017-02-09T05:53:00.000Z","key":1486619580000,"doc_count":13},{"key_as_string":"2017-02-09T05:54:00.000Z","key":1486619640000,"doc_count":11},{"key_as_string":"2017-02-09T05:55:00.000Z","key":1486619700000,"doc_count":13},{"key_as_string":"2017-02-09T05:56:00.000Z","key":1486619760000,"doc_count":13},{"key_as_string":"2017-02-09T05:57:00.000Z","key":1486619820000,"doc_count":13},{"key_as_string":"2017-02-09T05:58:00.000Z","key":1486619880000,"doc_count":9},{"key_as_string":"2017-02-09T05:59:00.000Z","key":1486619940000,"doc_count":12},{"key_as_string":"2017-02-09T06:00:00.000Z","key":1486620000000,"doc_count":12},{"key_as_string":"2017-02-09T06:01:00.000Z","key":1486620060000,"doc_count":17},{"key_as_string":"2017-02-09T06:02:00.000Z","key":1486620120000,"doc_count":14},{"key_as_string":"2017-02-09T06:03:00.000Z","key":1486620180000,"doc_count":7},{"key_as_string":"2017-02-09T06:04:00.000Z","key":1486620240000,"doc_count":9},{"key_as_string":"2017-02-09T06:05:00.000Z","key":1486620300000,"doc_count":15},{"key_as_string":"2017-02-09T06:06:00.000Z","key":1486620360000,"doc_count":11},{"key_as_string":"2017-02-09T06:07:00.000Z","key":1486620420000,"doc_count":10},{"key_as_string":"2017-02-09T06:08:00.000Z","key":1486620480000,"doc_count":11},{"key_as_string":"2017-02-09T06:09:00.000Z","key":1486620540000,"doc_count":8},{"key_as_string":"2017-02-09T06:10:00.000Z","key":1486620600000,"doc_count":12},{"key_as_string":"2017-02-09T06:11:00.000Z","key":1486620660000,"doc_count":16},{"key_as_string":"2017-02-09T06:12:00.000Z","key":1486620720000,"doc_count":11},{"key_as_string":"2017-02-09T06:13:00.000Z","key":1486620780000,"doc_count":8},{"key_as_string":"2017-02-09T06:14:00.000Z","key":1486620840000,"doc_count":11},{"key_as_string":"2017-02-09T06:15:00.000Z","key":1486620900000,"doc_count":16},{"key_as_string":"2017-02-09T06:16:00.000Z","key":1486620960000,"doc_count":12},{"key_as_string":"2017-02-09T06:17:00.000Z","key":1486621020000,"doc_count":10},{"key_as_string":"2017-02-09T06:18:00.000Z","key":1486621080000,"doc_count":10},{"key_as_string":"2017-02-09T06:19:00.000Z","key":1486621140000,"doc_count":18},{"key_as_string":"2017-02-09T06:20:00.000Z","key":1486621200000,"doc_count":8},{"key_as_string":"2017-02-09T06:21:00.000Z","key":1486621260000,"doc_count":13},{"key_as_string":"2017-02-09T06:22:00.000Z","key":1486621320000,"doc_count":10},{"key_as_string":"2017-02-09T06:23:00.000Z","key":1486621380000,"doc_count":15},{"key_as_string":"2017-02-09T06:24:00.000Z","key":1486621440000,"doc_count":13},{"key_as_string":"2017-02-09T06:25:00.000Z","key":1486621500000,"doc_count":10},{"key_as_string":"2017-02-09T06:26:00.000Z","key":1486621560000,"doc_count":11},{"key_as_string":"2017-02-09T06:27:00.000Z","key":1486621620000,"doc_count":10},{"key_as_string":"2017-02-09T06:28:00.000Z","key":1486621680000,"doc_count":11},{"key_as_string":"2017-02-09T06:29:00.000Z","key":1486621740000,"doc_count":14},{"key_as_string":"2017-02-09T06:30:00.000Z","key":1486621800000,"doc_count":7},{"key_as_string":"2017-02-09T06:31:00.000Z","key":1486621860000,"doc_count":13},{"key_as_string":"2017-02-09T06:32:00.000Z","key":1486621920000,"doc_count":10},{"key_as_string":"2017-02-09T06:33:00.000Z","key":1486621980000,"doc_count":7},{"key_as_string":"2017-02-09T06:34:00.000Z","key":1486622040000,"doc_count":15},{"key_as_string":"2017-02-09T06:35:00.000Z","key":1486622100000,"doc_count":10},{"key_as_string":"2017-02-09T06:36:00.000Z","key":1486622160000,"doc_count":14},{"key_as_string":"2017-02-09T06:37:00.000Z","key":1486622220000,"doc_count":10},{"key_as_string":"2017-02-09T06:38:00.000Z","key":1486622280000,"doc_count":8},{"key_as_string":"2017-02-09T06:39:00.000Z","key":1486622340000,"doc_count":7},{"key_as_string":"2017-02-09T06:40:00.000Z","key":1486622400000,"doc_count":13},{"key_as_string":"2017-02-09T06:41:00.000Z","key":1486622460000,"doc_count":13},{"key_as_string":"2017-02-09T06:42:00.000Z","key":1486622520000,"doc_count":7},{"key_as_string":"2017-02-09T06:43:00.000Z","key":1486622580000,"doc_count":12},{"key_as_string":"2017-02-09T06:44:00.000Z","key":1486622640000,"doc_count":11},{"key_as_string":"2017-02-09T06:45:00.000Z","key":1486622700000,"doc_count":10},{"key_as_string":"2017-02-09T06:46:00.000Z","key":1486622760000,"doc_count":16},{"key_as_string":"2017-02-09T06:47:00.000Z","key":1486622820000,"doc_count":17},{"key_as_string":"2017-02-09T06:48:00.000Z","key":1486622880000,"doc_count":13},{"key_as_string":"2017-02-09T06:49:00.000Z","key":1486622940000,"doc_count":11},{"key_as_string":"2017-02-09T06:50:00.000Z","key":1486623000000,"doc_count":8},{"key_as_string":"2017-02-09T06:51:00.000Z","key":1486623060000,"doc_count":6},{"key_as_string":"2017-02-09T06:52:00.000Z","key":1486623120000,"doc_count":17},{"key_as_string":"2017-02-09T06:53:00.000Z","key":1486623180000,"doc_count":11},{"key_as_string":"2017-02-09T06:54:00.000Z","key":1486623240000,"doc_count":11},{"key_as_string":"2017-02-09T06:55:00.000Z","key":1486623300000,"doc_count":14},{"key_as_string":"2017-02-09T06:56:00.000Z","key":1486623360000,"doc_count":10},{"key_as_string":"2017-02-09T06:57:00.000Z","key":1486623420000,"doc_count":14},{"key_as_string":"2017-02-09T06:58:00.000Z","key":1486623480000,"doc_count":8},{"key_as_string":"2017-02-09T06:59:00.000Z","key":1486623540000,"doc_count":10},{"key_as_string":"2017-02-09T07:00:00.000Z","key":1486623600000,"doc_count":11},{"key_as_string":"2017-02-09T07:01:00.000Z","key":1486623660000,"doc_count":16},{"key_as_string":"2017-02-09T07:02:00.000Z","key":1486623720000,"doc_count":17},{"key_as_string":"2017-02-09T07:03:00.000Z","key":1486623780000,"doc_count":16},{"key_as_string":"2017-02-09T07:04:00.000Z","key":1486623840000,"doc_count":15},{"key_as_string":"2017-02-09T07:05:00.000Z","key":1486623900000,"doc_count":12},{"key_as_string":"2017-02-09T07:06:00.000Z","key":1486623960000,"doc_count":9},{"key_as_string":"2017-02-09T07:07:00.000Z","key":1486624020000,"doc_count":11},{"key_as_string":"2017-02-09T07:08:00.000Z","key":1486624080000,"doc_count":11},{"key_as_string":"2017-02-09T07:09:00.000Z","key":1486624140000,"doc_count":20},{"key_as_string":"2017-02-09T07:10:00.000Z","key":1486624200000,"doc_count":9},{"key_as_string":"2017-02-09T07:11:00.000Z","key":1486624260000,"doc_count":17},{"key_as_string":"2017-02-09T07:12:00.000Z","key":1486624320000,"doc_count":13},{"key_as_string":"2017-02-09T07:13:00.000Z","key":1486624380000,"doc_count":18},{"key_as_string":"2017-02-09T07:14:00.000Z","key":1486624440000,"doc_count":8},{"key_as_string":"2017-02-09T07:15:00.000Z","key":1486624500000,"doc_count":14},{"key_as_string":"2017-02-09T07:16:00.000Z","key":1486624560000,"doc_count":9},{"key_as_string":"2017-02-09T07:17:00.000Z","key":1486624620000,"doc_count":15},{"key_as_string":"2017-02-09T07:18:00.000Z","key":1486624680000,"doc_count":15},{"key_as_string":"2017-02-09T07:19:00.000Z","key":1486624740000,"doc_count":15},{"key_as_string":"2017-02-09T07:20:00.000Z","key":1486624800000,"doc_count":17},{"key_as_string":"2017-02-09T07:21:00.000Z","key":1486624860000,"doc_count":13},{"key_as_string":"2017-02-09T07:22:00.000Z","key":1486624920000,"doc_count":10},{"key_as_string":"2017-02-09T07:23:00.000Z","key":1486624980000,"doc_count":10},{"key_as_string":"2017-02-09T07:24:00.000Z","key":1486625040000,"doc_count":9},{"key_as_string":"2017-02-09T07:25:00.000Z","key":1486625100000,"doc_count":16},{"key_as_string":"2017-02-09T07:26:00.000Z","key":1486625160000,"doc_count":14},{"key_as_string":"2017-02-09T07:27:00.000Z","key":1486625220000,"doc_count":13},{"key_as_string":"2017-02-09T07:28:00.000Z","key":1486625280000,"doc_count":14},{"key_as_string":"2017-02-09T07:29:00.000Z","key":1486625340000,"doc_count":14},{"key_as_string":"2017-02-09T07:30:00.000Z","key":1486625400000,"doc_count":14},{"key_as_string":"2017-02-09T07:31:00.000Z","key":1486625460000,"doc_count":16},{"key_as_string":"2017-02-09T07:32:00.000Z","key":1486625520000,"doc_count":13},{"key_as_string":"2017-02-09T07:33:00.000Z","key":1486625580000,"doc_count":12},{"key_as_string":"2017-02-09T07:34:00.000Z","key":1486625640000,"doc_count":15},{"key_as_string":"2017-02-09T07:35:00.000Z","key":1486625700000,"doc_count":13},{"key_as_string":"2017-02-09T07:36:00.000Z","key":1486625760000,"doc_count":15},{"key_as_string":"2017-02-09T07:37:00.000Z","key":1486625820000,"doc_count":12},{"key_as_string":"2017-02-09T07:38:00.000Z","key":1486625880000,"doc_count":9},{"key_as_string":"2017-02-09T07:39:00.000Z","key":1486625940000,"doc_count":20},{"key_as_string":"2017-02-09T07:40:00.000Z","key":1486626000000,"doc_count":13},{"key_as_string":"2017-02-09T07:41:00.000Z","key":1486626060000,"doc_count":17},{"key_as_string":"2017-02-09T07:42:00.000Z","key":1486626120000,"doc_count":10},{"key_as_string":"2017-02-09T07:43:00.000Z","key":1486626180000,"doc_count":15},{"key_as_string":"2017-02-09T07:44:00.000Z","key":1486626240000,"doc_count":11},{"key_as_string":"2017-02-09T07:45:00.000Z","key":1486626300000,"doc_count":11},{"key_as_string":"2017-02-09T07:46:00.000Z","key":1486626360000,"doc_count":13},{"key_as_string":"2017-02-09T07:47:00.000Z","key":1486626420000,"doc_count":14},{"key_as_string":"2017-02-09T07:48:00.000Z","key":1486626480000,"doc_count":13},{"key_as_string":"2017-02-09T07:49:00.000Z","key":1486626540000,"doc_count":13},{"key_as_string":"2017-02-09T07:50:00.000Z","key":1486626600000,"doc_count":12},{"key_as_string":"2017-02-09T07:51:00.000Z","key":1486626660000,"doc_count":15},{"key_as_string":"2017-02-09T07:52:00.000Z","key":1486626720000,"doc_count":15},{"key_as_string":"2017-02-09T07:53:00.000Z","key":1486626780000,"doc_count":15},{"key_as_string":"2017-02-09T07:54:00.000Z","key":1486626840000,"doc_count":12},{"key_as_string":"2017-02-09T07:55:00.000Z","key":1486626900000,"doc_count":11},{"key_as_string":"2017-02-09T07:56:00.000Z","key":1486626960000,"doc_count":14},{"key_as_string":"2017-02-09T07:57:00.000Z","key":1486627020000,"doc_count":8},{"key_as_string":"2017-02-09T07:58:00.000Z","key":1486627080000,"doc_count":17},{"key_as_string":"2017-02-09T07:59:00.000Z","key":1486627140000,"doc_count":13},{"key_as_string":"2017-02-09T08:00:00.000Z","key":1486627200000,"doc_count":13},{"key_as_string":"2017-02-09T08:01:00.000Z","key":1486627260000,"doc_count":12},{"key_as_string":"2017-02-09T08:02:00.000Z","key":1486627320000,"doc_count":19},{"key_as_string":"2017-02-09T08:03:00.000Z","key":1486627380000,"doc_count":15},{"key_as_string":"2017-02-09T08:04:00.000Z","key":1486627440000,"doc_count":9},{"key_as_string":"2017-02-09T08:05:00.000Z","key":1486627500000,"doc_count":14},{"key_as_string":"2017-02-09T08:06:00.000Z","key":1486627560000,"doc_count":14},{"key_as_string":"2017-02-09T08:07:00.000Z","key":1486627620000,"doc_count":13},{"key_as_string":"2017-02-09T08:08:00.000Z","key":1486627680000,"doc_count":10},{"key_as_string":"2017-02-09T08:09:00.000Z","key":1486627740000,"doc_count":14},{"key_as_string":"2017-02-09T08:10:00.000Z","key":1486627800000,"doc_count":11},{"key_as_string":"2017-02-09T08:11:00.000Z","key":1486627860000,"doc_count":12},{"key_as_string":"2017-02-09T08:12:00.000Z","key":1486627920000,"doc_count":15},{"key_as_string":"2017-02-09T08:13:00.000Z","key":1486627980000,"doc_count":13},{"key_as_string":"2017-02-09T08:14:00.000Z","key":1486628040000,"doc_count":12},{"key_as_string":"2017-02-09T08:15:00.000Z","key":1486628100000,"doc_count":11},{"key_as_string":"2017-02-09T08:16:00.000Z","key":1486628160000,"doc_count":21},{"key_as_string":"2017-02-09T08:17:00.000Z","key":1486628220000,"doc_count":16},{"key_as_string":"2017-02-09T08:18:00.000Z","key":1486628280000,"doc_count":16},{"key_as_string":"2017-02-09T08:19:00.000Z","key":1486628340000,"doc_count":11},{"key_as_string":"2017-02-09T08:20:00.000Z","key":1486628400000,"doc_count":14},{"key_as_string":"2017-02-09T08:21:00.000Z","key":1486628460000,"doc_count":14},{"key_as_string":"2017-02-09T08:22:00.000Z","key":1486628520000,"doc_count":13},{"key_as_string":"2017-02-09T08:23:00.000Z","key":1486628580000,"doc_count":13},{"key_as_string":"2017-02-09T08:24:00.000Z","key":1486628640000,"doc_count":12},{"key_as_string":"2017-02-09T08:25:00.000Z","key":1486628700000,"doc_count":16},{"key_as_string":"2017-02-09T08:26:00.000Z","key":1486628760000,"doc_count":12},{"key_as_string":"2017-02-09T08:27:00.000Z","key":1486628820000,"doc_count":10},{"key_as_string":"2017-02-09T08:28:00.000Z","key":1486628880000,"doc_count":15},{"key_as_string":"2017-02-09T08:29:00.000Z","key":1486628940000,"doc_count":17},{"key_as_string":"2017-02-09T08:30:00.000Z","key":1486629000000,"doc_count":12},{"key_as_string":"2017-02-09T08:31:00.000Z","key":1486629060000,"doc_count":13},{"key_as_string":"2017-02-09T08:32:00.000Z","key":1486629120000,"doc_count":14},{"key_as_string":"2017-02-09T08:33:00.000Z","key":1486629180000,"doc_count":14},{"key_as_string":"2017-02-09T08:34:00.000Z","key":1486629240000,"doc_count":14},{"key_as_string":"2017-02-09T08:35:00.000Z","key":1486629300000,"doc_count":12},{"key_as_string":"2017-02-09T08:36:00.000Z","key":1486629360000,"doc_count":14},{"key_as_string":"2017-02-09T08:37:00.000Z","key":1486629420000,"doc_count":14},{"key_as_string":"2017-02-09T08:38:00.000Z","key":1486629480000,"doc_count":12},{"key_as_string":"2017-02-09T08:39:00.000Z","key":1486629540000,"doc_count":7},{"key_as_string":"2017-02-09T08:40:00.000Z","key":1486629600000,"doc_count":18},{"key_as_string":"2017-02-09T08:41:00.000Z","key":1486629660000,"doc_count":10},{"key_as_string":"2017-02-09T08:42:00.000Z","key":1486629720000,"doc_count":13},{"key_as_string":"2017-02-09T08:43:00.000Z","key":1486629780000,"doc_count":14},{"key_as_string":"2017-02-09T08:44:00.000Z","key":1486629840000,"doc_count":16},{"key_as_string":"2017-02-09T08:45:00.000Z","key":1486629900000,"doc_count":14},{"key_as_string":"2017-02-09T08:46:00.000Z","key":1486629960000,"doc_count":13},{"key_as_string":"2017-02-09T08:47:00.000Z","key":1486630020000,"doc_count":15},{"key_as_string":"2017-02-09T08:48:00.000Z","key":1486630080000,"doc_count":14},{"key_as_string":"2017-02-09T08:49:00.000Z","key":1486630140000,"doc_count":16},{"key_as_string":"2017-02-09T08:50:00.000Z","key":1486630200000,"doc_count":11},{"key_as_string":"2017-02-09T08:51:00.000Z","key":1486630260000,"doc_count":15},{"key_as_string":"2017-02-09T08:52:00.000Z","key":1486630320000,"doc_count":15},{"key_as_string":"2017-02-09T08:53:00.000Z","key":1486630380000,"doc_count":12},{"key_as_string":"2017-02-09T08:54:00.000Z","key":1486630440000,"doc_count":13},{"key_as_string":"2017-02-09T08:55:00.000Z","key":1486630500000,"doc_count":11},{"key_as_string":"2017-02-09T08:56:00.000Z","key":1486630560000,"doc_count":7},{"key_as_string":"2017-02-09T08:57:00.000Z","key":1486630620000,"doc_count":14},{"key_as_string":"2017-02-09T08:58:00.000Z","key":1486630680000,"doc_count":12},{"key_as_string":"2017-02-09T08:59:00.000Z","key":1486630740000,"doc_count":8},{"key_as_string":"2017-02-09T09:00:00.000Z","key":1486630800000,"doc_count":15},{"key_as_string":"2017-02-09T09:01:00.000Z","key":1486630860000,"doc_count":13},{"key_as_string":"2017-02-09T09:02:00.000Z","key":1486630920000,"doc_count":17},{"key_as_string":"2017-02-09T09:03:00.000Z","key":1486630980000,"doc_count":10},{"key_as_string":"2017-02-09T09:04:00.000Z","key":1486631040000,"doc_count":12},{"key_as_string":"2017-02-09T09:05:00.000Z","key":1486631100000,"doc_count":12},{"key_as_string":"2017-02-09T09:06:00.000Z","key":1486631160000,"doc_count":10},{"key_as_string":"2017-02-09T09:07:00.000Z","key":1486631220000,"doc_count":13},{"key_as_string":"2017-02-09T09:08:00.000Z","key":1486631280000,"doc_count":15},{"key_as_string":"2017-02-09T09:09:00.000Z","key":1486631340000,"doc_count":10},{"key_as_string":"2017-02-09T09:10:00.000Z","key":1486631400000,"doc_count":17},{"key_as_string":"2017-02-09T09:11:00.000Z","key":1486631460000,"doc_count":14},{"key_as_string":"2017-02-09T09:12:00.000Z","key":1486631520000,"doc_count":10},{"key_as_string":"2017-02-09T09:13:00.000Z","key":1486631580000,"doc_count":15},{"key_as_string":"2017-02-09T09:14:00.000Z","key":1486631640000,"doc_count":14},{"key_as_string":"2017-02-09T09:15:00.000Z","key":1486631700000,"doc_count":16},{"key_as_string":"2017-02-09T09:16:00.000Z","key":1486631760000,"doc_count":11},{"key_as_string":"2017-02-09T09:17:00.000Z","key":1486631820000,"doc_count":16},{"key_as_string":"2017-02-09T09:18:00.000Z","key":1486631880000,"doc_count":11},{"key_as_string":"2017-02-09T09:19:00.000Z","key":1486631940000,"doc_count":11},{"key_as_string":"2017-02-09T09:20:00.000Z","key":1486632000000,"doc_count":18},{"key_as_string":"2017-02-09T09:21:00.000Z","key":1486632060000,"doc_count":10},{"key_as_string":"2017-02-09T09:22:00.000Z","key":1486632120000,"doc_count":10},{"key_as_string":"2017-02-09T09:23:00.000Z","key":1486632180000,"doc_count":14},{"key_as_string":"2017-02-09T09:24:00.000Z","key":1486632240000,"doc_count":18},{"key_as_string":"2017-02-09T09:25:00.000Z","key":1486632300000,"doc_count":12},{"key_as_string":"2017-02-09T09:26:00.000Z","key":1486632360000,"doc_count":16},{"key_as_string":"2017-02-09T09:27:00.000Z","key":1486632420000,"doc_count":15},{"key_as_string":"2017-02-09T09:28:00.000Z","key":1486632480000,"doc_count":25},{"key_as_string":"2017-02-09T09:29:00.000Z","key":1486632540000,"doc_count":13},{"key_as_string":"2017-02-09T09:30:00.000Z","key":1486632600000,"doc_count":11},{"key_as_string":"2017-02-09T09:31:00.000Z","key":1486632660000,"doc_count":12},{"key_as_string":"2017-02-09T09:32:00.000Z","key":1486632720000,"doc_count":16},{"key_as_string":"2017-02-09T09:33:00.000Z","key":1486632780000,"doc_count":10},{"key_as_string":"2017-02-09T09:34:00.000Z","key":1486632840000,"doc_count":14},{"key_as_string":"2017-02-09T09:35:00.000Z","key":1486632900000,"doc_count":14},{"key_as_string":"2017-02-09T09:36:00.000Z","key":1486632960000,"doc_count":16},{"key_as_string":"2017-02-09T09:37:00.000Z","key":1486633020000,"doc_count":19},{"key_as_string":"2017-02-09T09:38:00.000Z","key":1486633080000,"doc_count":15},{"key_as_string":"2017-02-09T09:39:00.000Z","key":1486633140000,"doc_count":13},{"key_as_string":"2017-02-09T09:40:00.000Z","key":1486633200000,"doc_count":10},{"key_as_string":"2017-02-09T09:41:00.000Z","key":1486633260000,"doc_count":16},{"key_as_string":"2017-02-09T09:42:00.000Z","key":1486633320000,"doc_count":20},{"key_as_string":"2017-02-09T09:43:00.000Z","key":1486633380000,"doc_count":7},{"key_as_string":"2017-02-09T09:44:00.000Z","key":1486633440000,"doc_count":16},{"key_as_string":"2017-02-09T09:45:00.000Z","key":1486633500000,"doc_count":10},{"key_as_string":"2017-02-09T09:46:00.000Z","key":1486633560000,"doc_count":15},{"key_as_string":"2017-02-09T09:47:00.000Z","key":1486633620000,"doc_count":10},{"key_as_string":"2017-02-09T09:48:00.000Z","key":1486633680000,"doc_count":19},{"key_as_string":"2017-02-09T09:49:00.000Z","key":1486633740000,"doc_count":11},{"key_as_string":"2017-02-09T09:50:00.000Z","key":1486633800000,"doc_count":12},{"key_as_string":"2017-02-09T09:51:00.000Z","key":1486633860000,"doc_count":13},{"key_as_string":"2017-02-09T09:52:00.000Z","key":1486633920000,"doc_count":10},{"key_as_string":"2017-02-09T09:53:00.000Z","key":1486633980000,"doc_count":15},{"key_as_string":"2017-02-09T09:54:00.000Z","key":1486634040000,"doc_count":11},{"key_as_string":"2017-02-09T09:55:00.000Z","key":1486634100000,"doc_count":15},{"key_as_string":"2017-02-09T09:56:00.000Z","key":1486634160000,"doc_count":14},{"key_as_string":"2017-02-09T09:57:00.000Z","key":1486634220000,"doc_count":11},{"key_as_string":"2017-02-09T09:58:00.000Z","key":1486634280000,"doc_count":9},{"key_as_string":"2017-02-09T09:59:00.000Z","key":1486634340000,"doc_count":18},{"key_as_string":"2017-02-09T10:00:00.000Z","key":1486634400000,"doc_count":13},{"key_as_string":"2017-02-09T10:01:00.000Z","key":1486634460000,"doc_count":13},{"key_as_string":"2017-02-09T10:02:00.000Z","key":1486634520000,"doc_count":11},{"key_as_string":"2017-02-09T10:03:00.000Z","key":1486634580000,"doc_count":15},{"key_as_string":"2017-02-09T10:04:00.000Z","key":1486634640000,"doc_count":11},{"key_as_string":"2017-02-09T10:05:00.000Z","key":1486634700000,"doc_count":16},{"key_as_string":"2017-02-09T10:06:00.000Z","key":1486634760000,"doc_count":15},{"key_as_string":"2017-02-09T10:07:00.000Z","key":1486634820000,"doc_count":9},{"key_as_string":"2017-02-09T10:08:00.000Z","key":1486634880000,"doc_count":14},{"key_as_string":"2017-02-09T10:09:00.000Z","key":1486634940000,"doc_count":16},{"key_as_string":"2017-02-09T10:10:00.000Z","key":1486635000000,"doc_count":16},{"key_as_string":"2017-02-09T10:11:00.000Z","key":1486635060000,"doc_count":13},{"key_as_string":"2017-02-09T10:12:00.000Z","key":1486635120000,"doc_count":16},{"key_as_string":"2017-02-09T10:13:00.000Z","key":1486635180000,"doc_count":12},{"key_as_string":"2017-02-09T10:14:00.000Z","key":1486635240000,"doc_count":12},{"key_as_string":"2017-02-09T10:15:00.000Z","key":1486635300000,"doc_count":14},{"key_as_string":"2017-02-09T10:16:00.000Z","key":1486635360000,"doc_count":12},{"key_as_string":"2017-02-09T10:17:00.000Z","key":1486635420000,"doc_count":18},{"key_as_string":"2017-02-09T10:18:00.000Z","key":1486635480000,"doc_count":19},{"key_as_string":"2017-02-09T10:19:00.000Z","key":1486635540000,"doc_count":8},{"key_as_string":"2017-02-09T10:20:00.000Z","key":1486635600000,"doc_count":12},{"key_as_string":"2017-02-09T10:21:00.000Z","key":1486635660000,"doc_count":13},{"key_as_string":"2017-02-09T10:22:00.000Z","key":1486635720000,"doc_count":16},{"key_as_string":"2017-02-09T10:23:00.000Z","key":1486635780000,"doc_count":13},{"key_as_string":"2017-02-09T10:24:00.000Z","key":1486635840000,"doc_count":9},{"key_as_string":"2017-02-09T10:25:00.000Z","key":1486635900000,"doc_count":17},{"key_as_string":"2017-02-09T10:26:00.000Z","key":1486635960000,"doc_count":16},{"key_as_string":"2017-02-09T10:27:00.000Z","key":1486636020000,"doc_count":14},{"key_as_string":"2017-02-09T10:28:00.000Z","key":1486636080000,"doc_count":11},{"key_as_string":"2017-02-09T10:29:00.000Z","key":1486636140000,"doc_count":12},{"key_as_string":"2017-02-09T10:30:00.000Z","key":1486636200000,"doc_count":19},{"key_as_string":"2017-02-09T10:31:00.000Z","key":1486636260000,"doc_count":16},{"key_as_string":"2017-02-09T10:32:00.000Z","key":1486636320000,"doc_count":12},{"key_as_string":"2017-02-09T10:33:00.000Z","key":1486636380000,"doc_count":14},{"key_as_string":"2017-02-09T10:34:00.000Z","key":1486636440000,"doc_count":11},{"key_as_string":"2017-02-09T10:35:00.000Z","key":1486636500000,"doc_count":15},{"key_as_string":"2017-02-09T10:36:00.000Z","key":1486636560000,"doc_count":18},{"key_as_string":"2017-02-09T10:37:00.000Z","key":1486636620000,"doc_count":15},{"key_as_string":"2017-02-09T10:38:00.000Z","key":1486636680000,"doc_count":12},{"key_as_string":"2017-02-09T10:39:00.000Z","key":1486636740000,"doc_count":14},{"key_as_string":"2017-02-09T10:40:00.000Z","key":1486636800000,"doc_count":14},{"key_as_string":"2017-02-09T10:41:00.000Z","key":1486636860000,"doc_count":17},{"key_as_string":"2017-02-09T10:42:00.000Z","key":1486636920000,"doc_count":13},{"key_as_string":"2017-02-09T10:43:00.000Z","key":1486636980000,"doc_count":9},{"key_as_string":"2017-02-09T10:44:00.000Z","key":1486637040000,"doc_count":11},{"key_as_string":"2017-02-09T10:45:00.000Z","key":1486637100000,"doc_count":14},{"key_as_string":"2017-02-09T10:46:00.000Z","key":1486637160000,"doc_count":15},{"key_as_string":"2017-02-09T10:47:00.000Z","key":1486637220000,"doc_count":14},{"key_as_string":"2017-02-09T10:48:00.000Z","key":1486637280000,"doc_count":13},{"key_as_string":"2017-02-09T10:49:00.000Z","key":1486637340000,"doc_count":16},{"key_as_string":"2017-02-09T10:50:00.000Z","key":1486637400000,"doc_count":11},{"key_as_string":"2017-02-09T10:51:00.000Z","key":1486637460000,"doc_count":15},{"key_as_string":"2017-02-09T10:52:00.000Z","key":1486637520000,"doc_count":16},{"key_as_string":"2017-02-09T10:53:00.000Z","key":1486637580000,"doc_count":14},{"key_as_string":"2017-02-09T10:54:00.000Z","key":1486637640000,"doc_count":13},{"key_as_string":"2017-02-09T10:55:00.000Z","key":1486637700000,"doc_count":12},{"key_as_string":"2017-02-09T10:56:00.000Z","key":1486637760000,"doc_count":14},{"key_as_string":"2017-02-09T10:57:00.000Z","key":1486637820000,"doc_count":14},{"key_as_string":"2017-02-09T10:58:00.000Z","key":1486637880000,"doc_count":15},{"key_as_string":"2017-02-09T10:59:00.000Z","key":1486637940000,"doc_count":11},{"key_as_string":"2017-02-09T11:00:00.000Z","key":1486638000000,"doc_count":14},{"key_as_string":"2017-02-09T11:01:00.000Z","key":1486638060000,"doc_count":12},{"key_as_string":"2017-02-09T11:02:00.000Z","key":1486638120000,"doc_count":17},{"key_as_string":"2017-02-09T11:03:00.000Z","key":1486638180000,"doc_count":10},{"key_as_string":"2017-02-09T11:04:00.000Z","key":1486638240000,"doc_count":14},{"key_as_string":"2017-02-09T11:05:00.000Z","key":1486638300000,"doc_count":13},{"key_as_string":"2017-02-09T11:06:00.000Z","key":1486638360000,"doc_count":11},{"key_as_string":"2017-02-09T11:07:00.000Z","key":1486638420000,"doc_count":14},{"key_as_string":"2017-02-09T11:08:00.000Z","key":1486638480000,"doc_count":8},{"key_as_string":"2017-02-09T11:09:00.000Z","key":1486638540000,"doc_count":20},{"key_as_string":"2017-02-09T11:10:00.000Z","key":1486638600000,"doc_count":15},{"key_as_string":"2017-02-09T11:11:00.000Z","key":1486638660000,"doc_count":17},{"key_as_string":"2017-02-09T11:12:00.000Z","key":1486638720000,"doc_count":14},{"key_as_string":"2017-02-09T11:13:00.000Z","key":1486638780000,"doc_count":12},{"key_as_string":"2017-02-09T11:14:00.000Z","key":1486638840000,"doc_count":12},{"key_as_string":"2017-02-09T11:15:00.000Z","key":1486638900000,"doc_count":18},{"key_as_string":"2017-02-09T11:16:00.000Z","key":1486638960000,"doc_count":17},{"key_as_string":"2017-02-09T11:17:00.000Z","key":1486639020000,"doc_count":16},{"key_as_string":"2017-02-09T11:18:00.000Z","key":1486639080000,"doc_count":11},{"key_as_string":"2017-02-09T11:19:00.000Z","key":1486639140000,"doc_count":14},{"key_as_string":"2017-02-09T11:20:00.000Z","key":1486639200000,"doc_count":17},{"key_as_string":"2017-02-09T11:21:00.000Z","key":1486639260000,"doc_count":16},{"key_as_string":"2017-02-09T11:22:00.000Z","key":1486639320000,"doc_count":13},{"key_as_string":"2017-02-09T11:23:00.000Z","key":1486639380000,"doc_count":15},{"key_as_string":"2017-02-09T11:24:00.000Z","key":1486639440000,"doc_count":11},{"key_as_string":"2017-02-09T11:25:00.000Z","key":1486639500000,"doc_count":12},{"key_as_string":"2017-02-09T11:26:00.000Z","key":1486639560000,"doc_count":20},{"key_as_string":"2017-02-09T11:27:00.000Z","key":1486639620000,"doc_count":13},{"key_as_string":"2017-02-09T11:28:00.000Z","key":1486639680000,"doc_count":15},{"key_as_string":"2017-02-09T11:29:00.000Z","key":1486639740000,"doc_count":19},{"key_as_string":"2017-02-09T11:30:00.000Z","key":1486639800000,"doc_count":12},{"key_as_string":"2017-02-09T11:31:00.000Z","key":1486639860000,"doc_count":12},{"key_as_string":"2017-02-09T11:32:00.000Z","key":1486639920000,"doc_count":13},{"key_as_string":"2017-02-09T11:33:00.000Z","key":1486639980000,"doc_count":15},{"key_as_string":"2017-02-09T11:34:00.000Z","key":1486640040000,"doc_count":14},{"key_as_string":"2017-02-09T11:35:00.000Z","key":1486640100000,"doc_count":16},{"key_as_string":"2017-02-09T11:36:00.000Z","key":1486640160000,"doc_count":18},{"key_as_string":"2017-02-09T11:37:00.000Z","key":1486640220000,"doc_count":13},{"key_as_string":"2017-02-09T11:38:00.000Z","key":1486640280000,"doc_count":11},{"key_as_string":"2017-02-09T11:39:00.000Z","key":1486640340000,"doc_count":18},{"key_as_string":"2017-02-09T11:40:00.000Z","key":1486640400000,"doc_count":10},{"key_as_string":"2017-02-09T11:41:00.000Z","key":1486640460000,"doc_count":16},{"key_as_string":"2017-02-09T11:42:00.000Z","key":1486640520000,"doc_count":16},{"key_as_string":"2017-02-09T11:43:00.000Z","key":1486640580000,"doc_count":10},{"key_as_string":"2017-02-09T11:44:00.000Z","key":1486640640000,"doc_count":8},{"key_as_string":"2017-02-09T11:45:00.000Z","key":1486640700000,"doc_count":17},{"key_as_string":"2017-02-09T11:46:00.000Z","key":1486640760000,"doc_count":15},{"key_as_string":"2017-02-09T11:47:00.000Z","key":1486640820000,"doc_count":11},{"key_as_string":"2017-02-09T11:48:00.000Z","key":1486640880000,"doc_count":14},{"key_as_string":"2017-02-09T11:49:00.000Z","key":1486640940000,"doc_count":16},{"key_as_string":"2017-02-09T11:50:00.000Z","key":1486641000000,"doc_count":15},{"key_as_string":"2017-02-09T11:51:00.000Z","key":1486641060000,"doc_count":16},{"key_as_string":"2017-02-09T11:52:00.000Z","key":1486641120000,"doc_count":19},{"key_as_string":"2017-02-09T11:53:00.000Z","key":1486641180000,"doc_count":14},{"key_as_string":"2017-02-09T11:54:00.000Z","key":1486641240000,"doc_count":11},{"key_as_string":"2017-02-09T11:55:00.000Z","key":1486641300000,"doc_count":7},{"key_as_string":"2017-02-09T11:56:00.000Z","key":1486641360000,"doc_count":15},{"key_as_string":"2017-02-09T11:57:00.000Z","key":1486641420000,"doc_count":10},{"key_as_string":"2017-02-09T11:58:00.000Z","key":1486641480000,"doc_count":11},{"key_as_string":"2017-02-09T11:59:00.000Z","key":1486641540000,"doc_count":16},{"key_as_string":"2017-02-09T12:00:00.000Z","key":1486641600000,"doc_count":18},{"key_as_string":"2017-02-09T12:01:00.000Z","key":1486641660000,"doc_count":11},{"key_as_string":"2017-02-09T12:02:00.000Z","key":1486641720000,"doc_count":16},{"key_as_string":"2017-02-09T12:03:00.000Z","key":1486641780000,"doc_count":12},{"key_as_string":"2017-02-09T12:04:00.000Z","key":1486641840000,"doc_count":14},{"key_as_string":"2017-02-09T12:05:00.000Z","key":1486641900000,"doc_count":13},{"key_as_string":"2017-02-09T12:06:00.000Z","key":1486641960000,"doc_count":11},{"key_as_string":"2017-02-09T12:07:00.000Z","key":1486642020000,"doc_count":19},{"key_as_string":"2017-02-09T12:08:00.000Z","key":1486642080000,"doc_count":19},{"key_as_string":"2017-02-09T12:09:00.000Z","key":1486642140000,"doc_count":9},{"key_as_string":"2017-02-09T12:10:00.000Z","key":1486642200000,"doc_count":16},{"key_as_string":"2017-02-09T12:11:00.000Z","key":1486642260000,"doc_count":14},{"key_as_string":"2017-02-09T12:12:00.000Z","key":1486642320000,"doc_count":12},{"key_as_string":"2017-02-09T12:13:00.000Z","key":1486642380000,"doc_count":19},{"key_as_string":"2017-02-09T12:14:00.000Z","key":1486642440000,"doc_count":16},{"key_as_string":"2017-02-09T12:15:00.000Z","key":1486642500000,"doc_count":15},{"key_as_string":"2017-02-09T12:16:00.000Z","key":1486642560000,"doc_count":13},{"key_as_string":"2017-02-09T12:17:00.000Z","key":1486642620000,"doc_count":10},{"key_as_string":"2017-02-09T12:18:00.000Z","key":1486642680000,"doc_count":13},{"key_as_string":"2017-02-09T12:19:00.000Z","key":1486642740000,"doc_count":13},{"key_as_string":"2017-02-09T12:20:00.000Z","key":1486642800000,"doc_count":11},{"key_as_string":"2017-02-09T12:21:00.000Z","key":1486642860000,"doc_count":19},{"key_as_string":"2017-02-09T12:22:00.000Z","key":1486642920000,"doc_count":13},{"key_as_string":"2017-02-09T12:23:00.000Z","key":1486642980000,"doc_count":17},{"key_as_string":"2017-02-09T12:24:00.000Z","key":1486643040000,"doc_count":10},{"key_as_string":"2017-02-09T12:25:00.000Z","key":1486643100000,"doc_count":12},{"key_as_string":"2017-02-09T12:26:00.000Z","key":1486643160000,"doc_count":13},{"key_as_string":"2017-02-09T12:27:00.000Z","key":1486643220000,"doc_count":12},{"key_as_string":"2017-02-09T12:28:00.000Z","key":1486643280000,"doc_count":16},{"key_as_string":"2017-02-09T12:29:00.000Z","key":1486643340000,"doc_count":15},{"key_as_string":"2017-02-09T12:30:00.000Z","key":1486643400000,"doc_count":14},{"key_as_string":"2017-02-09T12:31:00.000Z","key":1486643460000,"doc_count":18},{"key_as_string":"2017-02-09T12:32:00.000Z","key":1486643520000,"doc_count":10},{"key_as_string":"2017-02-09T12:33:00.000Z","key":1486643580000,"doc_count":13},{"key_as_string":"2017-02-09T12:34:00.000Z","key":1486643640000,"doc_count":9},{"key_as_string":"2017-02-09T12:35:00.000Z","key":1486643700000,"doc_count":16},{"key_as_string":"2017-02-09T12:36:00.000Z","key":1486643760000,"doc_count":12},{"key_as_string":"2017-02-09T12:37:00.000Z","key":1486643820000,"doc_count":13},{"key_as_string":"2017-02-09T12:38:00.000Z","key":1486643880000,"doc_count":16},{"key_as_string":"2017-02-09T12:39:00.000Z","key":1486643940000,"doc_count":9},{"key_as_string":"2017-02-09T12:40:00.000Z","key":1486644000000,"doc_count":12},{"key_as_string":"2017-02-09T12:41:00.000Z","key":1486644060000,"doc_count":11},{"key_as_string":"2017-02-09T12:42:00.000Z","key":1486644120000,"doc_count":16},{"key_as_string":"2017-02-09T12:43:00.000Z","key":1486644180000,"doc_count":13},{"key_as_string":"2017-02-09T12:44:00.000Z","key":1486644240000,"doc_count":15},{"key_as_string":"2017-02-09T12:45:00.000Z","key":1486644300000,"doc_count":13},{"key_as_string":"2017-02-09T12:46:00.000Z","key":1486644360000,"doc_count":15},{"key_as_string":"2017-02-09T12:47:00.000Z","key":1486644420000,"doc_count":13},{"key_as_string":"2017-02-09T12:48:00.000Z","key":1486644480000,"doc_count":9},{"key_as_string":"2017-02-09T12:49:00.000Z","key":1486644540000,"doc_count":18},{"key_as_string":"2017-02-09T12:50:00.000Z","key":1486644600000,"doc_count":13},{"key_as_string":"2017-02-09T12:51:00.000Z","key":1486644660000,"doc_count":13},{"key_as_string":"2017-02-09T12:52:00.000Z","key":1486644720000,"doc_count":13},{"key_as_string":"2017-02-09T12:53:00.000Z","key":1486644780000,"doc_count":11},{"key_as_string":"2017-02-09T12:54:00.000Z","key":1486644840000,"doc_count":19},{"key_as_string":"2017-02-09T12:55:00.000Z","key":1486644900000,"doc_count":12},{"key_as_string":"2017-02-09T12:56:00.000Z","key":1486644960000,"doc_count":15},{"key_as_string":"2017-02-09T12:57:00.000Z","key":1486645020000,"doc_count":14},{"key_as_string":"2017-02-09T12:58:00.000Z","key":1486645080000,"doc_count":17},{"key_as_string":"2017-02-09T12:59:00.000Z","key":1486645140000,"doc_count":12},{"key_as_string":"2017-02-09T13:00:00.000Z","key":1486645200000,"doc_count":17},{"key_as_string":"2017-02-09T13:01:00.000Z","key":1486645260000,"doc_count":13},{"key_as_string":"2017-02-09T13:02:00.000Z","key":1486645320000,"doc_count":12},{"key_as_string":"2017-02-09T13:03:00.000Z","key":1486645380000,"doc_count":11},{"key_as_string":"2017-02-09T13:04:00.000Z","key":1486645440000,"doc_count":14},{"key_as_string":"2017-02-09T13:05:00.000Z","key":1486645500000,"doc_count":18},{"key_as_string":"2017-02-09T13:06:00.000Z","key":1486645560000,"doc_count":10},{"key_as_string":"2017-02-09T13:07:00.000Z","key":1486645620000,"doc_count":14},{"key_as_string":"2017-02-09T13:08:00.000Z","key":1486645680000,"doc_count":15},{"key_as_string":"2017-02-09T13:09:00.000Z","key":1486645740000,"doc_count":11},{"key_as_string":"2017-02-09T13:10:00.000Z","key":1486645800000,"doc_count":15},{"key_as_string":"2017-02-09T13:11:00.000Z","key":1486645860000,"doc_count":14},{"key_as_string":"2017-02-09T13:12:00.000Z","key":1486645920000,"doc_count":9},{"key_as_string":"2017-02-09T13:13:00.000Z","key":1486645980000,"doc_count":16},{"key_as_string":"2017-02-09T13:14:00.000Z","key":1486646040000,"doc_count":16},{"key_as_string":"2017-02-09T13:15:00.000Z","key":1486646100000,"doc_count":13},{"key_as_string":"2017-02-09T13:16:00.000Z","key":1486646160000,"doc_count":9},{"key_as_string":"2017-02-09T13:17:00.000Z","key":1486646220000,"doc_count":11},{"key_as_string":"2017-02-09T13:18:00.000Z","key":1486646280000,"doc_count":14},{"key_as_string":"2017-02-09T13:19:00.000Z","key":1486646340000,"doc_count":15},{"key_as_string":"2017-02-09T13:20:00.000Z","key":1486646400000,"doc_count":16},{"key_as_string":"2017-02-09T13:21:00.000Z","key":1486646460000,"doc_count":9},{"key_as_string":"2017-02-09T13:22:00.000Z","key":1486646520000,"doc_count":16},{"key_as_string":"2017-02-09T13:23:00.000Z","key":1486646580000,"doc_count":13},{"key_as_string":"2017-02-09T13:24:00.000Z","key":1486646640000,"doc_count":11},{"key_as_string":"2017-02-09T13:25:00.000Z","key":1486646700000,"doc_count":13},{"key_as_string":"2017-02-09T13:26:00.000Z","key":1486646760000,"doc_count":10},{"key_as_string":"2017-02-09T13:27:00.000Z","key":1486646820000,"doc_count":18},{"key_as_string":"2017-02-09T13:28:00.000Z","key":1486646880000,"doc_count":13},{"key_as_string":"2017-02-09T13:29:00.000Z","key":1486646940000,"doc_count":13},{"key_as_string":"2017-02-09T13:30:00.000Z","key":1486647000000,"doc_count":18},{"key_as_string":"2017-02-09T13:31:00.000Z","key":1486647060000,"doc_count":10},{"key_as_string":"2017-02-09T13:32:00.000Z","key":1486647120000,"doc_count":15},{"key_as_string":"2017-02-09T13:33:00.000Z","key":1486647180000,"doc_count":15},{"key_as_string":"2017-02-09T13:34:00.000Z","key":1486647240000,"doc_count":18},{"key_as_string":"2017-02-09T13:35:00.000Z","key":1486647300000,"doc_count":15},{"key_as_string":"2017-02-09T13:36:00.000Z","key":1486647360000,"doc_count":20},{"key_as_string":"2017-02-09T13:37:00.000Z","key":1486647420000,"doc_count":13},{"key_as_string":"2017-02-09T13:38:00.000Z","key":1486647480000,"doc_count":15},{"key_as_string":"2017-02-09T13:39:00.000Z","key":1486647540000,"doc_count":15},{"key_as_string":"2017-02-09T13:40:00.000Z","key":1486647600000,"doc_count":16},{"key_as_string":"2017-02-09T13:41:00.000Z","key":1486647660000,"doc_count":7},{"key_as_string":"2017-02-09T13:42:00.000Z","key":1486647720000,"doc_count":17},{"key_as_string":"2017-02-09T13:43:00.000Z","key":1486647780000,"doc_count":12},{"key_as_string":"2017-02-09T13:44:00.000Z","key":1486647840000,"doc_count":15},{"key_as_string":"2017-02-09T13:45:00.000Z","key":1486647900000,"doc_count":16},{"key_as_string":"2017-02-09T13:46:00.000Z","key":1486647960000,"doc_count":14},{"key_as_string":"2017-02-09T13:47:00.000Z","key":1486648020000,"doc_count":18},{"key_as_string":"2017-02-09T13:48:00.000Z","key":1486648080000,"doc_count":17},{"key_as_string":"2017-02-09T13:49:00.000Z","key":1486648140000,"doc_count":16},{"key_as_string":"2017-02-09T13:50:00.000Z","key":1486648200000,"doc_count":9},{"key_as_string":"2017-02-09T13:51:00.000Z","key":1486648260000,"doc_count":14},{"key_as_string":"2017-02-09T13:52:00.000Z","key":1486648320000,"doc_count":14},{"key_as_string":"2017-02-09T13:53:00.000Z","key":1486648380000,"doc_count":20},{"key_as_string":"2017-02-09T13:54:00.000Z","key":1486648440000,"doc_count":9},{"key_as_string":"2017-02-09T13:55:00.000Z","key":1486648500000,"doc_count":12},{"key_as_string":"2017-02-09T13:56:00.000Z","key":1486648560000,"doc_count":15},{"key_as_string":"2017-02-09T13:57:00.000Z","key":1486648620000,"doc_count":11},{"key_as_string":"2017-02-09T13:58:00.000Z","key":1486648680000,"doc_count":15},{"key_as_string":"2017-02-09T13:59:00.000Z","key":1486648740000,"doc_count":13},{"key_as_string":"2017-02-09T14:00:00.000Z","key":1486648800000,"doc_count":10},{"key_as_string":"2017-02-09T14:01:00.000Z","key":1486648860000,"doc_count":14},{"key_as_string":"2017-02-09T14:02:00.000Z","key":1486648920000,"doc_count":14},{"key_as_string":"2017-02-09T14:03:00.000Z","key":1486648980000,"doc_count":16},{"key_as_string":"2017-02-09T14:04:00.000Z","key":1486649040000,"doc_count":12},{"key_as_string":"2017-02-09T14:05:00.000Z","key":1486649100000,"doc_count":9},{"key_as_string":"2017-02-09T14:06:00.000Z","key":1486649160000,"doc_count":11},{"key_as_string":"2017-02-09T14:07:00.000Z","key":1486649220000,"doc_count":15},{"key_as_string":"2017-02-09T14:08:00.000Z","key":1486649280000,"doc_count":12},{"key_as_string":"2017-02-09T14:09:00.000Z","key":1486649340000,"doc_count":19},{"key_as_string":"2017-02-09T14:10:00.000Z","key":1486649400000,"doc_count":14},{"key_as_string":"2017-02-09T14:11:00.000Z","key":1486649460000,"doc_count":17},{"key_as_string":"2017-02-09T14:12:00.000Z","key":1486649520000,"doc_count":7},{"key_as_string":"2017-02-09T14:13:00.000Z","key":1486649580000,"doc_count":20},{"key_as_string":"2017-02-09T14:14:00.000Z","key":1486649640000,"doc_count":9},{"key_as_string":"2017-02-09T14:15:00.000Z","key":1486649700000,"doc_count":17},{"key_as_string":"2017-02-09T14:16:00.000Z","key":1486649760000,"doc_count":16},{"key_as_string":"2017-02-09T14:17:00.000Z","key":1486649820000,"doc_count":15},{"key_as_string":"2017-02-09T14:18:00.000Z","key":1486649880000,"doc_count":15},{"key_as_string":"2017-02-09T14:19:00.000Z","key":1486649940000,"doc_count":12},{"key_as_string":"2017-02-09T14:20:00.000Z","key":1486650000000,"doc_count":8},{"key_as_string":"2017-02-09T14:21:00.000Z","key":1486650060000,"doc_count":17},{"key_as_string":"2017-02-09T14:22:00.000Z","key":1486650120000,"doc_count":10},{"key_as_string":"2017-02-09T14:23:00.000Z","key":1486650180000,"doc_count":11},{"key_as_string":"2017-02-09T14:24:00.000Z","key":1486650240000,"doc_count":11},{"key_as_string":"2017-02-09T14:25:00.000Z","key":1486650300000,"doc_count":14},{"key_as_string":"2017-02-09T14:26:00.000Z","key":1486650360000,"doc_count":16},{"key_as_string":"2017-02-09T14:27:00.000Z","key":1486650420000,"doc_count":12},{"key_as_string":"2017-02-09T14:28:00.000Z","key":1486650480000,"doc_count":14},{"key_as_string":"2017-02-09T14:29:00.000Z","key":1486650540000,"doc_count":11},{"key_as_string":"2017-02-09T14:30:00.000Z","key":1486650600000,"doc_count":13},{"key_as_string":"2017-02-09T14:31:00.000Z","key":1486650660000,"doc_count":13},{"key_as_string":"2017-02-09T14:32:00.000Z","key":1486650720000,"doc_count":19},{"key_as_string":"2017-02-09T14:33:00.000Z","key":1486650780000,"doc_count":13},{"key_as_string":"2017-02-09T14:34:00.000Z","key":1486650840000,"doc_count":15},{"key_as_string":"2017-02-09T14:35:00.000Z","key":1486650900000,"doc_count":11},{"key_as_string":"2017-02-09T14:36:00.000Z","key":1486650960000,"doc_count":15},{"key_as_string":"2017-02-09T14:37:00.000Z","key":1486651020000,"doc_count":12},{"key_as_string":"2017-02-09T14:38:00.000Z","key":1486651080000,"doc_count":11},{"key_as_string":"2017-02-09T14:39:00.000Z","key":1486651140000,"doc_count":18},{"key_as_string":"2017-02-09T14:40:00.000Z","key":1486651200000,"doc_count":9},{"key_as_string":"2017-02-09T14:41:00.000Z","key":1486651260000,"doc_count":15},{"key_as_string":"2017-02-09T14:42:00.000Z","key":1486651320000,"doc_count":12},{"key_as_string":"2017-02-09T14:43:00.000Z","key":1486651380000,"doc_count":15},{"key_as_string":"2017-02-09T14:44:00.000Z","key":1486651440000,"doc_count":12},{"key_as_string":"2017-02-09T14:45:00.000Z","key":1486651500000,"doc_count":13},{"key_as_string":"2017-02-09T14:46:00.000Z","key":1486651560000,"doc_count":12},{"key_as_string":"2017-02-09T14:47:00.000Z","key":1486651620000,"doc_count":14},{"key_as_string":"2017-02-09T14:48:00.000Z","key":1486651680000,"doc_count":13},{"key_as_string":"2017-02-09T14:49:00.000Z","key":1486651740000,"doc_count":17},{"key_as_string":"2017-02-09T14:50:00.000Z","key":1486651800000,"doc_count":9},{"key_as_string":"2017-02-09T14:51:00.000Z","key":1486651860000,"doc_count":12},{"key_as_string":"2017-02-09T14:52:00.000Z","key":1486651920000,"doc_count":16},{"key_as_string":"2017-02-09T14:53:00.000Z","key":1486651980000,"doc_count":19},{"key_as_string":"2017-02-09T14:54:00.000Z","key":1486652040000,"doc_count":15},{"key_as_string":"2017-02-09T14:55:00.000Z","key":1486652100000,"doc_count":11},{"key_as_string":"2017-02-09T14:56:00.000Z","key":1486652160000,"doc_count":15},{"key_as_string":"2017-02-09T14:57:00.000Z","key":1486652220000,"doc_count":11},{"key_as_string":"2017-02-09T14:58:00.000Z","key":1486652280000,"doc_count":12},{"key_as_string":"2017-02-09T14:59:00.000Z","key":1486652340000,"doc_count":11},{"key_as_string":"2017-02-09T15:00:00.000Z","key":1486652400000,"doc_count":13},{"key_as_string":"2017-02-09T15:01:00.000Z","key":1486652460000,"doc_count":10},{"key_as_string":"2017-02-09T15:02:00.000Z","key":1486652520000,"doc_count":17},{"key_as_string":"2017-02-09T15:03:00.000Z","key":1486652580000,"doc_count":12},{"key_as_string":"2017-02-09T15:04:00.000Z","key":1486652640000,"doc_count":13},{"key_as_string":"2017-02-09T15:05:00.000Z","key":1486652700000,"doc_count":13},{"key_as_string":"2017-02-09T15:06:00.000Z","key":1486652760000,"doc_count":15},{"key_as_string":"2017-02-09T15:07:00.000Z","key":1486652820000,"doc_count":12},{"key_as_string":"2017-02-09T15:08:00.000Z","key":1486652880000,"doc_count":12},{"key_as_string":"2017-02-09T15:09:00.000Z","key":1486652940000,"doc_count":13},{"key_as_string":"2017-02-09T15:10:00.000Z","key":1486653000000,"doc_count":15},{"key_as_string":"2017-02-09T15:11:00.000Z","key":1486653060000,"doc_count":20},{"key_as_string":"2017-02-09T15:12:00.000Z","key":1486653120000,"doc_count":10},{"key_as_string":"2017-02-09T15:13:00.000Z","key":1486653180000,"doc_count":12},{"key_as_string":"2017-02-09T15:14:00.000Z","key":1486653240000,"doc_count":8},{"key_as_string":"2017-02-09T15:15:00.000Z","key":1486653300000,"doc_count":18},{"key_as_string":"2017-02-09T15:16:00.000Z","key":1486653360000,"doc_count":16},{"key_as_string":"2017-02-09T15:17:00.000Z","key":1486653420000,"doc_count":13},{"key_as_string":"2017-02-09T15:18:00.000Z","key":1486653480000,"doc_count":14},{"key_as_string":"2017-02-09T15:19:00.000Z","key":1486653540000,"doc_count":14},{"key_as_string":"2017-02-09T15:20:00.000Z","key":1486653600000,"doc_count":14},{"key_as_string":"2017-02-09T15:21:00.000Z","key":1486653660000,"doc_count":11},{"key_as_string":"2017-02-09T15:22:00.000Z","key":1486653720000,"doc_count":13},{"key_as_string":"2017-02-09T15:23:00.000Z","key":1486653780000,"doc_count":11},{"key_as_string":"2017-02-09T15:24:00.000Z","key":1486653840000,"doc_count":14},{"key_as_string":"2017-02-09T15:25:00.000Z","key":1486653900000,"doc_count":15},{"key_as_string":"2017-02-09T15:26:00.000Z","key":1486653960000,"doc_count":12},{"key_as_string":"2017-02-09T15:27:00.000Z","key":1486654020000,"doc_count":9},{"key_as_string":"2017-02-09T15:28:00.000Z","key":1486654080000,"doc_count":17},{"key_as_string":"2017-02-09T15:29:00.000Z","key":1486654140000,"doc_count":10},{"key_as_string":"2017-02-09T15:30:00.000Z","key":1486654200000,"doc_count":15},{"key_as_string":"2017-02-09T15:31:00.000Z","key":1486654260000,"doc_count":13},{"key_as_string":"2017-02-09T15:32:00.000Z","key":1486654320000,"doc_count":10},{"key_as_string":"2017-02-09T15:33:00.000Z","key":1486654380000,"doc_count":19},{"key_as_string":"2017-02-09T15:34:00.000Z","key":1486654440000,"doc_count":13},{"key_as_string":"2017-02-09T15:35:00.000Z","key":1486654500000,"doc_count":13},{"key_as_string":"2017-02-09T15:36:00.000Z","key":1486654560000,"doc_count":11},{"key_as_string":"2017-02-09T15:37:00.000Z","key":1486654620000,"doc_count":10},{"key_as_string":"2017-02-09T15:38:00.000Z","key":1486654680000,"doc_count":14},{"key_as_string":"2017-02-09T15:39:00.000Z","key":1486654740000,"doc_count":19},{"key_as_string":"2017-02-09T15:40:00.000Z","key":1486654800000,"doc_count":14},{"key_as_string":"2017-02-09T15:41:00.000Z","key":1486654860000,"doc_count":14},{"key_as_string":"2017-02-09T15:42:00.000Z","key":1486654920000,"doc_count":11},{"key_as_string":"2017-02-09T15:43:00.000Z","key":1486654980000,"doc_count":12},{"key_as_string":"2017-02-09T15:44:00.000Z","key":1486655040000,"doc_count":10},{"key_as_string":"2017-02-09T15:45:00.000Z","key":1486655100000,"doc_count":14},{"key_as_string":"2017-02-09T15:46:00.000Z","key":1486655160000,"doc_count":13},{"key_as_string":"2017-02-09T15:47:00.000Z","key":1486655220000,"doc_count":10},{"key_as_string":"2017-02-09T15:48:00.000Z","key":1486655280000,"doc_count":12},{"key_as_string":"2017-02-09T15:49:00.000Z","key":1486655340000,"doc_count":18},{"key_as_string":"2017-02-09T15:50:00.000Z","key":1486655400000,"doc_count":18},{"key_as_string":"2017-02-09T15:51:00.000Z","key":1486655460000,"doc_count":12},{"key_as_string":"2017-02-09T15:52:00.000Z","key":1486655520000,"doc_count":12},{"key_as_string":"2017-02-09T15:53:00.000Z","key":1486655580000,"doc_count":18},{"key_as_string":"2017-02-09T15:54:00.000Z","key":1486655640000,"doc_count":9},{"key_as_string":"2017-02-09T15:55:00.000Z","key":1486655700000,"doc_count":11},{"key_as_string":"2017-02-09T15:56:00.000Z","key":1486655760000,"doc_count":14},{"key_as_string":"2017-02-09T15:57:00.000Z","key":1486655820000,"doc_count":14},{"key_as_string":"2017-02-09T15:58:00.000Z","key":1486655880000,"doc_count":15},{"key_as_string":"2017-02-09T15:59:00.000Z","key":1486655940000,"doc_count":13},{"key_as_string":"2017-02-09T16:00:00.000Z","key":1486656000000,"doc_count":13},{"key_as_string":"2017-02-09T16:01:00.000Z","key":1486656060000,"doc_count":11},{"key_as_string":"2017-02-09T16:02:00.000Z","key":1486656120000,"doc_count":10},{"key_as_string":"2017-02-09T16:03:00.000Z","key":1486656180000,"doc_count":18},{"key_as_string":"2017-02-09T16:04:00.000Z","key":1486656240000,"doc_count":6},{"key_as_string":"2017-02-09T16:05:00.000Z","key":1486656300000,"doc_count":14},{"key_as_string":"2017-02-09T16:06:00.000Z","key":1486656360000,"doc_count":16},{"key_as_string":"2017-02-09T16:07:00.000Z","key":1486656420000,"doc_count":12},{"key_as_string":"2017-02-09T16:08:00.000Z","key":1486656480000,"doc_count":15},{"key_as_string":"2017-02-09T16:09:00.000Z","key":1486656540000,"doc_count":13},{"key_as_string":"2017-02-09T16:10:00.000Z","key":1486656600000,"doc_count":13},{"key_as_string":"2017-02-09T16:11:00.000Z","key":1486656660000,"doc_count":7},{"key_as_string":"2017-02-09T16:12:00.000Z","key":1486656720000,"doc_count":16},{"key_as_string":"2017-02-09T16:13:00.000Z","key":1486656780000,"doc_count":10},{"key_as_string":"2017-02-09T16:14:00.000Z","key":1486656840000,"doc_count":52},{"key_as_string":"2017-02-09T16:15:00.000Z","key":1486656900000,"doc_count":130},{"key_as_string":"2017-02-09T16:16:00.000Z","key":1486656960000,"doc_count":17},{"key_as_string":"2017-02-09T16:17:00.000Z","key":1486657020000,"doc_count":13},{"key_as_string":"2017-02-09T16:18:00.000Z","key":1486657080000,"doc_count":10},{"key_as_string":"2017-02-09T16:19:00.000Z","key":1486657140000,"doc_count":9},{"key_as_string":"2017-02-09T16:20:00.000Z","key":1486657200000,"doc_count":9},{"key_as_string":"2017-02-09T16:21:00.000Z","key":1486657260000,"doc_count":17},{"key_as_string":"2017-02-09T16:22:00.000Z","key":1486657320000,"doc_count":13},{"key_as_string":"2017-02-09T16:23:00.000Z","key":1486657380000,"doc_count":10},{"key_as_string":"2017-02-09T16:24:00.000Z","key":1486657440000,"doc_count":11},{"key_as_string":"2017-02-09T16:25:00.000Z","key":1486657500000,"doc_count":9},{"key_as_string":"2017-02-09T16:26:00.000Z","key":1486657560000,"doc_count":12},{"key_as_string":"2017-02-09T16:27:00.000Z","key":1486657620000,"doc_count":15},{"key_as_string":"2017-02-09T16:28:00.000Z","key":1486657680000,"doc_count":8},{"key_as_string":"2017-02-09T16:29:00.000Z","key":1486657740000,"doc_count":12},{"key_as_string":"2017-02-09T16:30:00.000Z","key":1486657800000,"doc_count":12},{"key_as_string":"2017-02-09T16:31:00.000Z","key":1486657860000,"doc_count":15},{"key_as_string":"2017-02-09T16:32:00.000Z","key":1486657920000,"doc_count":10},{"key_as_string":"2017-02-09T16:33:00.000Z","key":1486657980000,"doc_count":13},{"key_as_string":"2017-02-09T16:34:00.000Z","key":1486658040000,"doc_count":13},{"key_as_string":"2017-02-09T16:35:00.000Z","key":1486658100000,"doc_count":14},{"key_as_string":"2017-02-09T16:36:00.000Z","key":1486658160000,"doc_count":14},{"key_as_string":"2017-02-09T16:37:00.000Z","key":1486658220000,"doc_count":11},{"key_as_string":"2017-02-09T16:38:00.000Z","key":1486658280000,"doc_count":12},{"key_as_string":"2017-02-09T16:39:00.000Z","key":1486658340000,"doc_count":11},{"key_as_string":"2017-02-09T16:40:00.000Z","key":1486658400000,"doc_count":10},{"key_as_string":"2017-02-09T16:41:00.000Z","key":1486658460000,"doc_count":10},{"key_as_string":"2017-02-09T16:42:00.000Z","key":1486658520000,"doc_count":13},{"key_as_string":"2017-02-09T16:43:00.000Z","key":1486658580000,"doc_count":16},{"key_as_string":"2017-02-09T16:44:00.000Z","key":1486658640000,"doc_count":14},{"key_as_string":"2017-02-09T16:45:00.000Z","key":1486658700000,"doc_count":15},{"key_as_string":"2017-02-09T16:46:00.000Z","key":1486658760000,"doc_count":13},{"key_as_string":"2017-02-09T16:47:00.000Z","key":1486658820000,"doc_count":14},{"key_as_string":"2017-02-09T16:48:00.000Z","key":1486658880000,"doc_count":9},{"key_as_string":"2017-02-09T16:49:00.000Z","key":1486658940000,"doc_count":15},{"key_as_string":"2017-02-09T16:50:00.000Z","key":1486659000000,"doc_count":13},{"key_as_string":"2017-02-09T16:51:00.000Z","key":1486659060000,"doc_count":15},{"key_as_string":"2017-02-09T16:52:00.000Z","key":1486659120000,"doc_count":13},{"key_as_string":"2017-02-09T16:53:00.000Z","key":1486659180000,"doc_count":16},{"key_as_string":"2017-02-09T16:54:00.000Z","key":1486659240000,"doc_count":11},{"key_as_string":"2017-02-09T16:55:00.000Z","key":1486659300000,"doc_count":18},{"key_as_string":"2017-02-09T16:56:00.000Z","key":1486659360000,"doc_count":9},{"key_as_string":"2017-02-09T16:57:00.000Z","key":1486659420000,"doc_count":19},{"key_as_string":"2017-02-09T16:58:00.000Z","key":1486659480000,"doc_count":8},{"key_as_string":"2017-02-09T16:59:00.000Z","key":1486659540000,"doc_count":12},{"key_as_string":"2017-02-09T17:00:00.000Z","key":1486659600000,"doc_count":17},{"key_as_string":"2017-02-09T17:01:00.000Z","key":1486659660000,"doc_count":14},{"key_as_string":"2017-02-09T17:02:00.000Z","key":1486659720000,"doc_count":13},{"key_as_string":"2017-02-09T17:03:00.000Z","key":1486659780000,"doc_count":9},{"key_as_string":"2017-02-09T17:04:00.000Z","key":1486659840000,"doc_count":14},{"key_as_string":"2017-02-09T17:05:00.000Z","key":1486659900000,"doc_count":15},{"key_as_string":"2017-02-09T17:06:00.000Z","key":1486659960000,"doc_count":13},{"key_as_string":"2017-02-09T17:07:00.000Z","key":1486660020000,"doc_count":9},{"key_as_string":"2017-02-09T17:08:00.000Z","key":1486660080000,"doc_count":8},{"key_as_string":"2017-02-09T17:09:00.000Z","key":1486660140000,"doc_count":11},{"key_as_string":"2017-02-09T17:10:00.000Z","key":1486660200000,"doc_count":11},{"key_as_string":"2017-02-09T17:11:00.000Z","key":1486660260000,"doc_count":12},{"key_as_string":"2017-02-09T17:12:00.000Z","key":1486660320000,"doc_count":12},{"key_as_string":"2017-02-09T17:13:00.000Z","key":1486660380000,"doc_count":9},{"key_as_string":"2017-02-09T17:14:00.000Z","key":1486660440000,"doc_count":15},{"key_as_string":"2017-02-09T17:15:00.000Z","key":1486660500000,"doc_count":11},{"key_as_string":"2017-02-09T17:16:00.000Z","key":1486660560000,"doc_count":11},{"key_as_string":"2017-02-09T17:17:00.000Z","key":1486660620000,"doc_count":11},{"key_as_string":"2017-02-09T17:18:00.000Z","key":1486660680000,"doc_count":11},{"key_as_string":"2017-02-09T17:19:00.000Z","key":1486660740000,"doc_count":15},{"key_as_string":"2017-02-09T17:20:00.000Z","key":1486660800000,"doc_count":7},{"key_as_string":"2017-02-09T17:21:00.000Z","key":1486660860000,"doc_count":15},{"key_as_string":"2017-02-09T17:22:00.000Z","key":1486660920000,"doc_count":13},{"key_as_string":"2017-02-09T17:23:00.000Z","key":1486660980000,"doc_count":10},{"key_as_string":"2017-02-09T17:24:00.000Z","key":1486661040000,"doc_count":18},{"key_as_string":"2017-02-09T17:25:00.000Z","key":1486661100000,"doc_count":9},{"key_as_string":"2017-02-09T17:26:00.000Z","key":1486661160000,"doc_count":12},{"key_as_string":"2017-02-09T17:27:00.000Z","key":1486661220000,"doc_count":8},{"key_as_string":"2017-02-09T17:28:00.000Z","key":1486661280000,"doc_count":11},{"key_as_string":"2017-02-09T17:29:00.000Z","key":1486661340000,"doc_count":10},{"key_as_string":"2017-02-09T17:30:00.000Z","key":1486661400000,"doc_count":19},{"key_as_string":"2017-02-09T17:31:00.000Z","key":1486661460000,"doc_count":10},{"key_as_string":"2017-02-09T17:32:00.000Z","key":1486661520000,"doc_count":11},{"key_as_string":"2017-02-09T17:33:00.000Z","key":1486661580000,"doc_count":12},{"key_as_string":"2017-02-09T17:34:00.000Z","key":1486661640000,"doc_count":12},{"key_as_string":"2017-02-09T17:35:00.000Z","key":1486661700000,"doc_count":15},{"key_as_string":"2017-02-09T17:36:00.000Z","key":1486661760000,"doc_count":11},{"key_as_string":"2017-02-09T17:37:00.000Z","key":1486661820000,"doc_count":12},{"key_as_string":"2017-02-09T17:38:00.000Z","key":1486661880000,"doc_count":12},{"key_as_string":"2017-02-09T17:39:00.000Z","key":1486661940000,"doc_count":14},{"key_as_string":"2017-02-09T17:40:00.000Z","key":1486662000000,"doc_count":10},{"key_as_string":"2017-02-09T17:41:00.000Z","key":1486662060000,"doc_count":13},{"key_as_string":"2017-02-09T17:42:00.000Z","key":1486662120000,"doc_count":11},{"key_as_string":"2017-02-09T17:43:00.000Z","key":1486662180000,"doc_count":16},{"key_as_string":"2017-02-09T17:44:00.000Z","key":1486662240000,"doc_count":13},{"key_as_string":"2017-02-09T17:45:00.000Z","key":1486662300000,"doc_count":7},{"key_as_string":"2017-02-09T17:46:00.000Z","key":1486662360000,"doc_count":15},{"key_as_string":"2017-02-09T17:47:00.000Z","key":1486662420000,"doc_count":11},{"key_as_string":"2017-02-09T17:48:00.000Z","key":1486662480000,"doc_count":10},{"key_as_string":"2017-02-09T17:49:00.000Z","key":1486662540000,"doc_count":13},{"key_as_string":"2017-02-09T17:50:00.000Z","key":1486662600000,"doc_count":11},{"key_as_string":"2017-02-09T17:51:00.000Z","key":1486662660000,"doc_count":19},{"key_as_string":"2017-02-09T17:52:00.000Z","key":1486662720000,"doc_count":8},{"key_as_string":"2017-02-09T17:53:00.000Z","key":1486662780000,"doc_count":12},{"key_as_string":"2017-02-09T17:54:00.000Z","key":1486662840000,"doc_count":15},{"key_as_string":"2017-02-09T17:55:00.000Z","key":1486662900000,"doc_count":9},{"key_as_string":"2017-02-09T17:56:00.000Z","key":1486662960000,"doc_count":11},{"key_as_string":"2017-02-09T17:57:00.000Z","key":1486663020000,"doc_count":14},{"key_as_string":"2017-02-09T17:58:00.000Z","key":1486663080000,"doc_count":11},{"key_as_string":"2017-02-09T17:59:00.000Z","key":1486663140000,"doc_count":18},{"key_as_string":"2017-02-09T18:00:00.000Z","key":1486663200000,"doc_count":14},{"key_as_string":"2017-02-09T18:01:00.000Z","key":1486663260000,"doc_count":11},{"key_as_string":"2017-02-09T18:02:00.000Z","key":1486663320000,"doc_count":11},{"key_as_string":"2017-02-09T18:03:00.000Z","key":1486663380000,"doc_count":13},{"key_as_string":"2017-02-09T18:04:00.000Z","key":1486663440000,"doc_count":15},{"key_as_string":"2017-02-09T18:05:00.000Z","key":1486663500000,"doc_count":10},{"key_as_string":"2017-02-09T18:06:00.000Z","key":1486663560000,"doc_count":17},{"key_as_string":"2017-02-09T18:07:00.000Z","key":1486663620000,"doc_count":14},{"key_as_string":"2017-02-09T18:08:00.000Z","key":1486663680000,"doc_count":11},{"key_as_string":"2017-02-09T18:09:00.000Z","key":1486663740000,"doc_count":15},{"key_as_string":"2017-02-09T18:10:00.000Z","key":1486663800000,"doc_count":12},{"key_as_string":"2017-02-09T18:11:00.000Z","key":1486663860000,"doc_count":7},{"key_as_string":"2017-02-09T18:12:00.000Z","key":1486663920000,"doc_count":17},{"key_as_string":"2017-02-09T18:13:00.000Z","key":1486663980000,"doc_count":14},{"key_as_string":"2017-02-09T18:14:00.000Z","key":1486664040000,"doc_count":10},{"key_as_string":"2017-02-09T18:15:00.000Z","key":1486664100000,"doc_count":13},{"key_as_string":"2017-02-09T18:16:00.000Z","key":1486664160000,"doc_count":18},{"key_as_string":"2017-02-09T18:17:00.000Z","key":1486664220000,"doc_count":7},{"key_as_string":"2017-02-09T18:18:00.000Z","key":1486664280000,"doc_count":17},{"key_as_string":"2017-02-09T18:19:00.000Z","key":1486664340000,"doc_count":10},{"key_as_string":"2017-02-09T18:20:00.000Z","key":1486664400000,"doc_count":7},{"key_as_string":"2017-02-09T18:21:00.000Z","key":1486664460000,"doc_count":12},{"key_as_string":"2017-02-09T18:22:00.000Z","key":1486664520000,"doc_count":14},{"key_as_string":"2017-02-09T18:23:00.000Z","key":1486664580000,"doc_count":14},{"key_as_string":"2017-02-09T18:24:00.000Z","key":1486664640000,"doc_count":11},{"key_as_string":"2017-02-09T18:25:00.000Z","key":1486664700000,"doc_count":13},{"key_as_string":"2017-02-09T18:26:00.000Z","key":1486664760000,"doc_count":15},{"key_as_string":"2017-02-09T18:27:00.000Z","key":1486664820000,"doc_count":6},{"key_as_string":"2017-02-09T18:28:00.000Z","key":1486664880000,"doc_count":12},{"key_as_string":"2017-02-09T18:29:00.000Z","key":1486664940000,"doc_count":15},{"key_as_string":"2017-02-09T18:30:00.000Z","key":1486665000000,"doc_count":9},{"key_as_string":"2017-02-09T18:31:00.000Z","key":1486665060000,"doc_count":13},{"key_as_string":"2017-02-09T18:32:00.000Z","key":1486665120000,"doc_count":13},{"key_as_string":"2017-02-09T18:33:00.000Z","key":1486665180000,"doc_count":14},{"key_as_string":"2017-02-09T18:34:00.000Z","key":1486665240000,"doc_count":8},{"key_as_string":"2017-02-09T18:35:00.000Z","key":1486665300000,"doc_count":9},{"key_as_string":"2017-02-09T18:36:00.000Z","key":1486665360000,"doc_count":11},{"key_as_string":"2017-02-09T18:37:00.000Z","key":1486665420000,"doc_count":12},{"key_as_string":"2017-02-09T18:38:00.000Z","key":1486665480000,"doc_count":11},{"key_as_string":"2017-02-09T18:39:00.000Z","key":1486665540000,"doc_count":12},{"key_as_string":"2017-02-09T18:40:00.000Z","key":1486665600000,"doc_count":16},{"key_as_string":"2017-02-09T18:41:00.000Z","key":1486665660000,"doc_count":7},{"key_as_string":"2017-02-09T18:42:00.000Z","key":1486665720000,"doc_count":13},{"key_as_string":"2017-02-09T18:43:00.000Z","key":1486665780000,"doc_count":13},{"key_as_string":"2017-02-09T18:44:00.000Z","key":1486665840000,"doc_count":14},{"key_as_string":"2017-02-09T18:45:00.000Z","key":1486665900000,"doc_count":7},{"key_as_string":"2017-02-09T18:46:00.000Z","key":1486665960000,"doc_count":9},{"key_as_string":"2017-02-09T18:47:00.000Z","key":1486666020000,"doc_count":11},{"key_as_string":"2017-02-09T18:48:00.000Z","key":1486666080000,"doc_count":11},{"key_as_string":"2017-02-09T18:49:00.000Z","key":1486666140000,"doc_count":11},{"key_as_string":"2017-02-09T18:50:00.000Z","key":1486666200000,"doc_count":8},{"key_as_string":"2017-02-09T18:51:00.000Z","key":1486666260000,"doc_count":15},{"key_as_string":"2017-02-09T18:52:00.000Z","key":1486666320000,"doc_count":8},{"key_as_string":"2017-02-09T18:53:00.000Z","key":1486666380000,"doc_count":13},{"key_as_string":"2017-02-09T18:54:00.000Z","key":1486666440000,"doc_count":13},{"key_as_string":"2017-02-09T18:55:00.000Z","key":1486666500000,"doc_count":11},{"key_as_string":"2017-02-09T18:56:00.000Z","key":1486666560000,"doc_count":16},{"key_as_string":"2017-02-09T18:57:00.000Z","key":1486666620000,"doc_count":6},{"key_as_string":"2017-02-09T18:58:00.000Z","key":1486666680000,"doc_count":12},{"key_as_string":"2017-02-09T18:59:00.000Z","key":1486666740000,"doc_count":12},{"key_as_string":"2017-02-09T19:00:00.000Z","key":1486666800000,"doc_count":9},{"key_as_string":"2017-02-09T19:01:00.000Z","key":1486666860000,"doc_count":12},{"key_as_string":"2017-02-09T19:02:00.000Z","key":1486666920000,"doc_count":11},{"key_as_string":"2017-02-09T19:03:00.000Z","key":1486666980000,"doc_count":14},{"key_as_string":"2017-02-09T19:04:00.000Z","key":1486667040000,"doc_count":10},{"key_as_string":"2017-02-09T19:05:00.000Z","key":1486667100000,"doc_count":9},{"key_as_string":"2017-02-09T19:06:00.000Z","key":1486667160000,"doc_count":8},{"key_as_string":"2017-02-09T19:07:00.000Z","key":1486667220000,"doc_count":19},{"key_as_string":"2017-02-09T19:08:00.000Z","key":1486667280000,"doc_count":8},{"key_as_string":"2017-02-09T19:09:00.000Z","key":1486667340000,"doc_count":12},{"key_as_string":"2017-02-09T19:10:00.000Z","key":1486667400000,"doc_count":10},{"key_as_string":"2017-02-09T19:11:00.000Z","key":1486667460000,"doc_count":9},{"key_as_string":"2017-02-09T19:12:00.000Z","key":1486667520000,"doc_count":10},{"key_as_string":"2017-02-09T19:13:00.000Z","key":1486667580000,"doc_count":7},{"key_as_string":"2017-02-09T19:14:00.000Z","key":1486667640000,"doc_count":7},{"key_as_string":"2017-02-09T19:15:00.000Z","key":1486667700000,"doc_count":15},{"key_as_string":"2017-02-09T19:16:00.000Z","key":1486667760000,"doc_count":8},{"key_as_string":"2017-02-09T19:17:00.000Z","key":1486667820000,"doc_count":9},{"key_as_string":"2017-02-09T19:18:00.000Z","key":1486667880000,"doc_count":14},{"key_as_string":"2017-02-09T19:19:00.000Z","key":1486667940000,"doc_count":10},{"key_as_string":"2017-02-09T19:20:00.000Z","key":1486668000000,"doc_count":8},{"key_as_string":"2017-02-09T19:21:00.000Z","key":1486668060000,"doc_count":19},{"key_as_string":"2017-02-09T19:22:00.000Z","key":1486668120000,"doc_count":7},{"key_as_string":"2017-02-09T19:23:00.000Z","key":1486668180000,"doc_count":9},{"key_as_string":"2017-02-09T19:24:00.000Z","key":1486668240000,"doc_count":9},{"key_as_string":"2017-02-09T19:25:00.000Z","key":1486668300000,"doc_count":14},{"key_as_string":"2017-02-09T19:26:00.000Z","key":1486668360000,"doc_count":15},{"key_as_string":"2017-02-09T19:27:00.000Z","key":1486668420000,"doc_count":13},{"key_as_string":"2017-02-09T19:28:00.000Z","key":1486668480000,"doc_count":15},{"key_as_string":"2017-02-09T19:29:00.000Z","key":1486668540000,"doc_count":9},{"key_as_string":"2017-02-09T19:30:00.000Z","key":1486668600000,"doc_count":7},{"key_as_string":"2017-02-09T19:31:00.000Z","key":1486668660000,"doc_count":9},{"key_as_string":"2017-02-09T19:32:00.000Z","key":1486668720000,"doc_count":6},{"key_as_string":"2017-02-09T19:33:00.000Z","key":1486668780000,"doc_count":16},{"key_as_string":"2017-02-09T19:34:00.000Z","key":1486668840000,"doc_count":14},{"key_as_string":"2017-02-09T19:35:00.000Z","key":1486668900000,"doc_count":12},{"key_as_string":"2017-02-09T19:36:00.000Z","key":1486668960000,"doc_count":12},{"key_as_string":"2017-02-09T19:37:00.000Z","key":1486669020000,"doc_count":11},{"key_as_string":"2017-02-09T19:38:00.000Z","key":1486669080000,"doc_count":12},{"key_as_string":"2017-02-09T19:39:00.000Z","key":1486669140000,"doc_count":13},{"key_as_string":"2017-02-09T19:40:00.000Z","key":1486669200000,"doc_count":6},{"key_as_string":"2017-02-09T19:41:00.000Z","key":1486669260000,"doc_count":14},{"key_as_string":"2017-02-09T19:42:00.000Z","key":1486669320000,"doc_count":15},{"key_as_string":"2017-02-09T19:43:00.000Z","key":1486669380000,"doc_count":9},{"key_as_string":"2017-02-09T19:44:00.000Z","key":1486669440000,"doc_count":7},{"key_as_string":"2017-02-09T19:45:00.000Z","key":1486669500000,"doc_count":15},{"key_as_string":"2017-02-09T19:46:00.000Z","key":1486669560000,"doc_count":10},{"key_as_string":"2017-02-09T19:47:00.000Z","key":1486669620000,"doc_count":9},{"key_as_string":"2017-02-09T19:48:00.000Z","key":1486669680000,"doc_count":9},{"key_as_string":"2017-02-09T19:49:00.000Z","key":1486669740000,"doc_count":14},{"key_as_string":"2017-02-09T19:50:00.000Z","key":1486669800000,"doc_count":8},{"key_as_string":"2017-02-09T19:51:00.000Z","key":1486669860000,"doc_count":12},{"key_as_string":"2017-02-09T19:52:00.000Z","key":1486669920000,"doc_count":8},{"key_as_string":"2017-02-09T19:53:00.000Z","key":1486669980000,"doc_count":6},{"key_as_string":"2017-02-09T19:54:00.000Z","key":1486670040000,"doc_count":13},{"key_as_string":"2017-02-09T19:55:00.000Z","key":1486670100000,"doc_count":14},{"key_as_string":"2017-02-09T19:56:00.000Z","key":1486670160000,"doc_count":10},{"key_as_string":"2017-02-09T19:57:00.000Z","key":1486670220000,"doc_count":15},{"key_as_string":"2017-02-09T19:58:00.000Z","key":1486670280000,"doc_count":11},{"key_as_string":"2017-02-09T19:59:00.000Z","key":1486670340000,"doc_count":11},{"key_as_string":"2017-02-09T20:00:00.000Z","key":1486670400000,"doc_count":14},{"key_as_string":"2017-02-09T20:01:00.000Z","key":1486670460000,"doc_count":16},{"key_as_string":"2017-02-09T20:02:00.000Z","key":1486670520000,"doc_count":11},{"key_as_string":"2017-02-09T20:03:00.000Z","key":1486670580000,"doc_count":11},{"key_as_string":"2017-02-09T20:04:00.000Z","key":1486670640000,"doc_count":14},{"key_as_string":"2017-02-09T20:05:00.000Z","key":1486670700000,"doc_count":6},{"key_as_string":"2017-02-09T20:06:00.000Z","key":1486670760000,"doc_count":12},{"key_as_string":"2017-02-09T20:07:00.000Z","key":1486670820000,"doc_count":14},{"key_as_string":"2017-02-09T20:08:00.000Z","key":1486670880000,"doc_count":11},{"key_as_string":"2017-02-09T20:09:00.000Z","key":1486670940000,"doc_count":15},{"key_as_string":"2017-02-09T20:10:00.000Z","key":1486671000000,"doc_count":14},{"key_as_string":"2017-02-09T20:11:00.000Z","key":1486671060000,"doc_count":13},{"key_as_string":"2017-02-09T20:12:00.000Z","key":1486671120000,"doc_count":10},{"key_as_string":"2017-02-09T20:13:00.000Z","key":1486671180000,"doc_count":12},{"key_as_string":"2017-02-09T20:14:00.000Z","key":1486671240000,"doc_count":10},{"key_as_string":"2017-02-09T20:15:00.000Z","key":1486671300000,"doc_count":9},{"key_as_string":"2017-02-09T20:16:00.000Z","key":1486671360000,"doc_count":12},{"key_as_string":"2017-02-09T20:17:00.000Z","key":1486671420000,"doc_count":9},{"key_as_string":"2017-02-09T20:18:00.000Z","key":1486671480000,"doc_count":14},{"key_as_string":"2017-02-09T20:19:00.000Z","key":1486671540000,"doc_count":12},{"key_as_string":"2017-02-09T20:20:00.000Z","key":1486671600000,"doc_count":11},{"key_as_string":"2017-02-09T20:21:00.000Z","key":1486671660000,"doc_count":10},{"key_as_string":"2017-02-09T20:22:00.000Z","key":1486671720000,"doc_count":14},{"key_as_string":"2017-02-09T20:23:00.000Z","key":1486671780000,"doc_count":10},{"key_as_string":"2017-02-09T20:24:00.000Z","key":1486671840000,"doc_count":12},{"key_as_string":"2017-02-09T20:25:00.000Z","key":1486671900000,"doc_count":8},{"key_as_string":"2017-02-09T20:26:00.000Z","key":1486671960000,"doc_count":14},{"key_as_string":"2017-02-09T20:27:00.000Z","key":1486672020000,"doc_count":7},{"key_as_string":"2017-02-09T20:28:00.000Z","key":1486672080000,"doc_count":12},{"key_as_string":"2017-02-09T20:29:00.000Z","key":1486672140000,"doc_count":11},{"key_as_string":"2017-02-09T20:30:00.000Z","key":1486672200000,"doc_count":15},{"key_as_string":"2017-02-09T20:31:00.000Z","key":1486672260000,"doc_count":11},{"key_as_string":"2017-02-09T20:32:00.000Z","key":1486672320000,"doc_count":11},{"key_as_string":"2017-02-09T20:33:00.000Z","key":1486672380000,"doc_count":7},{"key_as_string":"2017-02-09T20:34:00.000Z","key":1486672440000,"doc_count":10},{"key_as_string":"2017-02-09T20:35:00.000Z","key":1486672500000,"doc_count":13},{"key_as_string":"2017-02-09T20:36:00.000Z","key":1486672560000,"doc_count":6},{"key_as_string":"2017-02-09T20:37:00.000Z","key":1486672620000,"doc_count":9},{"key_as_string":"2017-02-09T20:38:00.000Z","key":1486672680000,"doc_count":7},{"key_as_string":"2017-02-09T20:39:00.000Z","key":1486672740000,"doc_count":10},{"key_as_string":"2017-02-09T20:40:00.000Z","key":1486672800000,"doc_count":8},{"key_as_string":"2017-02-09T20:41:00.000Z","key":1486672860000,"doc_count":12},{"key_as_string":"2017-02-09T20:42:00.000Z","key":1486672920000,"doc_count":6},{"key_as_string":"2017-02-09T20:43:00.000Z","key":1486672980000,"doc_count":14},{"key_as_string":"2017-02-09T20:44:00.000Z","key":1486673040000,"doc_count":6},{"key_as_string":"2017-02-09T20:45:00.000Z","key":1486673100000,"doc_count":8},{"key_as_string":"2017-02-09T20:46:00.000Z","key":1486673160000,"doc_count":14},{"key_as_string":"2017-02-09T20:47:00.000Z","key":1486673220000,"doc_count":10},{"key_as_string":"2017-02-09T20:48:00.000Z","key":1486673280000,"doc_count":9},{"key_as_string":"2017-02-09T20:49:00.000Z","key":1486673340000,"doc_count":11},{"key_as_string":"2017-02-09T20:50:00.000Z","key":1486673400000,"doc_count":14},{"key_as_string":"2017-02-09T20:51:00.000Z","key":1486673460000,"doc_count":6},{"key_as_string":"2017-02-09T20:52:00.000Z","key":1486673520000,"doc_count":9},{"key_as_string":"2017-02-09T20:53:00.000Z","key":1486673580000,"doc_count":10},{"key_as_string":"2017-02-09T20:54:00.000Z","key":1486673640000,"doc_count":13},{"key_as_string":"2017-02-09T20:55:00.000Z","key":1486673700000,"doc_count":11},{"key_as_string":"2017-02-09T20:56:00.000Z","key":1486673760000,"doc_count":6},{"key_as_string":"2017-02-09T20:57:00.000Z","key":1486673820000,"doc_count":10},{"key_as_string":"2017-02-09T20:58:00.000Z","key":1486673880000,"doc_count":10},{"key_as_string":"2017-02-09T20:59:00.000Z","key":1486673940000,"doc_count":9},{"key_as_string":"2017-02-09T21:00:00.000Z","key":1486674000000,"doc_count":17},{"key_as_string":"2017-02-09T21:01:00.000Z","key":1486674060000,"doc_count":11},{"key_as_string":"2017-02-09T21:02:00.000Z","key":1486674120000,"doc_count":10},{"key_as_string":"2017-02-09T21:03:00.000Z","key":1486674180000,"doc_count":9},{"key_as_string":"2017-02-09T21:04:00.000Z","key":1486674240000,"doc_count":14},{"key_as_string":"2017-02-09T21:05:00.000Z","key":1486674300000,"doc_count":10},{"key_as_string":"2017-02-09T21:06:00.000Z","key":1486674360000,"doc_count":12},{"key_as_string":"2017-02-09T21:07:00.000Z","key":1486674420000,"doc_count":9},{"key_as_string":"2017-02-09T21:08:00.000Z","key":1486674480000,"doc_count":11},{"key_as_string":"2017-02-09T21:09:00.000Z","key":1486674540000,"doc_count":11},{"key_as_string":"2017-02-09T21:10:00.000Z","key":1486674600000,"doc_count":11},{"key_as_string":"2017-02-09T21:11:00.000Z","key":1486674660000,"doc_count":10},{"key_as_string":"2017-02-09T21:12:00.000Z","key":1486674720000,"doc_count":9},{"key_as_string":"2017-02-09T21:13:00.000Z","key":1486674780000,"doc_count":13},{"key_as_string":"2017-02-09T21:14:00.000Z","key":1486674840000,"doc_count":9},{"key_as_string":"2017-02-09T21:15:00.000Z","key":1486674900000,"doc_count":8},{"key_as_string":"2017-02-09T21:16:00.000Z","key":1486674960000,"doc_count":11},{"key_as_string":"2017-02-09T21:17:00.000Z","key":1486675020000,"doc_count":12},{"key_as_string":"2017-02-09T21:18:00.000Z","key":1486675080000,"doc_count":7},{"key_as_string":"2017-02-09T21:19:00.000Z","key":1486675140000,"doc_count":14},{"key_as_string":"2017-02-09T21:20:00.000Z","key":1486675200000,"doc_count":15},{"key_as_string":"2017-02-09T21:21:00.000Z","key":1486675260000,"doc_count":5},{"key_as_string":"2017-02-09T21:22:00.000Z","key":1486675320000,"doc_count":8},{"key_as_string":"2017-02-09T21:23:00.000Z","key":1486675380000,"doc_count":15},{"key_as_string":"2017-02-09T21:24:00.000Z","key":1486675440000,"doc_count":9},{"key_as_string":"2017-02-09T21:25:00.000Z","key":1486675500000,"doc_count":14},{"key_as_string":"2017-02-09T21:26:00.000Z","key":1486675560000,"doc_count":12},{"key_as_string":"2017-02-09T21:27:00.000Z","key":1486675620000,"doc_count":8},{"key_as_string":"2017-02-09T21:28:00.000Z","key":1486675680000,"doc_count":12},{"key_as_string":"2017-02-09T21:29:00.000Z","key":1486675740000,"doc_count":10},{"key_as_string":"2017-02-09T21:30:00.000Z","key":1486675800000,"doc_count":10},{"key_as_string":"2017-02-09T21:31:00.000Z","key":1486675860000,"doc_count":11},{"key_as_string":"2017-02-09T21:32:00.000Z","key":1486675920000,"doc_count":10},{"key_as_string":"2017-02-09T21:33:00.000Z","key":1486675980000,"doc_count":9},{"key_as_string":"2017-02-09T21:34:00.000Z","key":1486676040000,"doc_count":10},{"key_as_string":"2017-02-09T21:35:00.000Z","key":1486676100000,"doc_count":11},{"key_as_string":"2017-02-09T21:36:00.000Z","key":1486676160000,"doc_count":11},{"key_as_string":"2017-02-09T21:37:00.000Z","key":1486676220000,"doc_count":8},{"key_as_string":"2017-02-09T21:38:00.000Z","key":1486676280000,"doc_count":12},{"key_as_string":"2017-02-09T21:39:00.000Z","key":1486676340000,"doc_count":9},{"key_as_string":"2017-02-09T21:40:00.000Z","key":1486676400000,"doc_count":8},{"key_as_string":"2017-02-09T21:41:00.000Z","key":1486676460000,"doc_count":10},{"key_as_string":"2017-02-09T21:42:00.000Z","key":1486676520000,"doc_count":8},{"key_as_string":"2017-02-09T21:43:00.000Z","key":1486676580000,"doc_count":12},{"key_as_string":"2017-02-09T21:44:00.000Z","key":1486676640000,"doc_count":10},{"key_as_string":"2017-02-09T21:45:00.000Z","key":1486676700000,"doc_count":14},{"key_as_string":"2017-02-09T21:46:00.000Z","key":1486676760000,"doc_count":11},{"key_as_string":"2017-02-09T21:47:00.000Z","key":1486676820000,"doc_count":8},{"key_as_string":"2017-02-09T21:48:00.000Z","key":1486676880000,"doc_count":12},{"key_as_string":"2017-02-09T21:49:00.000Z","key":1486676940000,"doc_count":12},{"key_as_string":"2017-02-09T21:50:00.000Z","key":1486677000000,"doc_count":9},{"key_as_string":"2017-02-09T21:51:00.000Z","key":1486677060000,"doc_count":11},{"key_as_string":"2017-02-09T21:52:00.000Z","key":1486677120000,"doc_count":10},{"key_as_string":"2017-02-09T21:53:00.000Z","key":1486677180000,"doc_count":11},{"key_as_string":"2017-02-09T21:54:00.000Z","key":1486677240000,"doc_count":14},{"key_as_string":"2017-02-09T21:55:00.000Z","key":1486677300000,"doc_count":9},{"key_as_string":"2017-02-09T21:56:00.000Z","key":1486677360000,"doc_count":8},{"key_as_string":"2017-02-09T21:57:00.000Z","key":1486677420000,"doc_count":10},{"key_as_string":"2017-02-09T21:58:00.000Z","key":1486677480000,"doc_count":8},{"key_as_string":"2017-02-09T21:59:00.000Z","key":1486677540000,"doc_count":16},{"key_as_string":"2017-02-09T22:00:00.000Z","key":1486677600000,"doc_count":11},{"key_as_string":"2017-02-09T22:01:00.000Z","key":1486677660000,"doc_count":7},{"key_as_string":"2017-02-09T22:02:00.000Z","key":1486677720000,"doc_count":13},{"key_as_string":"2017-02-09T22:03:00.000Z","key":1486677780000,"doc_count":12},{"key_as_string":"2017-02-09T22:04:00.000Z","key":1486677840000,"doc_count":9},{"key_as_string":"2017-02-09T22:05:00.000Z","key":1486677900000,"doc_count":14},{"key_as_string":"2017-02-09T22:06:00.000Z","key":1486677960000,"doc_count":8},{"key_as_string":"2017-02-09T22:07:00.000Z","key":1486678020000,"doc_count":9},{"key_as_string":"2017-02-09T22:08:00.000Z","key":1486678080000,"doc_count":15},{"key_as_string":"2017-02-09T22:09:00.000Z","key":1486678140000,"doc_count":10},{"key_as_string":"2017-02-09T22:10:00.000Z","key":1486678200000,"doc_count":7},{"key_as_string":"2017-02-09T22:11:00.000Z","key":1486678260000,"doc_count":11},{"key_as_string":"2017-02-09T22:12:00.000Z","key":1486678320000,"doc_count":8},{"key_as_string":"2017-02-09T22:13:00.000Z","key":1486678380000,"doc_count":13},{"key_as_string":"2017-02-09T22:14:00.000Z","key":1486678440000,"doc_count":12},{"key_as_string":"2017-02-09T22:15:00.000Z","key":1486678500000,"doc_count":6},{"key_as_string":"2017-02-09T22:16:00.000Z","key":1486678560000,"doc_count":9},{"key_as_string":"2017-02-09T22:17:00.000Z","key":1486678620000,"doc_count":13},{"key_as_string":"2017-02-09T22:18:00.000Z","key":1486678680000,"doc_count":12},{"key_as_string":"2017-02-09T22:19:00.000Z","key":1486678740000,"doc_count":9},{"key_as_string":"2017-02-09T22:20:00.000Z","key":1486678800000,"doc_count":7},{"key_as_string":"2017-02-09T22:21:00.000Z","key":1486678860000,"doc_count":8},{"key_as_string":"2017-02-09T22:22:00.000Z","key":1486678920000,"doc_count":12},{"key_as_string":"2017-02-09T22:23:00.000Z","key":1486678980000,"doc_count":7},{"key_as_string":"2017-02-09T22:24:00.000Z","key":1486679040000,"doc_count":15},{"key_as_string":"2017-02-09T22:25:00.000Z","key":1486679100000,"doc_count":12},{"key_as_string":"2017-02-09T22:26:00.000Z","key":1486679160000,"doc_count":12},{"key_as_string":"2017-02-09T22:27:00.000Z","key":1486679220000,"doc_count":12},{"key_as_string":"2017-02-09T22:28:00.000Z","key":1486679280000,"doc_count":11},{"key_as_string":"2017-02-09T22:29:00.000Z","key":1486679340000,"doc_count":7},{"key_as_string":"2017-02-09T22:30:00.000Z","key":1486679400000,"doc_count":9},{"key_as_string":"2017-02-09T22:31:00.000Z","key":1486679460000,"doc_count":10},{"key_as_string":"2017-02-09T22:32:00.000Z","key":1486679520000,"doc_count":14},{"key_as_string":"2017-02-09T22:33:00.000Z","key":1486679580000,"doc_count":10},{"key_as_string":"2017-02-09T22:34:00.000Z","key":1486679640000,"doc_count":14},{"key_as_string":"2017-02-09T22:35:00.000Z","key":1486679700000,"doc_count":13},{"key_as_string":"2017-02-09T22:36:00.000Z","key":1486679760000,"doc_count":9},{"key_as_string":"2017-02-09T22:37:00.000Z","key":1486679820000,"doc_count":7},{"key_as_string":"2017-02-09T22:38:00.000Z","key":1486679880000,"doc_count":11},{"key_as_string":"2017-02-09T22:39:00.000Z","key":1486679940000,"doc_count":8},{"key_as_string":"2017-02-09T22:40:00.000Z","key":1486680000000,"doc_count":9},{"key_as_string":"2017-02-09T22:41:00.000Z","key":1486680060000,"doc_count":9},{"key_as_string":"2017-02-09T22:42:00.000Z","key":1486680120000,"doc_count":15},{"key_as_string":"2017-02-09T22:43:00.000Z","key":1486680180000,"doc_count":8},{"key_as_string":"2017-02-09T22:44:00.000Z","key":1486680240000,"doc_count":7},{"key_as_string":"2017-02-09T22:45:00.000Z","key":1486680300000,"doc_count":10},{"key_as_string":"2017-02-09T22:46:00.000Z","key":1486680360000,"doc_count":13},{"key_as_string":"2017-02-09T22:47:00.000Z","key":1486680420000,"doc_count":14},{"key_as_string":"2017-02-09T22:48:00.000Z","key":1486680480000,"doc_count":7},{"key_as_string":"2017-02-09T22:49:00.000Z","key":1486680540000,"doc_count":8},{"key_as_string":"2017-02-09T22:50:00.000Z","key":1486680600000,"doc_count":12},{"key_as_string":"2017-02-09T22:51:00.000Z","key":1486680660000,"doc_count":9},{"key_as_string":"2017-02-09T22:52:00.000Z","key":1486680720000,"doc_count":9},{"key_as_string":"2017-02-09T22:53:00.000Z","key":1486680780000,"doc_count":6},{"key_as_string":"2017-02-09T22:54:00.000Z","key":1486680840000,"doc_count":17},{"key_as_string":"2017-02-09T22:55:00.000Z","key":1486680900000,"doc_count":10},{"key_as_string":"2017-02-09T22:56:00.000Z","key":1486680960000,"doc_count":9},{"key_as_string":"2017-02-09T22:57:00.000Z","key":1486681020000,"doc_count":12},{"key_as_string":"2017-02-09T22:58:00.000Z","key":1486681080000,"doc_count":10},{"key_as_string":"2017-02-09T22:59:00.000Z","key":1486681140000,"doc_count":11},{"key_as_string":"2017-02-09T23:00:00.000Z","key":1486681200000,"doc_count":6},{"key_as_string":"2017-02-09T23:01:00.000Z","key":1486681260000,"doc_count":11},{"key_as_string":"2017-02-09T23:02:00.000Z","key":1486681320000,"doc_count":11},{"key_as_string":"2017-02-09T23:03:00.000Z","key":1486681380000,"doc_count":13},{"key_as_string":"2017-02-09T23:04:00.000Z","key":1486681440000,"doc_count":16},{"key_as_string":"2017-02-09T23:05:00.000Z","key":1486681500000,"doc_count":10},{"key_as_string":"2017-02-09T23:06:00.000Z","key":1486681560000,"doc_count":9},{"key_as_string":"2017-02-09T23:07:00.000Z","key":1486681620000,"doc_count":6},{"key_as_string":"2017-02-09T23:08:00.000Z","key":1486681680000,"doc_count":11},{"key_as_string":"2017-02-09T23:09:00.000Z","key":1486681740000,"doc_count":12},{"key_as_string":"2017-02-09T23:10:00.000Z","key":1486681800000,"doc_count":4},{"key_as_string":"2017-02-09T23:11:00.000Z","key":1486681860000,"doc_count":12},{"key_as_string":"2017-02-09T23:12:00.000Z","key":1486681920000,"doc_count":12},{"key_as_string":"2017-02-09T23:13:00.000Z","key":1486681980000,"doc_count":8},{"key_as_string":"2017-02-09T23:14:00.000Z","key":1486682040000,"doc_count":12},{"key_as_string":"2017-02-09T23:15:00.000Z","key":1486682100000,"doc_count":8},{"key_as_string":"2017-02-09T23:16:00.000Z","key":1486682160000,"doc_count":11},{"key_as_string":"2017-02-09T23:17:00.000Z","key":1486682220000,"doc_count":12},{"key_as_string":"2017-02-09T23:18:00.000Z","key":1486682280000,"doc_count":6},{"key_as_string":"2017-02-09T23:19:00.000Z","key":1486682340000,"doc_count":13},{"key_as_string":"2017-02-09T23:20:00.000Z","key":1486682400000,"doc_count":9},{"key_as_string":"2017-02-09T23:21:00.000Z","key":1486682460000,"doc_count":7},{"key_as_string":"2017-02-09T23:22:00.000Z","key":1486682520000,"doc_count":18},{"key_as_string":"2017-02-09T23:23:00.000Z","key":1486682580000,"doc_count":6},{"key_as_string":"2017-02-09T23:24:00.000Z","key":1486682640000,"doc_count":10},{"key_as_string":"2017-02-09T23:25:00.000Z","key":1486682700000,"doc_count":10},{"key_as_string":"2017-02-09T23:26:00.000Z","key":1486682760000,"doc_count":13},{"key_as_string":"2017-02-09T23:27:00.000Z","key":1486682820000,"doc_count":12},{"key_as_string":"2017-02-09T23:28:00.000Z","key":1486682880000,"doc_count":14},{"key_as_string":"2017-02-09T23:29:00.000Z","key":1486682940000,"doc_count":7},{"key_as_string":"2017-02-09T23:30:00.000Z","key":1486683000000,"doc_count":8},{"key_as_string":"2017-02-09T23:31:00.000Z","key":1486683060000,"doc_count":13},{"key_as_string":"2017-02-09T23:32:00.000Z","key":1486683120000,"doc_count":7},{"key_as_string":"2017-02-09T23:33:00.000Z","key":1486683180000,"doc_count":10},{"key_as_string":"2017-02-09T23:34:00.000Z","key":1486683240000,"doc_count":9},{"key_as_string":"2017-02-09T23:35:00.000Z","key":1486683300000,"doc_count":8},{"key_as_string":"2017-02-09T23:36:00.000Z","key":1486683360000,"doc_count":11},{"key_as_string":"2017-02-09T23:37:00.000Z","key":1486683420000,"doc_count":14},{"key_as_string":"2017-02-09T23:38:00.000Z","key":1486683480000,"doc_count":11},{"key_as_string":"2017-02-09T23:39:00.000Z","key":1486683540000,"doc_count":8},{"key_as_string":"2017-02-09T23:40:00.000Z","key":1486683600000,"doc_count":12},{"key_as_string":"2017-02-09T23:41:00.000Z","key":1486683660000,"doc_count":12},{"key_as_string":"2017-02-09T23:42:00.000Z","key":1486683720000,"doc_count":9},{"key_as_string":"2017-02-09T23:43:00.000Z","key":1486683780000,"doc_count":16},{"key_as_string":"2017-02-09T23:44:00.000Z","key":1486683840000,"doc_count":11},{"key_as_string":"2017-02-09T23:45:00.000Z","key":1486683900000,"doc_count":7},{"key_as_string":"2017-02-09T23:46:00.000Z","key":1486683960000,"doc_count":12},{"key_as_string":"2017-02-09T23:47:00.000Z","key":1486684020000,"doc_count":15},{"key_as_string":"2017-02-09T23:48:00.000Z","key":1486684080000,"doc_count":7},{"key_as_string":"2017-02-09T23:49:00.000Z","key":1486684140000,"doc_count":10},{"key_as_string":"2017-02-09T23:50:00.000Z","key":1486684200000,"doc_count":15},{"key_as_string":"2017-02-09T23:51:00.000Z","key":1486684260000,"doc_count":12},{"key_as_string":"2017-02-09T23:52:00.000Z","key":1486684320000,"doc_count":9},{"key_as_string":"2017-02-09T23:53:00.000Z","key":1486684380000,"doc_count":7},{"key_as_string":"2017-02-09T23:54:00.000Z","key":1486684440000,"doc_count":8},{"key_as_string":"2017-02-09T23:55:00.000Z","key":1486684500000,"doc_count":8},{"key_as_string":"2017-02-09T23:56:00.000Z","key":1486684560000,"doc_count":13},{"key_as_string":"2017-02-09T23:57:00.000Z","key":1486684620000,"doc_count":12},{"key_as_string":"2017-02-09T23:58:00.000Z","key":1486684680000,"doc_count":12},{"key_as_string":"2017-02-09T23:59:00.000Z","key":1486684740000,"doc_count":9},{"key_as_string":"2017-02-10T00:00:00.000Z","key":1486684800000,"doc_count":8},{"key_as_string":"2017-02-10T00:01:00.000Z","key":1486684860000,"doc_count":10},{"key_as_string":"2017-02-10T00:02:00.000Z","key":1486684920000,"doc_count":12},{"key_as_string":"2017-02-10T00:03:00.000Z","key":1486684980000,"doc_count":11},{"key_as_string":"2017-02-10T00:04:00.000Z","key":1486685040000,"doc_count":11},{"key_as_string":"2017-02-10T00:05:00.000Z","key":1486685100000,"doc_count":12},{"key_as_string":"2017-02-10T00:06:00.000Z","key":1486685160000,"doc_count":9},{"key_as_string":"2017-02-10T00:07:00.000Z","key":1486685220000,"doc_count":11},{"key_as_string":"2017-02-10T00:08:00.000Z","key":1486685280000,"doc_count":8},{"key_as_string":"2017-02-10T00:09:00.000Z","key":1486685340000,"doc_count":11},{"key_as_string":"2017-02-10T00:10:00.000Z","key":1486685400000,"doc_count":10},{"key_as_string":"2017-02-10T00:11:00.000Z","key":1486685460000,"doc_count":14},{"key_as_string":"2017-02-10T00:12:00.000Z","key":1486685520000,"doc_count":5},{"key_as_string":"2017-02-10T00:13:00.000Z","key":1486685580000,"doc_count":6},{"key_as_string":"2017-02-10T00:14:00.000Z","key":1486685640000,"doc_count":8},{"key_as_string":"2017-02-10T00:15:00.000Z","key":1486685700000,"doc_count":11},{"key_as_string":"2017-02-10T00:16:00.000Z","key":1486685760000,"doc_count":15},{"key_as_string":"2017-02-10T00:17:00.000Z","key":1486685820000,"doc_count":8},{"key_as_string":"2017-02-10T00:18:00.000Z","key":1486685880000,"doc_count":12},{"key_as_string":"2017-02-10T00:19:00.000Z","key":1486685940000,"doc_count":7},{"key_as_string":"2017-02-10T00:20:00.000Z","key":1486686000000,"doc_count":11},{"key_as_string":"2017-02-10T00:21:00.000Z","key":1486686060000,"doc_count":20},{"key_as_string":"2017-02-10T00:22:00.000Z","key":1486686120000,"doc_count":7},{"key_as_string":"2017-02-10T00:23:00.000Z","key":1486686180000,"doc_count":11},{"key_as_string":"2017-02-10T00:24:00.000Z","key":1486686240000,"doc_count":8},{"key_as_string":"2017-02-10T00:25:00.000Z","key":1486686300000,"doc_count":9},{"key_as_string":"2017-02-10T00:26:00.000Z","key":1486686360000,"doc_count":15},{"key_as_string":"2017-02-10T00:27:00.000Z","key":1486686420000,"doc_count":12},{"key_as_string":"2017-02-10T00:28:00.000Z","key":1486686480000,"doc_count":13},{"key_as_string":"2017-02-10T00:29:00.000Z","key":1486686540000,"doc_count":10},{"key_as_string":"2017-02-10T00:30:00.000Z","key":1486686600000,"doc_count":14},{"key_as_string":"2017-02-10T00:31:00.000Z","key":1486686660000,"doc_count":9},{"key_as_string":"2017-02-10T00:32:00.000Z","key":1486686720000,"doc_count":6},{"key_as_string":"2017-02-10T00:33:00.000Z","key":1486686780000,"doc_count":13},{"key_as_string":"2017-02-10T00:34:00.000Z","key":1486686840000,"doc_count":8},{"key_as_string":"2017-02-10T00:35:00.000Z","key":1486686900000,"doc_count":12},{"key_as_string":"2017-02-10T00:36:00.000Z","key":1486686960000,"doc_count":10},{"key_as_string":"2017-02-10T00:37:00.000Z","key":1486687020000,"doc_count":11},{"key_as_string":"2017-02-10T00:38:00.000Z","key":1486687080000,"doc_count":12},{"key_as_string":"2017-02-10T00:39:00.000Z","key":1486687140000,"doc_count":11},{"key_as_string":"2017-02-10T00:40:00.000Z","key":1486687200000,"doc_count":9},{"key_as_string":"2017-02-10T00:41:00.000Z","key":1486687260000,"doc_count":15},{"key_as_string":"2017-02-10T00:42:00.000Z","key":1486687320000,"doc_count":11},{"key_as_string":"2017-02-10T00:43:00.000Z","key":1486687380000,"doc_count":10},{"key_as_string":"2017-02-10T00:44:00.000Z","key":1486687440000,"doc_count":6},{"key_as_string":"2017-02-10T00:45:00.000Z","key":1486687500000,"doc_count":9},{"key_as_string":"2017-02-10T00:46:00.000Z","key":1486687560000,"doc_count":6},{"key_as_string":"2017-02-10T00:47:00.000Z","key":1486687620000,"doc_count":15},{"key_as_string":"2017-02-10T00:48:00.000Z","key":1486687680000,"doc_count":5},{"key_as_string":"2017-02-10T00:49:00.000Z","key":1486687740000,"doc_count":8},{"key_as_string":"2017-02-10T00:50:00.000Z","key":1486687800000,"doc_count":14},{"key_as_string":"2017-02-10T00:51:00.000Z","key":1486687860000,"doc_count":8},{"key_as_string":"2017-02-10T00:52:00.000Z","key":1486687920000,"doc_count":10},{"key_as_string":"2017-02-10T00:53:00.000Z","key":1486687980000,"doc_count":11},{"key_as_string":"2017-02-10T00:54:00.000Z","key":1486688040000,"doc_count":11},{"key_as_string":"2017-02-10T00:55:00.000Z","key":1486688100000,"doc_count":14},{"key_as_string":"2017-02-10T00:56:00.000Z","key":1486688160000,"doc_count":11},{"key_as_string":"2017-02-10T00:57:00.000Z","key":1486688220000,"doc_count":9},{"key_as_string":"2017-02-10T00:58:00.000Z","key":1486688280000,"doc_count":10},{"key_as_string":"2017-02-10T00:59:00.000Z","key":1486688340000,"doc_count":12},{"key_as_string":"2017-02-10T01:00:00.000Z","key":1486688400000,"doc_count":8},{"key_as_string":"2017-02-10T01:01:00.000Z","key":1486688460000,"doc_count":14},{"key_as_string":"2017-02-10T01:02:00.000Z","key":1486688520000,"doc_count":10},{"key_as_string":"2017-02-10T01:03:00.000Z","key":1486688580000,"doc_count":7},{"key_as_string":"2017-02-10T01:04:00.000Z","key":1486688640000,"doc_count":14},{"key_as_string":"2017-02-10T01:05:00.000Z","key":1486688700000,"doc_count":5},{"key_as_string":"2017-02-10T01:06:00.000Z","key":1486688760000,"doc_count":19},{"key_as_string":"2017-02-10T01:07:00.000Z","key":1486688820000,"doc_count":7},{"key_as_string":"2017-02-10T01:08:00.000Z","key":1486688880000,"doc_count":14},{"key_as_string":"2017-02-10T01:09:00.000Z","key":1486688940000,"doc_count":6},{"key_as_string":"2017-02-10T01:10:00.000Z","key":1486689000000,"doc_count":11},{"key_as_string":"2017-02-10T01:11:00.000Z","key":1486689060000,"doc_count":16},{"key_as_string":"2017-02-10T01:12:00.000Z","key":1486689120000,"doc_count":11},{"key_as_string":"2017-02-10T01:13:00.000Z","key":1486689180000,"doc_count":6},{"key_as_string":"2017-02-10T01:14:00.000Z","key":1486689240000,"doc_count":10},{"key_as_string":"2017-02-10T01:15:00.000Z","key":1486689300000,"doc_count":10},{"key_as_string":"2017-02-10T01:16:00.000Z","key":1486689360000,"doc_count":10},{"key_as_string":"2017-02-10T01:17:00.000Z","key":1486689420000,"doc_count":11},{"key_as_string":"2017-02-10T01:18:00.000Z","key":1486689480000,"doc_count":7},{"key_as_string":"2017-02-10T01:19:00.000Z","key":1486689540000,"doc_count":8},{"key_as_string":"2017-02-10T01:20:00.000Z","key":1486689600000,"doc_count":17},{"key_as_string":"2017-02-10T01:21:00.000Z","key":1486689660000,"doc_count":12},{"key_as_string":"2017-02-10T01:22:00.000Z","key":1486689720000,"doc_count":12},{"key_as_string":"2017-02-10T01:23:00.000Z","key":1486689780000,"doc_count":12},{"key_as_string":"2017-02-10T01:24:00.000Z","key":1486689840000,"doc_count":13},{"key_as_string":"2017-02-10T01:25:00.000Z","key":1486689900000,"doc_count":9},{"key_as_string":"2017-02-10T01:26:00.000Z","key":1486689960000,"doc_count":8},{"key_as_string":"2017-02-10T01:27:00.000Z","key":1486690020000,"doc_count":9},{"key_as_string":"2017-02-10T01:28:00.000Z","key":1486690080000,"doc_count":10},{"key_as_string":"2017-02-10T01:29:00.000Z","key":1486690140000,"doc_count":11},{"key_as_string":"2017-02-10T01:30:00.000Z","key":1486690200000,"doc_count":5},{"key_as_string":"2017-02-10T01:31:00.000Z","key":1486690260000,"doc_count":12},{"key_as_string":"2017-02-10T01:32:00.000Z","key":1486690320000,"doc_count":8},{"key_as_string":"2017-02-10T01:33:00.000Z","key":1486690380000,"doc_count":8},{"key_as_string":"2017-02-10T01:34:00.000Z","key":1486690440000,"doc_count":11},{"key_as_string":"2017-02-10T01:35:00.000Z","key":1486690500000,"doc_count":7},{"key_as_string":"2017-02-10T01:36:00.000Z","key":1486690560000,"doc_count":16},{"key_as_string":"2017-02-10T01:37:00.000Z","key":1486690620000,"doc_count":9},{"key_as_string":"2017-02-10T01:38:00.000Z","key":1486690680000,"doc_count":3},{"key_as_string":"2017-02-10T01:39:00.000Z","key":1486690740000,"doc_count":14},{"key_as_string":"2017-02-10T01:40:00.000Z","key":1486690800000,"doc_count":3},{"key_as_string":"2017-02-10T01:41:00.000Z","key":1486690860000,"doc_count":14},{"key_as_string":"2017-02-10T01:42:00.000Z","key":1486690920000,"doc_count":11},{"key_as_string":"2017-02-10T01:43:00.000Z","key":1486690980000,"doc_count":8},{"key_as_string":"2017-02-10T01:44:00.000Z","key":1486691040000,"doc_count":13},{"key_as_string":"2017-02-10T01:45:00.000Z","key":1486691100000,"doc_count":6},{"key_as_string":"2017-02-10T01:46:00.000Z","key":1486691160000,"doc_count":16},{"key_as_string":"2017-02-10T01:47:00.000Z","key":1486691220000,"doc_count":12},{"key_as_string":"2017-02-10T01:48:00.000Z","key":1486691280000,"doc_count":8},{"key_as_string":"2017-02-10T01:49:00.000Z","key":1486691340000,"doc_count":17},{"key_as_string":"2017-02-10T01:50:00.000Z","key":1486691400000,"doc_count":9},{"key_as_string":"2017-02-10T01:51:00.000Z","key":1486691460000,"doc_count":11},{"key_as_string":"2017-02-10T01:52:00.000Z","key":1486691520000,"doc_count":10},{"key_as_string":"2017-02-10T01:53:00.000Z","key":1486691580000,"doc_count":13},{"key_as_string":"2017-02-10T01:54:00.000Z","key":1486691640000,"doc_count":11},{"key_as_string":"2017-02-10T01:55:00.000Z","key":1486691700000,"doc_count":9},{"key_as_string":"2017-02-10T01:56:00.000Z","key":1486691760000,"doc_count":11},{"key_as_string":"2017-02-10T01:57:00.000Z","key":1486691820000,"doc_count":8},{"key_as_string":"2017-02-10T01:58:00.000Z","key":1486691880000,"doc_count":14},{"key_as_string":"2017-02-10T01:59:00.000Z","key":1486691940000,"doc_count":8},{"key_as_string":"2017-02-10T02:00:00.000Z","key":1486692000000,"doc_count":4},{"key_as_string":"2017-02-10T02:01:00.000Z","key":1486692060000,"doc_count":13},{"key_as_string":"2017-02-10T02:02:00.000Z","key":1486692120000,"doc_count":8},{"key_as_string":"2017-02-10T02:03:00.000Z","key":1486692180000,"doc_count":9},{"key_as_string":"2017-02-10T02:04:00.000Z","key":1486692240000,"doc_count":9},{"key_as_string":"2017-02-10T02:05:00.000Z","key":1486692300000,"doc_count":14},{"key_as_string":"2017-02-10T02:06:00.000Z","key":1486692360000,"doc_count":7},{"key_as_string":"2017-02-10T02:07:00.000Z","key":1486692420000,"doc_count":9},{"key_as_string":"2017-02-10T02:08:00.000Z","key":1486692480000,"doc_count":16},{"key_as_string":"2017-02-10T02:09:00.000Z","key":1486692540000,"doc_count":10},{"key_as_string":"2017-02-10T02:10:00.000Z","key":1486692600000,"doc_count":11},{"key_as_string":"2017-02-10T02:11:00.000Z","key":1486692660000,"doc_count":7},{"key_as_string":"2017-02-10T02:12:00.000Z","key":1486692720000,"doc_count":12},{"key_as_string":"2017-02-10T02:13:00.000Z","key":1486692780000,"doc_count":11},{"key_as_string":"2017-02-10T02:14:00.000Z","key":1486692840000,"doc_count":5},{"key_as_string":"2017-02-10T02:15:00.000Z","key":1486692900000,"doc_count":14},{"key_as_string":"2017-02-10T02:16:00.000Z","key":1486692960000,"doc_count":13},{"key_as_string":"2017-02-10T02:17:00.000Z","key":1486693020000,"doc_count":7},{"key_as_string":"2017-02-10T02:18:00.000Z","key":1486693080000,"doc_count":11},{"key_as_string":"2017-02-10T02:19:00.000Z","key":1486693140000,"doc_count":10},{"key_as_string":"2017-02-10T02:20:00.000Z","key":1486693200000,"doc_count":8},{"key_as_string":"2017-02-10T02:21:00.000Z","key":1486693260000,"doc_count":9},{"key_as_string":"2017-02-10T02:22:00.000Z","key":1486693320000,"doc_count":12},{"key_as_string":"2017-02-10T02:23:00.000Z","key":1486693380000,"doc_count":14},{"key_as_string":"2017-02-10T02:24:00.000Z","key":1486693440000,"doc_count":8},{"key_as_string":"2017-02-10T02:25:00.000Z","key":1486693500000,"doc_count":10},{"key_as_string":"2017-02-10T02:26:00.000Z","key":1486693560000,"doc_count":10},{"key_as_string":"2017-02-10T02:27:00.000Z","key":1486693620000,"doc_count":8},{"key_as_string":"2017-02-10T02:28:00.000Z","key":1486693680000,"doc_count":7},{"key_as_string":"2017-02-10T02:29:00.000Z","key":1486693740000,"doc_count":7},{"key_as_string":"2017-02-10T02:30:00.000Z","key":1486693800000,"doc_count":13},{"key_as_string":"2017-02-10T02:31:00.000Z","key":1486693860000,"doc_count":7},{"key_as_string":"2017-02-10T02:32:00.000Z","key":1486693920000,"doc_count":14},{"key_as_string":"2017-02-10T02:33:00.000Z","key":1486693980000,"doc_count":8},{"key_as_string":"2017-02-10T02:34:00.000Z","key":1486694040000,"doc_count":10},{"key_as_string":"2017-02-10T02:35:00.000Z","key":1486694100000,"doc_count":10},{"key_as_string":"2017-02-10T02:36:00.000Z","key":1486694160000,"doc_count":10},{"key_as_string":"2017-02-10T02:37:00.000Z","key":1486694220000,"doc_count":13},{"key_as_string":"2017-02-10T02:38:00.000Z","key":1486694280000,"doc_count":7},{"key_as_string":"2017-02-10T02:39:00.000Z","key":1486694340000,"doc_count":13},{"key_as_string":"2017-02-10T02:40:00.000Z","key":1486694400000,"doc_count":14},{"key_as_string":"2017-02-10T02:41:00.000Z","key":1486694460000,"doc_count":12},{"key_as_string":"2017-02-10T02:42:00.000Z","key":1486694520000,"doc_count":9},{"key_as_string":"2017-02-10T02:43:00.000Z","key":1486694580000,"doc_count":9},{"key_as_string":"2017-02-10T02:44:00.000Z","key":1486694640000,"doc_count":10},{"key_as_string":"2017-02-10T02:45:00.000Z","key":1486694700000,"doc_count":15},{"key_as_string":"2017-02-10T02:46:00.000Z","key":1486694760000,"doc_count":8},{"key_as_string":"2017-02-10T02:47:00.000Z","key":1486694820000,"doc_count":11},{"key_as_string":"2017-02-10T02:48:00.000Z","key":1486694880000,"doc_count":12},{"key_as_string":"2017-02-10T02:49:00.000Z","key":1486694940000,"doc_count":10},{"key_as_string":"2017-02-10T02:50:00.000Z","key":1486695000000,"doc_count":9},{"key_as_string":"2017-02-10T02:51:00.000Z","key":1486695060000,"doc_count":16},{"key_as_string":"2017-02-10T02:52:00.000Z","key":1486695120000,"doc_count":8},{"key_as_string":"2017-02-10T02:53:00.000Z","key":1486695180000,"doc_count":9},{"key_as_string":"2017-02-10T02:54:00.000Z","key":1486695240000,"doc_count":15},{"key_as_string":"2017-02-10T02:55:00.000Z","key":1486695300000,"doc_count":9},{"key_as_string":"2017-02-10T02:56:00.000Z","key":1486695360000,"doc_count":9},{"key_as_string":"2017-02-10T02:57:00.000Z","key":1486695420000,"doc_count":9},{"key_as_string":"2017-02-10T02:58:00.000Z","key":1486695480000,"doc_count":10},{"key_as_string":"2017-02-10T02:59:00.000Z","key":1486695540000,"doc_count":10},{"key_as_string":"2017-02-10T03:00:00.000Z","key":1486695600000,"doc_count":16},{"key_as_string":"2017-02-10T03:01:00.000Z","key":1486695660000,"doc_count":7},{"key_as_string":"2017-02-10T03:02:00.000Z","key":1486695720000,"doc_count":11},{"key_as_string":"2017-02-10T03:03:00.000Z","key":1486695780000,"doc_count":15},{"key_as_string":"2017-02-10T03:04:00.000Z","key":1486695840000,"doc_count":7},{"key_as_string":"2017-02-10T03:05:00.000Z","key":1486695900000,"doc_count":9},{"key_as_string":"2017-02-10T03:06:00.000Z","key":1486695960000,"doc_count":9},{"key_as_string":"2017-02-10T03:07:00.000Z","key":1486696020000,"doc_count":10},{"key_as_string":"2017-02-10T03:08:00.000Z","key":1486696080000,"doc_count":10},{"key_as_string":"2017-02-10T03:09:00.000Z","key":1486696140000,"doc_count":18},{"key_as_string":"2017-02-10T03:10:00.000Z","key":1486696200000,"doc_count":13},{"key_as_string":"2017-02-10T03:11:00.000Z","key":1486696260000,"doc_count":8},{"key_as_string":"2017-02-10T03:12:00.000Z","key":1486696320000,"doc_count":11},{"key_as_string":"2017-02-10T03:13:00.000Z","key":1486696380000,"doc_count":9},{"key_as_string":"2017-02-10T03:14:00.000Z","key":1486696440000,"doc_count":10},{"key_as_string":"2017-02-10T03:15:00.000Z","key":1486696500000,"doc_count":16},{"key_as_string":"2017-02-10T03:16:00.000Z","key":1486696560000,"doc_count":10},{"key_as_string":"2017-02-10T03:17:00.000Z","key":1486696620000,"doc_count":13},{"key_as_string":"2017-02-10T03:18:00.000Z","key":1486696680000,"doc_count":7},{"key_as_string":"2017-02-10T03:19:00.000Z","key":1486696740000,"doc_count":13},{"key_as_string":"2017-02-10T03:20:00.000Z","key":1486696800000,"doc_count":9},{"key_as_string":"2017-02-10T03:21:00.000Z","key":1486696860000,"doc_count":8},{"key_as_string":"2017-02-10T03:22:00.000Z","key":1486696920000,"doc_count":16},{"key_as_string":"2017-02-10T03:23:00.000Z","key":1486696980000,"doc_count":9},{"key_as_string":"2017-02-10T03:24:00.000Z","key":1486697040000,"doc_count":14},{"key_as_string":"2017-02-10T03:25:00.000Z","key":1486697100000,"doc_count":11},{"key_as_string":"2017-02-10T03:26:00.000Z","key":1486697160000,"doc_count":11},{"key_as_string":"2017-02-10T03:27:00.000Z","key":1486697220000,"doc_count":9},{"key_as_string":"2017-02-10T03:28:00.000Z","key":1486697280000,"doc_count":9},{"key_as_string":"2017-02-10T03:29:00.000Z","key":1486697340000,"doc_count":11},{"key_as_string":"2017-02-10T03:30:00.000Z","key":1486697400000,"doc_count":7},{"key_as_string":"2017-02-10T03:31:00.000Z","key":1486697460000,"doc_count":14},{"key_as_string":"2017-02-10T03:32:00.000Z","key":1486697520000,"doc_count":7},{"key_as_string":"2017-02-10T03:33:00.000Z","key":1486697580000,"doc_count":14},{"key_as_string":"2017-02-10T03:34:00.000Z","key":1486697640000,"doc_count":8},{"key_as_string":"2017-02-10T03:35:00.000Z","key":1486697700000,"doc_count":8},{"key_as_string":"2017-02-10T03:36:00.000Z","key":1486697760000,"doc_count":15},{"key_as_string":"2017-02-10T03:37:00.000Z","key":1486697820000,"doc_count":9},{"key_as_string":"2017-02-10T03:38:00.000Z","key":1486697880000,"doc_count":12},{"key_as_string":"2017-02-10T03:39:00.000Z","key":1486697940000,"doc_count":15},{"key_as_string":"2017-02-10T03:40:00.000Z","key":1486698000000,"doc_count":12},{"key_as_string":"2017-02-10T03:41:00.000Z","key":1486698060000,"doc_count":12},{"key_as_string":"2017-02-10T03:42:00.000Z","key":1486698120000,"doc_count":10},{"key_as_string":"2017-02-10T03:43:00.000Z","key":1486698180000,"doc_count":11},{"key_as_string":"2017-02-10T03:44:00.000Z","key":1486698240000,"doc_count":12},{"key_as_string":"2017-02-10T03:45:00.000Z","key":1486698300000,"doc_count":9},{"key_as_string":"2017-02-10T03:46:00.000Z","key":1486698360000,"doc_count":13},{"key_as_string":"2017-02-10T03:47:00.000Z","key":1486698420000,"doc_count":8},{"key_as_string":"2017-02-10T03:48:00.000Z","key":1486698480000,"doc_count":15},{"key_as_string":"2017-02-10T03:49:00.000Z","key":1486698540000,"doc_count":8},{"key_as_string":"2017-02-10T03:50:00.000Z","key":1486698600000,"doc_count":12},{"key_as_string":"2017-02-10T03:51:00.000Z","key":1486698660000,"doc_count":16},{"key_as_string":"2017-02-10T03:52:00.000Z","key":1486698720000,"doc_count":7},{"key_as_string":"2017-02-10T03:53:00.000Z","key":1486698780000,"doc_count":12},{"key_as_string":"2017-02-10T03:54:00.000Z","key":1486698840000,"doc_count":8},{"key_as_string":"2017-02-10T03:55:00.000Z","key":1486698900000,"doc_count":7},{"key_as_string":"2017-02-10T03:56:00.000Z","key":1486698960000,"doc_count":13},{"key_as_string":"2017-02-10T03:57:00.000Z","key":1486699020000,"doc_count":8},{"key_as_string":"2017-02-10T03:58:00.000Z","key":1486699080000,"doc_count":10},{"key_as_string":"2017-02-10T03:59:00.000Z","key":1486699140000,"doc_count":13},{"key_as_string":"2017-02-10T04:00:00.000Z","key":1486699200000,"doc_count":11},{"key_as_string":"2017-02-10T04:01:00.000Z","key":1486699260000,"doc_count":10},{"key_as_string":"2017-02-10T04:02:00.000Z","key":1486699320000,"doc_count":12},{"key_as_string":"2017-02-10T04:03:00.000Z","key":1486699380000,"doc_count":9},{"key_as_string":"2017-02-10T04:04:00.000Z","key":1486699440000,"doc_count":13},{"key_as_string":"2017-02-10T04:05:00.000Z","key":1486699500000,"doc_count":8},{"key_as_string":"2017-02-10T04:06:00.000Z","key":1486699560000,"doc_count":15},{"key_as_string":"2017-02-10T04:07:00.000Z","key":1486699620000,"doc_count":11},{"key_as_string":"2017-02-10T04:08:00.000Z","key":1486699680000,"doc_count":11},{"key_as_string":"2017-02-10T04:09:00.000Z","key":1486699740000,"doc_count":16},{"key_as_string":"2017-02-10T04:10:00.000Z","key":1486699800000,"doc_count":8},{"key_as_string":"2017-02-10T04:11:00.000Z","key":1486699860000,"doc_count":15},{"key_as_string":"2017-02-10T04:12:00.000Z","key":1486699920000,"doc_count":8},{"key_as_string":"2017-02-10T04:13:00.000Z","key":1486699980000,"doc_count":11},{"key_as_string":"2017-02-10T04:14:00.000Z","key":1486700040000,"doc_count":11},{"key_as_string":"2017-02-10T04:15:00.000Z","key":1486700100000,"doc_count":13},{"key_as_string":"2017-02-10T04:16:00.000Z","key":1486700160000,"doc_count":6},{"key_as_string":"2017-02-10T04:17:00.000Z","key":1486700220000,"doc_count":11},{"key_as_string":"2017-02-10T04:18:00.000Z","key":1486700280000,"doc_count":11},{"key_as_string":"2017-02-10T04:19:00.000Z","key":1486700340000,"doc_count":9},{"key_as_string":"2017-02-10T04:20:00.000Z","key":1486700400000,"doc_count":17},{"key_as_string":"2017-02-10T04:21:00.000Z","key":1486700460000,"doc_count":7},{"key_as_string":"2017-02-10T04:22:00.000Z","key":1486700520000,"doc_count":14},{"key_as_string":"2017-02-10T04:23:00.000Z","key":1486700580000,"doc_count":13},{"key_as_string":"2017-02-10T04:24:00.000Z","key":1486700640000,"doc_count":7},{"key_as_string":"2017-02-10T04:25:00.000Z","key":1486700700000,"doc_count":11},{"key_as_string":"2017-02-10T04:26:00.000Z","key":1486700760000,"doc_count":12},{"key_as_string":"2017-02-10T04:27:00.000Z","key":1486700820000,"doc_count":11},{"key_as_string":"2017-02-10T04:28:00.000Z","key":1486700880000,"doc_count":9},{"key_as_string":"2017-02-10T04:29:00.000Z","key":1486700940000,"doc_count":9},{"key_as_string":"2017-02-10T04:30:00.000Z","key":1486701000000,"doc_count":10},{"key_as_string":"2017-02-10T04:31:00.000Z","key":1486701060000,"doc_count":10},{"key_as_string":"2017-02-10T04:32:00.000Z","key":1486701120000,"doc_count":10},{"key_as_string":"2017-02-10T04:33:00.000Z","key":1486701180000,"doc_count":11},{"key_as_string":"2017-02-10T04:34:00.000Z","key":1486701240000,"doc_count":13},{"key_as_string":"2017-02-10T04:35:00.000Z","key":1486701300000,"doc_count":6},{"key_as_string":"2017-02-10T04:36:00.000Z","key":1486701360000,"doc_count":8},{"key_as_string":"2017-02-10T04:37:00.000Z","key":1486701420000,"doc_count":14},{"key_as_string":"2017-02-10T04:38:00.000Z","key":1486701480000,"doc_count":9},{"key_as_string":"2017-02-10T04:39:00.000Z","key":1486701540000,"doc_count":12},{"key_as_string":"2017-02-10T04:40:00.000Z","key":1486701600000,"doc_count":10},{"key_as_string":"2017-02-10T04:41:00.000Z","key":1486701660000,"doc_count":9},{"key_as_string":"2017-02-10T04:42:00.000Z","key":1486701720000,"doc_count":10},{"key_as_string":"2017-02-10T04:43:00.000Z","key":1486701780000,"doc_count":9},{"key_as_string":"2017-02-10T04:44:00.000Z","key":1486701840000,"doc_count":11},{"key_as_string":"2017-02-10T04:45:00.000Z","key":1486701900000,"doc_count":10},{"key_as_string":"2017-02-10T04:46:00.000Z","key":1486701960000,"doc_count":19},{"key_as_string":"2017-02-10T04:47:00.000Z","key":1486702020000,"doc_count":11},{"key_as_string":"2017-02-10T04:48:00.000Z","key":1486702080000,"doc_count":10},{"key_as_string":"2017-02-10T04:49:00.000Z","key":1486702140000,"doc_count":10},{"key_as_string":"2017-02-10T04:50:00.000Z","key":1486702200000,"doc_count":10},{"key_as_string":"2017-02-10T04:51:00.000Z","key":1486702260000,"doc_count":11},{"key_as_string":"2017-02-10T04:52:00.000Z","key":1486702320000,"doc_count":17},{"key_as_string":"2017-02-10T04:53:00.000Z","key":1486702380000,"doc_count":6},{"key_as_string":"2017-02-10T04:54:00.000Z","key":1486702440000,"doc_count":7},{"key_as_string":"2017-02-10T04:55:00.000Z","key":1486702500000,"doc_count":10},{"key_as_string":"2017-02-10T04:56:00.000Z","key":1486702560000,"doc_count":10},{"key_as_string":"2017-02-10T04:57:00.000Z","key":1486702620000,"doc_count":10},{"key_as_string":"2017-02-10T04:58:00.000Z","key":1486702680000,"doc_count":11},{"key_as_string":"2017-02-10T04:59:00.000Z","key":1486702740000,"doc_count":10},{"key_as_string":"2017-02-10T05:00:00.000Z","key":1486702800000,"doc_count":8},{"key_as_string":"2017-02-10T05:01:00.000Z","key":1486702860000,"doc_count":13},{"key_as_string":"2017-02-10T05:02:00.000Z","key":1486702920000,"doc_count":11},{"key_as_string":"2017-02-10T05:03:00.000Z","key":1486702980000,"doc_count":7},{"key_as_string":"2017-02-10T05:04:00.000Z","key":1486703040000,"doc_count":10},{"key_as_string":"2017-02-10T05:05:00.000Z","key":1486703100000,"doc_count":10},{"key_as_string":"2017-02-10T05:06:00.000Z","key":1486703160000,"doc_count":10},{"key_as_string":"2017-02-10T05:07:00.000Z","key":1486703220000,"doc_count":9},{"key_as_string":"2017-02-10T05:08:00.000Z","key":1486703280000,"doc_count":9},{"key_as_string":"2017-02-10T05:09:00.000Z","key":1486703340000,"doc_count":15},{"key_as_string":"2017-02-10T05:10:00.000Z","key":1486703400000,"doc_count":12},{"key_as_string":"2017-02-10T05:11:00.000Z","key":1486703460000,"doc_count":11},{"key_as_string":"2017-02-10T05:12:00.000Z","key":1486703520000,"doc_count":11},{"key_as_string":"2017-02-10T05:13:00.000Z","key":1486703580000,"doc_count":10},{"key_as_string":"2017-02-10T05:14:00.000Z","key":1486703640000,"doc_count":14},{"key_as_string":"2017-02-10T05:15:00.000Z","key":1486703700000,"doc_count":9},{"key_as_string":"2017-02-10T05:16:00.000Z","key":1486703760000,"doc_count":11},{"key_as_string":"2017-02-10T05:17:00.000Z","key":1486703820000,"doc_count":8},{"key_as_string":"2017-02-10T05:18:00.000Z","key":1486703880000,"doc_count":11},{"key_as_string":"2017-02-10T05:19:00.000Z","key":1486703940000,"doc_count":7},{"key_as_string":"2017-02-10T05:20:00.000Z","key":1486704000000,"doc_count":13},{"key_as_string":"2017-02-10T05:21:00.000Z","key":1486704060000,"doc_count":10},{"key_as_string":"2017-02-10T05:22:00.000Z","key":1486704120000,"doc_count":13},{"key_as_string":"2017-02-10T05:23:00.000Z","key":1486704180000,"doc_count":11},{"key_as_string":"2017-02-10T05:24:00.000Z","key":1486704240000,"doc_count":10},{"key_as_string":"2017-02-10T05:25:00.000Z","key":1486704300000,"doc_count":16},{"key_as_string":"2017-02-10T05:26:00.000Z","key":1486704360000,"doc_count":10},{"key_as_string":"2017-02-10T05:27:00.000Z","key":1486704420000,"doc_count":12},{"key_as_string":"2017-02-10T05:28:00.000Z","key":1486704480000,"doc_count":15},{"key_as_string":"2017-02-10T05:29:00.000Z","key":1486704540000,"doc_count":9},{"key_as_string":"2017-02-10T05:30:00.000Z","key":1486704600000,"doc_count":11},{"key_as_string":"2017-02-10T05:31:00.000Z","key":1486704660000,"doc_count":8},{"key_as_string":"2017-02-10T05:32:00.000Z","key":1486704720000,"doc_count":10},{"key_as_string":"2017-02-10T05:33:00.000Z","key":1486704780000,"doc_count":12},{"key_as_string":"2017-02-10T05:34:00.000Z","key":1486704840000,"doc_count":11},{"key_as_string":"2017-02-10T05:35:00.000Z","key":1486704900000,"doc_count":8},{"key_as_string":"2017-02-10T05:36:00.000Z","key":1486704960000,"doc_count":12},{"key_as_string":"2017-02-10T05:37:00.000Z","key":1486705020000,"doc_count":8},{"key_as_string":"2017-02-10T05:38:00.000Z","key":1486705080000,"doc_count":8},{"key_as_string":"2017-02-10T05:39:00.000Z","key":1486705140000,"doc_count":12},{"key_as_string":"2017-02-10T05:40:00.000Z","key":1486705200000,"doc_count":14},{"key_as_string":"2017-02-10T05:41:00.000Z","key":1486705260000,"doc_count":15},{"key_as_string":"2017-02-10T05:42:00.000Z","key":1486705320000,"doc_count":5},{"key_as_string":"2017-02-10T05:43:00.000Z","key":1486705380000,"doc_count":11},{"key_as_string":"2017-02-10T05:44:00.000Z","key":1486705440000,"doc_count":12},{"key_as_string":"2017-02-10T05:45:00.000Z","key":1486705500000,"doc_count":6},{"key_as_string":"2017-02-10T05:46:00.000Z","key":1486705560000,"doc_count":12},{"key_as_string":"2017-02-10T05:47:00.000Z","key":1486705620000,"doc_count":10},{"key_as_string":"2017-02-10T05:48:00.000Z","key":1486705680000,"doc_count":12},{"key_as_string":"2017-02-10T05:49:00.000Z","key":1486705740000,"doc_count":17},{"key_as_string":"2017-02-10T05:50:00.000Z","key":1486705800000,"doc_count":10},{"key_as_string":"2017-02-10T05:51:00.000Z","key":1486705860000,"doc_count":13},{"key_as_string":"2017-02-10T05:52:00.000Z","key":1486705920000,"doc_count":13},{"key_as_string":"2017-02-10T05:53:00.000Z","key":1486705980000,"doc_count":10},{"key_as_string":"2017-02-10T05:54:00.000Z","key":1486706040000,"doc_count":10},{"key_as_string":"2017-02-10T05:55:00.000Z","key":1486706100000,"doc_count":15},{"key_as_string":"2017-02-10T05:56:00.000Z","key":1486706160000,"doc_count":8},{"key_as_string":"2017-02-10T05:57:00.000Z","key":1486706220000,"doc_count":10},{"key_as_string":"2017-02-10T05:58:00.000Z","key":1486706280000,"doc_count":11},{"key_as_string":"2017-02-10T05:59:00.000Z","key":1486706340000,"doc_count":10},{"key_as_string":"2017-02-10T06:00:00.000Z","key":1486706400000,"doc_count":19},{"key_as_string":"2017-02-10T06:01:00.000Z","key":1486706460000,"doc_count":13},{"key_as_string":"2017-02-10T06:02:00.000Z","key":1486706520000,"doc_count":14},{"key_as_string":"2017-02-10T06:03:00.000Z","key":1486706580000,"doc_count":11},{"key_as_string":"2017-02-10T06:04:00.000Z","key":1486706640000,"doc_count":13},{"key_as_string":"2017-02-10T06:05:00.000Z","key":1486706700000,"doc_count":6},{"key_as_string":"2017-02-10T06:06:00.000Z","key":1486706760000,"doc_count":12},{"key_as_string":"2017-02-10T06:07:00.000Z","key":1486706820000,"doc_count":14},{"key_as_string":"2017-02-10T06:08:00.000Z","key":1486706880000,"doc_count":12},{"key_as_string":"2017-02-10T06:09:00.000Z","key":1486706940000,"doc_count":14},{"key_as_string":"2017-02-10T06:10:00.000Z","key":1486707000000,"doc_count":8},{"key_as_string":"2017-02-10T06:11:00.000Z","key":1486707060000,"doc_count":6},{"key_as_string":"2017-02-10T06:12:00.000Z","key":1486707120000,"doc_count":17},{"key_as_string":"2017-02-10T06:13:00.000Z","key":1486707180000,"doc_count":14},{"key_as_string":"2017-02-10T06:14:00.000Z","key":1486707240000,"doc_count":5},{"key_as_string":"2017-02-10T06:15:00.000Z","key":1486707300000,"doc_count":17},{"key_as_string":"2017-02-10T06:16:00.000Z","key":1486707360000,"doc_count":9},{"key_as_string":"2017-02-10T06:17:00.000Z","key":1486707420000,"doc_count":13},{"key_as_string":"2017-02-10T06:18:00.000Z","key":1486707480000,"doc_count":8},{"key_as_string":"2017-02-10T06:19:00.000Z","key":1486707540000,"doc_count":14},{"key_as_string":"2017-02-10T06:20:00.000Z","key":1486707600000,"doc_count":8},{"key_as_string":"2017-02-10T06:21:00.000Z","key":1486707660000,"doc_count":11},{"key_as_string":"2017-02-10T06:22:00.000Z","key":1486707720000,"doc_count":15},{"key_as_string":"2017-02-10T06:23:00.000Z","key":1486707780000,"doc_count":16},{"key_as_string":"2017-02-10T06:24:00.000Z","key":1486707840000,"doc_count":11},{"key_as_string":"2017-02-10T06:25:00.000Z","key":1486707900000,"doc_count":10},{"key_as_string":"2017-02-10T06:26:00.000Z","key":1486707960000,"doc_count":8},{"key_as_string":"2017-02-10T06:27:00.000Z","key":1486708020000,"doc_count":18},{"key_as_string":"2017-02-10T06:28:00.000Z","key":1486708080000,"doc_count":11},{"key_as_string":"2017-02-10T06:29:00.000Z","key":1486708140000,"doc_count":10},{"key_as_string":"2017-02-10T06:30:00.000Z","key":1486708200000,"doc_count":9},{"key_as_string":"2017-02-10T06:31:00.000Z","key":1486708260000,"doc_count":13},{"key_as_string":"2017-02-10T06:32:00.000Z","key":1486708320000,"doc_count":10},{"key_as_string":"2017-02-10T06:33:00.000Z","key":1486708380000,"doc_count":12},{"key_as_string":"2017-02-10T06:34:00.000Z","key":1486708440000,"doc_count":10},{"key_as_string":"2017-02-10T06:35:00.000Z","key":1486708500000,"doc_count":9},{"key_as_string":"2017-02-10T06:36:00.000Z","key":1486708560000,"doc_count":17},{"key_as_string":"2017-02-10T06:37:00.000Z","key":1486708620000,"doc_count":15},{"key_as_string":"2017-02-10T06:38:00.000Z","key":1486708680000,"doc_count":11},{"key_as_string":"2017-02-10T06:39:00.000Z","key":1486708740000,"doc_count":12},{"key_as_string":"2017-02-10T06:40:00.000Z","key":1486708800000,"doc_count":11},{"key_as_string":"2017-02-10T06:41:00.000Z","key":1486708860000,"doc_count":13},{"key_as_string":"2017-02-10T06:42:00.000Z","key":1486708920000,"doc_count":10},{"key_as_string":"2017-02-10T06:43:00.000Z","key":1486708980000,"doc_count":12},{"key_as_string":"2017-02-10T06:44:00.000Z","key":1486709040000,"doc_count":14},{"key_as_string":"2017-02-10T06:45:00.000Z","key":1486709100000,"doc_count":7},{"key_as_string":"2017-02-10T06:46:00.000Z","key":1486709160000,"doc_count":17},{"key_as_string":"2017-02-10T06:47:00.000Z","key":1486709220000,"doc_count":9},{"key_as_string":"2017-02-10T06:48:00.000Z","key":1486709280000,"doc_count":12},{"key_as_string":"2017-02-10T06:49:00.000Z","key":1486709340000,"doc_count":14},{"key_as_string":"2017-02-10T06:50:00.000Z","key":1486709400000,"doc_count":15},{"key_as_string":"2017-02-10T06:51:00.000Z","key":1486709460000,"doc_count":12},{"key_as_string":"2017-02-10T06:52:00.000Z","key":1486709520000,"doc_count":8},{"key_as_string":"2017-02-10T06:53:00.000Z","key":1486709580000,"doc_count":13},{"key_as_string":"2017-02-10T06:54:00.000Z","key":1486709640000,"doc_count":15},{"key_as_string":"2017-02-10T06:55:00.000Z","key":1486709700000,"doc_count":8},{"key_as_string":"2017-02-10T06:56:00.000Z","key":1486709760000,"doc_count":7},{"key_as_string":"2017-02-10T06:57:00.000Z","key":1486709820000,"doc_count":18},{"key_as_string":"2017-02-10T06:58:00.000Z","key":1486709880000,"doc_count":11},{"key_as_string":"2017-02-10T06:59:00.000Z","key":1486709940000,"doc_count":14},{"key_as_string":"2017-02-10T07:00:00.000Z","key":1486710000000,"doc_count":8},{"key_as_string":"2017-02-10T07:01:00.000Z","key":1486710060000,"doc_count":12},{"key_as_string":"2017-02-10T07:02:00.000Z","key":1486710120000,"doc_count":14},{"key_as_string":"2017-02-10T07:03:00.000Z","key":1486710180000,"doc_count":9},{"key_as_string":"2017-02-10T07:04:00.000Z","key":1486710240000,"doc_count":13},{"key_as_string":"2017-02-10T07:05:00.000Z","key":1486710300000,"doc_count":12},{"key_as_string":"2017-02-10T07:06:00.000Z","key":1486710360000,"doc_count":15},{"key_as_string":"2017-02-10T07:07:00.000Z","key":1486710420000,"doc_count":19},{"key_as_string":"2017-02-10T07:08:00.000Z","key":1486710480000,"doc_count":11},{"key_as_string":"2017-02-10T07:09:00.000Z","key":1486710540000,"doc_count":16},{"key_as_string":"2017-02-10T07:10:00.000Z","key":1486710600000,"doc_count":11},{"key_as_string":"2017-02-10T07:11:00.000Z","key":1486710660000,"doc_count":13},{"key_as_string":"2017-02-10T07:12:00.000Z","key":1486710720000,"doc_count":12},{"key_as_string":"2017-02-10T07:13:00.000Z","key":1486710780000,"doc_count":9},{"key_as_string":"2017-02-10T07:14:00.000Z","key":1486710840000,"doc_count":21},{"key_as_string":"2017-02-10T07:15:00.000Z","key":1486710900000,"doc_count":11},{"key_as_string":"2017-02-10T07:16:00.000Z","key":1486710960000,"doc_count":6},{"key_as_string":"2017-02-10T07:17:00.000Z","key":1486711020000,"doc_count":16},{"key_as_string":"2017-02-10T07:18:00.000Z","key":1486711080000,"doc_count":15},{"key_as_string":"2017-02-10T07:19:00.000Z","key":1486711140000,"doc_count":13},{"key_as_string":"2017-02-10T07:20:00.000Z","key":1486711200000,"doc_count":15},{"key_as_string":"2017-02-10T07:21:00.000Z","key":1486711260000,"doc_count":14},{"key_as_string":"2017-02-10T07:22:00.000Z","key":1486711320000,"doc_count":14},{"key_as_string":"2017-02-10T07:23:00.000Z","key":1486711380000,"doc_count":13},{"key_as_string":"2017-02-10T07:24:00.000Z","key":1486711440000,"doc_count":10},{"key_as_string":"2017-02-10T07:25:00.000Z","key":1486711500000,"doc_count":11},{"key_as_string":"2017-02-10T07:26:00.000Z","key":1486711560000,"doc_count":12},{"key_as_string":"2017-02-10T07:27:00.000Z","key":1486711620000,"doc_count":15},{"key_as_string":"2017-02-10T07:28:00.000Z","key":1486711680000,"doc_count":7},{"key_as_string":"2017-02-10T07:29:00.000Z","key":1486711740000,"doc_count":18},{"key_as_string":"2017-02-10T07:30:00.000Z","key":1486711800000,"doc_count":14},{"key_as_string":"2017-02-10T07:31:00.000Z","key":1486711860000,"doc_count":12},{"key_as_string":"2017-02-10T07:32:00.000Z","key":1486711920000,"doc_count":16},{"key_as_string":"2017-02-10T07:33:00.000Z","key":1486711980000,"doc_count":12},{"key_as_string":"2017-02-10T07:34:00.000Z","key":1486712040000,"doc_count":15},{"key_as_string":"2017-02-10T07:35:00.000Z","key":1486712100000,"doc_count":12},{"key_as_string":"2017-02-10T07:36:00.000Z","key":1486712160000,"doc_count":10},{"key_as_string":"2017-02-10T07:37:00.000Z","key":1486712220000,"doc_count":12},{"key_as_string":"2017-02-10T07:38:00.000Z","key":1486712280000,"doc_count":13},{"key_as_string":"2017-02-10T07:39:00.000Z","key":1486712340000,"doc_count":8},{"key_as_string":"2017-02-10T07:40:00.000Z","key":1486712400000,"doc_count":11},{"key_as_string":"2017-02-10T07:41:00.000Z","key":1486712460000,"doc_count":13},{"key_as_string":"2017-02-10T07:42:00.000Z","key":1486712520000,"doc_count":19},{"key_as_string":"2017-02-10T07:43:00.000Z","key":1486712580000,"doc_count":10},{"key_as_string":"2017-02-10T07:44:00.000Z","key":1486712640000,"doc_count":19},{"key_as_string":"2017-02-10T07:45:00.000Z","key":1486712700000,"doc_count":8},{"key_as_string":"2017-02-10T07:46:00.000Z","key":1486712760000,"doc_count":13},{"key_as_string":"2017-02-10T07:47:00.000Z","key":1486712820000,"doc_count":17},{"key_as_string":"2017-02-10T07:48:00.000Z","key":1486712880000,"doc_count":14},{"key_as_string":"2017-02-10T07:49:00.000Z","key":1486712940000,"doc_count":13},{"key_as_string":"2017-02-10T07:50:00.000Z","key":1486713000000,"doc_count":14},{"key_as_string":"2017-02-10T07:51:00.000Z","key":1486713060000,"doc_count":11},{"key_as_string":"2017-02-10T07:52:00.000Z","key":1486713120000,"doc_count":16},{"key_as_string":"2017-02-10T07:53:00.000Z","key":1486713180000,"doc_count":13},{"key_as_string":"2017-02-10T07:54:00.000Z","key":1486713240000,"doc_count":12},{"key_as_string":"2017-02-10T07:55:00.000Z","key":1486713300000,"doc_count":13},{"key_as_string":"2017-02-10T07:56:00.000Z","key":1486713360000,"doc_count":11},{"key_as_string":"2017-02-10T07:57:00.000Z","key":1486713420000,"doc_count":9},{"key_as_string":"2017-02-10T07:58:00.000Z","key":1486713480000,"doc_count":11},{"key_as_string":"2017-02-10T07:59:00.000Z","key":1486713540000,"doc_count":14},{"key_as_string":"2017-02-10T08:00:00.000Z","key":1486713600000,"doc_count":9},{"key_as_string":"2017-02-10T08:01:00.000Z","key":1486713660000,"doc_count":13},{"key_as_string":"2017-02-10T08:02:00.000Z","key":1486713720000,"doc_count":13},{"key_as_string":"2017-02-10T08:03:00.000Z","key":1486713780000,"doc_count":12},{"key_as_string":"2017-02-10T08:04:00.000Z","key":1486713840000,"doc_count":19},{"key_as_string":"2017-02-10T08:05:00.000Z","key":1486713900000,"doc_count":9},{"key_as_string":"2017-02-10T08:06:00.000Z","key":1486713960000,"doc_count":15},{"key_as_string":"2017-02-10T08:07:00.000Z","key":1486714020000,"doc_count":9},{"key_as_string":"2017-02-10T08:08:00.000Z","key":1486714080000,"doc_count":15},{"key_as_string":"2017-02-10T08:09:00.000Z","key":1486714140000,"doc_count":11},{"key_as_string":"2017-02-10T08:10:00.000Z","key":1486714200000,"doc_count":10},{"key_as_string":"2017-02-10T08:11:00.000Z","key":1486714260000,"doc_count":13},{"key_as_string":"2017-02-10T08:12:00.000Z","key":1486714320000,"doc_count":8},{"key_as_string":"2017-02-10T08:13:00.000Z","key":1486714380000,"doc_count":13},{"key_as_string":"2017-02-10T08:14:00.000Z","key":1486714440000,"doc_count":15},{"key_as_string":"2017-02-10T08:15:00.000Z","key":1486714500000,"doc_count":17},{"key_as_string":"2017-02-10T08:16:00.000Z","key":1486714560000,"doc_count":13},{"key_as_string":"2017-02-10T08:17:00.000Z","key":1486714620000,"doc_count":17},{"key_as_string":"2017-02-10T08:18:00.000Z","key":1486714680000,"doc_count":12},{"key_as_string":"2017-02-10T08:19:00.000Z","key":1486714740000,"doc_count":17},{"key_as_string":"2017-02-10T08:20:00.000Z","key":1486714800000,"doc_count":15},{"key_as_string":"2017-02-10T08:21:00.000Z","key":1486714860000,"doc_count":12},{"key_as_string":"2017-02-10T08:22:00.000Z","key":1486714920000,"doc_count":12},{"key_as_string":"2017-02-10T08:23:00.000Z","key":1486714980000,"doc_count":14},{"key_as_string":"2017-02-10T08:24:00.000Z","key":1486715040000,"doc_count":15},{"key_as_string":"2017-02-10T08:25:00.000Z","key":1486715100000,"doc_count":13},{"key_as_string":"2017-02-10T08:26:00.000Z","key":1486715160000,"doc_count":11},{"key_as_string":"2017-02-10T08:27:00.000Z","key":1486715220000,"doc_count":15},{"key_as_string":"2017-02-10T08:28:00.000Z","key":1486715280000,"doc_count":11},{"key_as_string":"2017-02-10T08:29:00.000Z","key":1486715340000,"doc_count":13},{"key_as_string":"2017-02-10T08:30:00.000Z","key":1486715400000,"doc_count":12},{"key_as_string":"2017-02-10T08:31:00.000Z","key":1486715460000,"doc_count":12},{"key_as_string":"2017-02-10T08:32:00.000Z","key":1486715520000,"doc_count":16},{"key_as_string":"2017-02-10T08:33:00.000Z","key":1486715580000,"doc_count":12},{"key_as_string":"2017-02-10T08:34:00.000Z","key":1486715640000,"doc_count":12},{"key_as_string":"2017-02-10T08:35:00.000Z","key":1486715700000,"doc_count":13},{"key_as_string":"2017-02-10T08:36:00.000Z","key":1486715760000,"doc_count":11},{"key_as_string":"2017-02-10T08:37:00.000Z","key":1486715820000,"doc_count":17},{"key_as_string":"2017-02-10T08:38:00.000Z","key":1486715880000,"doc_count":14},{"key_as_string":"2017-02-10T08:39:00.000Z","key":1486715940000,"doc_count":7},{"key_as_string":"2017-02-10T08:40:00.000Z","key":1486716000000,"doc_count":22},{"key_as_string":"2017-02-10T08:41:00.000Z","key":1486716060000,"doc_count":12},{"key_as_string":"2017-02-10T08:42:00.000Z","key":1486716120000,"doc_count":17},{"key_as_string":"2017-02-10T08:43:00.000Z","key":1486716180000,"doc_count":13},{"key_as_string":"2017-02-10T08:44:00.000Z","key":1486716240000,"doc_count":17},{"key_as_string":"2017-02-10T08:45:00.000Z","key":1486716300000,"doc_count":14},{"key_as_string":"2017-02-10T08:46:00.000Z","key":1486716360000,"doc_count":11},{"key_as_string":"2017-02-10T08:47:00.000Z","key":1486716420000,"doc_count":18},{"key_as_string":"2017-02-10T08:48:00.000Z","key":1486716480000,"doc_count":11},{"key_as_string":"2017-02-10T08:49:00.000Z","key":1486716540000,"doc_count":18},{"key_as_string":"2017-02-10T08:50:00.000Z","key":1486716600000,"doc_count":13},{"key_as_string":"2017-02-10T08:51:00.000Z","key":1486716660000,"doc_count":12},{"key_as_string":"2017-02-10T08:52:00.000Z","key":1486716720000,"doc_count":13},{"key_as_string":"2017-02-10T08:53:00.000Z","key":1486716780000,"doc_count":14},{"key_as_string":"2017-02-10T08:54:00.000Z","key":1486716840000,"doc_count":18},{"key_as_string":"2017-02-10T08:55:00.000Z","key":1486716900000,"doc_count":10},{"key_as_string":"2017-02-10T08:56:00.000Z","key":1486716960000,"doc_count":17},{"key_as_string":"2017-02-10T08:57:00.000Z","key":1486717020000,"doc_count":13},{"key_as_string":"2017-02-10T08:58:00.000Z","key":1486717080000,"doc_count":14},{"key_as_string":"2017-02-10T08:59:00.000Z","key":1486717140000,"doc_count":11},{"key_as_string":"2017-02-10T09:00:00.000Z","key":1486717200000,"doc_count":11},{"key_as_string":"2017-02-10T09:01:00.000Z","key":1486717260000,"doc_count":12},{"key_as_string":"2017-02-10T09:02:00.000Z","key":1486717320000,"doc_count":10},{"key_as_string":"2017-02-10T09:03:00.000Z","key":1486717380000,"doc_count":16},{"key_as_string":"2017-02-10T09:04:00.000Z","key":1486717440000,"doc_count":9},{"key_as_string":"2017-02-10T09:05:00.000Z","key":1486717500000,"doc_count":15},{"key_as_string":"2017-02-10T09:06:00.000Z","key":1486717560000,"doc_count":15},{"key_as_string":"2017-02-10T09:07:00.000Z","key":1486717620000,"doc_count":17},{"key_as_string":"2017-02-10T09:08:00.000Z","key":1486717680000,"doc_count":10},{"key_as_string":"2017-02-10T09:09:00.000Z","key":1486717740000,"doc_count":14},{"key_as_string":"2017-02-10T09:10:00.000Z","key":1486717800000,"doc_count":12},{"key_as_string":"2017-02-10T09:11:00.000Z","key":1486717860000,"doc_count":16},{"key_as_string":"2017-02-10T09:12:00.000Z","key":1486717920000,"doc_count":9},{"key_as_string":"2017-02-10T09:13:00.000Z","key":1486717980000,"doc_count":14},{"key_as_string":"2017-02-10T09:14:00.000Z","key":1486718040000,"doc_count":14},{"key_as_string":"2017-02-10T09:15:00.000Z","key":1486718100000,"doc_count":18},{"key_as_string":"2017-02-10T09:16:00.000Z","key":1486718160000,"doc_count":16},{"key_as_string":"2017-02-10T09:17:00.000Z","key":1486718220000,"doc_count":16},{"key_as_string":"2017-02-10T09:18:00.000Z","key":1486718280000,"doc_count":13},{"key_as_string":"2017-02-10T09:19:00.000Z","key":1486718340000,"doc_count":11},{"key_as_string":"2017-02-10T09:20:00.000Z","key":1486718400000,"doc_count":14},{"key_as_string":"2017-02-10T09:21:00.000Z","key":1486718460000,"doc_count":12},{"key_as_string":"2017-02-10T09:22:00.000Z","key":1486718520000,"doc_count":10},{"key_as_string":"2017-02-10T09:23:00.000Z","key":1486718580000,"doc_count":12},{"key_as_string":"2017-02-10T09:24:00.000Z","key":1486718640000,"doc_count":15},{"key_as_string":"2017-02-10T09:25:00.000Z","key":1486718700000,"doc_count":9},{"key_as_string":"2017-02-10T09:26:00.000Z","key":1486718760000,"doc_count":16},{"key_as_string":"2017-02-10T09:27:00.000Z","key":1486718820000,"doc_count":17},{"key_as_string":"2017-02-10T09:28:00.000Z","key":1486718880000,"doc_count":12},{"key_as_string":"2017-02-10T09:29:00.000Z","key":1486718940000,"doc_count":10},{"key_as_string":"2017-02-10T09:30:00.000Z","key":1486719000000,"doc_count":12},{"key_as_string":"2017-02-10T09:31:00.000Z","key":1486719060000,"doc_count":13},{"key_as_string":"2017-02-10T09:32:00.000Z","key":1486719120000,"doc_count":13},{"key_as_string":"2017-02-10T09:33:00.000Z","key":1486719180000,"doc_count":11},{"key_as_string":"2017-02-10T09:34:00.000Z","key":1486719240000,"doc_count":11},{"key_as_string":"2017-02-10T09:35:00.000Z","key":1486719300000,"doc_count":15},{"key_as_string":"2017-02-10T09:36:00.000Z","key":1486719360000,"doc_count":10},{"key_as_string":"2017-02-10T09:37:00.000Z","key":1486719420000,"doc_count":12},{"key_as_string":"2017-02-10T09:38:00.000Z","key":1486719480000,"doc_count":19},{"key_as_string":"2017-02-10T09:39:00.000Z","key":1486719540000,"doc_count":12},{"key_as_string":"2017-02-10T09:40:00.000Z","key":1486719600000,"doc_count":19},{"key_as_string":"2017-02-10T09:41:00.000Z","key":1486719660000,"doc_count":16},{"key_as_string":"2017-02-10T09:42:00.000Z","key":1486719720000,"doc_count":19},{"key_as_string":"2017-02-10T09:43:00.000Z","key":1486719780000,"doc_count":7},{"key_as_string":"2017-02-10T09:44:00.000Z","key":1486719840000,"doc_count":18},{"key_as_string":"2017-02-10T09:45:00.000Z","key":1486719900000,"doc_count":12},{"key_as_string":"2017-02-10T09:46:00.000Z","key":1486719960000,"doc_count":14},{"key_as_string":"2017-02-10T09:47:00.000Z","key":1486720020000,"doc_count":14},{"key_as_string":"2017-02-10T09:48:00.000Z","key":1486720080000,"doc_count":11},{"key_as_string":"2017-02-10T09:49:00.000Z","key":1486720140000,"doc_count":14},{"key_as_string":"2017-02-10T09:50:00.000Z","key":1486720200000,"doc_count":9},{"key_as_string":"2017-02-10T09:51:00.000Z","key":1486720260000,"doc_count":17},{"key_as_string":"2017-02-10T09:52:00.000Z","key":1486720320000,"doc_count":20},{"key_as_string":"2017-02-10T09:53:00.000Z","key":1486720380000,"doc_count":13},{"key_as_string":"2017-02-10T09:54:00.000Z","key":1486720440000,"doc_count":7},{"key_as_string":"2017-02-10T09:55:00.000Z","key":1486720500000,"doc_count":16},{"key_as_string":"2017-02-10T09:56:00.000Z","key":1486720560000,"doc_count":13},{"key_as_string":"2017-02-10T09:57:00.000Z","key":1486720620000,"doc_count":12},{"key_as_string":"2017-02-10T09:58:00.000Z","key":1486720680000,"doc_count":13},{"key_as_string":"2017-02-10T09:59:00.000Z","key":1486720740000,"doc_count":10},{"key_as_string":"2017-02-10T10:00:00.000Z","key":1486720800000,"doc_count":15},{"key_as_string":"2017-02-10T10:01:00.000Z","key":1486720860000,"doc_count":13},{"key_as_string":"2017-02-10T10:02:00.000Z","key":1486720920000,"doc_count":23},{"key_as_string":"2017-02-10T10:03:00.000Z","key":1486720980000,"doc_count":11},{"key_as_string":"2017-02-10T10:04:00.000Z","key":1486721040000,"doc_count":11},{"key_as_string":"2017-02-10T10:05:00.000Z","key":1486721100000,"doc_count":17},{"key_as_string":"2017-02-10T10:06:00.000Z","key":1486721160000,"doc_count":10},{"key_as_string":"2017-02-10T10:07:00.000Z","key":1486721220000,"doc_count":15},{"key_as_string":"2017-02-10T10:08:00.000Z","key":1486721280000,"doc_count":13},{"key_as_string":"2017-02-10T10:09:00.000Z","key":1486721340000,"doc_count":15},{"key_as_string":"2017-02-10T10:10:00.000Z","key":1486721400000,"doc_count":17},{"key_as_string":"2017-02-10T10:11:00.000Z","key":1486721460000,"doc_count":12},{"key_as_string":"2017-02-10T10:12:00.000Z","key":1486721520000,"doc_count":11},{"key_as_string":"2017-02-10T10:13:00.000Z","key":1486721580000,"doc_count":19},{"key_as_string":"2017-02-10T10:14:00.000Z","key":1486721640000,"doc_count":12},{"key_as_string":"2017-02-10T10:15:00.000Z","key":1486721700000,"doc_count":17},{"key_as_string":"2017-02-10T10:16:00.000Z","key":1486721760000,"doc_count":13},{"key_as_string":"2017-02-10T10:17:00.000Z","key":1486721820000,"doc_count":15},{"key_as_string":"2017-02-10T10:18:00.000Z","key":1486721880000,"doc_count":13},{"key_as_string":"2017-02-10T10:19:00.000Z","key":1486721940000,"doc_count":15},{"key_as_string":"2017-02-10T10:20:00.000Z","key":1486722000000,"doc_count":15},{"key_as_string":"2017-02-10T10:21:00.000Z","key":1486722060000,"doc_count":15},{"key_as_string":"2017-02-10T10:22:00.000Z","key":1486722120000,"doc_count":14},{"key_as_string":"2017-02-10T10:23:00.000Z","key":1486722180000,"doc_count":18},{"key_as_string":"2017-02-10T10:24:00.000Z","key":1486722240000,"doc_count":16},{"key_as_string":"2017-02-10T10:25:00.000Z","key":1486722300000,"doc_count":11},{"key_as_string":"2017-02-10T10:26:00.000Z","key":1486722360000,"doc_count":12},{"key_as_string":"2017-02-10T10:27:00.000Z","key":1486722420000,"doc_count":21},{"key_as_string":"2017-02-10T10:28:00.000Z","key":1486722480000,"doc_count":12},{"key_as_string":"2017-02-10T10:29:00.000Z","key":1486722540000,"doc_count":10},{"key_as_string":"2017-02-10T10:30:00.000Z","key":1486722600000,"doc_count":13},{"key_as_string":"2017-02-10T10:31:00.000Z","key":1486722660000,"doc_count":12},{"key_as_string":"2017-02-10T10:32:00.000Z","key":1486722720000,"doc_count":14},{"key_as_string":"2017-02-10T10:33:00.000Z","key":1486722780000,"doc_count":10},{"key_as_string":"2017-02-10T10:34:00.000Z","key":1486722840000,"doc_count":16},{"key_as_string":"2017-02-10T10:35:00.000Z","key":1486722900000,"doc_count":10},{"key_as_string":"2017-02-10T10:36:00.000Z","key":1486722960000,"doc_count":19},{"key_as_string":"2017-02-10T10:37:00.000Z","key":1486723020000,"doc_count":6},{"key_as_string":"2017-02-10T10:38:00.000Z","key":1486723080000,"doc_count":21},{"key_as_string":"2017-02-10T10:39:00.000Z","key":1486723140000,"doc_count":13},{"key_as_string":"2017-02-10T10:40:00.000Z","key":1486723200000,"doc_count":18},{"key_as_string":"2017-02-10T10:41:00.000Z","key":1486723260000,"doc_count":12},{"key_as_string":"2017-02-10T10:42:00.000Z","key":1486723320000,"doc_count":16},{"key_as_string":"2017-02-10T10:43:00.000Z","key":1486723380000,"doc_count":6},{"key_as_string":"2017-02-10T10:44:00.000Z","key":1486723440000,"doc_count":16},{"key_as_string":"2017-02-10T10:45:00.000Z","key":1486723500000,"doc_count":10},{"key_as_string":"2017-02-10T10:46:00.000Z","key":1486723560000,"doc_count":17},{"key_as_string":"2017-02-10T10:47:00.000Z","key":1486723620000,"doc_count":11},{"key_as_string":"2017-02-10T10:48:00.000Z","key":1486723680000,"doc_count":17},{"key_as_string":"2017-02-10T10:49:00.000Z","key":1486723740000,"doc_count":11},{"key_as_string":"2017-02-10T10:50:00.000Z","key":1486723800000,"doc_count":12},{"key_as_string":"2017-02-10T10:51:00.000Z","key":1486723860000,"doc_count":12},{"key_as_string":"2017-02-10T10:52:00.000Z","key":1486723920000,"doc_count":18},{"key_as_string":"2017-02-10T10:53:00.000Z","key":1486723980000,"doc_count":15},{"key_as_string":"2017-02-10T10:54:00.000Z","key":1486724040000,"doc_count":15},{"key_as_string":"2017-02-10T10:55:00.000Z","key":1486724100000,"doc_count":16},{"key_as_string":"2017-02-10T10:56:00.000Z","key":1486724160000,"doc_count":8},{"key_as_string":"2017-02-10T10:57:00.000Z","key":1486724220000,"doc_count":19},{"key_as_string":"2017-02-10T10:58:00.000Z","key":1486724280000,"doc_count":12},{"key_as_string":"2017-02-10T10:59:00.000Z","key":1486724340000,"doc_count":16},{"key_as_string":"2017-02-10T11:00:00.000Z","key":1486724400000,"doc_count":16},{"key_as_string":"2017-02-10T11:01:00.000Z","key":1486724460000,"doc_count":11},{"key_as_string":"2017-02-10T11:02:00.000Z","key":1486724520000,"doc_count":11},{"key_as_string":"2017-02-10T11:03:00.000Z","key":1486724580000,"doc_count":16},{"key_as_string":"2017-02-10T11:04:00.000Z","key":1486724640000,"doc_count":15},{"key_as_string":"2017-02-10T11:05:00.000Z","key":1486724700000,"doc_count":12},{"key_as_string":"2017-02-10T11:06:00.000Z","key":1486724760000,"doc_count":20},{"key_as_string":"2017-02-10T11:07:00.000Z","key":1486724820000,"doc_count":14},{"key_as_string":"2017-02-10T11:08:00.000Z","key":1486724880000,"doc_count":11},{"key_as_string":"2017-02-10T11:09:00.000Z","key":1486724940000,"doc_count":11},{"key_as_string":"2017-02-10T11:10:00.000Z","key":1486725000000,"doc_count":11},{"key_as_string":"2017-02-10T11:11:00.000Z","key":1486725060000,"doc_count":16},{"key_as_string":"2017-02-10T11:12:00.000Z","key":1486725120000,"doc_count":12},{"key_as_string":"2017-02-10T11:13:00.000Z","key":1486725180000,"doc_count":15},{"key_as_string":"2017-02-10T11:14:00.000Z","key":1486725240000,"doc_count":12},{"key_as_string":"2017-02-10T11:15:00.000Z","key":1486725300000,"doc_count":12},{"key_as_string":"2017-02-10T11:16:00.000Z","key":1486725360000,"doc_count":17},{"key_as_string":"2017-02-10T11:17:00.000Z","key":1486725420000,"doc_count":15},{"key_as_string":"2017-02-10T11:18:00.000Z","key":1486725480000,"doc_count":12},{"key_as_string":"2017-02-10T11:19:00.000Z","key":1486725540000,"doc_count":13},{"key_as_string":"2017-02-10T11:20:00.000Z","key":1486725600000,"doc_count":12},{"key_as_string":"2017-02-10T11:21:00.000Z","key":1486725660000,"doc_count":12},{"key_as_string":"2017-02-10T11:22:00.000Z","key":1486725720000,"doc_count":9},{"key_as_string":"2017-02-10T11:23:00.000Z","key":1486725780000,"doc_count":15},{"key_as_string":"2017-02-10T11:24:00.000Z","key":1486725840000,"doc_count":21},{"key_as_string":"2017-02-10T11:25:00.000Z","key":1486725900000,"doc_count":13},{"key_as_string":"2017-02-10T11:26:00.000Z","key":1486725960000,"doc_count":15},{"key_as_string":"2017-02-10T11:27:00.000Z","key":1486726020000,"doc_count":14},{"key_as_string":"2017-02-10T11:28:00.000Z","key":1486726080000,"doc_count":10},{"key_as_string":"2017-02-10T11:29:00.000Z","key":1486726140000,"doc_count":16},{"key_as_string":"2017-02-10T11:30:00.000Z","key":1486726200000,"doc_count":12},{"key_as_string":"2017-02-10T11:31:00.000Z","key":1486726260000,"doc_count":18},{"key_as_string":"2017-02-10T11:32:00.000Z","key":1486726320000,"doc_count":11},{"key_as_string":"2017-02-10T11:33:00.000Z","key":1486726380000,"doc_count":15},{"key_as_string":"2017-02-10T11:34:00.000Z","key":1486726440000,"doc_count":16},{"key_as_string":"2017-02-10T11:35:00.000Z","key":1486726500000,"doc_count":19},{"key_as_string":"2017-02-10T11:36:00.000Z","key":1486726560000,"doc_count":9},{"key_as_string":"2017-02-10T11:37:00.000Z","key":1486726620000,"doc_count":14},{"key_as_string":"2017-02-10T11:38:00.000Z","key":1486726680000,"doc_count":12},{"key_as_string":"2017-02-10T11:39:00.000Z","key":1486726740000,"doc_count":15},{"key_as_string":"2017-02-10T11:40:00.000Z","key":1486726800000,"doc_count":13},{"key_as_string":"2017-02-10T11:41:00.000Z","key":1486726860000,"doc_count":14},{"key_as_string":"2017-02-10T11:42:00.000Z","key":1486726920000,"doc_count":11},{"key_as_string":"2017-02-10T11:43:00.000Z","key":1486726980000,"doc_count":16},{"key_as_string":"2017-02-10T11:44:00.000Z","key":1486727040000,"doc_count":10},{"key_as_string":"2017-02-10T11:45:00.000Z","key":1486727100000,"doc_count":12},{"key_as_string":"2017-02-10T11:46:00.000Z","key":1486727160000,"doc_count":9},{"key_as_string":"2017-02-10T11:47:00.000Z","key":1486727220000,"doc_count":16},{"key_as_string":"2017-02-10T11:48:00.000Z","key":1486727280000,"doc_count":8},{"key_as_string":"2017-02-10T11:49:00.000Z","key":1486727340000,"doc_count":13},{"key_as_string":"2017-02-10T11:50:00.000Z","key":1486727400000,"doc_count":16},{"key_as_string":"2017-02-10T11:51:00.000Z","key":1486727460000,"doc_count":13},{"key_as_string":"2017-02-10T11:52:00.000Z","key":1486727520000,"doc_count":12},{"key_as_string":"2017-02-10T11:53:00.000Z","key":1486727580000,"doc_count":23},{"key_as_string":"2017-02-10T11:54:00.000Z","key":1486727640000,"doc_count":11},{"key_as_string":"2017-02-10T11:55:00.000Z","key":1486727700000,"doc_count":12},{"key_as_string":"2017-02-10T11:56:00.000Z","key":1486727760000,"doc_count":14},{"key_as_string":"2017-02-10T11:57:00.000Z","key":1486727820000,"doc_count":15},{"key_as_string":"2017-02-10T11:58:00.000Z","key":1486727880000,"doc_count":14},{"key_as_string":"2017-02-10T11:59:00.000Z","key":1486727940000,"doc_count":14},{"key_as_string":"2017-02-10T12:00:00.000Z","key":1486728000000,"doc_count":13},{"key_as_string":"2017-02-10T12:01:00.000Z","key":1486728060000,"doc_count":15},{"key_as_string":"2017-02-10T12:02:00.000Z","key":1486728120000,"doc_count":10},{"key_as_string":"2017-02-10T12:03:00.000Z","key":1486728180000,"doc_count":14},{"key_as_string":"2017-02-10T12:04:00.000Z","key":1486728240000,"doc_count":14},{"key_as_string":"2017-02-10T12:05:00.000Z","key":1486728300000,"doc_count":15},{"key_as_string":"2017-02-10T12:06:00.000Z","key":1486728360000,"doc_count":10},{"key_as_string":"2017-02-10T12:07:00.000Z","key":1486728420000,"doc_count":16},{"key_as_string":"2017-02-10T12:08:00.000Z","key":1486728480000,"doc_count":17},{"key_as_string":"2017-02-10T12:09:00.000Z","key":1486728540000,"doc_count":11},{"key_as_string":"2017-02-10T12:10:00.000Z","key":1486728600000,"doc_count":16},{"key_as_string":"2017-02-10T12:11:00.000Z","key":1486728660000,"doc_count":16},{"key_as_string":"2017-02-10T12:12:00.000Z","key":1486728720000,"doc_count":8},{"key_as_string":"2017-02-10T12:13:00.000Z","key":1486728780000,"doc_count":19},{"key_as_string":"2017-02-10T12:14:00.000Z","key":1486728840000,"doc_count":21},{"key_as_string":"2017-02-10T12:15:00.000Z","key":1486728900000,"doc_count":15},{"key_as_string":"2017-02-10T12:16:00.000Z","key":1486728960000,"doc_count":12},{"key_as_string":"2017-02-10T12:17:00.000Z","key":1486729020000,"doc_count":16},{"key_as_string":"2017-02-10T12:18:00.000Z","key":1486729080000,"doc_count":14},{"key_as_string":"2017-02-10T12:19:00.000Z","key":1486729140000,"doc_count":17},{"key_as_string":"2017-02-10T12:20:00.000Z","key":1486729200000,"doc_count":16},{"key_as_string":"2017-02-10T12:21:00.000Z","key":1486729260000,"doc_count":13},{"key_as_string":"2017-02-10T12:22:00.000Z","key":1486729320000,"doc_count":9},{"key_as_string":"2017-02-10T12:23:00.000Z","key":1486729380000,"doc_count":14},{"key_as_string":"2017-02-10T12:24:00.000Z","key":1486729440000,"doc_count":14},{"key_as_string":"2017-02-10T12:25:00.000Z","key":1486729500000,"doc_count":12},{"key_as_string":"2017-02-10T12:26:00.000Z","key":1486729560000,"doc_count":15},{"key_as_string":"2017-02-10T12:27:00.000Z","key":1486729620000,"doc_count":11},{"key_as_string":"2017-02-10T12:28:00.000Z","key":1486729680000,"doc_count":11},{"key_as_string":"2017-02-10T12:29:00.000Z","key":1486729740000,"doc_count":13},{"key_as_string":"2017-02-10T12:30:00.000Z","key":1486729800000,"doc_count":9},{"key_as_string":"2017-02-10T12:31:00.000Z","key":1486729860000,"doc_count":16},{"key_as_string":"2017-02-10T12:32:00.000Z","key":1486729920000,"doc_count":7},{"key_as_string":"2017-02-10T12:33:00.000Z","key":1486729980000,"doc_count":15},{"key_as_string":"2017-02-10T12:34:00.000Z","key":1486730040000,"doc_count":10},{"key_as_string":"2017-02-10T12:35:00.000Z","key":1486730100000,"doc_count":15},{"key_as_string":"2017-02-10T12:36:00.000Z","key":1486730160000,"doc_count":15},{"key_as_string":"2017-02-10T12:37:00.000Z","key":1486730220000,"doc_count":17},{"key_as_string":"2017-02-10T12:38:00.000Z","key":1486730280000,"doc_count":15},{"key_as_string":"2017-02-10T12:39:00.000Z","key":1486730340000,"doc_count":13},{"key_as_string":"2017-02-10T12:40:00.000Z","key":1486730400000,"doc_count":12},{"key_as_string":"2017-02-10T12:41:00.000Z","key":1486730460000,"doc_count":10},{"key_as_string":"2017-02-10T12:42:00.000Z","key":1486730520000,"doc_count":11},{"key_as_string":"2017-02-10T12:43:00.000Z","key":1486730580000,"doc_count":15},{"key_as_string":"2017-02-10T12:44:00.000Z","key":1486730640000,"doc_count":14},{"key_as_string":"2017-02-10T12:45:00.000Z","key":1486730700000,"doc_count":15},{"key_as_string":"2017-02-10T12:46:00.000Z","key":1486730760000,"doc_count":12},{"key_as_string":"2017-02-10T12:47:00.000Z","key":1486730820000,"doc_count":14},{"key_as_string":"2017-02-10T12:48:00.000Z","key":1486730880000,"doc_count":15},{"key_as_string":"2017-02-10T12:49:00.000Z","key":1486730940000,"doc_count":14},{"key_as_string":"2017-02-10T12:50:00.000Z","key":1486731000000,"doc_count":14},{"key_as_string":"2017-02-10T12:51:00.000Z","key":1486731060000,"doc_count":13},{"key_as_string":"2017-02-10T12:52:00.000Z","key":1486731120000,"doc_count":17},{"key_as_string":"2017-02-10T12:53:00.000Z","key":1486731180000,"doc_count":10},{"key_as_string":"2017-02-10T12:54:00.000Z","key":1486731240000,"doc_count":12},{"key_as_string":"2017-02-10T12:55:00.000Z","key":1486731300000,"doc_count":16},{"key_as_string":"2017-02-10T12:56:00.000Z","key":1486731360000,"doc_count":8},{"key_as_string":"2017-02-10T12:57:00.000Z","key":1486731420000,"doc_count":12},{"key_as_string":"2017-02-10T12:58:00.000Z","key":1486731480000,"doc_count":22},{"key_as_string":"2017-02-10T12:59:00.000Z","key":1486731540000,"doc_count":13},{"key_as_string":"2017-02-10T13:00:00.000Z","key":1486731600000,"doc_count":15},{"key_as_string":"2017-02-10T13:01:00.000Z","key":1486731660000,"doc_count":8},{"key_as_string":"2017-02-10T13:02:00.000Z","key":1486731720000,"doc_count":19},{"key_as_string":"2017-02-10T13:03:00.000Z","key":1486731780000,"doc_count":9},{"key_as_string":"2017-02-10T13:04:00.000Z","key":1486731840000,"doc_count":12},{"key_as_string":"2017-02-10T13:05:00.000Z","key":1486731900000,"doc_count":15},{"key_as_string":"2017-02-10T13:06:00.000Z","key":1486731960000,"doc_count":15},{"key_as_string":"2017-02-10T13:07:00.000Z","key":1486732020000,"doc_count":16},{"key_as_string":"2017-02-10T13:08:00.000Z","key":1486732080000,"doc_count":14},{"key_as_string":"2017-02-10T13:09:00.000Z","key":1486732140000,"doc_count":15},{"key_as_string":"2017-02-10T13:10:00.000Z","key":1486732200000,"doc_count":9},{"key_as_string":"2017-02-10T13:11:00.000Z","key":1486732260000,"doc_count":14},{"key_as_string":"2017-02-10T13:12:00.000Z","key":1486732320000,"doc_count":15},{"key_as_string":"2017-02-10T13:13:00.000Z","key":1486732380000,"doc_count":12},{"key_as_string":"2017-02-10T13:14:00.000Z","key":1486732440000,"doc_count":13},{"key_as_string":"2017-02-10T13:15:00.000Z","key":1486732500000,"doc_count":22},{"key_as_string":"2017-02-10T13:16:00.000Z","key":1486732560000,"doc_count":9},{"key_as_string":"2017-02-10T13:17:00.000Z","key":1486732620000,"doc_count":13},{"key_as_string":"2017-02-10T13:18:00.000Z","key":1486732680000,"doc_count":14},{"key_as_string":"2017-02-10T13:19:00.000Z","key":1486732740000,"doc_count":9},{"key_as_string":"2017-02-10T13:20:00.000Z","key":1486732800000,"doc_count":11},{"key_as_string":"2017-02-10T13:21:00.000Z","key":1486732860000,"doc_count":12},{"key_as_string":"2017-02-10T13:22:00.000Z","key":1486732920000,"doc_count":16},{"key_as_string":"2017-02-10T13:23:00.000Z","key":1486732980000,"doc_count":15},{"key_as_string":"2017-02-10T13:24:00.000Z","key":1486733040000,"doc_count":9},{"key_as_string":"2017-02-10T13:25:00.000Z","key":1486733100000,"doc_count":12},{"key_as_string":"2017-02-10T13:26:00.000Z","key":1486733160000,"doc_count":14},{"key_as_string":"2017-02-10T13:27:00.000Z","key":1486733220000,"doc_count":17},{"key_as_string":"2017-02-10T13:28:00.000Z","key":1486733280000,"doc_count":5},{"key_as_string":"2017-02-10T13:29:00.000Z","key":1486733340000,"doc_count":16},{"key_as_string":"2017-02-10T13:30:00.000Z","key":1486733400000,"doc_count":9},{"key_as_string":"2017-02-10T13:31:00.000Z","key":1486733460000,"doc_count":17},{"key_as_string":"2017-02-10T13:32:00.000Z","key":1486733520000,"doc_count":12},{"key_as_string":"2017-02-10T13:33:00.000Z","key":1486733580000,"doc_count":10},{"key_as_string":"2017-02-10T13:34:00.000Z","key":1486733640000,"doc_count":18},{"key_as_string":"2017-02-10T13:35:00.000Z","key":1486733700000,"doc_count":5},{"key_as_string":"2017-02-10T13:36:00.000Z","key":1486733760000,"doc_count":13},{"key_as_string":"2017-02-10T13:37:00.000Z","key":1486733820000,"doc_count":18},{"key_as_string":"2017-02-10T13:38:00.000Z","key":1486733880000,"doc_count":17},{"key_as_string":"2017-02-10T13:39:00.000Z","key":1486733940000,"doc_count":15},{"key_as_string":"2017-02-10T13:40:00.000Z","key":1486734000000,"doc_count":16},{"key_as_string":"2017-02-10T13:41:00.000Z","key":1486734060000,"doc_count":8},{"key_as_string":"2017-02-10T13:42:00.000Z","key":1486734120000,"doc_count":17},{"key_as_string":"2017-02-10T13:43:00.000Z","key":1486734180000,"doc_count":14},{"key_as_string":"2017-02-10T13:44:00.000Z","key":1486734240000,"doc_count":14},{"key_as_string":"2017-02-10T13:45:00.000Z","key":1486734300000,"doc_count":17},{"key_as_string":"2017-02-10T13:46:00.000Z","key":1486734360000,"doc_count":14},{"key_as_string":"2017-02-10T13:47:00.000Z","key":1486734420000,"doc_count":16},{"key_as_string":"2017-02-10T13:48:00.000Z","key":1486734480000,"doc_count":16},{"key_as_string":"2017-02-10T13:49:00.000Z","key":1486734540000,"doc_count":21},{"key_as_string":"2017-02-10T13:50:00.000Z","key":1486734600000,"doc_count":12},{"key_as_string":"2017-02-10T13:51:00.000Z","key":1486734660000,"doc_count":12},{"key_as_string":"2017-02-10T13:52:00.000Z","key":1486734720000,"doc_count":8},{"key_as_string":"2017-02-10T13:53:00.000Z","key":1486734780000,"doc_count":15},{"key_as_string":"2017-02-10T13:54:00.000Z","key":1486734840000,"doc_count":13},{"key_as_string":"2017-02-10T13:55:00.000Z","key":1486734900000,"doc_count":14},{"key_as_string":"2017-02-10T13:56:00.000Z","key":1486734960000,"doc_count":13},{"key_as_string":"2017-02-10T13:57:00.000Z","key":1486735020000,"doc_count":12},{"key_as_string":"2017-02-10T13:58:00.000Z","key":1486735080000,"doc_count":14},{"key_as_string":"2017-02-10T13:59:00.000Z","key":1486735140000,"doc_count":13},{"key_as_string":"2017-02-10T14:00:00.000Z","key":1486735200000,"doc_count":16},{"key_as_string":"2017-02-10T14:01:00.000Z","key":1486735260000,"doc_count":9},{"key_as_string":"2017-02-10T14:02:00.000Z","key":1486735320000,"doc_count":20},{"key_as_string":"2017-02-10T14:03:00.000Z","key":1486735380000,"doc_count":15},{"key_as_string":"2017-02-10T14:04:00.000Z","key":1486735440000,"doc_count":13},{"key_as_string":"2017-02-10T14:05:00.000Z","key":1486735500000,"doc_count":10},{"key_as_string":"2017-02-10T14:06:00.000Z","key":1486735560000,"doc_count":11},{"key_as_string":"2017-02-10T14:07:00.000Z","key":1486735620000,"doc_count":9},{"key_as_string":"2017-02-10T14:08:00.000Z","key":1486735680000,"doc_count":15},{"key_as_string":"2017-02-10T14:09:00.000Z","key":1486735740000,"doc_count":17},{"key_as_string":"2017-02-10T14:10:00.000Z","key":1486735800000,"doc_count":13},{"key_as_string":"2017-02-10T14:11:00.000Z","key":1486735860000,"doc_count":15},{"key_as_string":"2017-02-10T14:12:00.000Z","key":1486735920000,"doc_count":10},{"key_as_string":"2017-02-10T14:13:00.000Z","key":1486735980000,"doc_count":12},{"key_as_string":"2017-02-10T14:14:00.000Z","key":1486736040000,"doc_count":15},{"key_as_string":"2017-02-10T14:15:00.000Z","key":1486736100000,"doc_count":13},{"key_as_string":"2017-02-10T14:16:00.000Z","key":1486736160000,"doc_count":13},{"key_as_string":"2017-02-10T14:17:00.000Z","key":1486736220000,"doc_count":15},{"key_as_string":"2017-02-10T14:18:00.000Z","key":1486736280000,"doc_count":14},{"key_as_string":"2017-02-10T14:19:00.000Z","key":1486736340000,"doc_count":9},{"key_as_string":"2017-02-10T14:20:00.000Z","key":1486736400000,"doc_count":15},{"key_as_string":"2017-02-10T14:21:00.000Z","key":1486736460000,"doc_count":12},{"key_as_string":"2017-02-10T14:22:00.000Z","key":1486736520000,"doc_count":12},{"key_as_string":"2017-02-10T14:23:00.000Z","key":1486736580000,"doc_count":16},{"key_as_string":"2017-02-10T14:24:00.000Z","key":1486736640000,"doc_count":4},{"key_as_string":"2017-02-10T14:25:00.000Z","key":1486736700000,"doc_count":12},{"key_as_string":"2017-02-10T14:26:00.000Z","key":1486736760000,"doc_count":15},{"key_as_string":"2017-02-10T14:27:00.000Z","key":1486736820000,"doc_count":17},{"key_as_string":"2017-02-10T14:28:00.000Z","key":1486736880000,"doc_count":15},{"key_as_string":"2017-02-10T14:29:00.000Z","key":1486736940000,"doc_count":13},{"key_as_string":"2017-02-10T14:30:00.000Z","key":1486737000000,"doc_count":9},{"key_as_string":"2017-02-10T14:31:00.000Z","key":1486737060000,"doc_count":17},{"key_as_string":"2017-02-10T14:32:00.000Z","key":1486737120000,"doc_count":14},{"key_as_string":"2017-02-10T14:33:00.000Z","key":1486737180000,"doc_count":11},{"key_as_string":"2017-02-10T14:34:00.000Z","key":1486737240000,"doc_count":10},{"key_as_string":"2017-02-10T14:35:00.000Z","key":1486737300000,"doc_count":10},{"key_as_string":"2017-02-10T14:36:00.000Z","key":1486737360000,"doc_count":12},{"key_as_string":"2017-02-10T14:37:00.000Z","key":1486737420000,"doc_count":14},{"key_as_string":"2017-02-10T14:38:00.000Z","key":1486737480000,"doc_count":15},{"key_as_string":"2017-02-10T14:39:00.000Z","key":1486737540000,"doc_count":8},{"key_as_string":"2017-02-10T14:40:00.000Z","key":1486737600000,"doc_count":15},{"key_as_string":"2017-02-10T14:41:00.000Z","key":1486737660000,"doc_count":10},{"key_as_string":"2017-02-10T14:42:00.000Z","key":1486737720000,"doc_count":14},{"key_as_string":"2017-02-10T14:43:00.000Z","key":1486737780000,"doc_count":11},{"key_as_string":"2017-02-10T14:44:00.000Z","key":1486737840000,"doc_count":12},{"key_as_string":"2017-02-10T14:45:00.000Z","key":1486737900000,"doc_count":18},{"key_as_string":"2017-02-10T14:46:00.000Z","key":1486737960000,"doc_count":12},{"key_as_string":"2017-02-10T14:47:00.000Z","key":1486738020000,"doc_count":14},{"key_as_string":"2017-02-10T14:48:00.000Z","key":1486738080000,"doc_count":13},{"key_as_string":"2017-02-10T14:49:00.000Z","key":1486738140000,"doc_count":9},{"key_as_string":"2017-02-10T14:50:00.000Z","key":1486738200000,"doc_count":20},{"key_as_string":"2017-02-10T14:51:00.000Z","key":1486738260000,"doc_count":11},{"key_as_string":"2017-02-10T14:52:00.000Z","key":1486738320000,"doc_count":9},{"key_as_string":"2017-02-10T14:53:00.000Z","key":1486738380000,"doc_count":14},{"key_as_string":"2017-02-10T14:54:00.000Z","key":1486738440000,"doc_count":15},{"key_as_string":"2017-02-10T14:55:00.000Z","key":1486738500000,"doc_count":13},{"key_as_string":"2017-02-10T14:56:00.000Z","key":1486738560000,"doc_count":12},{"key_as_string":"2017-02-10T14:57:00.000Z","key":1486738620000,"doc_count":15},{"key_as_string":"2017-02-10T14:58:00.000Z","key":1486738680000,"doc_count":9},{"key_as_string":"2017-02-10T14:59:00.000Z","key":1486738740000,"doc_count":12},{"key_as_string":"2017-02-10T15:00:00.000Z","key":1486738800000,"doc_count":15},{"key_as_string":"2017-02-10T15:01:00.000Z","key":1486738860000,"doc_count":11},{"key_as_string":"2017-02-10T15:02:00.000Z","key":1486738920000,"doc_count":14},{"key_as_string":"2017-02-10T15:03:00.000Z","key":1486738980000,"doc_count":11},{"key_as_string":"2017-02-10T15:04:00.000Z","key":1486739040000,"doc_count":12},{"key_as_string":"2017-02-10T15:05:00.000Z","key":1486739100000,"doc_count":11},{"key_as_string":"2017-02-10T15:06:00.000Z","key":1486739160000,"doc_count":17},{"key_as_string":"2017-02-10T15:07:00.000Z","key":1486739220000,"doc_count":12},{"key_as_string":"2017-02-10T15:08:00.000Z","key":1486739280000,"doc_count":10},{"key_as_string":"2017-02-10T15:09:00.000Z","key":1486739340000,"doc_count":19},{"key_as_string":"2017-02-10T15:10:00.000Z","key":1486739400000,"doc_count":10},{"key_as_string":"2017-02-10T15:11:00.000Z","key":1486739460000,"doc_count":10},{"key_as_string":"2017-02-10T15:12:00.000Z","key":1486739520000,"doc_count":18},{"key_as_string":"2017-02-10T15:13:00.000Z","key":1486739580000,"doc_count":14},{"key_as_string":"2017-02-10T15:14:00.000Z","key":1486739640000,"doc_count":11},{"key_as_string":"2017-02-10T15:15:00.000Z","key":1486739700000,"doc_count":16},{"key_as_string":"2017-02-10T15:16:00.000Z","key":1486739760000,"doc_count":13},{"key_as_string":"2017-02-10T15:17:00.000Z","key":1486739820000,"doc_count":20},{"key_as_string":"2017-02-10T15:18:00.000Z","key":1486739880000,"doc_count":10},{"key_as_string":"2017-02-10T15:19:00.000Z","key":1486739940000,"doc_count":16},{"key_as_string":"2017-02-10T15:20:00.000Z","key":1486740000000,"doc_count":15},{"key_as_string":"2017-02-10T15:21:00.000Z","key":1486740060000,"doc_count":16},{"key_as_string":"2017-02-10T15:22:00.000Z","key":1486740120000,"doc_count":20},{"key_as_string":"2017-02-10T15:23:00.000Z","key":1486740180000,"doc_count":12},{"key_as_string":"2017-02-10T15:24:00.000Z","key":1486740240000,"doc_count":15},{"key_as_string":"2017-02-10T15:25:00.000Z","key":1486740300000,"doc_count":12},{"key_as_string":"2017-02-10T15:26:00.000Z","key":1486740360000,"doc_count":16},{"key_as_string":"2017-02-10T15:27:00.000Z","key":1486740420000,"doc_count":14},{"key_as_string":"2017-02-10T15:28:00.000Z","key":1486740480000,"doc_count":12},{"key_as_string":"2017-02-10T15:29:00.000Z","key":1486740540000,"doc_count":10},{"key_as_string":"2017-02-10T15:30:00.000Z","key":1486740600000,"doc_count":16},{"key_as_string":"2017-02-10T15:31:00.000Z","key":1486740660000,"doc_count":13},{"key_as_string":"2017-02-10T15:32:00.000Z","key":1486740720000,"doc_count":14},{"key_as_string":"2017-02-10T15:33:00.000Z","key":1486740780000,"doc_count":11},{"key_as_string":"2017-02-10T15:34:00.000Z","key":1486740840000,"doc_count":12},{"key_as_string":"2017-02-10T15:35:00.000Z","key":1486740900000,"doc_count":12},{"key_as_string":"2017-02-10T15:36:00.000Z","key":1486740960000,"doc_count":11},{"key_as_string":"2017-02-10T15:37:00.000Z","key":1486741020000,"doc_count":13},{"key_as_string":"2017-02-10T15:38:00.000Z","key":1486741080000,"doc_count":11},{"key_as_string":"2017-02-10T15:39:00.000Z","key":1486741140000,"doc_count":11},{"key_as_string":"2017-02-10T15:40:00.000Z","key":1486741200000,"doc_count":12},{"key_as_string":"2017-02-10T15:41:00.000Z","key":1486741260000,"doc_count":16},{"key_as_string":"2017-02-10T15:42:00.000Z","key":1486741320000,"doc_count":15},{"key_as_string":"2017-02-10T15:43:00.000Z","key":1486741380000,"doc_count":15},{"key_as_string":"2017-02-10T15:44:00.000Z","key":1486741440000,"doc_count":15},{"key_as_string":"2017-02-10T15:45:00.000Z","key":1486741500000,"doc_count":15},{"key_as_string":"2017-02-10T15:46:00.000Z","key":1486741560000,"doc_count":11},{"key_as_string":"2017-02-10T15:47:00.000Z","key":1486741620000,"doc_count":14},{"key_as_string":"2017-02-10T15:48:00.000Z","key":1486741680000,"doc_count":15},{"key_as_string":"2017-02-10T15:49:00.000Z","key":1486741740000,"doc_count":12},{"key_as_string":"2017-02-10T15:50:00.000Z","key":1486741800000,"doc_count":12},{"key_as_string":"2017-02-10T15:51:00.000Z","key":1486741860000,"doc_count":12},{"key_as_string":"2017-02-10T15:52:00.000Z","key":1486741920000,"doc_count":19},{"key_as_string":"2017-02-10T15:53:00.000Z","key":1486741980000,"doc_count":14},{"key_as_string":"2017-02-10T15:54:00.000Z","key":1486742040000,"doc_count":18},{"key_as_string":"2017-02-10T15:55:00.000Z","key":1486742100000,"doc_count":11},{"key_as_string":"2017-02-10T15:56:00.000Z","key":1486742160000,"doc_count":16},{"key_as_string":"2017-02-10T15:57:00.000Z","key":1486742220000,"doc_count":11},{"key_as_string":"2017-02-10T15:58:00.000Z","key":1486742280000,"doc_count":10},{"key_as_string":"2017-02-10T15:59:00.000Z","key":1486742340000,"doc_count":12},{"key_as_string":"2017-02-10T16:00:00.000Z","key":1486742400000,"doc_count":16},{"key_as_string":"2017-02-10T16:01:00.000Z","key":1486742460000,"doc_count":12},{"key_as_string":"2017-02-10T16:02:00.000Z","key":1486742520000,"doc_count":16},{"key_as_string":"2017-02-10T16:03:00.000Z","key":1486742580000,"doc_count":11},{"key_as_string":"2017-02-10T16:04:00.000Z","key":1486742640000,"doc_count":13},{"key_as_string":"2017-02-10T16:05:00.000Z","key":1486742700000,"doc_count":15},{"key_as_string":"2017-02-10T16:06:00.000Z","key":1486742760000,"doc_count":13},{"key_as_string":"2017-02-10T16:07:00.000Z","key":1486742820000,"doc_count":14},{"key_as_string":"2017-02-10T16:08:00.000Z","key":1486742880000,"doc_count":16},{"key_as_string":"2017-02-10T16:09:00.000Z","key":1486742940000,"doc_count":8},{"key_as_string":"2017-02-10T16:10:00.000Z","key":1486743000000,"doc_count":13},{"key_as_string":"2017-02-10T16:11:00.000Z","key":1486743060000,"doc_count":13},{"key_as_string":"2017-02-10T16:12:00.000Z","key":1486743120000,"doc_count":15},{"key_as_string":"2017-02-10T16:13:00.000Z","key":1486743180000,"doc_count":20},{"key_as_string":"2017-02-10T16:14:00.000Z","key":1486743240000,"doc_count":12},{"key_as_string":"2017-02-10T16:15:00.000Z","key":1486743300000,"doc_count":10},{"key_as_string":"2017-02-10T16:16:00.000Z","key":1486743360000,"doc_count":12},{"key_as_string":"2017-02-10T16:17:00.000Z","key":1486743420000,"doc_count":12},{"key_as_string":"2017-02-10T16:18:00.000Z","key":1486743480000,"doc_count":15},{"key_as_string":"2017-02-10T16:19:00.000Z","key":1486743540000,"doc_count":11},{"key_as_string":"2017-02-10T16:20:00.000Z","key":1486743600000,"doc_count":10},{"key_as_string":"2017-02-10T16:21:00.000Z","key":1486743660000,"doc_count":13},{"key_as_string":"2017-02-10T16:22:00.000Z","key":1486743720000,"doc_count":12},{"key_as_string":"2017-02-10T16:23:00.000Z","key":1486743780000,"doc_count":15},{"key_as_string":"2017-02-10T16:24:00.000Z","key":1486743840000,"doc_count":17},{"key_as_string":"2017-02-10T16:25:00.000Z","key":1486743900000,"doc_count":12},{"key_as_string":"2017-02-10T16:26:00.000Z","key":1486743960000,"doc_count":13},{"key_as_string":"2017-02-10T16:27:00.000Z","key":1486744020000,"doc_count":11},{"key_as_string":"2017-02-10T16:28:00.000Z","key":1486744080000,"doc_count":8},{"key_as_string":"2017-02-10T16:29:00.000Z","key":1486744140000,"doc_count":14},{"key_as_string":"2017-02-10T16:30:00.000Z","key":1486744200000,"doc_count":12},{"key_as_string":"2017-02-10T16:31:00.000Z","key":1486744260000,"doc_count":12},{"key_as_string":"2017-02-10T16:32:00.000Z","key":1486744320000,"doc_count":12},{"key_as_string":"2017-02-10T16:33:00.000Z","key":1486744380000,"doc_count":8},{"key_as_string":"2017-02-10T16:34:00.000Z","key":1486744440000,"doc_count":18},{"key_as_string":"2017-02-10T16:35:00.000Z","key":1486744500000,"doc_count":14},{"key_as_string":"2017-02-10T16:36:00.000Z","key":1486744560000,"doc_count":12},{"key_as_string":"2017-02-10T16:37:00.000Z","key":1486744620000,"doc_count":10},{"key_as_string":"2017-02-10T16:38:00.000Z","key":1486744680000,"doc_count":19},{"key_as_string":"2017-02-10T16:39:00.000Z","key":1486744740000,"doc_count":8},{"key_as_string":"2017-02-10T16:40:00.000Z","key":1486744800000,"doc_count":12},{"key_as_string":"2017-02-10T16:41:00.000Z","key":1486744860000,"doc_count":16},{"key_as_string":"2017-02-10T16:42:00.000Z","key":1486744920000,"doc_count":11},{"key_as_string":"2017-02-10T16:43:00.000Z","key":1486744980000,"doc_count":15},{"key_as_string":"2017-02-10T16:44:00.000Z","key":1486745040000,"doc_count":9},{"key_as_string":"2017-02-10T16:45:00.000Z","key":1486745100000,"doc_count":15},{"key_as_string":"2017-02-10T16:46:00.000Z","key":1486745160000,"doc_count":11},{"key_as_string":"2017-02-10T16:47:00.000Z","key":1486745220000,"doc_count":16},{"key_as_string":"2017-02-10T16:48:00.000Z","key":1486745280000,"doc_count":17},{"key_as_string":"2017-02-10T16:49:00.000Z","key":1486745340000,"doc_count":10},{"key_as_string":"2017-02-10T16:50:00.000Z","key":1486745400000,"doc_count":11},{"key_as_string":"2017-02-10T16:51:00.000Z","key":1486745460000,"doc_count":13},{"key_as_string":"2017-02-10T16:52:00.000Z","key":1486745520000,"doc_count":7},{"key_as_string":"2017-02-10T16:53:00.000Z","key":1486745580000,"doc_count":13},{"key_as_string":"2017-02-10T16:54:00.000Z","key":1486745640000,"doc_count":12},{"key_as_string":"2017-02-10T16:55:00.000Z","key":1486745700000,"doc_count":18},{"key_as_string":"2017-02-10T16:56:00.000Z","key":1486745760000,"doc_count":6},{"key_as_string":"2017-02-10T16:57:00.000Z","key":1486745820000,"doc_count":11},{"key_as_string":"2017-02-10T16:58:00.000Z","key":1486745880000,"doc_count":10},{"key_as_string":"2017-02-10T16:59:00.000Z","key":1486745940000,"doc_count":12},{"key_as_string":"2017-02-10T17:00:00.000Z","key":1486746000000,"doc_count":13},{"key_as_string":"2017-02-10T17:01:00.000Z","key":1486746060000,"doc_count":9},{"key_as_string":"2017-02-10T17:02:00.000Z","key":1486746120000,"doc_count":14},{"key_as_string":"2017-02-10T17:03:00.000Z","key":1486746180000,"doc_count":13},{"key_as_string":"2017-02-10T17:04:00.000Z","key":1486746240000,"doc_count":12},{"key_as_string":"2017-02-10T17:05:00.000Z","key":1486746300000,"doc_count":9},{"key_as_string":"2017-02-10T17:06:00.000Z","key":1486746360000,"doc_count":14},{"key_as_string":"2017-02-10T17:07:00.000Z","key":1486746420000,"doc_count":15},{"key_as_string":"2017-02-10T17:08:00.000Z","key":1486746480000,"doc_count":11},{"key_as_string":"2017-02-10T17:09:00.000Z","key":1486746540000,"doc_count":8},{"key_as_string":"2017-02-10T17:10:00.000Z","key":1486746600000,"doc_count":9},{"key_as_string":"2017-02-10T17:11:00.000Z","key":1486746660000,"doc_count":12},{"key_as_string":"2017-02-10T17:12:00.000Z","key":1486746720000,"doc_count":15},{"key_as_string":"2017-02-10T17:13:00.000Z","key":1486746780000,"doc_count":13},{"key_as_string":"2017-02-10T17:14:00.000Z","key":1486746840000,"doc_count":14},{"key_as_string":"2017-02-10T17:15:00.000Z","key":1486746900000,"doc_count":10},{"key_as_string":"2017-02-10T17:16:00.000Z","key":1486746960000,"doc_count":12},{"key_as_string":"2017-02-10T17:17:00.000Z","key":1486747020000,"doc_count":10},{"key_as_string":"2017-02-10T17:18:00.000Z","key":1486747080000,"doc_count":14},{"key_as_string":"2017-02-10T17:19:00.000Z","key":1486747140000,"doc_count":7},{"key_as_string":"2017-02-10T17:20:00.000Z","key":1486747200000,"doc_count":9},{"key_as_string":"2017-02-10T17:21:00.000Z","key":1486747260000,"doc_count":10},{"key_as_string":"2017-02-10T17:22:00.000Z","key":1486747320000,"doc_count":13},{"key_as_string":"2017-02-10T17:23:00.000Z","key":1486747380000,"doc_count":16},{"key_as_string":"2017-02-10T17:24:00.000Z","key":1486747440000,"doc_count":11},{"key_as_string":"2017-02-10T17:25:00.000Z","key":1486747500000,"doc_count":14},{"key_as_string":"2017-02-10T17:26:00.000Z","key":1486747560000,"doc_count":12},{"key_as_string":"2017-02-10T17:27:00.000Z","key":1486747620000,"doc_count":12},{"key_as_string":"2017-02-10T17:28:00.000Z","key":1486747680000,"doc_count":9},{"key_as_string":"2017-02-10T17:29:00.000Z","key":1486747740000,"doc_count":16},{"key_as_string":"2017-02-10T17:30:00.000Z","key":1486747800000,"doc_count":14},{"key_as_string":"2017-02-10T17:31:00.000Z","key":1486747860000,"doc_count":10},{"key_as_string":"2017-02-10T17:32:00.000Z","key":1486747920000,"doc_count":8},{"key_as_string":"2017-02-10T17:33:00.000Z","key":1486747980000,"doc_count":9},{"key_as_string":"2017-02-10T17:34:00.000Z","key":1486748040000,"doc_count":15},{"key_as_string":"2017-02-10T17:35:00.000Z","key":1486748100000,"doc_count":9},{"key_as_string":"2017-02-10T17:36:00.000Z","key":1486748160000,"doc_count":13},{"key_as_string":"2017-02-10T17:37:00.000Z","key":1486748220000,"doc_count":9},{"key_as_string":"2017-02-10T17:38:00.000Z","key":1486748280000,"doc_count":7},{"key_as_string":"2017-02-10T17:39:00.000Z","key":1486748340000,"doc_count":18},{"key_as_string":"2017-02-10T17:40:00.000Z","key":1486748400000,"doc_count":14},{"key_as_string":"2017-02-10T17:41:00.000Z","key":1486748460000,"doc_count":9},{"key_as_string":"2017-02-10T17:42:00.000Z","key":1486748520000,"doc_count":12},{"key_as_string":"2017-02-10T17:43:00.000Z","key":1486748580000,"doc_count":9},{"key_as_string":"2017-02-10T17:44:00.000Z","key":1486748640000,"doc_count":14},{"key_as_string":"2017-02-10T17:45:00.000Z","key":1486748700000,"doc_count":11},{"key_as_string":"2017-02-10T17:46:00.000Z","key":1486748760000,"doc_count":11},{"key_as_string":"2017-02-10T17:47:00.000Z","key":1486748820000,"doc_count":12},{"key_as_string":"2017-02-10T17:48:00.000Z","key":1486748880000,"doc_count":16},{"key_as_string":"2017-02-10T17:49:00.000Z","key":1486748940000,"doc_count":10},{"key_as_string":"2017-02-10T17:50:00.000Z","key":1486749000000,"doc_count":14},{"key_as_string":"2017-02-10T17:51:00.000Z","key":1486749060000,"doc_count":8},{"key_as_string":"2017-02-10T17:52:00.000Z","key":1486749120000,"doc_count":16},{"key_as_string":"2017-02-10T17:53:00.000Z","key":1486749180000,"doc_count":9},{"key_as_string":"2017-02-10T17:54:00.000Z","key":1486749240000,"doc_count":11},{"key_as_string":"2017-02-10T17:55:00.000Z","key":1486749300000,"doc_count":9},{"key_as_string":"2017-02-10T17:56:00.000Z","key":1486749360000,"doc_count":12},{"key_as_string":"2017-02-10T17:57:00.000Z","key":1486749420000,"doc_count":13},{"key_as_string":"2017-02-10T17:58:00.000Z","key":1486749480000,"doc_count":12},{"key_as_string":"2017-02-10T17:59:00.000Z","key":1486749540000,"doc_count":15},{"key_as_string":"2017-02-10T18:00:00.000Z","key":1486749600000,"doc_count":10},{"key_as_string":"2017-02-10T18:01:00.000Z","key":1486749660000,"doc_count":10},{"key_as_string":"2017-02-10T18:02:00.000Z","key":1486749720000,"doc_count":10},{"key_as_string":"2017-02-10T18:03:00.000Z","key":1486749780000,"doc_count":9},{"key_as_string":"2017-02-10T18:04:00.000Z","key":1486749840000,"doc_count":12},{"key_as_string":"2017-02-10T18:05:00.000Z","key":1486749900000,"doc_count":14},{"key_as_string":"2017-02-10T18:06:00.000Z","key":1486749960000,"doc_count":16},{"key_as_string":"2017-02-10T18:07:00.000Z","key":1486750020000,"doc_count":12},{"key_as_string":"2017-02-10T18:08:00.000Z","key":1486750080000,"doc_count":10},{"key_as_string":"2017-02-10T18:09:00.000Z","key":1486750140000,"doc_count":11},{"key_as_string":"2017-02-10T18:10:00.000Z","key":1486750200000,"doc_count":12},{"key_as_string":"2017-02-10T18:11:00.000Z","key":1486750260000,"doc_count":10},{"key_as_string":"2017-02-10T18:12:00.000Z","key":1486750320000,"doc_count":13},{"key_as_string":"2017-02-10T18:13:00.000Z","key":1486750380000,"doc_count":12},{"key_as_string":"2017-02-10T18:14:00.000Z","key":1486750440000,"doc_count":14},{"key_as_string":"2017-02-10T18:15:00.000Z","key":1486750500000,"doc_count":11},{"key_as_string":"2017-02-10T18:16:00.000Z","key":1486750560000,"doc_count":12},{"key_as_string":"2017-02-10T18:17:00.000Z","key":1486750620000,"doc_count":10},{"key_as_string":"2017-02-10T18:18:00.000Z","key":1486750680000,"doc_count":9},{"key_as_string":"2017-02-10T18:19:00.000Z","key":1486750740000,"doc_count":14},{"key_as_string":"2017-02-10T18:20:00.000Z","key":1486750800000,"doc_count":6},{"key_as_string":"2017-02-10T18:21:00.000Z","key":1486750860000,"doc_count":13},{"key_as_string":"2017-02-10T18:22:00.000Z","key":1486750920000,"doc_count":14},{"key_as_string":"2017-02-10T18:23:00.000Z","key":1486750980000,"doc_count":9},{"key_as_string":"2017-02-10T18:24:00.000Z","key":1486751040000,"doc_count":9},{"key_as_string":"2017-02-10T18:25:00.000Z","key":1486751100000,"doc_count":10},{"key_as_string":"2017-02-10T18:26:00.000Z","key":1486751160000,"doc_count":9},{"key_as_string":"2017-02-10T18:27:00.000Z","key":1486751220000,"doc_count":12},{"key_as_string":"2017-02-10T18:28:00.000Z","key":1486751280000,"doc_count":7},{"key_as_string":"2017-02-10T18:29:00.000Z","key":1486751340000,"doc_count":12},{"key_as_string":"2017-02-10T18:30:00.000Z","key":1486751400000,"doc_count":13},{"key_as_string":"2017-02-10T18:31:00.000Z","key":1486751460000,"doc_count":11},{"key_as_string":"2017-02-10T18:32:00.000Z","key":1486751520000,"doc_count":13},{"key_as_string":"2017-02-10T18:33:00.000Z","key":1486751580000,"doc_count":4},{"key_as_string":"2017-02-10T18:34:00.000Z","key":1486751640000,"doc_count":12},{"key_as_string":"2017-02-10T18:35:00.000Z","key":1486751700000,"doc_count":12},{"key_as_string":"2017-02-10T18:36:00.000Z","key":1486751760000,"doc_count":9},{"key_as_string":"2017-02-10T18:37:00.000Z","key":1486751820000,"doc_count":14},{"key_as_string":"2017-02-10T18:38:00.000Z","key":1486751880000,"doc_count":9},{"key_as_string":"2017-02-10T18:39:00.000Z","key":1486751940000,"doc_count":12},{"key_as_string":"2017-02-10T18:40:00.000Z","key":1486752000000,"doc_count":10},{"key_as_string":"2017-02-10T18:41:00.000Z","key":1486752060000,"doc_count":15},{"key_as_string":"2017-02-10T18:42:00.000Z","key":1486752120000,"doc_count":13},{"key_as_string":"2017-02-10T18:43:00.000Z","key":1486752180000,"doc_count":16},{"key_as_string":"2017-02-10T18:44:00.000Z","key":1486752240000,"doc_count":12},{"key_as_string":"2017-02-10T18:45:00.000Z","key":1486752300000,"doc_count":11},{"key_as_string":"2017-02-10T18:46:00.000Z","key":1486752360000,"doc_count":13},{"key_as_string":"2017-02-10T18:47:00.000Z","key":1486752420000,"doc_count":15},{"key_as_string":"2017-02-10T18:48:00.000Z","key":1486752480000,"doc_count":6},{"key_as_string":"2017-02-10T18:49:00.000Z","key":1486752540000,"doc_count":9},{"key_as_string":"2017-02-10T18:50:00.000Z","key":1486752600000,"doc_count":19},{"key_as_string":"2017-02-10T18:51:00.000Z","key":1486752660000,"doc_count":11},{"key_as_string":"2017-02-10T18:52:00.000Z","key":1486752720000,"doc_count":11},{"key_as_string":"2017-02-10T18:53:00.000Z","key":1486752780000,"doc_count":11},{"key_as_string":"2017-02-10T18:54:00.000Z","key":1486752840000,"doc_count":12},{"key_as_string":"2017-02-10T18:55:00.000Z","key":1486752900000,"doc_count":11},{"key_as_string":"2017-02-10T18:56:00.000Z","key":1486752960000,"doc_count":12},{"key_as_string":"2017-02-10T18:57:00.000Z","key":1486753020000,"doc_count":11},{"key_as_string":"2017-02-10T18:58:00.000Z","key":1486753080000,"doc_count":13},{"key_as_string":"2017-02-10T18:59:00.000Z","key":1486753140000,"doc_count":12},{"key_as_string":"2017-02-10T19:00:00.000Z","key":1486753200000,"doc_count":10},{"key_as_string":"2017-02-10T19:01:00.000Z","key":1486753260000,"doc_count":7},{"key_as_string":"2017-02-10T19:02:00.000Z","key":1486753320000,"doc_count":15},{"key_as_string":"2017-02-10T19:03:00.000Z","key":1486753380000,"doc_count":10},{"key_as_string":"2017-02-10T19:04:00.000Z","key":1486753440000,"doc_count":11},{"key_as_string":"2017-02-10T19:05:00.000Z","key":1486753500000,"doc_count":10},{"key_as_string":"2017-02-10T19:06:00.000Z","key":1486753560000,"doc_count":15},{"key_as_string":"2017-02-10T19:07:00.000Z","key":1486753620000,"doc_count":12},{"key_as_string":"2017-02-10T19:08:00.000Z","key":1486753680000,"doc_count":7},{"key_as_string":"2017-02-10T19:09:00.000Z","key":1486753740000,"doc_count":11},{"key_as_string":"2017-02-10T19:10:00.000Z","key":1486753800000,"doc_count":9},{"key_as_string":"2017-02-10T19:11:00.000Z","key":1486753860000,"doc_count":11},{"key_as_string":"2017-02-10T19:12:00.000Z","key":1486753920000,"doc_count":10},{"key_as_string":"2017-02-10T19:13:00.000Z","key":1486753980000,"doc_count":11},{"key_as_string":"2017-02-10T19:14:00.000Z","key":1486754040000,"doc_count":14},{"key_as_string":"2017-02-10T19:15:00.000Z","key":1486754100000,"doc_count":10},{"key_as_string":"2017-02-10T19:16:00.000Z","key":1486754160000,"doc_count":12},{"key_as_string":"2017-02-10T19:17:00.000Z","key":1486754220000,"doc_count":12},{"key_as_string":"2017-02-10T19:18:00.000Z","key":1486754280000,"doc_count":11},{"key_as_string":"2017-02-10T19:19:00.000Z","key":1486754340000,"doc_count":11},{"key_as_string":"2017-02-10T19:20:00.000Z","key":1486754400000,"doc_count":10},{"key_as_string":"2017-02-10T19:21:00.000Z","key":1486754460000,"doc_count":15},{"key_as_string":"2017-02-10T19:22:00.000Z","key":1486754520000,"doc_count":8},{"key_as_string":"2017-02-10T19:23:00.000Z","key":1486754580000,"doc_count":7},{"key_as_string":"2017-02-10T19:24:00.000Z","key":1486754640000,"doc_count":20},{"key_as_string":"2017-02-10T19:25:00.000Z","key":1486754700000,"doc_count":10},{"key_as_string":"2017-02-10T19:26:00.000Z","key":1486754760000,"doc_count":9},{"key_as_string":"2017-02-10T19:27:00.000Z","key":1486754820000,"doc_count":13},{"key_as_string":"2017-02-10T19:28:00.000Z","key":1486754880000,"doc_count":12},{"key_as_string":"2017-02-10T19:29:00.000Z","key":1486754940000,"doc_count":10},{"key_as_string":"2017-02-10T19:30:00.000Z","key":1486755000000,"doc_count":11},{"key_as_string":"2017-02-10T19:31:00.000Z","key":1486755060000,"doc_count":10},{"key_as_string":"2017-02-10T19:32:00.000Z","key":1486755120000,"doc_count":10},{"key_as_string":"2017-02-10T19:33:00.000Z","key":1486755180000,"doc_count":11},{"key_as_string":"2017-02-10T19:34:00.000Z","key":1486755240000,"doc_count":12},{"key_as_string":"2017-02-10T19:35:00.000Z","key":1486755300000,"doc_count":8},{"key_as_string":"2017-02-10T19:36:00.000Z","key":1486755360000,"doc_count":10},{"key_as_string":"2017-02-10T19:37:00.000Z","key":1486755420000,"doc_count":13},{"key_as_string":"2017-02-10T19:38:00.000Z","key":1486755480000,"doc_count":11},{"key_as_string":"2017-02-10T19:39:00.000Z","key":1486755540000,"doc_count":7},{"key_as_string":"2017-02-10T19:40:00.000Z","key":1486755600000,"doc_count":17},{"key_as_string":"2017-02-10T19:41:00.000Z","key":1486755660000,"doc_count":8},{"key_as_string":"2017-02-10T19:42:00.000Z","key":1486755720000,"doc_count":15},{"key_as_string":"2017-02-10T19:43:00.000Z","key":1486755780000,"doc_count":11},{"key_as_string":"2017-02-10T19:44:00.000Z","key":1486755840000,"doc_count":11},{"key_as_string":"2017-02-10T19:45:00.000Z","key":1486755900000,"doc_count":8},{"key_as_string":"2017-02-10T19:46:00.000Z","key":1486755960000,"doc_count":8},{"key_as_string":"2017-02-10T19:47:00.000Z","key":1486756020000,"doc_count":15},{"key_as_string":"2017-02-10T19:48:00.000Z","key":1486756080000,"doc_count":15},{"key_as_string":"2017-02-10T19:49:00.000Z","key":1486756140000,"doc_count":11},{"key_as_string":"2017-02-10T19:50:00.000Z","key":1486756200000,"doc_count":15},{"key_as_string":"2017-02-10T19:51:00.000Z","key":1486756260000,"doc_count":9},{"key_as_string":"2017-02-10T19:52:00.000Z","key":1486756320000,"doc_count":10},{"key_as_string":"2017-02-10T19:53:00.000Z","key":1486756380000,"doc_count":9},{"key_as_string":"2017-02-10T19:54:00.000Z","key":1486756440000,"doc_count":12},{"key_as_string":"2017-02-10T19:55:00.000Z","key":1486756500000,"doc_count":9},{"key_as_string":"2017-02-10T19:56:00.000Z","key":1486756560000,"doc_count":13},{"key_as_string":"2017-02-10T19:57:00.000Z","key":1486756620000,"doc_count":12},{"key_as_string":"2017-02-10T19:58:00.000Z","key":1486756680000,"doc_count":10},{"key_as_string":"2017-02-10T19:59:00.000Z","key":1486756740000,"doc_count":7},{"key_as_string":"2017-02-10T20:00:00.000Z","key":1486756800000,"doc_count":12},{"key_as_string":"2017-02-10T20:01:00.000Z","key":1486756860000,"doc_count":12},{"key_as_string":"2017-02-10T20:02:00.000Z","key":1486756920000,"doc_count":12},{"key_as_string":"2017-02-10T20:03:00.000Z","key":1486756980000,"doc_count":8},{"key_as_string":"2017-02-10T20:04:00.000Z","key":1486757040000,"doc_count":20},{"key_as_string":"2017-02-10T20:05:00.000Z","key":1486757100000,"doc_count":7},{"key_as_string":"2017-02-10T20:06:00.000Z","key":1486757160000,"doc_count":16},{"key_as_string":"2017-02-10T20:07:00.000Z","key":1486757220000,"doc_count":13},{"key_as_string":"2017-02-10T20:08:00.000Z","key":1486757280000,"doc_count":9},{"key_as_string":"2017-02-10T20:09:00.000Z","key":1486757340000,"doc_count":12},{"key_as_string":"2017-02-10T20:10:00.000Z","key":1486757400000,"doc_count":7},{"key_as_string":"2017-02-10T20:11:00.000Z","key":1486757460000,"doc_count":8},{"key_as_string":"2017-02-10T20:12:00.000Z","key":1486757520000,"doc_count":10},{"key_as_string":"2017-02-10T20:13:00.000Z","key":1486757580000,"doc_count":8},{"key_as_string":"2017-02-10T20:14:00.000Z","key":1486757640000,"doc_count":17},{"key_as_string":"2017-02-10T20:15:00.000Z","key":1486757700000,"doc_count":11},{"key_as_string":"2017-02-10T20:16:00.000Z","key":1486757760000,"doc_count":12},{"key_as_string":"2017-02-10T20:17:00.000Z","key":1486757820000,"doc_count":12},{"key_as_string":"2017-02-10T20:18:00.000Z","key":1486757880000,"doc_count":12},{"key_as_string":"2017-02-10T20:19:00.000Z","key":1486757940000,"doc_count":15},{"key_as_string":"2017-02-10T20:20:00.000Z","key":1486758000000,"doc_count":7},{"key_as_string":"2017-02-10T20:21:00.000Z","key":1486758060000,"doc_count":11},{"key_as_string":"2017-02-10T20:22:00.000Z","key":1486758120000,"doc_count":10},{"key_as_string":"2017-02-10T20:23:00.000Z","key":1486758180000,"doc_count":14},{"key_as_string":"2017-02-10T20:24:00.000Z","key":1486758240000,"doc_count":11},{"key_as_string":"2017-02-10T20:25:00.000Z","key":1486758300000,"doc_count":9},{"key_as_string":"2017-02-10T20:26:00.000Z","key":1486758360000,"doc_count":7},{"key_as_string":"2017-02-10T20:27:00.000Z","key":1486758420000,"doc_count":10},{"key_as_string":"2017-02-10T20:28:00.000Z","key":1486758480000,"doc_count":14},{"key_as_string":"2017-02-10T20:29:00.000Z","key":1486758540000,"doc_count":12},{"key_as_string":"2017-02-10T20:30:00.000Z","key":1486758600000,"doc_count":10},{"key_as_string":"2017-02-10T20:31:00.000Z","key":1486758660000,"doc_count":11},{"key_as_string":"2017-02-10T20:32:00.000Z","key":1486758720000,"doc_count":12},{"key_as_string":"2017-02-10T20:33:00.000Z","key":1486758780000,"doc_count":15},{"key_as_string":"2017-02-10T20:34:00.000Z","key":1486758840000,"doc_count":12},{"key_as_string":"2017-02-10T20:35:00.000Z","key":1486758900000,"doc_count":14},{"key_as_string":"2017-02-10T20:36:00.000Z","key":1486758960000,"doc_count":6},{"key_as_string":"2017-02-10T20:37:00.000Z","key":1486759020000,"doc_count":11},{"key_as_string":"2017-02-10T20:38:00.000Z","key":1486759080000,"doc_count":15},{"key_as_string":"2017-02-10T20:39:00.000Z","key":1486759140000,"doc_count":11},{"key_as_string":"2017-02-10T20:40:00.000Z","key":1486759200000,"doc_count":10},{"key_as_string":"2017-02-10T20:41:00.000Z","key":1486759260000,"doc_count":10},{"key_as_string":"2017-02-10T20:42:00.000Z","key":1486759320000,"doc_count":8},{"key_as_string":"2017-02-10T20:43:00.000Z","key":1486759380000,"doc_count":10},{"key_as_string":"2017-02-10T20:44:00.000Z","key":1486759440000,"doc_count":10},{"key_as_string":"2017-02-10T20:45:00.000Z","key":1486759500000,"doc_count":9},{"key_as_string":"2017-02-10T20:46:00.000Z","key":1486759560000,"doc_count":12},{"key_as_string":"2017-02-10T20:47:00.000Z","key":1486759620000,"doc_count":11},{"key_as_string":"2017-02-10T20:48:00.000Z","key":1486759680000,"doc_count":13},{"key_as_string":"2017-02-10T20:49:00.000Z","key":1486759740000,"doc_count":8},{"key_as_string":"2017-02-10T20:50:00.000Z","key":1486759800000,"doc_count":10},{"key_as_string":"2017-02-10T20:51:00.000Z","key":1486759860000,"doc_count":10},{"key_as_string":"2017-02-10T20:52:00.000Z","key":1486759920000,"doc_count":14},{"key_as_string":"2017-02-10T20:53:00.000Z","key":1486759980000,"doc_count":10},{"key_as_string":"2017-02-10T20:54:00.000Z","key":1486760040000,"doc_count":17},{"key_as_string":"2017-02-10T20:55:00.000Z","key":1486760100000,"doc_count":8},{"key_as_string":"2017-02-10T20:56:00.000Z","key":1486760160000,"doc_count":10},{"key_as_string":"2017-02-10T20:57:00.000Z","key":1486760220000,"doc_count":11},{"key_as_string":"2017-02-10T20:58:00.000Z","key":1486760280000,"doc_count":9},{"key_as_string":"2017-02-10T20:59:00.000Z","key":1486760340000,"doc_count":14},{"key_as_string":"2017-02-10T21:00:00.000Z","key":1486760400000,"doc_count":11},{"key_as_string":"2017-02-10T21:01:00.000Z","key":1486760460000,"doc_count":13},{"key_as_string":"2017-02-10T21:02:00.000Z","key":1486760520000,"doc_count":8},{"key_as_string":"2017-02-10T21:03:00.000Z","key":1486760580000,"doc_count":13},{"key_as_string":"2017-02-10T21:04:00.000Z","key":1486760640000,"doc_count":10},{"key_as_string":"2017-02-10T21:05:00.000Z","key":1486760700000,"doc_count":11},{"key_as_string":"2017-02-10T21:06:00.000Z","key":1486760760000,"doc_count":5},{"key_as_string":"2017-02-10T21:07:00.000Z","key":1486760820000,"doc_count":11},{"key_as_string":"2017-02-10T21:08:00.000Z","key":1486760880000,"doc_count":12},{"key_as_string":"2017-02-10T21:09:00.000Z","key":1486760940000,"doc_count":7},{"key_as_string":"2017-02-10T21:10:00.000Z","key":1486761000000,"doc_count":13},{"key_as_string":"2017-02-10T21:11:00.000Z","key":1486761060000,"doc_count":10},{"key_as_string":"2017-02-10T21:12:00.000Z","key":1486761120000,"doc_count":13},{"key_as_string":"2017-02-10T21:13:00.000Z","key":1486761180000,"doc_count":11},{"key_as_string":"2017-02-10T21:14:00.000Z","key":1486761240000,"doc_count":11},{"key_as_string":"2017-02-10T21:15:00.000Z","key":1486761300000,"doc_count":9},{"key_as_string":"2017-02-10T21:16:00.000Z","key":1486761360000,"doc_count":13},{"key_as_string":"2017-02-10T21:17:00.000Z","key":1486761420000,"doc_count":10},{"key_as_string":"2017-02-10T21:18:00.000Z","key":1486761480000,"doc_count":12},{"key_as_string":"2017-02-10T21:19:00.000Z","key":1486761540000,"doc_count":8},{"key_as_string":"2017-02-10T21:20:00.000Z","key":1486761600000,"doc_count":11},{"key_as_string":"2017-02-10T21:21:00.000Z","key":1486761660000,"doc_count":13},{"key_as_string":"2017-02-10T21:22:00.000Z","key":1486761720000,"doc_count":9},{"key_as_string":"2017-02-10T21:23:00.000Z","key":1486761780000,"doc_count":13},{"key_as_string":"2017-02-10T21:24:00.000Z","key":1486761840000,"doc_count":8},{"key_as_string":"2017-02-10T21:25:00.000Z","key":1486761900000,"doc_count":8},{"key_as_string":"2017-02-10T21:26:00.000Z","key":1486761960000,"doc_count":12},{"key_as_string":"2017-02-10T21:27:00.000Z","key":1486762020000,"doc_count":10},{"key_as_string":"2017-02-10T21:28:00.000Z","key":1486762080000,"doc_count":16},{"key_as_string":"2017-02-10T21:29:00.000Z","key":1486762140000,"doc_count":7},{"key_as_string":"2017-02-10T21:30:00.000Z","key":1486762200000,"doc_count":10},{"key_as_string":"2017-02-10T21:31:00.000Z","key":1486762260000,"doc_count":16},{"key_as_string":"2017-02-10T21:32:00.000Z","key":1486762320000,"doc_count":14},{"key_as_string":"2017-02-10T21:33:00.000Z","key":1486762380000,"doc_count":6},{"key_as_string":"2017-02-10T21:34:00.000Z","key":1486762440000,"doc_count":9},{"key_as_string":"2017-02-10T21:35:00.000Z","key":1486762500000,"doc_count":11},{"key_as_string":"2017-02-10T21:36:00.000Z","key":1486762560000,"doc_count":12},{"key_as_string":"2017-02-10T21:37:00.000Z","key":1486762620000,"doc_count":16},{"key_as_string":"2017-02-10T21:38:00.000Z","key":1486762680000,"doc_count":11},{"key_as_string":"2017-02-10T21:39:00.000Z","key":1486762740000,"doc_count":10},{"key_as_string":"2017-02-10T21:40:00.000Z","key":1486762800000,"doc_count":11},{"key_as_string":"2017-02-10T21:41:00.000Z","key":1486762860000,"doc_count":11},{"key_as_string":"2017-02-10T21:42:00.000Z","key":1486762920000,"doc_count":13},{"key_as_string":"2017-02-10T21:43:00.000Z","key":1486762980000,"doc_count":11},{"key_as_string":"2017-02-10T21:44:00.000Z","key":1486763040000,"doc_count":14},{"key_as_string":"2017-02-10T21:45:00.000Z","key":1486763100000,"doc_count":9},{"key_as_string":"2017-02-10T21:46:00.000Z","key":1486763160000,"doc_count":9},{"key_as_string":"2017-02-10T21:47:00.000Z","key":1486763220000,"doc_count":16},{"key_as_string":"2017-02-10T21:48:00.000Z","key":1486763280000,"doc_count":6},{"key_as_string":"2017-02-10T21:49:00.000Z","key":1486763340000,"doc_count":12},{"key_as_string":"2017-02-10T21:50:00.000Z","key":1486763400000,"doc_count":10},{"key_as_string":"2017-02-10T21:51:00.000Z","key":1486763460000,"doc_count":11},{"key_as_string":"2017-02-10T21:52:00.000Z","key":1486763520000,"doc_count":11},{"key_as_string":"2017-02-10T21:53:00.000Z","key":1486763580000,"doc_count":12},{"key_as_string":"2017-02-10T21:54:00.000Z","key":1486763640000,"doc_count":15},{"key_as_string":"2017-02-10T21:55:00.000Z","key":1486763700000,"doc_count":12},{"key_as_string":"2017-02-10T21:56:00.000Z","key":1486763760000,"doc_count":9},{"key_as_string":"2017-02-10T21:57:00.000Z","key":1486763820000,"doc_count":13},{"key_as_string":"2017-02-10T21:58:00.000Z","key":1486763880000,"doc_count":8},{"key_as_string":"2017-02-10T21:59:00.000Z","key":1486763940000,"doc_count":9},{"key_as_string":"2017-02-10T22:00:00.000Z","key":1486764000000,"doc_count":20},{"key_as_string":"2017-02-10T22:01:00.000Z","key":1486764060000,"doc_count":11},{"key_as_string":"2017-02-10T22:02:00.000Z","key":1486764120000,"doc_count":14},{"key_as_string":"2017-02-10T22:03:00.000Z","key":1486764180000,"doc_count":8},{"key_as_string":"2017-02-10T22:04:00.000Z","key":1486764240000,"doc_count":13},{"key_as_string":"2017-02-10T22:05:00.000Z","key":1486764300000,"doc_count":8},{"key_as_string":"2017-02-10T22:06:00.000Z","key":1486764360000,"doc_count":14},{"key_as_string":"2017-02-10T22:07:00.000Z","key":1486764420000,"doc_count":9},{"key_as_string":"2017-02-10T22:08:00.000Z","key":1486764480000,"doc_count":8},{"key_as_string":"2017-02-10T22:09:00.000Z","key":1486764540000,"doc_count":10},{"key_as_string":"2017-02-10T22:10:00.000Z","key":1486764600000,"doc_count":18},{"key_as_string":"2017-02-10T22:11:00.000Z","key":1486764660000,"doc_count":8},{"key_as_string":"2017-02-10T22:12:00.000Z","key":1486764720000,"doc_count":9},{"key_as_string":"2017-02-10T22:13:00.000Z","key":1486764780000,"doc_count":13},{"key_as_string":"2017-02-10T22:14:00.000Z","key":1486764840000,"doc_count":9},{"key_as_string":"2017-02-10T22:15:00.000Z","key":1486764900000,"doc_count":12},{"key_as_string":"2017-02-10T22:16:00.000Z","key":1486764960000,"doc_count":7},{"key_as_string":"2017-02-10T22:17:00.000Z","key":1486765020000,"doc_count":11},{"key_as_string":"2017-02-10T22:18:00.000Z","key":1486765080000,"doc_count":9},{"key_as_string":"2017-02-10T22:19:00.000Z","key":1486765140000,"doc_count":6},{"key_as_string":"2017-02-10T22:20:00.000Z","key":1486765200000,"doc_count":10},{"key_as_string":"2017-02-10T22:21:00.000Z","key":1486765260000,"doc_count":9},{"key_as_string":"2017-02-10T22:22:00.000Z","key":1486765320000,"doc_count":12},{"key_as_string":"2017-02-10T22:23:00.000Z","key":1486765380000,"doc_count":13},{"key_as_string":"2017-02-10T22:24:00.000Z","key":1486765440000,"doc_count":12},{"key_as_string":"2017-02-10T22:25:00.000Z","key":1486765500000,"doc_count":9},{"key_as_string":"2017-02-10T22:26:00.000Z","key":1486765560000,"doc_count":17},{"key_as_string":"2017-02-10T22:27:00.000Z","key":1486765620000,"doc_count":8},{"key_as_string":"2017-02-10T22:28:00.000Z","key":1486765680000,"doc_count":15},{"key_as_string":"2017-02-10T22:29:00.000Z","key":1486765740000,"doc_count":10},{"key_as_string":"2017-02-10T22:30:00.000Z","key":1486765800000,"doc_count":7},{"key_as_string":"2017-02-10T22:31:00.000Z","key":1486765860000,"doc_count":15},{"key_as_string":"2017-02-10T22:32:00.000Z","key":1486765920000,"doc_count":8},{"key_as_string":"2017-02-10T22:33:00.000Z","key":1486765980000,"doc_count":10},{"key_as_string":"2017-02-10T22:34:00.000Z","key":1486766040000,"doc_count":13},{"key_as_string":"2017-02-10T22:35:00.000Z","key":1486766100000,"doc_count":12},{"key_as_string":"2017-02-10T22:36:00.000Z","key":1486766160000,"doc_count":10},{"key_as_string":"2017-02-10T22:37:00.000Z","key":1486766220000,"doc_count":13},{"key_as_string":"2017-02-10T22:38:00.000Z","key":1486766280000,"doc_count":8},{"key_as_string":"2017-02-10T22:39:00.000Z","key":1486766340000,"doc_count":14},{"key_as_string":"2017-02-10T22:40:00.000Z","key":1486766400000,"doc_count":14},{"key_as_string":"2017-02-10T22:41:00.000Z","key":1486766460000,"doc_count":13},{"key_as_string":"2017-02-10T22:42:00.000Z","key":1486766520000,"doc_count":9},{"key_as_string":"2017-02-10T22:43:00.000Z","key":1486766580000,"doc_count":11},{"key_as_string":"2017-02-10T22:44:00.000Z","key":1486766640000,"doc_count":12},{"key_as_string":"2017-02-10T22:45:00.000Z","key":1486766700000,"doc_count":11},{"key_as_string":"2017-02-10T22:46:00.000Z","key":1486766760000,"doc_count":5},{"key_as_string":"2017-02-10T22:47:00.000Z","key":1486766820000,"doc_count":12},{"key_as_string":"2017-02-10T22:48:00.000Z","key":1486766880000,"doc_count":8},{"key_as_string":"2017-02-10T22:49:00.000Z","key":1486766940000,"doc_count":13},{"key_as_string":"2017-02-10T22:50:00.000Z","key":1486767000000,"doc_count":9},{"key_as_string":"2017-02-10T22:51:00.000Z","key":1486767060000,"doc_count":14},{"key_as_string":"2017-02-10T22:52:00.000Z","key":1486767120000,"doc_count":8},{"key_as_string":"2017-02-10T22:53:00.000Z","key":1486767180000,"doc_count":14},{"key_as_string":"2017-02-10T22:54:00.000Z","key":1486767240000,"doc_count":5},{"key_as_string":"2017-02-10T22:55:00.000Z","key":1486767300000,"doc_count":15},{"key_as_string":"2017-02-10T22:56:00.000Z","key":1486767360000,"doc_count":10},{"key_as_string":"2017-02-10T22:57:00.000Z","key":1486767420000,"doc_count":17},{"key_as_string":"2017-02-10T22:58:00.000Z","key":1486767480000,"doc_count":10},{"key_as_string":"2017-02-10T22:59:00.000Z","key":1486767540000,"doc_count":14},{"key_as_string":"2017-02-10T23:00:00.000Z","key":1486767600000,"doc_count":5},{"key_as_string":"2017-02-10T23:01:00.000Z","key":1486767660000,"doc_count":12},{"key_as_string":"2017-02-10T23:02:00.000Z","key":1486767720000,"doc_count":12},{"key_as_string":"2017-02-10T23:03:00.000Z","key":1486767780000,"doc_count":9},{"key_as_string":"2017-02-10T23:04:00.000Z","key":1486767840000,"doc_count":7},{"key_as_string":"2017-02-10T23:05:00.000Z","key":1486767900000,"doc_count":12},{"key_as_string":"2017-02-10T23:06:00.000Z","key":1486767960000,"doc_count":7},{"key_as_string":"2017-02-10T23:07:00.000Z","key":1486768020000,"doc_count":14},{"key_as_string":"2017-02-10T23:08:00.000Z","key":1486768080000,"doc_count":10},{"key_as_string":"2017-02-10T23:09:00.000Z","key":1486768140000,"doc_count":9},{"key_as_string":"2017-02-10T23:10:00.000Z","key":1486768200000,"doc_count":15},{"key_as_string":"2017-02-10T23:11:00.000Z","key":1486768260000,"doc_count":13},{"key_as_string":"2017-02-10T23:12:00.000Z","key":1486768320000,"doc_count":10},{"key_as_string":"2017-02-10T23:13:00.000Z","key":1486768380000,"doc_count":8},{"key_as_string":"2017-02-10T23:14:00.000Z","key":1486768440000,"doc_count":10},{"key_as_string":"2017-02-10T23:15:00.000Z","key":1486768500000,"doc_count":13},{"key_as_string":"2017-02-10T23:16:00.000Z","key":1486768560000,"doc_count":9},{"key_as_string":"2017-02-10T23:17:00.000Z","key":1486768620000,"doc_count":8},{"key_as_string":"2017-02-10T23:18:00.000Z","key":1486768680000,"doc_count":7},{"key_as_string":"2017-02-10T23:19:00.000Z","key":1486768740000,"doc_count":12},{"key_as_string":"2017-02-10T23:20:00.000Z","key":1486768800000,"doc_count":9},{"key_as_string":"2017-02-10T23:21:00.000Z","key":1486768860000,"doc_count":11},{"key_as_string":"2017-02-10T23:22:00.000Z","key":1486768920000,"doc_count":8},{"key_as_string":"2017-02-10T23:23:00.000Z","key":1486768980000,"doc_count":9},{"key_as_string":"2017-02-10T23:24:00.000Z","key":1486769040000,"doc_count":14},{"key_as_string":"2017-02-10T23:25:00.000Z","key":1486769100000,"doc_count":9},{"key_as_string":"2017-02-10T23:26:00.000Z","key":1486769160000,"doc_count":8},{"key_as_string":"2017-02-10T23:27:00.000Z","key":1486769220000,"doc_count":7},{"key_as_string":"2017-02-10T23:28:00.000Z","key":1486769280000,"doc_count":17},{"key_as_string":"2017-02-10T23:29:00.000Z","key":1486769340000,"doc_count":5},{"key_as_string":"2017-02-10T23:30:00.000Z","key":1486769400000,"doc_count":16},{"key_as_string":"2017-02-10T23:31:00.000Z","key":1486769460000,"doc_count":14},{"key_as_string":"2017-02-10T23:32:00.000Z","key":1486769520000,"doc_count":6},{"key_as_string":"2017-02-10T23:33:00.000Z","key":1486769580000,"doc_count":8},{"key_as_string":"2017-02-10T23:34:00.000Z","key":1486769640000,"doc_count":15},{"key_as_string":"2017-02-10T23:35:00.000Z","key":1486769700000,"doc_count":9},{"key_as_string":"2017-02-10T23:36:00.000Z","key":1486769760000,"doc_count":11},{"key_as_string":"2017-02-10T23:37:00.000Z","key":1486769820000,"doc_count":13},{"key_as_string":"2017-02-10T23:38:00.000Z","key":1486769880000,"doc_count":12},{"key_as_string":"2017-02-10T23:39:00.000Z","key":1486769940000,"doc_count":12},{"key_as_string":"2017-02-10T23:40:00.000Z","key":1486770000000,"doc_count":9},{"key_as_string":"2017-02-10T23:41:00.000Z","key":1486770060000,"doc_count":11},{"key_as_string":"2017-02-10T23:42:00.000Z","key":1486770120000,"doc_count":10},{"key_as_string":"2017-02-10T23:43:00.000Z","key":1486770180000,"doc_count":16},{"key_as_string":"2017-02-10T23:44:00.000Z","key":1486770240000,"doc_count":8},{"key_as_string":"2017-02-10T23:45:00.000Z","key":1486770300000,"doc_count":8},{"key_as_string":"2017-02-10T23:46:00.000Z","key":1486770360000,"doc_count":8},{"key_as_string":"2017-02-10T23:47:00.000Z","key":1486770420000,"doc_count":11},{"key_as_string":"2017-02-10T23:48:00.000Z","key":1486770480000,"doc_count":10},{"key_as_string":"2017-02-10T23:49:00.000Z","key":1486770540000,"doc_count":10},{"key_as_string":"2017-02-10T23:50:00.000Z","key":1486770600000,"doc_count":13},{"key_as_string":"2017-02-10T23:51:00.000Z","key":1486770660000,"doc_count":6},{"key_as_string":"2017-02-10T23:52:00.000Z","key":1486770720000,"doc_count":16},{"key_as_string":"2017-02-10T23:53:00.000Z","key":1486770780000,"doc_count":10},{"key_as_string":"2017-02-10T23:54:00.000Z","key":1486770840000,"doc_count":11},{"key_as_string":"2017-02-10T23:55:00.000Z","key":1486770900000,"doc_count":14},{"key_as_string":"2017-02-10T23:56:00.000Z","key":1486770960000,"doc_count":9},{"key_as_string":"2017-02-10T23:57:00.000Z","key":1486771020000,"doc_count":9},{"key_as_string":"2017-02-10T23:58:00.000Z","key":1486771080000,"doc_count":11},{"key_as_string":"2017-02-10T23:59:00.000Z","key":1486771140000,"doc_count":6},{"key_as_string":"2017-02-11T00:00:00.000Z","key":1486771200000,"doc_count":12},{"key_as_string":"2017-02-11T00:01:00.000Z","key":1486771260000,"doc_count":14},{"key_as_string":"2017-02-11T00:02:00.000Z","key":1486771320000,"doc_count":9},{"key_as_string":"2017-02-11T00:03:00.000Z","key":1486771380000,"doc_count":3},{"key_as_string":"2017-02-11T00:04:00.000Z","key":1486771440000,"doc_count":15},{"key_as_string":"2017-02-11T00:05:00.000Z","key":1486771500000,"doc_count":10},{"key_as_string":"2017-02-11T00:06:00.000Z","key":1486771560000,"doc_count":11},{"key_as_string":"2017-02-11T00:07:00.000Z","key":1486771620000,"doc_count":6},{"key_as_string":"2017-02-11T00:08:00.000Z","key":1486771680000,"doc_count":11},{"key_as_string":"2017-02-11T00:09:00.000Z","key":1486771740000,"doc_count":10},{"key_as_string":"2017-02-11T00:10:00.000Z","key":1486771800000,"doc_count":7},{"key_as_string":"2017-02-11T00:11:00.000Z","key":1486771860000,"doc_count":13},{"key_as_string":"2017-02-11T00:12:00.000Z","key":1486771920000,"doc_count":9},{"key_as_string":"2017-02-11T00:13:00.000Z","key":1486771980000,"doc_count":10},{"key_as_string":"2017-02-11T00:14:00.000Z","key":1486772040000,"doc_count":17},{"key_as_string":"2017-02-11T00:15:00.000Z","key":1486772100000,"doc_count":7},{"key_as_string":"2017-02-11T00:16:00.000Z","key":1486772160000,"doc_count":12},{"key_as_string":"2017-02-11T00:17:00.000Z","key":1486772220000,"doc_count":13},{"key_as_string":"2017-02-11T00:18:00.000Z","key":1486772280000,"doc_count":4},{"key_as_string":"2017-02-11T00:19:00.000Z","key":1486772340000,"doc_count":15},{"key_as_string":"2017-02-11T00:20:00.000Z","key":1486772400000,"doc_count":13},{"key_as_string":"2017-02-11T00:21:00.000Z","key":1486772460000,"doc_count":8},{"key_as_string":"2017-02-11T00:22:00.000Z","key":1486772520000,"doc_count":8},{"key_as_string":"2017-02-11T00:23:00.000Z","key":1486772580000,"doc_count":12},{"key_as_string":"2017-02-11T00:24:00.000Z","key":1486772640000,"doc_count":9},{"key_as_string":"2017-02-11T00:25:00.000Z","key":1486772700000,"doc_count":8},{"key_as_string":"2017-02-11T00:26:00.000Z","key":1486772760000,"doc_count":13},{"key_as_string":"2017-02-11T00:27:00.000Z","key":1486772820000,"doc_count":10},{"key_as_string":"2017-02-11T00:28:00.000Z","key":1486772880000,"doc_count":11},{"key_as_string":"2017-02-11T00:29:00.000Z","key":1486772940000,"doc_count":7},{"key_as_string":"2017-02-11T00:30:00.000Z","key":1486773000000,"doc_count":14},{"key_as_string":"2017-02-11T00:31:00.000Z","key":1486773060000,"doc_count":8},{"key_as_string":"2017-02-11T00:32:00.000Z","key":1486773120000,"doc_count":9},{"key_as_string":"2017-02-11T00:33:00.000Z","key":1486773180000,"doc_count":14},{"key_as_string":"2017-02-11T00:34:00.000Z","key":1486773240000,"doc_count":7},{"key_as_string":"2017-02-11T00:35:00.000Z","key":1486773300000,"doc_count":10},{"key_as_string":"2017-02-11T00:36:00.000Z","key":1486773360000,"doc_count":11},{"key_as_string":"2017-02-11T00:37:00.000Z","key":1486773420000,"doc_count":15},{"key_as_string":"2017-02-11T00:38:00.000Z","key":1486773480000,"doc_count":9},{"key_as_string":"2017-02-11T00:39:00.000Z","key":1486773540000,"doc_count":11},{"key_as_string":"2017-02-11T00:40:00.000Z","key":1486773600000,"doc_count":8},{"key_as_string":"2017-02-11T00:41:00.000Z","key":1486773660000,"doc_count":9},{"key_as_string":"2017-02-11T00:42:00.000Z","key":1486773720000,"doc_count":10},{"key_as_string":"2017-02-11T00:43:00.000Z","key":1486773780000,"doc_count":14},{"key_as_string":"2017-02-11T00:44:00.000Z","key":1486773840000,"doc_count":7},{"key_as_string":"2017-02-11T00:45:00.000Z","key":1486773900000,"doc_count":12},{"key_as_string":"2017-02-11T00:46:00.000Z","key":1486773960000,"doc_count":12},{"key_as_string":"2017-02-11T00:47:00.000Z","key":1486774020000,"doc_count":9},{"key_as_string":"2017-02-11T00:48:00.000Z","key":1486774080000,"doc_count":11},{"key_as_string":"2017-02-11T00:49:00.000Z","key":1486774140000,"doc_count":6},{"key_as_string":"2017-02-11T00:50:00.000Z","key":1486774200000,"doc_count":11},{"key_as_string":"2017-02-11T00:51:00.000Z","key":1486774260000,"doc_count":14},{"key_as_string":"2017-02-11T00:52:00.000Z","key":1486774320000,"doc_count":6},{"key_as_string":"2017-02-11T00:53:00.000Z","key":1486774380000,"doc_count":14},{"key_as_string":"2017-02-11T00:54:00.000Z","key":1486774440000,"doc_count":9},{"key_as_string":"2017-02-11T00:55:00.000Z","key":1486774500000,"doc_count":7},{"key_as_string":"2017-02-11T00:56:00.000Z","key":1486774560000,"doc_count":9},{"key_as_string":"2017-02-11T00:57:00.000Z","key":1486774620000,"doc_count":11},{"key_as_string":"2017-02-11T00:58:00.000Z","key":1486774680000,"doc_count":11},{"key_as_string":"2017-02-11T00:59:00.000Z","key":1486774740000,"doc_count":9},{"key_as_string":"2017-02-11T01:00:00.000Z","key":1486774800000,"doc_count":9},{"key_as_string":"2017-02-11T01:01:00.000Z","key":1486774860000,"doc_count":9},{"key_as_string":"2017-02-11T01:02:00.000Z","key":1486774920000,"doc_count":9},{"key_as_string":"2017-02-11T01:03:00.000Z","key":1486774980000,"doc_count":13},{"key_as_string":"2017-02-11T01:04:00.000Z","key":1486775040000,"doc_count":8},{"key_as_string":"2017-02-11T01:05:00.000Z","key":1486775100000,"doc_count":14},{"key_as_string":"2017-02-11T01:06:00.000Z","key":1486775160000,"doc_count":7},{"key_as_string":"2017-02-11T01:07:00.000Z","key":1486775220000,"doc_count":13},{"key_as_string":"2017-02-11T01:08:00.000Z","key":1486775280000,"doc_count":9},{"key_as_string":"2017-02-11T01:09:00.000Z","key":1486775340000,"doc_count":11},{"key_as_string":"2017-02-11T01:10:00.000Z","key":1486775400000,"doc_count":11},{"key_as_string":"2017-02-11T01:11:00.000Z","key":1486775460000,"doc_count":15},{"key_as_string":"2017-02-11T01:12:00.000Z","key":1486775520000,"doc_count":8},{"key_as_string":"2017-02-11T01:13:00.000Z","key":1486775580000,"doc_count":7},{"key_as_string":"2017-02-11T01:14:00.000Z","key":1486775640000,"doc_count":16},{"key_as_string":"2017-02-11T01:15:00.000Z","key":1486775700000,"doc_count":6},{"key_as_string":"2017-02-11T01:16:00.000Z","key":1486775760000,"doc_count":13},{"key_as_string":"2017-02-11T01:17:00.000Z","key":1486775820000,"doc_count":9},{"key_as_string":"2017-02-11T01:18:00.000Z","key":1486775880000,"doc_count":7},{"key_as_string":"2017-02-11T01:19:00.000Z","key":1486775940000,"doc_count":12},{"key_as_string":"2017-02-11T01:20:00.000Z","key":1486776000000,"doc_count":8},{"key_as_string":"2017-02-11T01:21:00.000Z","key":1486776060000,"doc_count":12},{"key_as_string":"2017-02-11T01:22:00.000Z","key":1486776120000,"doc_count":16},{"key_as_string":"2017-02-11T01:23:00.000Z","key":1486776180000,"doc_count":9},{"key_as_string":"2017-02-11T01:24:00.000Z","key":1486776240000,"doc_count":6},{"key_as_string":"2017-02-11T01:25:00.000Z","key":1486776300000,"doc_count":13},{"key_as_string":"2017-02-11T01:26:00.000Z","key":1486776360000,"doc_count":12},{"key_as_string":"2017-02-11T01:27:00.000Z","key":1486776420000,"doc_count":10},{"key_as_string":"2017-02-11T01:28:00.000Z","key":1486776480000,"doc_count":6},{"key_as_string":"2017-02-11T01:29:00.000Z","key":1486776540000,"doc_count":13},{"key_as_string":"2017-02-11T01:30:00.000Z","key":1486776600000,"doc_count":8},{"key_as_string":"2017-02-11T01:31:00.000Z","key":1486776660000,"doc_count":16},{"key_as_string":"2017-02-11T01:32:00.000Z","key":1486776720000,"doc_count":8},{"key_as_string":"2017-02-11T01:33:00.000Z","key":1486776780000,"doc_count":4},{"key_as_string":"2017-02-11T01:34:00.000Z","key":1486776840000,"doc_count":9},{"key_as_string":"2017-02-11T01:35:00.000Z","key":1486776900000,"doc_count":11},{"key_as_string":"2017-02-11T01:36:00.000Z","key":1486776960000,"doc_count":10},{"key_as_string":"2017-02-11T01:37:00.000Z","key":1486777020000,"doc_count":17},{"key_as_string":"2017-02-11T01:38:00.000Z","key":1486777080000,"doc_count":11},{"key_as_string":"2017-02-11T01:39:00.000Z","key":1486777140000,"doc_count":10},{"key_as_string":"2017-02-11T01:40:00.000Z","key":1486777200000,"doc_count":12},{"key_as_string":"2017-02-11T01:41:00.000Z","key":1486777260000,"doc_count":11},{"key_as_string":"2017-02-11T01:42:00.000Z","key":1486777320000,"doc_count":11},{"key_as_string":"2017-02-11T01:43:00.000Z","key":1486777380000,"doc_count":6},{"key_as_string":"2017-02-11T01:44:00.000Z","key":1486777440000,"doc_count":13},{"key_as_string":"2017-02-11T01:45:00.000Z","key":1486777500000,"doc_count":12},{"key_as_string":"2017-02-11T01:46:00.000Z","key":1486777560000,"doc_count":12},{"key_as_string":"2017-02-11T01:47:00.000Z","key":1486777620000,"doc_count":7},{"key_as_string":"2017-02-11T01:48:00.000Z","key":1486777680000,"doc_count":12},{"key_as_string":"2017-02-11T01:49:00.000Z","key":1486777740000,"doc_count":11},{"key_as_string":"2017-02-11T01:50:00.000Z","key":1486777800000,"doc_count":13},{"key_as_string":"2017-02-11T01:51:00.000Z","key":1486777860000,"doc_count":13},{"key_as_string":"2017-02-11T01:52:00.000Z","key":1486777920000,"doc_count":11},{"key_as_string":"2017-02-11T01:53:00.000Z","key":1486777980000,"doc_count":11},{"key_as_string":"2017-02-11T01:54:00.000Z","key":1486778040000,"doc_count":7},{"key_as_string":"2017-02-11T01:55:00.000Z","key":1486778100000,"doc_count":13},{"key_as_string":"2017-02-11T01:56:00.000Z","key":1486778160000,"doc_count":12},{"key_as_string":"2017-02-11T01:57:00.000Z","key":1486778220000,"doc_count":12},{"key_as_string":"2017-02-11T01:58:00.000Z","key":1486778280000,"doc_count":10},{"key_as_string":"2017-02-11T01:59:00.000Z","key":1486778340000,"doc_count":13},{"key_as_string":"2017-02-11T02:00:00.000Z","key":1486778400000,"doc_count":10},{"key_as_string":"2017-02-11T02:01:00.000Z","key":1486778460000,"doc_count":8},{"key_as_string":"2017-02-11T02:02:00.000Z","key":1486778520000,"doc_count":8},{"key_as_string":"2017-02-11T02:03:00.000Z","key":1486778580000,"doc_count":10},{"key_as_string":"2017-02-11T02:04:00.000Z","key":1486778640000,"doc_count":10},{"key_as_string":"2017-02-11T02:05:00.000Z","key":1486778700000,"doc_count":6},{"key_as_string":"2017-02-11T02:06:00.000Z","key":1486778760000,"doc_count":12},{"key_as_string":"2017-02-11T02:07:00.000Z","key":1486778820000,"doc_count":11},{"key_as_string":"2017-02-11T02:08:00.000Z","key":1486778880000,"doc_count":7},{"key_as_string":"2017-02-11T02:09:00.000Z","key":1486778940000,"doc_count":13},{"key_as_string":"2017-02-11T02:10:00.000Z","key":1486779000000,"doc_count":9},{"key_as_string":"2017-02-11T02:11:00.000Z","key":1486779060000,"doc_count":14},{"key_as_string":"2017-02-11T02:12:00.000Z","key":1486779120000,"doc_count":9},{"key_as_string":"2017-02-11T02:13:00.000Z","key":1486779180000,"doc_count":10},{"key_as_string":"2017-02-11T02:14:00.000Z","key":1486779240000,"doc_count":12},{"key_as_string":"2017-02-11T02:15:00.000Z","key":1486779300000,"doc_count":5},{"key_as_string":"2017-02-11T02:16:00.000Z","key":1486779360000,"doc_count":9},{"key_as_string":"2017-02-11T02:17:00.000Z","key":1486779420000,"doc_count":14},{"key_as_string":"2017-02-11T02:18:00.000Z","key":1486779480000,"doc_count":5},{"key_as_string":"2017-02-11T02:19:00.000Z","key":1486779540000,"doc_count":18},{"key_as_string":"2017-02-11T02:20:00.000Z","key":1486779600000,"doc_count":9},{"key_as_string":"2017-02-11T02:21:00.000Z","key":1486779660000,"doc_count":7},{"key_as_string":"2017-02-11T02:22:00.000Z","key":1486779720000,"doc_count":14},{"key_as_string":"2017-02-11T02:23:00.000Z","key":1486779780000,"doc_count":8},{"key_as_string":"2017-02-11T02:24:00.000Z","key":1486779840000,"doc_count":9},{"key_as_string":"2017-02-11T02:25:00.000Z","key":1486779900000,"doc_count":10},{"key_as_string":"2017-02-11T02:26:00.000Z","key":1486779960000,"doc_count":15},{"key_as_string":"2017-02-11T02:27:00.000Z","key":1486780020000,"doc_count":12},{"key_as_string":"2017-02-11T02:28:00.000Z","key":1486780080000,"doc_count":8},{"key_as_string":"2017-02-11T02:29:00.000Z","key":1486780140000,"doc_count":7},{"key_as_string":"2017-02-11T02:30:00.000Z","key":1486780200000,"doc_count":13},{"key_as_string":"2017-02-11T02:31:00.000Z","key":1486780260000,"doc_count":9},{"key_as_string":"2017-02-11T02:32:00.000Z","key":1486780320000,"doc_count":11},{"key_as_string":"2017-02-11T02:33:00.000Z","key":1486780380000,"doc_count":9},{"key_as_string":"2017-02-11T02:34:00.000Z","key":1486780440000,"doc_count":12},{"key_as_string":"2017-02-11T02:35:00.000Z","key":1486780500000,"doc_count":11},{"key_as_string":"2017-02-11T02:36:00.000Z","key":1486780560000,"doc_count":4},{"key_as_string":"2017-02-11T02:37:00.000Z","key":1486780620000,"doc_count":12},{"key_as_string":"2017-02-11T02:38:00.000Z","key":1486780680000,"doc_count":6},{"key_as_string":"2017-02-11T02:39:00.000Z","key":1486780740000,"doc_count":12},{"key_as_string":"2017-02-11T02:40:00.000Z","key":1486780800000,"doc_count":12},{"key_as_string":"2017-02-11T02:41:00.000Z","key":1486780860000,"doc_count":12},{"key_as_string":"2017-02-11T02:42:00.000Z","key":1486780920000,"doc_count":13},{"key_as_string":"2017-02-11T02:43:00.000Z","key":1486780980000,"doc_count":12},{"key_as_string":"2017-02-11T02:44:00.000Z","key":1486781040000,"doc_count":13},{"key_as_string":"2017-02-11T02:45:00.000Z","key":1486781100000,"doc_count":11},{"key_as_string":"2017-02-11T02:46:00.000Z","key":1486781160000,"doc_count":5},{"key_as_string":"2017-02-11T02:47:00.000Z","key":1486781220000,"doc_count":14},{"key_as_string":"2017-02-11T02:48:00.000Z","key":1486781280000,"doc_count":8},{"key_as_string":"2017-02-11T02:49:00.000Z","key":1486781340000,"doc_count":14},{"key_as_string":"2017-02-11T02:50:00.000Z","key":1486781400000,"doc_count":16},{"key_as_string":"2017-02-11T02:51:00.000Z","key":1486781460000,"doc_count":7},{"key_as_string":"2017-02-11T02:52:00.000Z","key":1486781520000,"doc_count":7},{"key_as_string":"2017-02-11T02:53:00.000Z","key":1486781580000,"doc_count":15},{"key_as_string":"2017-02-11T02:54:00.000Z","key":1486781640000,"doc_count":13},{"key_as_string":"2017-02-11T02:55:00.000Z","key":1486781700000,"doc_count":5},{"key_as_string":"2017-02-11T02:56:00.000Z","key":1486781760000,"doc_count":8},{"key_as_string":"2017-02-11T02:57:00.000Z","key":1486781820000,"doc_count":8},{"key_as_string":"2017-02-11T02:58:00.000Z","key":1486781880000,"doc_count":16},{"key_as_string":"2017-02-11T02:59:00.000Z","key":1486781940000,"doc_count":9},{"key_as_string":"2017-02-11T03:00:00.000Z","key":1486782000000,"doc_count":9},{"key_as_string":"2017-02-11T03:01:00.000Z","key":1486782060000,"doc_count":13},{"key_as_string":"2017-02-11T03:02:00.000Z","key":1486782120000,"doc_count":14},{"key_as_string":"2017-02-11T03:03:00.000Z","key":1486782180000,"doc_count":10},{"key_as_string":"2017-02-11T03:04:00.000Z","key":1486782240000,"doc_count":8},{"key_as_string":"2017-02-11T03:05:00.000Z","key":1486782300000,"doc_count":14},{"key_as_string":"2017-02-11T03:06:00.000Z","key":1486782360000,"doc_count":11},{"key_as_string":"2017-02-11T03:07:00.000Z","key":1486782420000,"doc_count":11},{"key_as_string":"2017-02-11T03:08:00.000Z","key":1486782480000,"doc_count":8},{"key_as_string":"2017-02-11T03:09:00.000Z","key":1486782540000,"doc_count":13},{"key_as_string":"2017-02-11T03:10:00.000Z","key":1486782600000,"doc_count":12},{"key_as_string":"2017-02-11T03:11:00.000Z","key":1486782660000,"doc_count":9},{"key_as_string":"2017-02-11T03:12:00.000Z","key":1486782720000,"doc_count":9},{"key_as_string":"2017-02-11T03:13:00.000Z","key":1486782780000,"doc_count":9},{"key_as_string":"2017-02-11T03:14:00.000Z","key":1486782840000,"doc_count":11},{"key_as_string":"2017-02-11T03:15:00.000Z","key":1486782900000,"doc_count":9},{"key_as_string":"2017-02-11T03:16:00.000Z","key":1486782960000,"doc_count":20},{"key_as_string":"2017-02-11T03:17:00.000Z","key":1486783020000,"doc_count":7},{"key_as_string":"2017-02-11T03:18:00.000Z","key":1486783080000,"doc_count":11},{"key_as_string":"2017-02-11T03:19:00.000Z","key":1486783140000,"doc_count":10},{"key_as_string":"2017-02-11T03:20:00.000Z","key":1486783200000,"doc_count":8},{"key_as_string":"2017-02-11T03:21:00.000Z","key":1486783260000,"doc_count":16},{"key_as_string":"2017-02-11T03:22:00.000Z","key":1486783320000,"doc_count":5},{"key_as_string":"2017-02-11T03:23:00.000Z","key":1486783380000,"doc_count":12},{"key_as_string":"2017-02-11T03:24:00.000Z","key":1486783440000,"doc_count":8},{"key_as_string":"2017-02-11T03:25:00.000Z","key":1486783500000,"doc_count":17},{"key_as_string":"2017-02-11T03:26:00.000Z","key":1486783560000,"doc_count":8},{"key_as_string":"2017-02-11T03:27:00.000Z","key":1486783620000,"doc_count":14},{"key_as_string":"2017-02-11T03:28:00.000Z","key":1486783680000,"doc_count":7},{"key_as_string":"2017-02-11T03:29:00.000Z","key":1486783740000,"doc_count":12},{"key_as_string":"2017-02-11T03:30:00.000Z","key":1486783800000,"doc_count":13},{"key_as_string":"2017-02-11T03:31:00.000Z","key":1486783860000,"doc_count":9},{"key_as_string":"2017-02-11T03:32:00.000Z","key":1486783920000,"doc_count":5},{"key_as_string":"2017-02-11T03:33:00.000Z","key":1486783980000,"doc_count":10},{"key_as_string":"2017-02-11T03:34:00.000Z","key":1486784040000,"doc_count":14},{"key_as_string":"2017-02-11T03:35:00.000Z","key":1486784100000,"doc_count":13},{"key_as_string":"2017-02-11T03:36:00.000Z","key":1486784160000,"doc_count":9},{"key_as_string":"2017-02-11T03:37:00.000Z","key":1486784220000,"doc_count":10},{"key_as_string":"2017-02-11T03:38:00.000Z","key":1486784280000,"doc_count":10},{"key_as_string":"2017-02-11T03:39:00.000Z","key":1486784340000,"doc_count":12},{"key_as_string":"2017-02-11T03:40:00.000Z","key":1486784400000,"doc_count":11},{"key_as_string":"2017-02-11T03:41:00.000Z","key":1486784460000,"doc_count":11},{"key_as_string":"2017-02-11T03:42:00.000Z","key":1486784520000,"doc_count":7},{"key_as_string":"2017-02-11T03:43:00.000Z","key":1486784580000,"doc_count":18},{"key_as_string":"2017-02-11T03:44:00.000Z","key":1486784640000,"doc_count":6},{"key_as_string":"2017-02-11T03:45:00.000Z","key":1486784700000,"doc_count":12},{"key_as_string":"2017-02-11T03:46:00.000Z","key":1486784760000,"doc_count":13},{"key_as_string":"2017-02-11T03:47:00.000Z","key":1486784820000,"doc_count":13},{"key_as_string":"2017-02-11T03:48:00.000Z","key":1486784880000,"doc_count":15},{"key_as_string":"2017-02-11T03:49:00.000Z","key":1486784940000,"doc_count":11},{"key_as_string":"2017-02-11T03:50:00.000Z","key":1486785000000,"doc_count":9},{"key_as_string":"2017-02-11T03:51:00.000Z","key":1486785060000,"doc_count":14},{"key_as_string":"2017-02-11T03:52:00.000Z","key":1486785120000,"doc_count":7},{"key_as_string":"2017-02-11T03:53:00.000Z","key":1486785180000,"doc_count":11},{"key_as_string":"2017-02-11T03:54:00.000Z","key":1486785240000,"doc_count":8},{"key_as_string":"2017-02-11T03:55:00.000Z","key":1486785300000,"doc_count":7},{"key_as_string":"2017-02-11T03:56:00.000Z","key":1486785360000,"doc_count":10},{"key_as_string":"2017-02-11T03:57:00.000Z","key":1486785420000,"doc_count":13},{"key_as_string":"2017-02-11T03:58:00.000Z","key":1486785480000,"doc_count":11},{"key_as_string":"2017-02-11T03:59:00.000Z","key":1486785540000,"doc_count":8},{"key_as_string":"2017-02-11T04:00:00.000Z","key":1486785600000,"doc_count":11},{"key_as_string":"2017-02-11T04:01:00.000Z","key":1486785660000,"doc_count":9},{"key_as_string":"2017-02-11T04:02:00.000Z","key":1486785720000,"doc_count":13},{"key_as_string":"2017-02-11T04:03:00.000Z","key":1486785780000,"doc_count":14},{"key_as_string":"2017-02-11T04:04:00.000Z","key":1486785840000,"doc_count":13},{"key_as_string":"2017-02-11T04:05:00.000Z","key":1486785900000,"doc_count":9},{"key_as_string":"2017-02-11T04:06:00.000Z","key":1486785960000,"doc_count":8},{"key_as_string":"2017-02-11T04:07:00.000Z","key":1486786020000,"doc_count":8},{"key_as_string":"2017-02-11T04:08:00.000Z","key":1486786080000,"doc_count":14},{"key_as_string":"2017-02-11T04:09:00.000Z","key":1486786140000,"doc_count":10},{"key_as_string":"2017-02-11T04:10:00.000Z","key":1486786200000,"doc_count":12},{"key_as_string":"2017-02-11T04:11:00.000Z","key":1486786260000,"doc_count":9},{"key_as_string":"2017-02-11T04:12:00.000Z","key":1486786320000,"doc_count":11},{"key_as_string":"2017-02-11T04:13:00.000Z","key":1486786380000,"doc_count":19},{"key_as_string":"2017-02-11T04:14:00.000Z","key":1486786440000,"doc_count":9},{"key_as_string":"2017-02-11T04:15:00.000Z","key":1486786500000,"doc_count":9},{"key_as_string":"2017-02-11T04:16:00.000Z","key":1486786560000,"doc_count":15},{"key_as_string":"2017-02-11T04:17:00.000Z","key":1486786620000,"doc_count":17},{"key_as_string":"2017-02-11T04:18:00.000Z","key":1486786680000,"doc_count":15},{"key_as_string":"2017-02-11T04:19:00.000Z","key":1486786740000,"doc_count":8},{"key_as_string":"2017-02-11T04:20:00.000Z","key":1486786800000,"doc_count":11},{"key_as_string":"2017-02-11T04:21:00.000Z","key":1486786860000,"doc_count":13},{"key_as_string":"2017-02-11T04:22:00.000Z","key":1486786920000,"doc_count":11},{"key_as_string":"2017-02-11T04:23:00.000Z","key":1486786980000,"doc_count":7},{"key_as_string":"2017-02-11T04:24:00.000Z","key":1486787040000,"doc_count":14},{"key_as_string":"2017-02-11T04:25:00.000Z","key":1486787100000,"doc_count":11},{"key_as_string":"2017-02-11T04:26:00.000Z","key":1486787160000,"doc_count":9},{"key_as_string":"2017-02-11T04:27:00.000Z","key":1486787220000,"doc_count":6},{"key_as_string":"2017-02-11T04:28:00.000Z","key":1486787280000,"doc_count":17},{"key_as_string":"2017-02-11T04:29:00.000Z","key":1486787340000,"doc_count":9},{"key_as_string":"2017-02-11T04:30:00.000Z","key":1486787400000,"doc_count":9},{"key_as_string":"2017-02-11T04:31:00.000Z","key":1486787460000,"doc_count":8},{"key_as_string":"2017-02-11T04:32:00.000Z","key":1486787520000,"doc_count":12},{"key_as_string":"2017-02-11T04:33:00.000Z","key":1486787580000,"doc_count":11},{"key_as_string":"2017-02-11T04:34:00.000Z","key":1486787640000,"doc_count":10},{"key_as_string":"2017-02-11T04:35:00.000Z","key":1486787700000,"doc_count":11},{"key_as_string":"2017-02-11T04:36:00.000Z","key":1486787760000,"doc_count":11},{"key_as_string":"2017-02-11T04:37:00.000Z","key":1486787820000,"doc_count":15},{"key_as_string":"2017-02-11T04:38:00.000Z","key":1486787880000,"doc_count":11},{"key_as_string":"2017-02-11T04:39:00.000Z","key":1486787940000,"doc_count":10},{"key_as_string":"2017-02-11T04:40:00.000Z","key":1486788000000,"doc_count":10},{"key_as_string":"2017-02-11T04:41:00.000Z","key":1486788060000,"doc_count":10},{"key_as_string":"2017-02-11T04:42:00.000Z","key":1486788120000,"doc_count":8},{"key_as_string":"2017-02-11T04:43:00.000Z","key":1486788180000,"doc_count":9},{"key_as_string":"2017-02-11T04:44:00.000Z","key":1486788240000,"doc_count":8},{"key_as_string":"2017-02-11T04:45:00.000Z","key":1486788300000,"doc_count":19},{"key_as_string":"2017-02-11T04:46:00.000Z","key":1486788360000,"doc_count":11},{"key_as_string":"2017-02-11T04:47:00.000Z","key":1486788420000,"doc_count":11},{"key_as_string":"2017-02-11T04:48:00.000Z","key":1486788480000,"doc_count":10},{"key_as_string":"2017-02-11T04:49:00.000Z","key":1486788540000,"doc_count":9},{"key_as_string":"2017-02-11T04:50:00.000Z","key":1486788600000,"doc_count":9},{"key_as_string":"2017-02-11T04:51:00.000Z","key":1486788660000,"doc_count":15},{"key_as_string":"2017-02-11T04:52:00.000Z","key":1486788720000,"doc_count":11},{"key_as_string":"2017-02-11T04:53:00.000Z","key":1486788780000,"doc_count":11},{"key_as_string":"2017-02-11T04:54:00.000Z","key":1486788840000,"doc_count":12},{"key_as_string":"2017-02-11T04:55:00.000Z","key":1486788900000,"doc_count":12},{"key_as_string":"2017-02-11T04:56:00.000Z","key":1486788960000,"doc_count":9},{"key_as_string":"2017-02-11T04:57:00.000Z","key":1486789020000,"doc_count":16},{"key_as_string":"2017-02-11T04:58:00.000Z","key":1486789080000,"doc_count":11},{"key_as_string":"2017-02-11T04:59:00.000Z","key":1486789140000,"doc_count":10},{"key_as_string":"2017-02-11T05:00:00.000Z","key":1486789200000,"doc_count":9},{"key_as_string":"2017-02-11T05:01:00.000Z","key":1486789260000,"doc_count":14},{"key_as_string":"2017-02-11T05:02:00.000Z","key":1486789320000,"doc_count":10},{"key_as_string":"2017-02-11T05:03:00.000Z","key":1486789380000,"doc_count":11},{"key_as_string":"2017-02-11T05:04:00.000Z","key":1486789440000,"doc_count":11},{"key_as_string":"2017-02-11T05:05:00.000Z","key":1486789500000,"doc_count":6},{"key_as_string":"2017-02-11T05:06:00.000Z","key":1486789560000,"doc_count":19},{"key_as_string":"2017-02-11T05:07:00.000Z","key":1486789620000,"doc_count":11},{"key_as_string":"2017-02-11T05:08:00.000Z","key":1486789680000,"doc_count":15},{"key_as_string":"2017-02-11T05:09:00.000Z","key":1486789740000,"doc_count":10},{"key_as_string":"2017-02-11T05:10:00.000Z","key":1486789800000,"doc_count":13},{"key_as_string":"2017-02-11T05:11:00.000Z","key":1486789860000,"doc_count":12},{"key_as_string":"2017-02-11T05:12:00.000Z","key":1486789920000,"doc_count":14},{"key_as_string":"2017-02-11T05:13:00.000Z","key":1486789980000,"doc_count":12},{"key_as_string":"2017-02-11T05:14:00.000Z","key":1486790040000,"doc_count":13},{"key_as_string":"2017-02-11T05:15:00.000Z","key":1486790100000,"doc_count":7},{"key_as_string":"2017-02-11T05:16:00.000Z","key":1486790160000,"doc_count":10},{"key_as_string":"2017-02-11T05:17:00.000Z","key":1486790220000,"doc_count":12},{"key_as_string":"2017-02-11T05:18:00.000Z","key":1486790280000,"doc_count":15},{"key_as_string":"2017-02-11T05:19:00.000Z","key":1486790340000,"doc_count":10},{"key_as_string":"2017-02-11T05:20:00.000Z","key":1486790400000,"doc_count":9},{"key_as_string":"2017-02-11T05:21:00.000Z","key":1486790460000,"doc_count":10},{"key_as_string":"2017-02-11T05:22:00.000Z","key":1486790520000,"doc_count":15},{"key_as_string":"2017-02-11T05:23:00.000Z","key":1486790580000,"doc_count":9},{"key_as_string":"2017-02-11T05:24:00.000Z","key":1486790640000,"doc_count":13},{"key_as_string":"2017-02-11T05:25:00.000Z","key":1486790700000,"doc_count":12},{"key_as_string":"2017-02-11T05:26:00.000Z","key":1486790760000,"doc_count":9},{"key_as_string":"2017-02-11T05:27:00.000Z","key":1486790820000,"doc_count":15},{"key_as_string":"2017-02-11T05:28:00.000Z","key":1486790880000,"doc_count":11},{"key_as_string":"2017-02-11T05:29:00.000Z","key":1486790940000,"doc_count":14},{"key_as_string":"2017-02-11T05:30:00.000Z","key":1486791000000,"doc_count":14},{"key_as_string":"2017-02-11T05:31:00.000Z","key":1486791060000,"doc_count":15},{"key_as_string":"2017-02-11T05:32:00.000Z","key":1486791120000,"doc_count":7},{"key_as_string":"2017-02-11T05:33:00.000Z","key":1486791180000,"doc_count":7},{"key_as_string":"2017-02-11T05:34:00.000Z","key":1486791240000,"doc_count":9},{"key_as_string":"2017-02-11T05:35:00.000Z","key":1486791300000,"doc_count":13},{"key_as_string":"2017-02-11T05:36:00.000Z","key":1486791360000,"doc_count":11},{"key_as_string":"2017-02-11T05:37:00.000Z","key":1486791420000,"doc_count":11},{"key_as_string":"2017-02-11T05:38:00.000Z","key":1486791480000,"doc_count":10},{"key_as_string":"2017-02-11T05:39:00.000Z","key":1486791540000,"doc_count":7},{"key_as_string":"2017-02-11T05:40:00.000Z","key":1486791600000,"doc_count":12},{"key_as_string":"2017-02-11T05:41:00.000Z","key":1486791660000,"doc_count":11},{"key_as_string":"2017-02-11T05:42:00.000Z","key":1486791720000,"doc_count":16},{"key_as_string":"2017-02-11T05:43:00.000Z","key":1486791780000,"doc_count":12},{"key_as_string":"2017-02-11T05:44:00.000Z","key":1486791840000,"doc_count":8},{"key_as_string":"2017-02-11T05:45:00.000Z","key":1486791900000,"doc_count":13},{"key_as_string":"2017-02-11T05:46:00.000Z","key":1486791960000,"doc_count":17},{"key_as_string":"2017-02-11T05:47:00.000Z","key":1486792020000,"doc_count":8},{"key_as_string":"2017-02-11T05:48:00.000Z","key":1486792080000,"doc_count":9},{"key_as_string":"2017-02-11T05:49:00.000Z","key":1486792140000,"doc_count":9},{"key_as_string":"2017-02-11T05:50:00.000Z","key":1486792200000,"doc_count":13},{"key_as_string":"2017-02-11T05:51:00.000Z","key":1486792260000,"doc_count":7},{"key_as_string":"2017-02-11T05:52:00.000Z","key":1486792320000,"doc_count":13},{"key_as_string":"2017-02-11T05:53:00.000Z","key":1486792380000,"doc_count":8},{"key_as_string":"2017-02-11T05:54:00.000Z","key":1486792440000,"doc_count":12},{"key_as_string":"2017-02-11T05:55:00.000Z","key":1486792500000,"doc_count":9},{"key_as_string":"2017-02-11T05:56:00.000Z","key":1486792560000,"doc_count":15},{"key_as_string":"2017-02-11T05:57:00.000Z","key":1486792620000,"doc_count":11},{"key_as_string":"2017-02-11T05:58:00.000Z","key":1486792680000,"doc_count":14},{"key_as_string":"2017-02-11T05:59:00.000Z","key":1486792740000,"doc_count":10},{"key_as_string":"2017-02-11T06:00:00.000Z","key":1486792800000,"doc_count":15},{"key_as_string":"2017-02-11T06:01:00.000Z","key":1486792860000,"doc_count":10},{"key_as_string":"2017-02-11T06:02:00.000Z","key":1486792920000,"doc_count":9},{"key_as_string":"2017-02-11T06:03:00.000Z","key":1486792980000,"doc_count":16},{"key_as_string":"2017-02-11T06:04:00.000Z","key":1486793040000,"doc_count":12},{"key_as_string":"2017-02-11T06:05:00.000Z","key":1486793100000,"doc_count":13},{"key_as_string":"2017-02-11T06:06:00.000Z","key":1486793160000,"doc_count":14},{"key_as_string":"2017-02-11T06:07:00.000Z","key":1486793220000,"doc_count":11},{"key_as_string":"2017-02-11T06:08:00.000Z","key":1486793280000,"doc_count":16},{"key_as_string":"2017-02-11T06:09:00.000Z","key":1486793340000,"doc_count":9},{"key_as_string":"2017-02-11T06:10:00.000Z","key":1486793400000,"doc_count":15},{"key_as_string":"2017-02-11T06:11:00.000Z","key":1486793460000,"doc_count":9},{"key_as_string":"2017-02-11T06:12:00.000Z","key":1486793520000,"doc_count":9},{"key_as_string":"2017-02-11T06:13:00.000Z","key":1486793580000,"doc_count":13},{"key_as_string":"2017-02-11T06:14:00.000Z","key":1486793640000,"doc_count":12},{"key_as_string":"2017-02-11T06:15:00.000Z","key":1486793700000,"doc_count":11},{"key_as_string":"2017-02-11T06:16:00.000Z","key":1486793760000,"doc_count":14},{"key_as_string":"2017-02-11T06:17:00.000Z","key":1486793820000,"doc_count":16},{"key_as_string":"2017-02-11T06:18:00.000Z","key":1486793880000,"doc_count":7},{"key_as_string":"2017-02-11T06:19:00.000Z","key":1486793940000,"doc_count":18},{"key_as_string":"2017-02-11T06:20:00.000Z","key":1486794000000,"doc_count":15},{"key_as_string":"2017-02-11T06:21:00.000Z","key":1486794060000,"doc_count":10},{"key_as_string":"2017-02-11T06:22:00.000Z","key":1486794120000,"doc_count":10},{"key_as_string":"2017-02-11T06:23:00.000Z","key":1486794180000,"doc_count":11},{"key_as_string":"2017-02-11T06:24:00.000Z","key":1486794240000,"doc_count":7},{"key_as_string":"2017-02-11T06:25:00.000Z","key":1486794300000,"doc_count":12},{"key_as_string":"2017-02-11T06:26:00.000Z","key":1486794360000,"doc_count":10},{"key_as_string":"2017-02-11T06:27:00.000Z","key":1486794420000,"doc_count":11},{"key_as_string":"2017-02-11T06:28:00.000Z","key":1486794480000,"doc_count":13},{"key_as_string":"2017-02-11T06:29:00.000Z","key":1486794540000,"doc_count":11},{"key_as_string":"2017-02-11T06:30:00.000Z","key":1486794600000,"doc_count":13},{"key_as_string":"2017-02-11T06:31:00.000Z","key":1486794660000,"doc_count":10},{"key_as_string":"2017-02-11T06:32:00.000Z","key":1486794720000,"doc_count":13},{"key_as_string":"2017-02-11T06:33:00.000Z","key":1486794780000,"doc_count":14},{"key_as_string":"2017-02-11T06:34:00.000Z","key":1486794840000,"doc_count":15},{"key_as_string":"2017-02-11T06:35:00.000Z","key":1486794900000,"doc_count":11},{"key_as_string":"2017-02-11T06:36:00.000Z","key":1486794960000,"doc_count":14},{"key_as_string":"2017-02-11T06:37:00.000Z","key":1486795020000,"doc_count":10},{"key_as_string":"2017-02-11T06:38:00.000Z","key":1486795080000,"doc_count":13},{"key_as_string":"2017-02-11T06:39:00.000Z","key":1486795140000,"doc_count":7},{"key_as_string":"2017-02-11T06:40:00.000Z","key":1486795200000,"doc_count":12},{"key_as_string":"2017-02-11T06:41:00.000Z","key":1486795260000,"doc_count":12},{"key_as_string":"2017-02-11T06:42:00.000Z","key":1486795320000,"doc_count":10},{"key_as_string":"2017-02-11T06:43:00.000Z","key":1486795380000,"doc_count":14},{"key_as_string":"2017-02-11T06:44:00.000Z","key":1486795440000,"doc_count":15},{"key_as_string":"2017-02-11T06:45:00.000Z","key":1486795500000,"doc_count":10},{"key_as_string":"2017-02-11T06:46:00.000Z","key":1486795560000,"doc_count":12},{"key_as_string":"2017-02-11T06:47:00.000Z","key":1486795620000,"doc_count":14},{"key_as_string":"2017-02-11T06:48:00.000Z","key":1486795680000,"doc_count":15},{"key_as_string":"2017-02-11T06:49:00.000Z","key":1486795740000,"doc_count":11},{"key_as_string":"2017-02-11T06:50:00.000Z","key":1486795800000,"doc_count":14},{"key_as_string":"2017-02-11T06:51:00.000Z","key":1486795860000,"doc_count":9},{"key_as_string":"2017-02-11T06:52:00.000Z","key":1486795920000,"doc_count":15},{"key_as_string":"2017-02-11T06:53:00.000Z","key":1486795980000,"doc_count":6},{"key_as_string":"2017-02-11T06:54:00.000Z","key":1486796040000,"doc_count":15},{"key_as_string":"2017-02-11T06:55:00.000Z","key":1486796100000,"doc_count":12},{"key_as_string":"2017-02-11T06:56:00.000Z","key":1486796160000,"doc_count":11},{"key_as_string":"2017-02-11T06:57:00.000Z","key":1486796220000,"doc_count":15},{"key_as_string":"2017-02-11T06:58:00.000Z","key":1486796280000,"doc_count":12},{"key_as_string":"2017-02-11T06:59:00.000Z","key":1486796340000,"doc_count":9},{"key_as_string":"2017-02-11T07:00:00.000Z","key":1486796400000,"doc_count":17},{"key_as_string":"2017-02-11T07:01:00.000Z","key":1486796460000,"doc_count":11},{"key_as_string":"2017-02-11T07:02:00.000Z","key":1486796520000,"doc_count":12},{"key_as_string":"2017-02-11T07:03:00.000Z","key":1486796580000,"doc_count":15},{"key_as_string":"2017-02-11T07:04:00.000Z","key":1486796640000,"doc_count":16},{"key_as_string":"2017-02-11T07:05:00.000Z","key":1486796700000,"doc_count":13},{"key_as_string":"2017-02-11T07:06:00.000Z","key":1486796760000,"doc_count":12},{"key_as_string":"2017-02-11T07:07:00.000Z","key":1486796820000,"doc_count":10},{"key_as_string":"2017-02-11T07:08:00.000Z","key":1486796880000,"doc_count":18},{"key_as_string":"2017-02-11T07:09:00.000Z","key":1486796940000,"doc_count":10},{"key_as_string":"2017-02-11T07:10:00.000Z","key":1486797000000,"doc_count":12},{"key_as_string":"2017-02-11T07:11:00.000Z","key":1486797060000,"doc_count":16},{"key_as_string":"2017-02-11T07:12:00.000Z","key":1486797120000,"doc_count":13},{"key_as_string":"2017-02-11T07:13:00.000Z","key":1486797180000,"doc_count":9},{"key_as_string":"2017-02-11T07:14:00.000Z","key":1486797240000,"doc_count":12},{"key_as_string":"2017-02-11T07:15:00.000Z","key":1486797300000,"doc_count":9},{"key_as_string":"2017-02-11T07:16:00.000Z","key":1486797360000,"doc_count":11},{"key_as_string":"2017-02-11T07:17:00.000Z","key":1486797420000,"doc_count":12},{"key_as_string":"2017-02-11T07:18:00.000Z","key":1486797480000,"doc_count":13},{"key_as_string":"2017-02-11T07:19:00.000Z","key":1486797540000,"doc_count":14},{"key_as_string":"2017-02-11T07:20:00.000Z","key":1486797600000,"doc_count":11},{"key_as_string":"2017-02-11T07:21:00.000Z","key":1486797660000,"doc_count":16},{"key_as_string":"2017-02-11T07:22:00.000Z","key":1486797720000,"doc_count":9},{"key_as_string":"2017-02-11T07:23:00.000Z","key":1486797780000,"doc_count":14},{"key_as_string":"2017-02-11T07:24:00.000Z","key":1486797840000,"doc_count":11},{"key_as_string":"2017-02-11T07:25:00.000Z","key":1486797900000,"doc_count":14},{"key_as_string":"2017-02-11T07:26:00.000Z","key":1486797960000,"doc_count":12},{"key_as_string":"2017-02-11T07:27:00.000Z","key":1486798020000,"doc_count":15},{"key_as_string":"2017-02-11T07:28:00.000Z","key":1486798080000,"doc_count":8},{"key_as_string":"2017-02-11T07:29:00.000Z","key":1486798140000,"doc_count":12},{"key_as_string":"2017-02-11T07:30:00.000Z","key":1486798200000,"doc_count":13},{"key_as_string":"2017-02-11T07:31:00.000Z","key":1486798260000,"doc_count":11},{"key_as_string":"2017-02-11T07:32:00.000Z","key":1486798320000,"doc_count":12},{"key_as_string":"2017-02-11T07:33:00.000Z","key":1486798380000,"doc_count":12},{"key_as_string":"2017-02-11T07:34:00.000Z","key":1486798440000,"doc_count":12},{"key_as_string":"2017-02-11T07:35:00.000Z","key":1486798500000,"doc_count":12},{"key_as_string":"2017-02-11T07:36:00.000Z","key":1486798560000,"doc_count":13},{"key_as_string":"2017-02-11T07:37:00.000Z","key":1486798620000,"doc_count":9},{"key_as_string":"2017-02-11T07:38:00.000Z","key":1486798680000,"doc_count":13},{"key_as_string":"2017-02-11T07:39:00.000Z","key":1486798740000,"doc_count":9},{"key_as_string":"2017-02-11T07:40:00.000Z","key":1486798800000,"doc_count":12},{"key_as_string":"2017-02-11T07:41:00.000Z","key":1486798860000,"doc_count":12},{"key_as_string":"2017-02-11T07:42:00.000Z","key":1486798920000,"doc_count":17},{"key_as_string":"2017-02-11T07:43:00.000Z","key":1486798980000,"doc_count":12},{"key_as_string":"2017-02-11T07:44:00.000Z","key":1486799040000,"doc_count":11},{"key_as_string":"2017-02-11T07:45:00.000Z","key":1486799100000,"doc_count":14},{"key_as_string":"2017-02-11T07:46:00.000Z","key":1486799160000,"doc_count":14},{"key_as_string":"2017-02-11T07:47:00.000Z","key":1486799220000,"doc_count":9},{"key_as_string":"2017-02-11T07:48:00.000Z","key":1486799280000,"doc_count":11},{"key_as_string":"2017-02-11T07:49:00.000Z","key":1486799340000,"doc_count":11},{"key_as_string":"2017-02-11T07:50:00.000Z","key":1486799400000,"doc_count":9},{"key_as_string":"2017-02-11T07:51:00.000Z","key":1486799460000,"doc_count":12},{"key_as_string":"2017-02-11T07:52:00.000Z","key":1486799520000,"doc_count":12},{"key_as_string":"2017-02-11T07:53:00.000Z","key":1486799580000,"doc_count":7},{"key_as_string":"2017-02-11T07:54:00.000Z","key":1486799640000,"doc_count":17},{"key_as_string":"2017-02-11T07:55:00.000Z","key":1486799700000,"doc_count":13},{"key_as_string":"2017-02-11T07:56:00.000Z","key":1486799760000,"doc_count":12},{"key_as_string":"2017-02-11T07:57:00.000Z","key":1486799820000,"doc_count":11},{"key_as_string":"2017-02-11T07:58:00.000Z","key":1486799880000,"doc_count":13},{"key_as_string":"2017-02-11T07:59:00.000Z","key":1486799940000,"doc_count":11},{"key_as_string":"2017-02-11T08:00:00.000Z","key":1486800000000,"doc_count":16},{"key_as_string":"2017-02-11T08:01:00.000Z","key":1486800060000,"doc_count":15},{"key_as_string":"2017-02-11T08:02:00.000Z","key":1486800120000,"doc_count":14},{"key_as_string":"2017-02-11T08:03:00.000Z","key":1486800180000,"doc_count":16},{"key_as_string":"2017-02-11T08:04:00.000Z","key":1486800240000,"doc_count":12},{"key_as_string":"2017-02-11T08:05:00.000Z","key":1486800300000,"doc_count":14},{"key_as_string":"2017-02-11T08:06:00.000Z","key":1486800360000,"doc_count":13},{"key_as_string":"2017-02-11T08:07:00.000Z","key":1486800420000,"doc_count":16},{"key_as_string":"2017-02-11T08:08:00.000Z","key":1486800480000,"doc_count":17},{"key_as_string":"2017-02-11T08:09:00.000Z","key":1486800540000,"doc_count":20},{"key_as_string":"2017-02-11T08:10:00.000Z","key":1486800600000,"doc_count":13},{"key_as_string":"2017-02-11T08:11:00.000Z","key":1486800660000,"doc_count":15},{"key_as_string":"2017-02-11T08:12:00.000Z","key":1486800720000,"doc_count":10},{"key_as_string":"2017-02-11T08:13:00.000Z","key":1486800780000,"doc_count":16},{"key_as_string":"2017-02-11T08:14:00.000Z","key":1486800840000,"doc_count":5},{"key_as_string":"2017-02-11T08:15:00.000Z","key":1486800900000,"doc_count":14},{"key_as_string":"2017-02-11T08:16:00.000Z","key":1486800960000,"doc_count":18},{"key_as_string":"2017-02-11T08:17:00.000Z","key":1486801020000,"doc_count":11},{"key_as_string":"2017-02-11T08:18:00.000Z","key":1486801080000,"doc_count":16},{"key_as_string":"2017-02-11T08:19:00.000Z","key":1486801140000,"doc_count":10},{"key_as_string":"2017-02-11T08:20:00.000Z","key":1486801200000,"doc_count":15},{"key_as_string":"2017-02-11T08:21:00.000Z","key":1486801260000,"doc_count":10},{"key_as_string":"2017-02-11T08:22:00.000Z","key":1486801320000,"doc_count":14},{"key_as_string":"2017-02-11T08:23:00.000Z","key":1486801380000,"doc_count":10},{"key_as_string":"2017-02-11T08:24:00.000Z","key":1486801440000,"doc_count":19},{"key_as_string":"2017-02-11T08:25:00.000Z","key":1486801500000,"doc_count":14},{"key_as_string":"2017-02-11T08:26:00.000Z","key":1486801560000,"doc_count":13},{"key_as_string":"2017-02-11T08:27:00.000Z","key":1486801620000,"doc_count":10},{"key_as_string":"2017-02-11T08:28:00.000Z","key":1486801680000,"doc_count":15},{"key_as_string":"2017-02-11T08:29:00.000Z","key":1486801740000,"doc_count":10},{"key_as_string":"2017-02-11T08:30:00.000Z","key":1486801800000,"doc_count":11},{"key_as_string":"2017-02-11T08:31:00.000Z","key":1486801860000,"doc_count":9},{"key_as_string":"2017-02-11T08:32:00.000Z","key":1486801920000,"doc_count":14},{"key_as_string":"2017-02-11T08:33:00.000Z","key":1486801980000,"doc_count":10},{"key_as_string":"2017-02-11T08:34:00.000Z","key":1486802040000,"doc_count":12},{"key_as_string":"2017-02-11T08:35:00.000Z","key":1486802100000,"doc_count":16},{"key_as_string":"2017-02-11T08:36:00.000Z","key":1486802160000,"doc_count":19},{"key_as_string":"2017-02-11T08:37:00.000Z","key":1486802220000,"doc_count":13},{"key_as_string":"2017-02-11T08:38:00.000Z","key":1486802280000,"doc_count":11},{"key_as_string":"2017-02-11T08:39:00.000Z","key":1486802340000,"doc_count":16},{"key_as_string":"2017-02-11T08:40:00.000Z","key":1486802400000,"doc_count":13},{"key_as_string":"2017-02-11T08:41:00.000Z","key":1486802460000,"doc_count":10},{"key_as_string":"2017-02-11T08:42:00.000Z","key":1486802520000,"doc_count":12},{"key_as_string":"2017-02-11T08:43:00.000Z","key":1486802580000,"doc_count":11},{"key_as_string":"2017-02-11T08:44:00.000Z","key":1486802640000,"doc_count":9},{"key_as_string":"2017-02-11T08:45:00.000Z","key":1486802700000,"doc_count":12},{"key_as_string":"2017-02-11T08:46:00.000Z","key":1486802760000,"doc_count":11},{"key_as_string":"2017-02-11T08:47:00.000Z","key":1486802820000,"doc_count":15},{"key_as_string":"2017-02-11T08:48:00.000Z","key":1486802880000,"doc_count":9},{"key_as_string":"2017-02-11T08:49:00.000Z","key":1486802940000,"doc_count":17},{"key_as_string":"2017-02-11T08:50:00.000Z","key":1486803000000,"doc_count":14},{"key_as_string":"2017-02-11T08:51:00.000Z","key":1486803060000,"doc_count":14},{"key_as_string":"2017-02-11T08:52:00.000Z","key":1486803120000,"doc_count":11},{"key_as_string":"2017-02-11T08:53:00.000Z","key":1486803180000,"doc_count":13},{"key_as_string":"2017-02-11T08:54:00.000Z","key":1486803240000,"doc_count":17},{"key_as_string":"2017-02-11T08:55:00.000Z","key":1486803300000,"doc_count":13},{"key_as_string":"2017-02-11T08:56:00.000Z","key":1486803360000,"doc_count":15},{"key_as_string":"2017-02-11T08:57:00.000Z","key":1486803420000,"doc_count":15},{"key_as_string":"2017-02-11T08:58:00.000Z","key":1486803480000,"doc_count":14},{"key_as_string":"2017-02-11T08:59:00.000Z","key":1486803540000,"doc_count":6},{"key_as_string":"2017-02-11T09:00:00.000Z","key":1486803600000,"doc_count":15},{"key_as_string":"2017-02-11T09:01:00.000Z","key":1486803660000,"doc_count":9},{"key_as_string":"2017-02-11T09:02:00.000Z","key":1486803720000,"doc_count":15},{"key_as_string":"2017-02-11T09:03:00.000Z","key":1486803780000,"doc_count":10},{"key_as_string":"2017-02-11T09:04:00.000Z","key":1486803840000,"doc_count":11},{"key_as_string":"2017-02-11T09:05:00.000Z","key":1486803900000,"doc_count":17},{"key_as_string":"2017-02-11T09:06:00.000Z","key":1486803960000,"doc_count":10},{"key_as_string":"2017-02-11T09:07:00.000Z","key":1486804020000,"doc_count":13},{"key_as_string":"2017-02-11T09:08:00.000Z","key":1486804080000,"doc_count":15},{"key_as_string":"2017-02-11T09:09:00.000Z","key":1486804140000,"doc_count":10},{"key_as_string":"2017-02-11T09:10:00.000Z","key":1486804200000,"doc_count":16},{"key_as_string":"2017-02-11T09:11:00.000Z","key":1486804260000,"doc_count":18},{"key_as_string":"2017-02-11T09:12:00.000Z","key":1486804320000,"doc_count":10},{"key_as_string":"2017-02-11T09:13:00.000Z","key":1486804380000,"doc_count":14},{"key_as_string":"2017-02-11T09:14:00.000Z","key":1486804440000,"doc_count":9},{"key_as_string":"2017-02-11T09:15:00.000Z","key":1486804500000,"doc_count":17},{"key_as_string":"2017-02-11T09:16:00.000Z","key":1486804560000,"doc_count":18},{"key_as_string":"2017-02-11T09:17:00.000Z","key":1486804620000,"doc_count":12},{"key_as_string":"2017-02-11T09:18:00.000Z","key":1486804680000,"doc_count":15},{"key_as_string":"2017-02-11T09:19:00.000Z","key":1486804740000,"doc_count":10},{"key_as_string":"2017-02-11T09:20:00.000Z","key":1486804800000,"doc_count":14},{"key_as_string":"2017-02-11T09:21:00.000Z","key":1486804860000,"doc_count":15},{"key_as_string":"2017-02-11T09:22:00.000Z","key":1486804920000,"doc_count":12},{"key_as_string":"2017-02-11T09:23:00.000Z","key":1486804980000,"doc_count":17},{"key_as_string":"2017-02-11T09:24:00.000Z","key":1486805040000,"doc_count":13},{"key_as_string":"2017-02-11T09:25:00.000Z","key":1486805100000,"doc_count":17},{"key_as_string":"2017-02-11T09:26:00.000Z","key":1486805160000,"doc_count":11},{"key_as_string":"2017-02-11T09:27:00.000Z","key":1486805220000,"doc_count":11},{"key_as_string":"2017-02-11T09:28:00.000Z","key":1486805280000,"doc_count":13},{"key_as_string":"2017-02-11T09:29:00.000Z","key":1486805340000,"doc_count":9},{"key_as_string":"2017-02-11T09:30:00.000Z","key":1486805400000,"doc_count":20},{"key_as_string":"2017-02-11T09:31:00.000Z","key":1486805460000,"doc_count":13},{"key_as_string":"2017-02-11T09:32:00.000Z","key":1486805520000,"doc_count":17},{"key_as_string":"2017-02-11T09:33:00.000Z","key":1486805580000,"doc_count":16},{"key_as_string":"2017-02-11T09:34:00.000Z","key":1486805640000,"doc_count":11},{"key_as_string":"2017-02-11T09:35:00.000Z","key":1486805700000,"doc_count":18},{"key_as_string":"2017-02-11T09:36:00.000Z","key":1486805760000,"doc_count":14},{"key_as_string":"2017-02-11T09:37:00.000Z","key":1486805820000,"doc_count":17},{"key_as_string":"2017-02-11T09:38:00.000Z","key":1486805880000,"doc_count":12},{"key_as_string":"2017-02-11T09:39:00.000Z","key":1486805940000,"doc_count":12},{"key_as_string":"2017-02-11T09:40:00.000Z","key":1486806000000,"doc_count":14},{"key_as_string":"2017-02-11T09:41:00.000Z","key":1486806060000,"doc_count":11},{"key_as_string":"2017-02-11T09:42:00.000Z","key":1486806120000,"doc_count":12},{"key_as_string":"2017-02-11T09:43:00.000Z","key":1486806180000,"doc_count":14},{"key_as_string":"2017-02-11T09:44:00.000Z","key":1486806240000,"doc_count":16},{"key_as_string":"2017-02-11T09:45:00.000Z","key":1486806300000,"doc_count":17},{"key_as_string":"2017-02-11T09:46:00.000Z","key":1486806360000,"doc_count":12},{"key_as_string":"2017-02-11T09:47:00.000Z","key":1486806420000,"doc_count":15},{"key_as_string":"2017-02-11T09:48:00.000Z","key":1486806480000,"doc_count":13},{"key_as_string":"2017-02-11T09:49:00.000Z","key":1486806540000,"doc_count":14},{"key_as_string":"2017-02-11T09:50:00.000Z","key":1486806600000,"doc_count":17},{"key_as_string":"2017-02-11T09:51:00.000Z","key":1486806660000,"doc_count":15},{"key_as_string":"2017-02-11T09:52:00.000Z","key":1486806720000,"doc_count":9},{"key_as_string":"2017-02-11T09:53:00.000Z","key":1486806780000,"doc_count":20},{"key_as_string":"2017-02-11T09:54:00.000Z","key":1486806840000,"doc_count":15},{"key_as_string":"2017-02-11T09:55:00.000Z","key":1486806900000,"doc_count":19},{"key_as_string":"2017-02-11T09:56:00.000Z","key":1486806960000,"doc_count":10},{"key_as_string":"2017-02-11T09:57:00.000Z","key":1486807020000,"doc_count":14},{"key_as_string":"2017-02-11T09:58:00.000Z","key":1486807080000,"doc_count":15},{"key_as_string":"2017-02-11T09:59:00.000Z","key":1486807140000,"doc_count":20},{"key_as_string":"2017-02-11T10:00:00.000Z","key":1486807200000,"doc_count":14},{"key_as_string":"2017-02-11T10:01:00.000Z","key":1486807260000,"doc_count":14},{"key_as_string":"2017-02-11T10:02:00.000Z","key":1486807320000,"doc_count":13},{"key_as_string":"2017-02-11T10:03:00.000Z","key":1486807380000,"doc_count":13},{"key_as_string":"2017-02-11T10:04:00.000Z","key":1486807440000,"doc_count":17},{"key_as_string":"2017-02-11T10:05:00.000Z","key":1486807500000,"doc_count":10},{"key_as_string":"2017-02-11T10:06:00.000Z","key":1486807560000,"doc_count":20},{"key_as_string":"2017-02-11T10:07:00.000Z","key":1486807620000,"doc_count":14},{"key_as_string":"2017-02-11T10:08:00.000Z","key":1486807680000,"doc_count":12},{"key_as_string":"2017-02-11T10:09:00.000Z","key":1486807740000,"doc_count":22},{"key_as_string":"2017-02-11T10:10:00.000Z","key":1486807800000,"doc_count":18},{"key_as_string":"2017-02-11T10:11:00.000Z","key":1486807860000,"doc_count":9},{"key_as_string":"2017-02-11T10:12:00.000Z","key":1486807920000,"doc_count":16},{"key_as_string":"2017-02-11T10:13:00.000Z","key":1486807980000,"doc_count":13},{"key_as_string":"2017-02-11T10:14:00.000Z","key":1486808040000,"doc_count":14},{"key_as_string":"2017-02-11T10:15:00.000Z","key":1486808100000,"doc_count":13},{"key_as_string":"2017-02-11T10:16:00.000Z","key":1486808160000,"doc_count":15},{"key_as_string":"2017-02-11T10:17:00.000Z","key":1486808220000,"doc_count":15},{"key_as_string":"2017-02-11T10:18:00.000Z","key":1486808280000,"doc_count":13},{"key_as_string":"2017-02-11T10:19:00.000Z","key":1486808340000,"doc_count":12},{"key_as_string":"2017-02-11T10:20:00.000Z","key":1486808400000,"doc_count":8},{"key_as_string":"2017-02-11T10:21:00.000Z","key":1486808460000,"doc_count":18},{"key_as_string":"2017-02-11T10:22:00.000Z","key":1486808520000,"doc_count":14},{"key_as_string":"2017-02-11T10:23:00.000Z","key":1486808580000,"doc_count":17},{"key_as_string":"2017-02-11T10:24:00.000Z","key":1486808640000,"doc_count":22},{"key_as_string":"2017-02-11T10:25:00.000Z","key":1486808700000,"doc_count":12},{"key_as_string":"2017-02-11T10:26:00.000Z","key":1486808760000,"doc_count":13},{"key_as_string":"2017-02-11T10:27:00.000Z","key":1486808820000,"doc_count":17},{"key_as_string":"2017-02-11T10:28:00.000Z","key":1486808880000,"doc_count":14},{"key_as_string":"2017-02-11T10:29:00.000Z","key":1486808940000,"doc_count":13},{"key_as_string":"2017-02-11T10:30:00.000Z","key":1486809000000,"doc_count":11},{"key_as_string":"2017-02-11T10:31:00.000Z","key":1486809060000,"doc_count":15},{"key_as_string":"2017-02-11T10:32:00.000Z","key":1486809120000,"doc_count":17},{"key_as_string":"2017-02-11T10:33:00.000Z","key":1486809180000,"doc_count":14},{"key_as_string":"2017-02-11T10:34:00.000Z","key":1486809240000,"doc_count":12},{"key_as_string":"2017-02-11T10:35:00.000Z","key":1486809300000,"doc_count":10},{"key_as_string":"2017-02-11T10:36:00.000Z","key":1486809360000,"doc_count":12},{"key_as_string":"2017-02-11T10:37:00.000Z","key":1486809420000,"doc_count":16},{"key_as_string":"2017-02-11T10:38:00.000Z","key":1486809480000,"doc_count":18},{"key_as_string":"2017-02-11T10:39:00.000Z","key":1486809540000,"doc_count":15},{"key_as_string":"2017-02-11T10:40:00.000Z","key":1486809600000,"doc_count":16},{"key_as_string":"2017-02-11T10:41:00.000Z","key":1486809660000,"doc_count":15},{"key_as_string":"2017-02-11T10:42:00.000Z","key":1486809720000,"doc_count":15},{"key_as_string":"2017-02-11T10:43:00.000Z","key":1486809780000,"doc_count":11},{"key_as_string":"2017-02-11T10:44:00.000Z","key":1486809840000,"doc_count":11},{"key_as_string":"2017-02-11T10:45:00.000Z","key":1486809900000,"doc_count":19},{"key_as_string":"2017-02-11T10:46:00.000Z","key":1486809960000,"doc_count":12},{"key_as_string":"2017-02-11T10:47:00.000Z","key":1486810020000,"doc_count":12},{"key_as_string":"2017-02-11T10:48:00.000Z","key":1486810080000,"doc_count":12},{"key_as_string":"2017-02-11T10:49:00.000Z","key":1486810140000,"doc_count":12},{"key_as_string":"2017-02-11T10:50:00.000Z","key":1486810200000,"doc_count":21},{"key_as_string":"2017-02-11T10:51:00.000Z","key":1486810260000,"doc_count":13},{"key_as_string":"2017-02-11T10:52:00.000Z","key":1486810320000,"doc_count":13},{"key_as_string":"2017-02-11T10:53:00.000Z","key":1486810380000,"doc_count":14},{"key_as_string":"2017-02-11T10:54:00.000Z","key":1486810440000,"doc_count":14},{"key_as_string":"2017-02-11T10:55:00.000Z","key":1486810500000,"doc_count":10},{"key_as_string":"2017-02-11T10:56:00.000Z","key":1486810560000,"doc_count":12},{"key_as_string":"2017-02-11T10:57:00.000Z","key":1486810620000,"doc_count":15},{"key_as_string":"2017-02-11T10:58:00.000Z","key":1486810680000,"doc_count":13},{"key_as_string":"2017-02-11T10:59:00.000Z","key":1486810740000,"doc_count":11},{"key_as_string":"2017-02-11T11:00:00.000Z","key":1486810800000,"doc_count":18},{"key_as_string":"2017-02-11T11:01:00.000Z","key":1486810860000,"doc_count":14},{"key_as_string":"2017-02-11T11:02:00.000Z","key":1486810920000,"doc_count":18},{"key_as_string":"2017-02-11T11:03:00.000Z","key":1486810980000,"doc_count":18},{"key_as_string":"2017-02-11T11:04:00.000Z","key":1486811040000,"doc_count":14},{"key_as_string":"2017-02-11T11:05:00.000Z","key":1486811100000,"doc_count":21},{"key_as_string":"2017-02-11T11:06:00.000Z","key":1486811160000,"doc_count":8},{"key_as_string":"2017-02-11T11:07:00.000Z","key":1486811220000,"doc_count":14},{"key_as_string":"2017-02-11T11:08:00.000Z","key":1486811280000,"doc_count":9},{"key_as_string":"2017-02-11T11:09:00.000Z","key":1486811340000,"doc_count":13},{"key_as_string":"2017-02-11T11:10:00.000Z","key":1486811400000,"doc_count":19},{"key_as_string":"2017-02-11T11:11:00.000Z","key":1486811460000,"doc_count":12},{"key_as_string":"2017-02-11T11:12:00.000Z","key":1486811520000,"doc_count":15},{"key_as_string":"2017-02-11T11:13:00.000Z","key":1486811580000,"doc_count":16},{"key_as_string":"2017-02-11T11:14:00.000Z","key":1486811640000,"doc_count":11},{"key_as_string":"2017-02-11T11:15:00.000Z","key":1486811700000,"doc_count":12},{"key_as_string":"2017-02-11T11:16:00.000Z","key":1486811760000,"doc_count":16},{"key_as_string":"2017-02-11T11:17:00.000Z","key":1486811820000,"doc_count":14},{"key_as_string":"2017-02-11T11:18:00.000Z","key":1486811880000,"doc_count":13},{"key_as_string":"2017-02-11T11:19:00.000Z","key":1486811940000,"doc_count":14},{"key_as_string":"2017-02-11T11:20:00.000Z","key":1486812000000,"doc_count":14},{"key_as_string":"2017-02-11T11:21:00.000Z","key":1486812060000,"doc_count":11},{"key_as_string":"2017-02-11T11:22:00.000Z","key":1486812120000,"doc_count":14},{"key_as_string":"2017-02-11T11:23:00.000Z","key":1486812180000,"doc_count":13},{"key_as_string":"2017-02-11T11:24:00.000Z","key":1486812240000,"doc_count":13},{"key_as_string":"2017-02-11T11:25:00.000Z","key":1486812300000,"doc_count":13},{"key_as_string":"2017-02-11T11:26:00.000Z","key":1486812360000,"doc_count":6},{"key_as_string":"2017-02-11T11:27:00.000Z","key":1486812420000,"doc_count":21},{"key_as_string":"2017-02-11T11:28:00.000Z","key":1486812480000,"doc_count":10},{"key_as_string":"2017-02-11T11:29:00.000Z","key":1486812540000,"doc_count":19},{"key_as_string":"2017-02-11T11:30:00.000Z","key":1486812600000,"doc_count":10},{"key_as_string":"2017-02-11T11:31:00.000Z","key":1486812660000,"doc_count":10},{"key_as_string":"2017-02-11T11:32:00.000Z","key":1486812720000,"doc_count":14},{"key_as_string":"2017-02-11T11:33:00.000Z","key":1486812780000,"doc_count":13},{"key_as_string":"2017-02-11T11:34:00.000Z","key":1486812840000,"doc_count":9},{"key_as_string":"2017-02-11T11:35:00.000Z","key":1486812900000,"doc_count":16},{"key_as_string":"2017-02-11T11:36:00.000Z","key":1486812960000,"doc_count":9},{"key_as_string":"2017-02-11T11:37:00.000Z","key":1486813020000,"doc_count":14},{"key_as_string":"2017-02-11T11:38:00.000Z","key":1486813080000,"doc_count":8},{"key_as_string":"2017-02-11T11:39:00.000Z","key":1486813140000,"doc_count":16},{"key_as_string":"2017-02-11T11:40:00.000Z","key":1486813200000,"doc_count":17},{"key_as_string":"2017-02-11T11:41:00.000Z","key":1486813260000,"doc_count":11},{"key_as_string":"2017-02-11T11:42:00.000Z","key":1486813320000,"doc_count":13},{"key_as_string":"2017-02-11T11:43:00.000Z","key":1486813380000,"doc_count":14},{"key_as_string":"2017-02-11T11:44:00.000Z","key":1486813440000,"doc_count":17},{"key_as_string":"2017-02-11T11:45:00.000Z","key":1486813500000,"doc_count":11},{"key_as_string":"2017-02-11T11:46:00.000Z","key":1486813560000,"doc_count":16},{"key_as_string":"2017-02-11T11:47:00.000Z","key":1486813620000,"doc_count":12},{"key_as_string":"2017-02-11T11:48:00.000Z","key":1486813680000,"doc_count":13},{"key_as_string":"2017-02-11T11:49:00.000Z","key":1486813740000,"doc_count":19},{"key_as_string":"2017-02-11T11:50:00.000Z","key":1486813800000,"doc_count":12},{"key_as_string":"2017-02-11T11:51:00.000Z","key":1486813860000,"doc_count":15},{"key_as_string":"2017-02-11T11:52:00.000Z","key":1486813920000,"doc_count":12},{"key_as_string":"2017-02-11T11:53:00.000Z","key":1486813980000,"doc_count":8},{"key_as_string":"2017-02-11T11:54:00.000Z","key":1486814040000,"doc_count":15},{"key_as_string":"2017-02-11T11:55:00.000Z","key":1486814100000,"doc_count":16},{"key_as_string":"2017-02-11T11:56:00.000Z","key":1486814160000,"doc_count":10},{"key_as_string":"2017-02-11T11:57:00.000Z","key":1486814220000,"doc_count":12},{"key_as_string":"2017-02-11T11:58:00.000Z","key":1486814280000,"doc_count":17},{"key_as_string":"2017-02-11T11:59:00.000Z","key":1486814340000,"doc_count":18},{"key_as_string":"2017-02-11T12:00:00.000Z","key":1486814400000,"doc_count":13},{"key_as_string":"2017-02-11T12:01:00.000Z","key":1486814460000,"doc_count":13},{"key_as_string":"2017-02-11T12:02:00.000Z","key":1486814520000,"doc_count":9},{"key_as_string":"2017-02-11T12:03:00.000Z","key":1486814580000,"doc_count":14},{"key_as_string":"2017-02-11T12:04:00.000Z","key":1486814640000,"doc_count":11},{"key_as_string":"2017-02-11T12:05:00.000Z","key":1486814700000,"doc_count":9},{"key_as_string":"2017-02-11T12:06:00.000Z","key":1486814760000,"doc_count":18},{"key_as_string":"2017-02-11T12:07:00.000Z","key":1486814820000,"doc_count":14},{"key_as_string":"2017-02-11T12:08:00.000Z","key":1486814880000,"doc_count":9},{"key_as_string":"2017-02-11T12:09:00.000Z","key":1486814940000,"doc_count":15},{"key_as_string":"2017-02-11T12:10:00.000Z","key":1486815000000,"doc_count":18},{"key_as_string":"2017-02-11T12:11:00.000Z","key":1486815060000,"doc_count":14},{"key_as_string":"2017-02-11T12:12:00.000Z","key":1486815120000,"doc_count":16},{"key_as_string":"2017-02-11T12:13:00.000Z","key":1486815180000,"doc_count":14},{"key_as_string":"2017-02-11T12:14:00.000Z","key":1486815240000,"doc_count":12},{"key_as_string":"2017-02-11T12:15:00.000Z","key":1486815300000,"doc_count":15},{"key_as_string":"2017-02-11T12:16:00.000Z","key":1486815360000,"doc_count":12},{"key_as_string":"2017-02-11T12:17:00.000Z","key":1486815420000,"doc_count":12},{"key_as_string":"2017-02-11T12:18:00.000Z","key":1486815480000,"doc_count":16},{"key_as_string":"2017-02-11T12:19:00.000Z","key":1486815540000,"doc_count":9},{"key_as_string":"2017-02-11T12:20:00.000Z","key":1486815600000,"doc_count":14},{"key_as_string":"2017-02-11T12:21:00.000Z","key":1486815660000,"doc_count":11},{"key_as_string":"2017-02-11T12:22:00.000Z","key":1486815720000,"doc_count":16},{"key_as_string":"2017-02-11T12:23:00.000Z","key":1486815780000,"doc_count":14},{"key_as_string":"2017-02-11T12:24:00.000Z","key":1486815840000,"doc_count":10},{"key_as_string":"2017-02-11T12:25:00.000Z","key":1486815900000,"doc_count":16},{"key_as_string":"2017-02-11T12:26:00.000Z","key":1486815960000,"doc_count":18},{"key_as_string":"2017-02-11T12:27:00.000Z","key":1486816020000,"doc_count":15},{"key_as_string":"2017-02-11T12:28:00.000Z","key":1486816080000,"doc_count":10},{"key_as_string":"2017-02-11T12:29:00.000Z","key":1486816140000,"doc_count":12},{"key_as_string":"2017-02-11T12:30:00.000Z","key":1486816200000,"doc_count":11},{"key_as_string":"2017-02-11T12:31:00.000Z","key":1486816260000,"doc_count":16},{"key_as_string":"2017-02-11T12:32:00.000Z","key":1486816320000,"doc_count":11},{"key_as_string":"2017-02-11T12:33:00.000Z","key":1486816380000,"doc_count":11},{"key_as_string":"2017-02-11T12:34:00.000Z","key":1486816440000,"doc_count":19},{"key_as_string":"2017-02-11T12:35:00.000Z","key":1486816500000,"doc_count":17},{"key_as_string":"2017-02-11T12:36:00.000Z","key":1486816560000,"doc_count":19},{"key_as_string":"2017-02-11T12:37:00.000Z","key":1486816620000,"doc_count":11},{"key_as_string":"2017-02-11T12:38:00.000Z","key":1486816680000,"doc_count":18},{"key_as_string":"2017-02-11T12:39:00.000Z","key":1486816740000,"doc_count":11},{"key_as_string":"2017-02-11T12:40:00.000Z","key":1486816800000,"doc_count":12},{"key_as_string":"2017-02-11T12:41:00.000Z","key":1486816860000,"doc_count":15},{"key_as_string":"2017-02-11T12:42:00.000Z","key":1486816920000,"doc_count":15},{"key_as_string":"2017-02-11T12:43:00.000Z","key":1486816980000,"doc_count":7},{"key_as_string":"2017-02-11T12:44:00.000Z","key":1486817040000,"doc_count":19},{"key_as_string":"2017-02-11T12:45:00.000Z","key":1486817100000,"doc_count":12},{"key_as_string":"2017-02-11T12:46:00.000Z","key":1486817160000,"doc_count":16},{"key_as_string":"2017-02-11T12:47:00.000Z","key":1486817220000,"doc_count":8},{"key_as_string":"2017-02-11T12:48:00.000Z","key":1486817280000,"doc_count":15},{"key_as_string":"2017-02-11T12:49:00.000Z","key":1486817340000,"doc_count":12},{"key_as_string":"2017-02-11T12:50:00.000Z","key":1486817400000,"doc_count":12},{"key_as_string":"2017-02-11T12:51:00.000Z","key":1486817460000,"doc_count":16},{"key_as_string":"2017-02-11T12:52:00.000Z","key":1486817520000,"doc_count":13},{"key_as_string":"2017-02-11T12:53:00.000Z","key":1486817580000,"doc_count":13},{"key_as_string":"2017-02-11T12:54:00.000Z","key":1486817640000,"doc_count":15},{"key_as_string":"2017-02-11T12:55:00.000Z","key":1486817700000,"doc_count":16},{"key_as_string":"2017-02-11T12:56:00.000Z","key":1486817760000,"doc_count":17},{"key_as_string":"2017-02-11T12:57:00.000Z","key":1486817820000,"doc_count":13},{"key_as_string":"2017-02-11T12:58:00.000Z","key":1486817880000,"doc_count":12},{"key_as_string":"2017-02-11T12:59:00.000Z","key":1486817940000,"doc_count":17},{"key_as_string":"2017-02-11T13:00:00.000Z","key":1486818000000,"doc_count":16},{"key_as_string":"2017-02-11T13:01:00.000Z","key":1486818060000,"doc_count":14},{"key_as_string":"2017-02-11T13:02:00.000Z","key":1486818120000,"doc_count":8},{"key_as_string":"2017-02-11T13:03:00.000Z","key":1486818180000,"doc_count":15},{"key_as_string":"2017-02-11T13:04:00.000Z","key":1486818240000,"doc_count":14},{"key_as_string":"2017-02-11T13:05:00.000Z","key":1486818300000,"doc_count":16},{"key_as_string":"2017-02-11T13:06:00.000Z","key":1486818360000,"doc_count":20},{"key_as_string":"2017-02-11T13:07:00.000Z","key":1486818420000,"doc_count":10},{"key_as_string":"2017-02-11T13:08:00.000Z","key":1486818480000,"doc_count":15},{"key_as_string":"2017-02-11T13:09:00.000Z","key":1486818540000,"doc_count":12},{"key_as_string":"2017-02-11T13:10:00.000Z","key":1486818600000,"doc_count":12},{"key_as_string":"2017-02-11T13:11:00.000Z","key":1486818660000,"doc_count":8},{"key_as_string":"2017-02-11T13:12:00.000Z","key":1486818720000,"doc_count":17},{"key_as_string":"2017-02-11T13:13:00.000Z","key":1486818780000,"doc_count":8},{"key_as_string":"2017-02-11T13:14:00.000Z","key":1486818840000,"doc_count":15},{"key_as_string":"2017-02-11T13:15:00.000Z","key":1486818900000,"doc_count":13},{"key_as_string":"2017-02-11T13:16:00.000Z","key":1486818960000,"doc_count":15},{"key_as_string":"2017-02-11T13:17:00.000Z","key":1486819020000,"doc_count":15},{"key_as_string":"2017-02-11T13:18:00.000Z","key":1486819080000,"doc_count":11},{"key_as_string":"2017-02-11T13:19:00.000Z","key":1486819140000,"doc_count":17},{"key_as_string":"2017-02-11T13:20:00.000Z","key":1486819200000,"doc_count":11},{"key_as_string":"2017-02-11T13:21:00.000Z","key":1486819260000,"doc_count":14},{"key_as_string":"2017-02-11T13:22:00.000Z","key":1486819320000,"doc_count":10},{"key_as_string":"2017-02-11T13:23:00.000Z","key":1486819380000,"doc_count":15},{"key_as_string":"2017-02-11T13:24:00.000Z","key":1486819440000,"doc_count":14},{"key_as_string":"2017-02-11T13:25:00.000Z","key":1486819500000,"doc_count":11},{"key_as_string":"2017-02-11T13:26:00.000Z","key":1486819560000,"doc_count":12},{"key_as_string":"2017-02-11T13:27:00.000Z","key":1486819620000,"doc_count":13},{"key_as_string":"2017-02-11T13:28:00.000Z","key":1486819680000,"doc_count":16},{"key_as_string":"2017-02-11T13:29:00.000Z","key":1486819740000,"doc_count":8},{"key_as_string":"2017-02-11T13:30:00.000Z","key":1486819800000,"doc_count":12},{"key_as_string":"2017-02-11T13:31:00.000Z","key":1486819860000,"doc_count":10},{"key_as_string":"2017-02-11T13:32:00.000Z","key":1486819920000,"doc_count":15},{"key_as_string":"2017-02-11T13:33:00.000Z","key":1486819980000,"doc_count":13},{"key_as_string":"2017-02-11T13:34:00.000Z","key":1486820040000,"doc_count":15},{"key_as_string":"2017-02-11T13:35:00.000Z","key":1486820100000,"doc_count":13},{"key_as_string":"2017-02-11T13:36:00.000Z","key":1486820160000,"doc_count":15},{"key_as_string":"2017-02-11T13:37:00.000Z","key":1486820220000,"doc_count":19},{"key_as_string":"2017-02-11T13:38:00.000Z","key":1486820280000,"doc_count":13},{"key_as_string":"2017-02-11T13:39:00.000Z","key":1486820340000,"doc_count":15},{"key_as_string":"2017-02-11T13:40:00.000Z","key":1486820400000,"doc_count":16},{"key_as_string":"2017-02-11T13:41:00.000Z","key":1486820460000,"doc_count":14},{"key_as_string":"2017-02-11T13:42:00.000Z","key":1486820520000,"doc_count":18},{"key_as_string":"2017-02-11T13:43:00.000Z","key":1486820580000,"doc_count":11},{"key_as_string":"2017-02-11T13:44:00.000Z","key":1486820640000,"doc_count":14},{"key_as_string":"2017-02-11T13:45:00.000Z","key":1486820700000,"doc_count":14},{"key_as_string":"2017-02-11T13:46:00.000Z","key":1486820760000,"doc_count":13},{"key_as_string":"2017-02-11T13:47:00.000Z","key":1486820820000,"doc_count":9},{"key_as_string":"2017-02-11T13:48:00.000Z","key":1486820880000,"doc_count":11},{"key_as_string":"2017-02-11T13:49:00.000Z","key":1486820940000,"doc_count":20},{"key_as_string":"2017-02-11T13:50:00.000Z","key":1486821000000,"doc_count":9},{"key_as_string":"2017-02-11T13:51:00.000Z","key":1486821060000,"doc_count":8},{"key_as_string":"2017-02-11T13:52:00.000Z","key":1486821120000,"doc_count":20},{"key_as_string":"2017-02-11T13:53:00.000Z","key":1486821180000,"doc_count":11},{"key_as_string":"2017-02-11T13:54:00.000Z","key":1486821240000,"doc_count":16},{"key_as_string":"2017-02-11T13:55:00.000Z","key":1486821300000,"doc_count":15},{"key_as_string":"2017-02-11T13:56:00.000Z","key":1486821360000,"doc_count":14},{"key_as_string":"2017-02-11T13:57:00.000Z","key":1486821420000,"doc_count":15},{"key_as_string":"2017-02-11T13:58:00.000Z","key":1486821480000,"doc_count":15},{"key_as_string":"2017-02-11T13:59:00.000Z","key":1486821540000,"doc_count":9},{"key_as_string":"2017-02-11T14:00:00.000Z","key":1486821600000,"doc_count":12},{"key_as_string":"2017-02-11T14:01:00.000Z","key":1486821660000,"doc_count":13},{"key_as_string":"2017-02-11T14:02:00.000Z","key":1486821720000,"doc_count":15},{"key_as_string":"2017-02-11T14:03:00.000Z","key":1486821780000,"doc_count":12},{"key_as_string":"2017-02-11T14:04:00.000Z","key":1486821840000,"doc_count":16},{"key_as_string":"2017-02-11T14:05:00.000Z","key":1486821900000,"doc_count":10},{"key_as_string":"2017-02-11T14:06:00.000Z","key":1486821960000,"doc_count":12},{"key_as_string":"2017-02-11T14:07:00.000Z","key":1486822020000,"doc_count":13},{"key_as_string":"2017-02-11T14:08:00.000Z","key":1486822080000,"doc_count":9},{"key_as_string":"2017-02-11T14:09:00.000Z","key":1486822140000,"doc_count":16},{"key_as_string":"2017-02-11T14:10:00.000Z","key":1486822200000,"doc_count":15},{"key_as_string":"2017-02-11T14:11:00.000Z","key":1486822260000,"doc_count":14},{"key_as_string":"2017-02-11T14:12:00.000Z","key":1486822320000,"doc_count":10},{"key_as_string":"2017-02-11T14:13:00.000Z","key":1486822380000,"doc_count":10},{"key_as_string":"2017-02-11T14:14:00.000Z","key":1486822440000,"doc_count":15},{"key_as_string":"2017-02-11T14:15:00.000Z","key":1486822500000,"doc_count":10},{"key_as_string":"2017-02-11T14:16:00.000Z","key":1486822560000,"doc_count":13},{"key_as_string":"2017-02-11T14:17:00.000Z","key":1486822620000,"doc_count":14},{"key_as_string":"2017-02-11T14:18:00.000Z","key":1486822680000,"doc_count":14},{"key_as_string":"2017-02-11T14:19:00.000Z","key":1486822740000,"doc_count":17},{"key_as_string":"2017-02-11T14:20:00.000Z","key":1486822800000,"doc_count":13},{"key_as_string":"2017-02-11T14:21:00.000Z","key":1486822860000,"doc_count":14},{"key_as_string":"2017-02-11T14:22:00.000Z","key":1486822920000,"doc_count":12},{"key_as_string":"2017-02-11T14:23:00.000Z","key":1486822980000,"doc_count":21},{"key_as_string":"2017-02-11T14:24:00.000Z","key":1486823040000,"doc_count":14},{"key_as_string":"2017-02-11T14:25:00.000Z","key":1486823100000,"doc_count":9},{"key_as_string":"2017-02-11T14:26:00.000Z","key":1486823160000,"doc_count":8},{"key_as_string":"2017-02-11T14:27:00.000Z","key":1486823220000,"doc_count":14},{"key_as_string":"2017-02-11T14:28:00.000Z","key":1486823280000,"doc_count":10},{"key_as_string":"2017-02-11T14:29:00.000Z","key":1486823340000,"doc_count":12},{"key_as_string":"2017-02-11T14:30:00.000Z","key":1486823400000,"doc_count":12},{"key_as_string":"2017-02-11T14:31:00.000Z","key":1486823460000,"doc_count":14},{"key_as_string":"2017-02-11T14:32:00.000Z","key":1486823520000,"doc_count":15},{"key_as_string":"2017-02-11T14:33:00.000Z","key":1486823580000,"doc_count":14},{"key_as_string":"2017-02-11T14:34:00.000Z","key":1486823640000,"doc_count":9},{"key_as_string":"2017-02-11T14:35:00.000Z","key":1486823700000,"doc_count":14},{"key_as_string":"2017-02-11T14:36:00.000Z","key":1486823760000,"doc_count":12},{"key_as_string":"2017-02-11T14:37:00.000Z","key":1486823820000,"doc_count":17},{"key_as_string":"2017-02-11T14:38:00.000Z","key":1486823880000,"doc_count":11},{"key_as_string":"2017-02-11T14:39:00.000Z","key":1486823940000,"doc_count":12},{"key_as_string":"2017-02-11T14:40:00.000Z","key":1486824000000,"doc_count":15},{"key_as_string":"2017-02-11T14:41:00.000Z","key":1486824060000,"doc_count":11},{"key_as_string":"2017-02-11T14:42:00.000Z","key":1486824120000,"doc_count":13},{"key_as_string":"2017-02-11T14:43:00.000Z","key":1486824180000,"doc_count":18},{"key_as_string":"2017-02-11T14:44:00.000Z","key":1486824240000,"doc_count":10},{"key_as_string":"2017-02-11T14:45:00.000Z","key":1486824300000,"doc_count":13},{"key_as_string":"2017-02-11T14:46:00.000Z","key":1486824360000,"doc_count":9},{"key_as_string":"2017-02-11T14:47:00.000Z","key":1486824420000,"doc_count":14},{"key_as_string":"2017-02-11T14:48:00.000Z","key":1486824480000,"doc_count":16},{"key_as_string":"2017-02-11T14:49:00.000Z","key":1486824540000,"doc_count":14},{"key_as_string":"2017-02-11T14:50:00.000Z","key":1486824600000,"doc_count":13},{"key_as_string":"2017-02-11T14:51:00.000Z","key":1486824660000,"doc_count":12},{"key_as_string":"2017-02-11T14:52:00.000Z","key":1486824720000,"doc_count":11},{"key_as_string":"2017-02-11T14:53:00.000Z","key":1486824780000,"doc_count":16},{"key_as_string":"2017-02-11T14:54:00.000Z","key":1486824840000,"doc_count":12},{"key_as_string":"2017-02-11T14:55:00.000Z","key":1486824900000,"doc_count":11},{"key_as_string":"2017-02-11T14:56:00.000Z","key":1486824960000,"doc_count":14},{"key_as_string":"2017-02-11T14:57:00.000Z","key":1486825020000,"doc_count":15},{"key_as_string":"2017-02-11T14:58:00.000Z","key":1486825080000,"doc_count":10},{"key_as_string":"2017-02-11T14:59:00.000Z","key":1486825140000,"doc_count":18},{"key_as_string":"2017-02-11T15:00:00.000Z","key":1486825200000,"doc_count":15},{"key_as_string":"2017-02-11T15:01:00.000Z","key":1486825260000,"doc_count":10},{"key_as_string":"2017-02-11T15:02:00.000Z","key":1486825320000,"doc_count":17},{"key_as_string":"2017-02-11T15:03:00.000Z","key":1486825380000,"doc_count":12},{"key_as_string":"2017-02-11T15:04:00.000Z","key":1486825440000,"doc_count":13},{"key_as_string":"2017-02-11T15:05:00.000Z","key":1486825500000,"doc_count":14},{"key_as_string":"2017-02-11T15:06:00.000Z","key":1486825560000,"doc_count":10},{"key_as_string":"2017-02-11T15:07:00.000Z","key":1486825620000,"doc_count":13},{"key_as_string":"2017-02-11T15:08:00.000Z","key":1486825680000,"doc_count":12},{"key_as_string":"2017-02-11T15:09:00.000Z","key":1486825740000,"doc_count":13},{"key_as_string":"2017-02-11T15:10:00.000Z","key":1486825800000,"doc_count":11},{"key_as_string":"2017-02-11T15:11:00.000Z","key":1486825860000,"doc_count":16},{"key_as_string":"2017-02-11T15:12:00.000Z","key":1486825920000,"doc_count":10},{"key_as_string":"2017-02-11T15:13:00.000Z","key":1486825980000,"doc_count":11},{"key_as_string":"2017-02-11T15:14:00.000Z","key":1486826040000,"doc_count":18},{"key_as_string":"2017-02-11T15:15:00.000Z","key":1486826100000,"doc_count":15},{"key_as_string":"2017-02-11T15:16:00.000Z","key":1486826160000,"doc_count":12},{"key_as_string":"2017-02-11T15:17:00.000Z","key":1486826220000,"doc_count":18},{"key_as_string":"2017-02-11T15:18:00.000Z","key":1486826280000,"doc_count":11},{"key_as_string":"2017-02-11T15:19:00.000Z","key":1486826340000,"doc_count":9},{"key_as_string":"2017-02-11T15:20:00.000Z","key":1486826400000,"doc_count":19},{"key_as_string":"2017-02-11T15:21:00.000Z","key":1486826460000,"doc_count":11},{"key_as_string":"2017-02-11T15:22:00.000Z","key":1486826520000,"doc_count":9},{"key_as_string":"2017-02-11T15:23:00.000Z","key":1486826580000,"doc_count":16},{"key_as_string":"2017-02-11T15:24:00.000Z","key":1486826640000,"doc_count":14},{"key_as_string":"2017-02-11T15:25:00.000Z","key":1486826700000,"doc_count":17},{"key_as_string":"2017-02-11T15:26:00.000Z","key":1486826760000,"doc_count":14},{"key_as_string":"2017-02-11T15:27:00.000Z","key":1486826820000,"doc_count":17},{"key_as_string":"2017-02-11T15:28:00.000Z","key":1486826880000,"doc_count":10},{"key_as_string":"2017-02-11T15:29:00.000Z","key":1486826940000,"doc_count":20},{"key_as_string":"2017-02-11T15:30:00.000Z","key":1486827000000,"doc_count":7},{"key_as_string":"2017-02-11T15:31:00.000Z","key":1486827060000,"doc_count":12},{"key_as_string":"2017-02-11T15:32:00.000Z","key":1486827120000,"doc_count":12},{"key_as_string":"2017-02-11T15:33:00.000Z","key":1486827180000,"doc_count":10},{"key_as_string":"2017-02-11T15:34:00.000Z","key":1486827240000,"doc_count":16},{"key_as_string":"2017-02-11T15:35:00.000Z","key":1486827300000,"doc_count":13},{"key_as_string":"2017-02-11T15:36:00.000Z","key":1486827360000,"doc_count":9},{"key_as_string":"2017-02-11T15:37:00.000Z","key":1486827420000,"doc_count":12},{"key_as_string":"2017-02-11T15:38:00.000Z","key":1486827480000,"doc_count":17},{"key_as_string":"2017-02-11T15:39:00.000Z","key":1486827540000,"doc_count":11},{"key_as_string":"2017-02-11T15:40:00.000Z","key":1486827600000,"doc_count":17},{"key_as_string":"2017-02-11T15:41:00.000Z","key":1486827660000,"doc_count":12},{"key_as_string":"2017-02-11T15:42:00.000Z","key":1486827720000,"doc_count":11},{"key_as_string":"2017-02-11T15:43:00.000Z","key":1486827780000,"doc_count":10},{"key_as_string":"2017-02-11T15:44:00.000Z","key":1486827840000,"doc_count":15},{"key_as_string":"2017-02-11T15:45:00.000Z","key":1486827900000,"doc_count":11},{"key_as_string":"2017-02-11T15:46:00.000Z","key":1486827960000,"doc_count":19},{"key_as_string":"2017-02-11T15:47:00.000Z","key":1486828020000,"doc_count":12},{"key_as_string":"2017-02-11T15:48:00.000Z","key":1486828080000,"doc_count":9},{"key_as_string":"2017-02-11T15:49:00.000Z","key":1486828140000,"doc_count":12},{"key_as_string":"2017-02-11T15:50:00.000Z","key":1486828200000,"doc_count":15},{"key_as_string":"2017-02-11T15:51:00.000Z","key":1486828260000,"doc_count":11},{"key_as_string":"2017-02-11T15:52:00.000Z","key":1486828320000,"doc_count":19},{"key_as_string":"2017-02-11T15:53:00.000Z","key":1486828380000,"doc_count":8},{"key_as_string":"2017-02-11T15:54:00.000Z","key":1486828440000,"doc_count":14},{"key_as_string":"2017-02-11T15:55:00.000Z","key":1486828500000,"doc_count":22},{"key_as_string":"2017-02-11T15:56:00.000Z","key":1486828560000,"doc_count":12},{"key_as_string":"2017-02-11T15:57:00.000Z","key":1486828620000,"doc_count":15},{"key_as_string":"2017-02-11T15:58:00.000Z","key":1486828680000,"doc_count":15},{"key_as_string":"2017-02-11T15:59:00.000Z","key":1486828740000,"doc_count":12},{"key_as_string":"2017-02-11T16:00:00.000Z","key":1486828800000,"doc_count":13},{"key_as_string":"2017-02-11T16:01:00.000Z","key":1486828860000,"doc_count":19},{"key_as_string":"2017-02-11T16:02:00.000Z","key":1486828920000,"doc_count":18},{"key_as_string":"2017-02-11T16:03:00.000Z","key":1486828980000,"doc_count":11},{"key_as_string":"2017-02-11T16:04:00.000Z","key":1486829040000,"doc_count":12},{"key_as_string":"2017-02-11T16:05:00.000Z","key":1486829100000,"doc_count":14},{"key_as_string":"2017-02-11T16:06:00.000Z","key":1486829160000,"doc_count":18},{"key_as_string":"2017-02-11T16:07:00.000Z","key":1486829220000,"doc_count":14},{"key_as_string":"2017-02-11T16:08:00.000Z","key":1486829280000,"doc_count":13},{"key_as_string":"2017-02-11T16:09:00.000Z","key":1486829340000,"doc_count":12},{"key_as_string":"2017-02-11T16:10:00.000Z","key":1486829400000,"doc_count":8},{"key_as_string":"2017-02-11T16:11:00.000Z","key":1486829460000,"doc_count":12},{"key_as_string":"2017-02-11T16:12:00.000Z","key":1486829520000,"doc_count":18},{"key_as_string":"2017-02-11T16:13:00.000Z","key":1486829580000,"doc_count":11},{"key_as_string":"2017-02-11T16:14:00.000Z","key":1486829640000,"doc_count":13},{"key_as_string":"2017-02-11T16:15:00.000Z","key":1486829700000,"doc_count":9},{"key_as_string":"2017-02-11T16:16:00.000Z","key":1486829760000,"doc_count":12},{"key_as_string":"2017-02-11T16:17:00.000Z","key":1486829820000,"doc_count":8},{"key_as_string":"2017-02-11T16:18:00.000Z","key":1486829880000,"doc_count":15},{"key_as_string":"2017-02-11T16:19:00.000Z","key":1486829940000,"doc_count":12},{"key_as_string":"2017-02-11T16:20:00.000Z","key":1486830000000,"doc_count":18},{"key_as_string":"2017-02-11T16:21:00.000Z","key":1486830060000,"doc_count":12},{"key_as_string":"2017-02-11T16:22:00.000Z","key":1486830120000,"doc_count":15},{"key_as_string":"2017-02-11T16:23:00.000Z","key":1486830180000,"doc_count":9},{"key_as_string":"2017-02-11T16:24:00.000Z","key":1486830240000,"doc_count":19},{"key_as_string":"2017-02-11T16:25:00.000Z","key":1486830300000,"doc_count":10},{"key_as_string":"2017-02-11T16:26:00.000Z","key":1486830360000,"doc_count":13},{"key_as_string":"2017-02-11T16:27:00.000Z","key":1486830420000,"doc_count":11},{"key_as_string":"2017-02-11T16:28:00.000Z","key":1486830480000,"doc_count":8},{"key_as_string":"2017-02-11T16:29:00.000Z","key":1486830540000,"doc_count":16},{"key_as_string":"2017-02-11T16:30:00.000Z","key":1486830600000,"doc_count":14},{"key_as_string":"2017-02-11T16:31:00.000Z","key":1486830660000,"doc_count":12},{"key_as_string":"2017-02-11T16:32:00.000Z","key":1486830720000,"doc_count":6},{"key_as_string":"2017-02-11T16:33:00.000Z","key":1486830780000,"doc_count":13},{"key_as_string":"2017-02-11T16:34:00.000Z","key":1486830840000,"doc_count":12},{"key_as_string":"2017-02-11T16:35:00.000Z","key":1486830900000,"doc_count":15},{"key_as_string":"2017-02-11T16:36:00.000Z","key":1486830960000,"doc_count":8},{"key_as_string":"2017-02-11T16:37:00.000Z","key":1486831020000,"doc_count":11},{"key_as_string":"2017-02-11T16:38:00.000Z","key":1486831080000,"doc_count":17},{"key_as_string":"2017-02-11T16:39:00.000Z","key":1486831140000,"doc_count":11},{"key_as_string":"2017-02-11T16:40:00.000Z","key":1486831200000,"doc_count":15},{"key_as_string":"2017-02-11T16:41:00.000Z","key":1486831260000,"doc_count":15},{"key_as_string":"2017-02-11T16:42:00.000Z","key":1486831320000,"doc_count":14},{"key_as_string":"2017-02-11T16:43:00.000Z","key":1486831380000,"doc_count":11},{"key_as_string":"2017-02-11T16:44:00.000Z","key":1486831440000,"doc_count":13},{"key_as_string":"2017-02-11T16:45:00.000Z","key":1486831500000,"doc_count":12},{"key_as_string":"2017-02-11T16:46:00.000Z","key":1486831560000,"doc_count":14},{"key_as_string":"2017-02-11T16:47:00.000Z","key":1486831620000,"doc_count":10},{"key_as_string":"2017-02-11T16:48:00.000Z","key":1486831680000,"doc_count":11},{"key_as_string":"2017-02-11T16:49:00.000Z","key":1486831740000,"doc_count":14},{"key_as_string":"2017-02-11T16:50:00.000Z","key":1486831800000,"doc_count":16},{"key_as_string":"2017-02-11T16:51:00.000Z","key":1486831860000,"doc_count":11},{"key_as_string":"2017-02-11T16:52:00.000Z","key":1486831920000,"doc_count":9},{"key_as_string":"2017-02-11T16:53:00.000Z","key":1486831980000,"doc_count":13},{"key_as_string":"2017-02-11T16:54:00.000Z","key":1486832040000,"doc_count":13},{"key_as_string":"2017-02-11T16:55:00.000Z","key":1486832100000,"doc_count":16},{"key_as_string":"2017-02-11T16:56:00.000Z","key":1486832160000,"doc_count":10},{"key_as_string":"2017-02-11T16:57:00.000Z","key":1486832220000,"doc_count":9},{"key_as_string":"2017-02-11T16:58:00.000Z","key":1486832280000,"doc_count":22},{"key_as_string":"2017-02-11T16:59:00.000Z","key":1486832340000,"doc_count":12},{"key_as_string":"2017-02-11T17:00:00.000Z","key":1486832400000,"doc_count":8},{"key_as_string":"2017-02-11T17:01:00.000Z","key":1486832460000,"doc_count":13},{"key_as_string":"2017-02-11T17:02:00.000Z","key":1486832520000,"doc_count":13},{"key_as_string":"2017-02-11T17:03:00.000Z","key":1486832580000,"doc_count":9},{"key_as_string":"2017-02-11T17:04:00.000Z","key":1486832640000,"doc_count":11},{"key_as_string":"2017-02-11T17:05:00.000Z","key":1486832700000,"doc_count":10},{"key_as_string":"2017-02-11T17:06:00.000Z","key":1486832760000,"doc_count":15},{"key_as_string":"2017-02-11T17:07:00.000Z","key":1486832820000,"doc_count":12},{"key_as_string":"2017-02-11T17:08:00.000Z","key":1486832880000,"doc_count":10},{"key_as_string":"2017-02-11T17:09:00.000Z","key":1486832940000,"doc_count":16},{"key_as_string":"2017-02-11T17:10:00.000Z","key":1486833000000,"doc_count":14},{"key_as_string":"2017-02-11T17:11:00.000Z","key":1486833060000,"doc_count":13},{"key_as_string":"2017-02-11T17:12:00.000Z","key":1486833120000,"doc_count":16},{"key_as_string":"2017-02-11T17:13:00.000Z","key":1486833180000,"doc_count":9},{"key_as_string":"2017-02-11T17:14:00.000Z","key":1486833240000,"doc_count":5},{"key_as_string":"2017-02-11T17:15:00.000Z","key":1486833300000,"doc_count":15},{"key_as_string":"2017-02-11T17:16:00.000Z","key":1486833360000,"doc_count":14},{"key_as_string":"2017-02-11T17:17:00.000Z","key":1486833420000,"doc_count":8},{"key_as_string":"2017-02-11T17:18:00.000Z","key":1486833480000,"doc_count":12},{"key_as_string":"2017-02-11T17:19:00.000Z","key":1486833540000,"doc_count":13},{"key_as_string":"2017-02-11T17:20:00.000Z","key":1486833600000,"doc_count":13},{"key_as_string":"2017-02-11T17:21:00.000Z","key":1486833660000,"doc_count":13},{"key_as_string":"2017-02-11T17:22:00.000Z","key":1486833720000,"doc_count":11},{"key_as_string":"2017-02-11T17:23:00.000Z","key":1486833780000,"doc_count":11},{"key_as_string":"2017-02-11T17:24:00.000Z","key":1486833840000,"doc_count":14},{"key_as_string":"2017-02-11T17:25:00.000Z","key":1486833900000,"doc_count":7},{"key_as_string":"2017-02-11T17:26:00.000Z","key":1486833960000,"doc_count":15},{"key_as_string":"2017-02-11T17:27:00.000Z","key":1486834020000,"doc_count":11},{"key_as_string":"2017-02-11T17:28:00.000Z","key":1486834080000,"doc_count":9},{"key_as_string":"2017-02-11T17:29:00.000Z","key":1486834140000,"doc_count":13},{"key_as_string":"2017-02-11T17:30:00.000Z","key":1486834200000,"doc_count":11},{"key_as_string":"2017-02-11T17:31:00.000Z","key":1486834260000,"doc_count":7},{"key_as_string":"2017-02-11T17:32:00.000Z","key":1486834320000,"doc_count":14},{"key_as_string":"2017-02-11T17:33:00.000Z","key":1486834380000,"doc_count":13},{"key_as_string":"2017-02-11T17:34:00.000Z","key":1486834440000,"doc_count":10},{"key_as_string":"2017-02-11T17:35:00.000Z","key":1486834500000,"doc_count":13},{"key_as_string":"2017-02-11T17:36:00.000Z","key":1486834560000,"doc_count":12},{"key_as_string":"2017-02-11T17:37:00.000Z","key":1486834620000,"doc_count":13},{"key_as_string":"2017-02-11T17:38:00.000Z","key":1486834680000,"doc_count":12},{"key_as_string":"2017-02-11T17:39:00.000Z","key":1486834740000,"doc_count":11},{"key_as_string":"2017-02-11T17:40:00.000Z","key":1486834800000,"doc_count":15},{"key_as_string":"2017-02-11T17:41:00.000Z","key":1486834860000,"doc_count":15},{"key_as_string":"2017-02-11T17:42:00.000Z","key":1486834920000,"doc_count":14},{"key_as_string":"2017-02-11T17:43:00.000Z","key":1486834980000,"doc_count":10},{"key_as_string":"2017-02-11T17:44:00.000Z","key":1486835040000,"doc_count":8},{"key_as_string":"2017-02-11T17:45:00.000Z","key":1486835100000,"doc_count":14},{"key_as_string":"2017-02-11T17:46:00.000Z","key":1486835160000,"doc_count":8},{"key_as_string":"2017-02-11T17:47:00.000Z","key":1486835220000,"doc_count":11},{"key_as_string":"2017-02-11T17:48:00.000Z","key":1486835280000,"doc_count":13},{"key_as_string":"2017-02-11T17:49:00.000Z","key":1486835340000,"doc_count":13},{"key_as_string":"2017-02-11T17:50:00.000Z","key":1486835400000,"doc_count":10},{"key_as_string":"2017-02-11T17:51:00.000Z","key":1486835460000,"doc_count":11},{"key_as_string":"2017-02-11T17:52:00.000Z","key":1486835520000,"doc_count":22},{"key_as_string":"2017-02-11T17:53:00.000Z","key":1486835580000,"doc_count":14},{"key_as_string":"2017-02-11T17:54:00.000Z","key":1486835640000,"doc_count":11},{"key_as_string":"2017-02-11T17:55:00.000Z","key":1486835700000,"doc_count":11},{"key_as_string":"2017-02-11T17:56:00.000Z","key":1486835760000,"doc_count":10},{"key_as_string":"2017-02-11T17:57:00.000Z","key":1486835820000,"doc_count":13},{"key_as_string":"2017-02-11T17:58:00.000Z","key":1486835880000,"doc_count":6},{"key_as_string":"2017-02-11T17:59:00.000Z","key":1486835940000,"doc_count":16},{"key_as_string":"2017-02-11T18:00:00.000Z","key":1486836000000,"doc_count":11},{"key_as_string":"2017-02-11T18:01:00.000Z","key":1486836060000,"doc_count":15},{"key_as_string":"2017-02-11T18:02:00.000Z","key":1486836120000,"doc_count":8},{"key_as_string":"2017-02-11T18:03:00.000Z","key":1486836180000,"doc_count":12},{"key_as_string":"2017-02-11T18:04:00.000Z","key":1486836240000,"doc_count":14},{"key_as_string":"2017-02-11T18:05:00.000Z","key":1486836300000,"doc_count":11},{"key_as_string":"2017-02-11T18:06:00.000Z","key":1486836360000,"doc_count":15},{"key_as_string":"2017-02-11T18:07:00.000Z","key":1486836420000,"doc_count":9},{"key_as_string":"2017-02-11T18:08:00.000Z","key":1486836480000,"doc_count":11},{"key_as_string":"2017-02-11T18:09:00.000Z","key":1486836540000,"doc_count":9},{"key_as_string":"2017-02-11T18:10:00.000Z","key":1486836600000,"doc_count":10},{"key_as_string":"2017-02-11T18:11:00.000Z","key":1486836660000,"doc_count":12},{"key_as_string":"2017-02-11T18:12:00.000Z","key":1486836720000,"doc_count":10},{"key_as_string":"2017-02-11T18:13:00.000Z","key":1486836780000,"doc_count":11},{"key_as_string":"2017-02-11T18:14:00.000Z","key":1486836840000,"doc_count":12},{"key_as_string":"2017-02-11T18:15:00.000Z","key":1486836900000,"doc_count":11},{"key_as_string":"2017-02-11T18:16:00.000Z","key":1486836960000,"doc_count":9},{"key_as_string":"2017-02-11T18:17:00.000Z","key":1486837020000,"doc_count":7},{"key_as_string":"2017-02-11T18:18:00.000Z","key":1486837080000,"doc_count":16},{"key_as_string":"2017-02-11T18:19:00.000Z","key":1486837140000,"doc_count":10},{"key_as_string":"2017-02-11T18:20:00.000Z","key":1486837200000,"doc_count":14},{"key_as_string":"2017-02-11T18:21:00.000Z","key":1486837260000,"doc_count":5},{"key_as_string":"2017-02-11T18:22:00.000Z","key":1486837320000,"doc_count":12},{"key_as_string":"2017-02-11T18:23:00.000Z","key":1486837380000,"doc_count":13},{"key_as_string":"2017-02-11T18:24:00.000Z","key":1486837440000,"doc_count":12},{"key_as_string":"2017-02-11T18:25:00.000Z","key":1486837500000,"doc_count":9},{"key_as_string":"2017-02-11T18:26:00.000Z","key":1486837560000,"doc_count":12},{"key_as_string":"2017-02-11T18:27:00.000Z","key":1486837620000,"doc_count":11},{"key_as_string":"2017-02-11T18:28:00.000Z","key":1486837680000,"doc_count":12},{"key_as_string":"2017-02-11T18:29:00.000Z","key":1486837740000,"doc_count":10},{"key_as_string":"2017-02-11T18:30:00.000Z","key":1486837800000,"doc_count":11},{"key_as_string":"2017-02-11T18:31:00.000Z","key":1486837860000,"doc_count":9},{"key_as_string":"2017-02-11T18:32:00.000Z","key":1486837920000,"doc_count":13},{"key_as_string":"2017-02-11T18:33:00.000Z","key":1486837980000,"doc_count":11},{"key_as_string":"2017-02-11T18:34:00.000Z","key":1486838040000,"doc_count":13},{"key_as_string":"2017-02-11T18:35:00.000Z","key":1486838100000,"doc_count":12},{"key_as_string":"2017-02-11T18:36:00.000Z","key":1486838160000,"doc_count":8},{"key_as_string":"2017-02-11T18:37:00.000Z","key":1486838220000,"doc_count":10},{"key_as_string":"2017-02-11T18:38:00.000Z","key":1486838280000,"doc_count":10},{"key_as_string":"2017-02-11T18:39:00.000Z","key":1486838340000,"doc_count":10},{"key_as_string":"2017-02-11T18:40:00.000Z","key":1486838400000,"doc_count":14},{"key_as_string":"2017-02-11T18:41:00.000Z","key":1486838460000,"doc_count":13},{"key_as_string":"2017-02-11T18:42:00.000Z","key":1486838520000,"doc_count":15},{"key_as_string":"2017-02-11T18:43:00.000Z","key":1486838580000,"doc_count":9},{"key_as_string":"2017-02-11T18:44:00.000Z","key":1486838640000,"doc_count":10},{"key_as_string":"2017-02-11T18:45:00.000Z","key":1486838700000,"doc_count":14},{"key_as_string":"2017-02-11T18:46:00.000Z","key":1486838760000,"doc_count":9},{"key_as_string":"2017-02-11T18:47:00.000Z","key":1486838820000,"doc_count":14},{"key_as_string":"2017-02-11T18:48:00.000Z","key":1486838880000,"doc_count":8},{"key_as_string":"2017-02-11T18:49:00.000Z","key":1486838940000,"doc_count":10},{"key_as_string":"2017-02-11T18:50:00.000Z","key":1486839000000,"doc_count":15},{"key_as_string":"2017-02-11T18:51:00.000Z","key":1486839060000,"doc_count":9},{"key_as_string":"2017-02-11T18:52:00.000Z","key":1486839120000,"doc_count":13},{"key_as_string":"2017-02-11T18:53:00.000Z","key":1486839180000,"doc_count":14},{"key_as_string":"2017-02-11T18:54:00.000Z","key":1486839240000,"doc_count":9},{"key_as_string":"2017-02-11T18:55:00.000Z","key":1486839300000,"doc_count":9},{"key_as_string":"2017-02-11T18:56:00.000Z","key":1486839360000,"doc_count":9},{"key_as_string":"2017-02-11T18:57:00.000Z","key":1486839420000,"doc_count":12},{"key_as_string":"2017-02-11T18:58:00.000Z","key":1486839480000,"doc_count":14},{"key_as_string":"2017-02-11T18:59:00.000Z","key":1486839540000,"doc_count":9},{"key_as_string":"2017-02-11T19:00:00.000Z","key":1486839600000,"doc_count":14},{"key_as_string":"2017-02-11T19:01:00.000Z","key":1486839660000,"doc_count":13},{"key_as_string":"2017-02-11T19:02:00.000Z","key":1486839720000,"doc_count":13},{"key_as_string":"2017-02-11T19:03:00.000Z","key":1486839780000,"doc_count":15},{"key_as_string":"2017-02-11T19:04:00.000Z","key":1486839840000,"doc_count":11},{"key_as_string":"2017-02-11T19:05:00.000Z","key":1486839900000,"doc_count":11},{"key_as_string":"2017-02-11T19:06:00.000Z","key":1486839960000,"doc_count":10},{"key_as_string":"2017-02-11T19:07:00.000Z","key":1486840020000,"doc_count":11},{"key_as_string":"2017-02-11T19:08:00.000Z","key":1486840080000,"doc_count":15},{"key_as_string":"2017-02-11T19:09:00.000Z","key":1486840140000,"doc_count":13},{"key_as_string":"2017-02-11T19:10:00.000Z","key":1486840200000,"doc_count":17},{"key_as_string":"2017-02-11T19:11:00.000Z","key":1486840260000,"doc_count":9},{"key_as_string":"2017-02-11T19:12:00.000Z","key":1486840320000,"doc_count":10},{"key_as_string":"2017-02-11T19:13:00.000Z","key":1486840380000,"doc_count":8},{"key_as_string":"2017-02-11T19:14:00.000Z","key":1486840440000,"doc_count":17},{"key_as_string":"2017-02-11T19:15:00.000Z","key":1486840500000,"doc_count":8},{"key_as_string":"2017-02-11T19:16:00.000Z","key":1486840560000,"doc_count":13},{"key_as_string":"2017-02-11T19:17:00.000Z","key":1486840620000,"doc_count":10},{"key_as_string":"2017-02-11T19:18:00.000Z","key":1486840680000,"doc_count":9},{"key_as_string":"2017-02-11T19:19:00.000Z","key":1486840740000,"doc_count":13},{"key_as_string":"2017-02-11T19:20:00.000Z","key":1486840800000,"doc_count":12},{"key_as_string":"2017-02-11T19:21:00.000Z","key":1486840860000,"doc_count":18},{"key_as_string":"2017-02-11T19:22:00.000Z","key":1486840920000,"doc_count":14},{"key_as_string":"2017-02-11T19:23:00.000Z","key":1486840980000,"doc_count":10},{"key_as_string":"2017-02-11T19:24:00.000Z","key":1486841040000,"doc_count":11},{"key_as_string":"2017-02-11T19:25:00.000Z","key":1486841100000,"doc_count":12},{"key_as_string":"2017-02-11T19:26:00.000Z","key":1486841160000,"doc_count":16},{"key_as_string":"2017-02-11T19:27:00.000Z","key":1486841220000,"doc_count":10},{"key_as_string":"2017-02-11T19:28:00.000Z","key":1486841280000,"doc_count":16},{"key_as_string":"2017-02-11T19:29:00.000Z","key":1486841340000,"doc_count":6},{"key_as_string":"2017-02-11T19:30:00.000Z","key":1486841400000,"doc_count":12},{"key_as_string":"2017-02-11T19:31:00.000Z","key":1486841460000,"doc_count":10},{"key_as_string":"2017-02-11T19:32:00.000Z","key":1486841520000,"doc_count":15},{"key_as_string":"2017-02-11T19:33:00.000Z","key":1486841580000,"doc_count":16},{"key_as_string":"2017-02-11T19:34:00.000Z","key":1486841640000,"doc_count":14},{"key_as_string":"2017-02-11T19:35:00.000Z","key":1486841700000,"doc_count":5},{"key_as_string":"2017-02-11T19:36:00.000Z","key":1486841760000,"doc_count":15},{"key_as_string":"2017-02-11T19:37:00.000Z","key":1486841820000,"doc_count":9},{"key_as_string":"2017-02-11T19:38:00.000Z","key":1486841880000,"doc_count":11},{"key_as_string":"2017-02-11T19:39:00.000Z","key":1486841940000,"doc_count":9},{"key_as_string":"2017-02-11T19:40:00.000Z","key":1486842000000,"doc_count":14},{"key_as_string":"2017-02-11T19:41:00.000Z","key":1486842060000,"doc_count":8},{"key_as_string":"2017-02-11T19:42:00.000Z","key":1486842120000,"doc_count":7},{"key_as_string":"2017-02-11T19:43:00.000Z","key":1486842180000,"doc_count":8},{"key_as_string":"2017-02-11T19:44:00.000Z","key":1486842240000,"doc_count":12},{"key_as_string":"2017-02-11T19:45:00.000Z","key":1486842300000,"doc_count":12},{"key_as_string":"2017-02-11T19:46:00.000Z","key":1486842360000,"doc_count":11},{"key_as_string":"2017-02-11T19:47:00.000Z","key":1486842420000,"doc_count":10},{"key_as_string":"2017-02-11T19:48:00.000Z","key":1486842480000,"doc_count":8},{"key_as_string":"2017-02-11T19:49:00.000Z","key":1486842540000,"doc_count":11},{"key_as_string":"2017-02-11T19:50:00.000Z","key":1486842600000,"doc_count":12},{"key_as_string":"2017-02-11T19:51:00.000Z","key":1486842660000,"doc_count":10},{"key_as_string":"2017-02-11T19:52:00.000Z","key":1486842720000,"doc_count":11},{"key_as_string":"2017-02-11T19:53:00.000Z","key":1486842780000,"doc_count":17},{"key_as_string":"2017-02-11T19:54:00.000Z","key":1486842840000,"doc_count":11},{"key_as_string":"2017-02-11T19:55:00.000Z","key":1486842900000,"doc_count":11},{"key_as_string":"2017-02-11T19:56:00.000Z","key":1486842960000,"doc_count":14},{"key_as_string":"2017-02-11T19:57:00.000Z","key":1486843020000,"doc_count":5},{"key_as_string":"2017-02-11T19:58:00.000Z","key":1486843080000,"doc_count":17},{"key_as_string":"2017-02-11T19:59:00.000Z","key":1486843140000,"doc_count":7},{"key_as_string":"2017-02-11T20:00:00.000Z","key":1486843200000,"doc_count":12},{"key_as_string":"2017-02-11T20:01:00.000Z","key":1486843260000,"doc_count":12},{"key_as_string":"2017-02-11T20:02:00.000Z","key":1486843320000,"doc_count":15},{"key_as_string":"2017-02-11T20:03:00.000Z","key":1486843380000,"doc_count":8},{"key_as_string":"2017-02-11T20:04:00.000Z","key":1486843440000,"doc_count":10},{"key_as_string":"2017-02-11T20:05:00.000Z","key":1486843500000,"doc_count":10},{"key_as_string":"2017-02-11T20:06:00.000Z","key":1486843560000,"doc_count":10},{"key_as_string":"2017-02-11T20:07:00.000Z","key":1486843620000,"doc_count":14},{"key_as_string":"2017-02-11T20:08:00.000Z","key":1486843680000,"doc_count":11},{"key_as_string":"2017-02-11T20:09:00.000Z","key":1486843740000,"doc_count":9},{"key_as_string":"2017-02-11T20:10:00.000Z","key":1486843800000,"doc_count":7},{"key_as_string":"2017-02-11T20:11:00.000Z","key":1486843860000,"doc_count":17},{"key_as_string":"2017-02-11T20:12:00.000Z","key":1486843920000,"doc_count":11},{"key_as_string":"2017-02-11T20:13:00.000Z","key":1486843980000,"doc_count":15},{"key_as_string":"2017-02-11T20:14:00.000Z","key":1486844040000,"doc_count":12},{"key_as_string":"2017-02-11T20:15:00.000Z","key":1486844100000,"doc_count":9},{"key_as_string":"2017-02-11T20:16:00.000Z","key":1486844160000,"doc_count":7},{"key_as_string":"2017-02-11T20:17:00.000Z","key":1486844220000,"doc_count":9},{"key_as_string":"2017-02-11T20:18:00.000Z","key":1486844280000,"doc_count":14},{"key_as_string":"2017-02-11T20:19:00.000Z","key":1486844340000,"doc_count":9},{"key_as_string":"2017-02-11T20:20:00.000Z","key":1486844400000,"doc_count":13},{"key_as_string":"2017-02-11T20:21:00.000Z","key":1486844460000,"doc_count":11},{"key_as_string":"2017-02-11T20:22:00.000Z","key":1486844520000,"doc_count":15},{"key_as_string":"2017-02-11T20:23:00.000Z","key":1486844580000,"doc_count":13},{"key_as_string":"2017-02-11T20:24:00.000Z","key":1486844640000,"doc_count":11},{"key_as_string":"2017-02-11T20:25:00.000Z","key":1486844700000,"doc_count":7},{"key_as_string":"2017-02-11T20:26:00.000Z","key":1486844760000,"doc_count":7},{"key_as_string":"2017-02-11T20:27:00.000Z","key":1486844820000,"doc_count":13},{"key_as_string":"2017-02-11T20:28:00.000Z","key":1486844880000,"doc_count":8},{"key_as_string":"2017-02-11T20:29:00.000Z","key":1486844940000,"doc_count":12},{"key_as_string":"2017-02-11T20:30:00.000Z","key":1486845000000,"doc_count":12},{"key_as_string":"2017-02-11T20:31:00.000Z","key":1486845060000,"doc_count":11},{"key_as_string":"2017-02-11T20:32:00.000Z","key":1486845120000,"doc_count":11},{"key_as_string":"2017-02-11T20:33:00.000Z","key":1486845180000,"doc_count":10},{"key_as_string":"2017-02-11T20:34:00.000Z","key":1486845240000,"doc_count":15},{"key_as_string":"2017-02-11T20:35:00.000Z","key":1486845300000,"doc_count":5},{"key_as_string":"2017-02-11T20:36:00.000Z","key":1486845360000,"doc_count":9},{"key_as_string":"2017-02-11T20:37:00.000Z","key":1486845420000,"doc_count":11},{"key_as_string":"2017-02-11T20:38:00.000Z","key":1486845480000,"doc_count":9},{"key_as_string":"2017-02-11T20:39:00.000Z","key":1486845540000,"doc_count":12},{"key_as_string":"2017-02-11T20:40:00.000Z","key":1486845600000,"doc_count":16},{"key_as_string":"2017-02-11T20:41:00.000Z","key":1486845660000,"doc_count":6},{"key_as_string":"2017-02-11T20:42:00.000Z","key":1486845720000,"doc_count":11},{"key_as_string":"2017-02-11T20:43:00.000Z","key":1486845780000,"doc_count":13},{"key_as_string":"2017-02-11T20:44:00.000Z","key":1486845840000,"doc_count":7},{"key_as_string":"2017-02-11T20:45:00.000Z","key":1486845900000,"doc_count":11},{"key_as_string":"2017-02-11T20:46:00.000Z","key":1486845960000,"doc_count":7},{"key_as_string":"2017-02-11T20:47:00.000Z","key":1486846020000,"doc_count":9},{"key_as_string":"2017-02-11T20:48:00.000Z","key":1486846080000,"doc_count":14},{"key_as_string":"2017-02-11T20:49:00.000Z","key":1486846140000,"doc_count":9},{"key_as_string":"2017-02-11T20:50:00.000Z","key":1486846200000,"doc_count":12},{"key_as_string":"2017-02-11T20:51:00.000Z","key":1486846260000,"doc_count":17},{"key_as_string":"2017-02-11T20:52:00.000Z","key":1486846320000,"doc_count":13},{"key_as_string":"2017-02-11T20:53:00.000Z","key":1486846380000,"doc_count":7},{"key_as_string":"2017-02-11T20:54:00.000Z","key":1486846440000,"doc_count":15},{"key_as_string":"2017-02-11T20:55:00.000Z","key":1486846500000,"doc_count":13},{"key_as_string":"2017-02-11T20:56:00.000Z","key":1486846560000,"doc_count":16},{"key_as_string":"2017-02-11T20:57:00.000Z","key":1486846620000,"doc_count":12},{"key_as_string":"2017-02-11T20:58:00.000Z","key":1486846680000,"doc_count":8},{"key_as_string":"2017-02-11T20:59:00.000Z","key":1486846740000,"doc_count":14},{"key_as_string":"2017-02-11T21:00:00.000Z","key":1486846800000,"doc_count":11},{"key_as_string":"2017-02-11T21:01:00.000Z","key":1486846860000,"doc_count":8},{"key_as_string":"2017-02-11T21:02:00.000Z","key":1486846920000,"doc_count":13},{"key_as_string":"2017-02-11T21:03:00.000Z","key":1486846980000,"doc_count":8},{"key_as_string":"2017-02-11T21:04:00.000Z","key":1486847040000,"doc_count":9},{"key_as_string":"2017-02-11T21:05:00.000Z","key":1486847100000,"doc_count":12},{"key_as_string":"2017-02-11T21:06:00.000Z","key":1486847160000,"doc_count":11},{"key_as_string":"2017-02-11T21:07:00.000Z","key":1486847220000,"doc_count":15},{"key_as_string":"2017-02-11T21:08:00.000Z","key":1486847280000,"doc_count":6},{"key_as_string":"2017-02-11T21:09:00.000Z","key":1486847340000,"doc_count":14},{"key_as_string":"2017-02-11T21:10:00.000Z","key":1486847400000,"doc_count":5},{"key_as_string":"2017-02-11T21:11:00.000Z","key":1486847460000,"doc_count":11},{"key_as_string":"2017-02-11T21:12:00.000Z","key":1486847520000,"doc_count":12},{"key_as_string":"2017-02-11T21:13:00.000Z","key":1486847580000,"doc_count":10},{"key_as_string":"2017-02-11T21:14:00.000Z","key":1486847640000,"doc_count":7},{"key_as_string":"2017-02-11T21:15:00.000Z","key":1486847700000,"doc_count":9},{"key_as_string":"2017-02-11T21:16:00.000Z","key":1486847760000,"doc_count":12},{"key_as_string":"2017-02-11T21:17:00.000Z","key":1486847820000,"doc_count":11},{"key_as_string":"2017-02-11T21:18:00.000Z","key":1486847880000,"doc_count":12},{"key_as_string":"2017-02-11T21:19:00.000Z","key":1486847940000,"doc_count":14},{"key_as_string":"2017-02-11T21:20:00.000Z","key":1486848000000,"doc_count":10},{"key_as_string":"2017-02-11T21:21:00.000Z","key":1486848060000,"doc_count":9},{"key_as_string":"2017-02-11T21:22:00.000Z","key":1486848120000,"doc_count":16},{"key_as_string":"2017-02-11T21:23:00.000Z","key":1486848180000,"doc_count":10},{"key_as_string":"2017-02-11T21:24:00.000Z","key":1486848240000,"doc_count":10},{"key_as_string":"2017-02-11T21:25:00.000Z","key":1486848300000,"doc_count":11},{"key_as_string":"2017-02-11T21:26:00.000Z","key":1486848360000,"doc_count":12},{"key_as_string":"2017-02-11T21:27:00.000Z","key":1486848420000,"doc_count":6},{"key_as_string":"2017-02-11T21:28:00.000Z","key":1486848480000,"doc_count":14},{"key_as_string":"2017-02-11T21:29:00.000Z","key":1486848540000,"doc_count":10},{"key_as_string":"2017-02-11T21:30:00.000Z","key":1486848600000,"doc_count":12},{"key_as_string":"2017-02-11T21:31:00.000Z","key":1486848660000,"doc_count":7},{"key_as_string":"2017-02-11T21:32:00.000Z","key":1486848720000,"doc_count":11},{"key_as_string":"2017-02-11T21:33:00.000Z","key":1486848780000,"doc_count":11},{"key_as_string":"2017-02-11T21:34:00.000Z","key":1486848840000,"doc_count":11},{"key_as_string":"2017-02-11T21:35:00.000Z","key":1486848900000,"doc_count":5},{"key_as_string":"2017-02-11T21:36:00.000Z","key":1486848960000,"doc_count":15},{"key_as_string":"2017-02-11T21:37:00.000Z","key":1486849020000,"doc_count":8},{"key_as_string":"2017-02-11T21:38:00.000Z","key":1486849080000,"doc_count":11},{"key_as_string":"2017-02-11T21:39:00.000Z","key":1486849140000,"doc_count":9},{"key_as_string":"2017-02-11T21:40:00.000Z","key":1486849200000,"doc_count":9},{"key_as_string":"2017-02-11T21:41:00.000Z","key":1486849260000,"doc_count":10},{"key_as_string":"2017-02-11T21:42:00.000Z","key":1486849320000,"doc_count":7},{"key_as_string":"2017-02-11T21:43:00.000Z","key":1486849380000,"doc_count":13},{"key_as_string":"2017-02-11T21:44:00.000Z","key":1486849440000,"doc_count":10},{"key_as_string":"2017-02-11T21:45:00.000Z","key":1486849500000,"doc_count":10},{"key_as_string":"2017-02-11T21:46:00.000Z","key":1486849560000,"doc_count":11},{"key_as_string":"2017-02-11T21:47:00.000Z","key":1486849620000,"doc_count":10},{"key_as_string":"2017-02-11T21:48:00.000Z","key":1486849680000,"doc_count":7},{"key_as_string":"2017-02-11T21:49:00.000Z","key":1486849740000,"doc_count":8},{"key_as_string":"2017-02-11T21:50:00.000Z","key":1486849800000,"doc_count":12},{"key_as_string":"2017-02-11T21:51:00.000Z","key":1486849860000,"doc_count":8},{"key_as_string":"2017-02-11T21:52:00.000Z","key":1486849920000,"doc_count":7},{"key_as_string":"2017-02-11T21:53:00.000Z","key":1486849980000,"doc_count":15},{"key_as_string":"2017-02-11T21:54:00.000Z","key":1486850040000,"doc_count":14},{"key_as_string":"2017-02-11T21:55:00.000Z","key":1486850100000,"doc_count":9},{"key_as_string":"2017-02-11T21:56:00.000Z","key":1486850160000,"doc_count":9},{"key_as_string":"2017-02-11T21:57:00.000Z","key":1486850220000,"doc_count":9},{"key_as_string":"2017-02-11T21:58:00.000Z","key":1486850280000,"doc_count":13},{"key_as_string":"2017-02-11T21:59:00.000Z","key":1486850340000,"doc_count":13},{"key_as_string":"2017-02-11T22:00:00.000Z","key":1486850400000,"doc_count":11},{"key_as_string":"2017-02-11T22:01:00.000Z","key":1486850460000,"doc_count":12},{"key_as_string":"2017-02-11T22:02:00.000Z","key":1486850520000,"doc_count":12},{"key_as_string":"2017-02-11T22:03:00.000Z","key":1486850580000,"doc_count":11},{"key_as_string":"2017-02-11T22:04:00.000Z","key":1486850640000,"doc_count":7},{"key_as_string":"2017-02-11T22:05:00.000Z","key":1486850700000,"doc_count":9},{"key_as_string":"2017-02-11T22:06:00.000Z","key":1486850760000,"doc_count":12},{"key_as_string":"2017-02-11T22:07:00.000Z","key":1486850820000,"doc_count":13},{"key_as_string":"2017-02-11T22:08:00.000Z","key":1486850880000,"doc_count":11},{"key_as_string":"2017-02-11T22:09:00.000Z","key":1486850940000,"doc_count":8},{"key_as_string":"2017-02-11T22:10:00.000Z","key":1486851000000,"doc_count":6},{"key_as_string":"2017-02-11T22:11:00.000Z","key":1486851060000,"doc_count":9},{"key_as_string":"2017-02-11T22:12:00.000Z","key":1486851120000,"doc_count":15},{"key_as_string":"2017-02-11T22:13:00.000Z","key":1486851180000,"doc_count":12},{"key_as_string":"2017-02-11T22:14:00.000Z","key":1486851240000,"doc_count":12},{"key_as_string":"2017-02-11T22:15:00.000Z","key":1486851300000,"doc_count":9},{"key_as_string":"2017-02-11T22:16:00.000Z","key":1486851360000,"doc_count":11},{"key_as_string":"2017-02-11T22:17:00.000Z","key":1486851420000,"doc_count":9},{"key_as_string":"2017-02-11T22:18:00.000Z","key":1486851480000,"doc_count":13},{"key_as_string":"2017-02-11T22:19:00.000Z","key":1486851540000,"doc_count":10},{"key_as_string":"2017-02-11T22:20:00.000Z","key":1486851600000,"doc_count":16},{"key_as_string":"2017-02-11T22:21:00.000Z","key":1486851660000,"doc_count":10},{"key_as_string":"2017-02-11T22:22:00.000Z","key":1486851720000,"doc_count":7},{"key_as_string":"2017-02-11T22:23:00.000Z","key":1486851780000,"doc_count":8},{"key_as_string":"2017-02-11T22:24:00.000Z","key":1486851840000,"doc_count":13},{"key_as_string":"2017-02-11T22:25:00.000Z","key":1486851900000,"doc_count":11},{"key_as_string":"2017-02-11T22:26:00.000Z","key":1486851960000,"doc_count":11},{"key_as_string":"2017-02-11T22:27:00.000Z","key":1486852020000,"doc_count":15},{"key_as_string":"2017-02-11T22:28:00.000Z","key":1486852080000,"doc_count":10},{"key_as_string":"2017-02-11T22:29:00.000Z","key":1486852140000,"doc_count":13},{"key_as_string":"2017-02-11T22:30:00.000Z","key":1486852200000,"doc_count":3},{"key_as_string":"2017-02-11T22:31:00.000Z","key":1486852260000,"doc_count":16},{"key_as_string":"2017-02-11T22:32:00.000Z","key":1486852320000,"doc_count":8},{"key_as_string":"2017-02-11T22:33:00.000Z","key":1486852380000,"doc_count":13},{"key_as_string":"2017-02-11T22:34:00.000Z","key":1486852440000,"doc_count":10},{"key_as_string":"2017-02-11T22:35:00.000Z","key":1486852500000,"doc_count":10},{"key_as_string":"2017-02-11T22:36:00.000Z","key":1486852560000,"doc_count":15},{"key_as_string":"2017-02-11T22:37:00.000Z","key":1486852620000,"doc_count":10},{"key_as_string":"2017-02-11T22:38:00.000Z","key":1486852680000,"doc_count":9},{"key_as_string":"2017-02-11T22:39:00.000Z","key":1486852740000,"doc_count":11},{"key_as_string":"2017-02-11T22:40:00.000Z","key":1486852800000,"doc_count":11},{"key_as_string":"2017-02-11T22:41:00.000Z","key":1486852860000,"doc_count":8},{"key_as_string":"2017-02-11T22:42:00.000Z","key":1486852920000,"doc_count":10},{"key_as_string":"2017-02-11T22:43:00.000Z","key":1486852980000,"doc_count":12},{"key_as_string":"2017-02-11T22:44:00.000Z","key":1486853040000,"doc_count":8},{"key_as_string":"2017-02-11T22:45:00.000Z","key":1486853100000,"doc_count":14},{"key_as_string":"2017-02-11T22:46:00.000Z","key":1486853160000,"doc_count":9},{"key_as_string":"2017-02-11T22:47:00.000Z","key":1486853220000,"doc_count":10},{"key_as_string":"2017-02-11T22:48:00.000Z","key":1486853280000,"doc_count":12},{"key_as_string":"2017-02-11T22:49:00.000Z","key":1486853340000,"doc_count":13},{"key_as_string":"2017-02-11T22:50:00.000Z","key":1486853400000,"doc_count":13},{"key_as_string":"2017-02-11T22:51:00.000Z","key":1486853460000,"doc_count":5},{"key_as_string":"2017-02-11T22:52:00.000Z","key":1486853520000,"doc_count":10},{"key_as_string":"2017-02-11T22:53:00.000Z","key":1486853580000,"doc_count":8},{"key_as_string":"2017-02-11T22:54:00.000Z","key":1486853640000,"doc_count":12},{"key_as_string":"2017-02-11T22:55:00.000Z","key":1486853700000,"doc_count":6},{"key_as_string":"2017-02-11T22:56:00.000Z","key":1486853760000,"doc_count":15},{"key_as_string":"2017-02-11T22:57:00.000Z","key":1486853820000,"doc_count":8},{"key_as_string":"2017-02-11T22:58:00.000Z","key":1486853880000,"doc_count":11},{"key_as_string":"2017-02-11T22:59:00.000Z","key":1486853940000,"doc_count":10},{"key_as_string":"2017-02-11T23:00:00.000Z","key":1486854000000,"doc_count":8},{"key_as_string":"2017-02-11T23:01:00.000Z","key":1486854060000,"doc_count":9},{"key_as_string":"2017-02-11T23:02:00.000Z","key":1486854120000,"doc_count":11},{"key_as_string":"2017-02-11T23:03:00.000Z","key":1486854180000,"doc_count":15},{"key_as_string":"2017-02-11T23:04:00.000Z","key":1486854240000,"doc_count":9},{"key_as_string":"2017-02-11T23:05:00.000Z","key":1486854300000,"doc_count":14},{"key_as_string":"2017-02-11T23:06:00.000Z","key":1486854360000,"doc_count":8},{"key_as_string":"2017-02-11T23:07:00.000Z","key":1486854420000,"doc_count":10},{"key_as_string":"2017-02-11T23:08:00.000Z","key":1486854480000,"doc_count":8},{"key_as_string":"2017-02-11T23:09:00.000Z","key":1486854540000,"doc_count":13},{"key_as_string":"2017-02-11T23:10:00.000Z","key":1486854600000,"doc_count":11},{"key_as_string":"2017-02-11T23:11:00.000Z","key":1486854660000,"doc_count":12},{"key_as_string":"2017-02-11T23:12:00.000Z","key":1486854720000,"doc_count":11},{"key_as_string":"2017-02-11T23:13:00.000Z","key":1486854780000,"doc_count":6},{"key_as_string":"2017-02-11T23:14:00.000Z","key":1486854840000,"doc_count":14},{"key_as_string":"2017-02-11T23:15:00.000Z","key":1486854900000,"doc_count":14},{"key_as_string":"2017-02-11T23:16:00.000Z","key":1486854960000,"doc_count":14},{"key_as_string":"2017-02-11T23:17:00.000Z","key":1486855020000,"doc_count":11},{"key_as_string":"2017-02-11T23:18:00.000Z","key":1486855080000,"doc_count":9},{"key_as_string":"2017-02-11T23:19:00.000Z","key":1486855140000,"doc_count":10},{"key_as_string":"2017-02-11T23:20:00.000Z","key":1486855200000,"doc_count":8},{"key_as_string":"2017-02-11T23:21:00.000Z","key":1486855260000,"doc_count":13},{"key_as_string":"2017-02-11T23:22:00.000Z","key":1486855320000,"doc_count":12},{"key_as_string":"2017-02-11T23:23:00.000Z","key":1486855380000,"doc_count":10},{"key_as_string":"2017-02-11T23:24:00.000Z","key":1486855440000,"doc_count":13},{"key_as_string":"2017-02-11T23:25:00.000Z","key":1486855500000,"doc_count":11},{"key_as_string":"2017-02-11T23:26:00.000Z","key":1486855560000,"doc_count":11},{"key_as_string":"2017-02-11T23:27:00.000Z","key":1486855620000,"doc_count":9},{"key_as_string":"2017-02-11T23:28:00.000Z","key":1486855680000,"doc_count":13},{"key_as_string":"2017-02-11T23:29:00.000Z","key":1486855740000,"doc_count":3},{"key_as_string":"2017-02-11T23:30:00.000Z","key":1486855800000,"doc_count":10},{"key_as_string":"2017-02-11T23:31:00.000Z","key":1486855860000,"doc_count":9},{"key_as_string":"2017-02-11T23:32:00.000Z","key":1486855920000,"doc_count":7},{"key_as_string":"2017-02-11T23:33:00.000Z","key":1486855980000,"doc_count":15},{"key_as_string":"2017-02-11T23:34:00.000Z","key":1486856040000,"doc_count":12},{"key_as_string":"2017-02-11T23:35:00.000Z","key":1486856100000,"doc_count":17},{"key_as_string":"2017-02-11T23:36:00.000Z","key":1486856160000,"doc_count":9},{"key_as_string":"2017-02-11T23:37:00.000Z","key":1486856220000,"doc_count":8},{"key_as_string":"2017-02-11T23:38:00.000Z","key":1486856280000,"doc_count":9},{"key_as_string":"2017-02-11T23:39:00.000Z","key":1486856340000,"doc_count":14},{"key_as_string":"2017-02-11T23:40:00.000Z","key":1486856400000,"doc_count":9},{"key_as_string":"2017-02-11T23:41:00.000Z","key":1486856460000,"doc_count":7},{"key_as_string":"2017-02-11T23:42:00.000Z","key":1486856520000,"doc_count":10},{"key_as_string":"2017-02-11T23:43:00.000Z","key":1486856580000,"doc_count":7},{"key_as_string":"2017-02-11T23:44:00.000Z","key":1486856640000,"doc_count":12},{"key_as_string":"2017-02-11T23:45:00.000Z","key":1486856700000,"doc_count":10},{"key_as_string":"2017-02-11T23:46:00.000Z","key":1486856760000,"doc_count":10},{"key_as_string":"2017-02-11T23:47:00.000Z","key":1486856820000,"doc_count":9},{"key_as_string":"2017-02-11T23:48:00.000Z","key":1486856880000,"doc_count":7},{"key_as_string":"2017-02-11T23:49:00.000Z","key":1486856940000,"doc_count":9},{"key_as_string":"2017-02-11T23:50:00.000Z","key":1486857000000,"doc_count":11},{"key_as_string":"2017-02-11T23:51:00.000Z","key":1486857060000,"doc_count":10},{"key_as_string":"2017-02-11T23:52:00.000Z","key":1486857120000,"doc_count":11},{"key_as_string":"2017-02-11T23:53:00.000Z","key":1486857180000,"doc_count":10},{"key_as_string":"2017-02-11T23:54:00.000Z","key":1486857240000,"doc_count":15},{"key_as_string":"2017-02-11T23:55:00.000Z","key":1486857300000,"doc_count":5},{"key_as_string":"2017-02-11T23:56:00.000Z","key":1486857360000,"doc_count":7},{"key_as_string":"2017-02-11T23:57:00.000Z","key":1486857420000,"doc_count":14},{"key_as_string":"2017-02-11T23:58:00.000Z","key":1486857480000,"doc_count":10},{"key_as_string":"2017-02-11T23:59:00.000Z","key":1486857540000,"doc_count":9}]}}} +{"took":41,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value": 86274,"relation":"eq"},"max_score":0,"hits":[]},"aggregations":{"non_empty_buckets":{"buckets":[{"key_as_string":"2017-02-07T00:00:00.000Z","key":1486425600000,"doc_count":23},{"key_as_string":"2017-02-07T00:01:00.000Z","key":1486425660000,"doc_count":10},{"key_as_string":"2017-02-07T00:02:00.000Z","key":1486425720000,"doc_count":6},{"key_as_string":"2017-02-07T00:03:00.000Z","key":1486425780000,"doc_count":11},{"key_as_string":"2017-02-07T00:04:00.000Z","key":1486425840000,"doc_count":11},{"key_as_string":"2017-02-07T00:05:00.000Z","key":1486425900000,"doc_count":11},{"key_as_string":"2017-02-07T00:06:00.000Z","key":1486425960000,"doc_count":11},{"key_as_string":"2017-02-07T00:07:00.000Z","key":1486426020000,"doc_count":11},{"key_as_string":"2017-02-07T00:08:00.000Z","key":1486426080000,"doc_count":8},{"key_as_string":"2017-02-07T00:09:00.000Z","key":1486426140000,"doc_count":11},{"key_as_string":"2017-02-07T00:10:00.000Z","key":1486426200000,"doc_count":10},{"key_as_string":"2017-02-07T00:11:00.000Z","key":1486426260000,"doc_count":9},{"key_as_string":"2017-02-07T00:12:00.000Z","key":1486426320000,"doc_count":12},{"key_as_string":"2017-02-07T00:13:00.000Z","key":1486426380000,"doc_count":9},{"key_as_string":"2017-02-07T00:14:00.000Z","key":1486426440000,"doc_count":8},{"key_as_string":"2017-02-07T00:15:00.000Z","key":1486426500000,"doc_count":14},{"key_as_string":"2017-02-07T00:16:00.000Z","key":1486426560000,"doc_count":9},{"key_as_string":"2017-02-07T00:17:00.000Z","key":1486426620000,"doc_count":8},{"key_as_string":"2017-02-07T00:18:00.000Z","key":1486426680000,"doc_count":13},{"key_as_string":"2017-02-07T00:19:00.000Z","key":1486426740000,"doc_count":9},{"key_as_string":"2017-02-07T00:20:00.000Z","key":1486426800000,"doc_count":11},{"key_as_string":"2017-02-07T00:21:00.000Z","key":1486426860000,"doc_count":9},{"key_as_string":"2017-02-07T00:22:00.000Z","key":1486426920000,"doc_count":9},{"key_as_string":"2017-02-07T00:23:00.000Z","key":1486426980000,"doc_count":12},{"key_as_string":"2017-02-07T00:24:00.000Z","key":1486427040000,"doc_count":11},{"key_as_string":"2017-02-07T00:25:00.000Z","key":1486427100000,"doc_count":11},{"key_as_string":"2017-02-07T00:26:00.000Z","key":1486427160000,"doc_count":8},{"key_as_string":"2017-02-07T00:27:00.000Z","key":1486427220000,"doc_count":12},{"key_as_string":"2017-02-07T00:28:00.000Z","key":1486427280000,"doc_count":7},{"key_as_string":"2017-02-07T00:29:00.000Z","key":1486427340000,"doc_count":12},{"key_as_string":"2017-02-07T00:30:00.000Z","key":1486427400000,"doc_count":13},{"key_as_string":"2017-02-07T00:31:00.000Z","key":1486427460000,"doc_count":10},{"key_as_string":"2017-02-07T00:32:00.000Z","key":1486427520000,"doc_count":13},{"key_as_string":"2017-02-07T00:33:00.000Z","key":1486427580000,"doc_count":13},{"key_as_string":"2017-02-07T00:34:00.000Z","key":1486427640000,"doc_count":11},{"key_as_string":"2017-02-07T00:35:00.000Z","key":1486427700000,"doc_count":9},{"key_as_string":"2017-02-07T00:36:00.000Z","key":1486427760000,"doc_count":11},{"key_as_string":"2017-02-07T00:37:00.000Z","key":1486427820000,"doc_count":15},{"key_as_string":"2017-02-07T00:38:00.000Z","key":1486427880000,"doc_count":7},{"key_as_string":"2017-02-07T00:39:00.000Z","key":1486427940000,"doc_count":13},{"key_as_string":"2017-02-07T00:40:00.000Z","key":1486428000000,"doc_count":9},{"key_as_string":"2017-02-07T00:41:00.000Z","key":1486428060000,"doc_count":12},{"key_as_string":"2017-02-07T00:42:00.000Z","key":1486428120000,"doc_count":16},{"key_as_string":"2017-02-07T00:43:00.000Z","key":1486428180000,"doc_count":7},{"key_as_string":"2017-02-07T00:44:00.000Z","key":1486428240000,"doc_count":6},{"key_as_string":"2017-02-07T00:45:00.000Z","key":1486428300000,"doc_count":12},{"key_as_string":"2017-02-07T00:46:00.000Z","key":1486428360000,"doc_count":11},{"key_as_string":"2017-02-07T00:47:00.000Z","key":1486428420000,"doc_count":12},{"key_as_string":"2017-02-07T00:48:00.000Z","key":1486428480000,"doc_count":13},{"key_as_string":"2017-02-07T00:49:00.000Z","key":1486428540000,"doc_count":10},{"key_as_string":"2017-02-07T00:50:00.000Z","key":1486428600000,"doc_count":13},{"key_as_string":"2017-02-07T00:51:00.000Z","key":1486428660000,"doc_count":7},{"key_as_string":"2017-02-07T00:52:00.000Z","key":1486428720000,"doc_count":11},{"key_as_string":"2017-02-07T00:53:00.000Z","key":1486428780000,"doc_count":12},{"key_as_string":"2017-02-07T00:54:00.000Z","key":1486428840000,"doc_count":16},{"key_as_string":"2017-02-07T00:55:00.000Z","key":1486428900000,"doc_count":8},{"key_as_string":"2017-02-07T00:56:00.000Z","key":1486428960000,"doc_count":12},{"key_as_string":"2017-02-07T00:57:00.000Z","key":1486429020000,"doc_count":12},{"key_as_string":"2017-02-07T00:58:00.000Z","key":1486429080000,"doc_count":8},{"key_as_string":"2017-02-07T00:59:00.000Z","key":1486429140000,"doc_count":11},{"key_as_string":"2017-02-07T01:00:00.000Z","key":1486429200000,"doc_count":8},{"key_as_string":"2017-02-07T01:01:00.000Z","key":1486429260000,"doc_count":7},{"key_as_string":"2017-02-07T01:02:00.000Z","key":1486429320000,"doc_count":6},{"key_as_string":"2017-02-07T01:03:00.000Z","key":1486429380000,"doc_count":15},{"key_as_string":"2017-02-07T01:04:00.000Z","key":1486429440000,"doc_count":12},{"key_as_string":"2017-02-07T01:05:00.000Z","key":1486429500000,"doc_count":5},{"key_as_string":"2017-02-07T01:06:00.000Z","key":1486429560000,"doc_count":11},{"key_as_string":"2017-02-07T01:07:00.000Z","key":1486429620000,"doc_count":15},{"key_as_string":"2017-02-07T01:08:00.000Z","key":1486429680000,"doc_count":8},{"key_as_string":"2017-02-07T01:09:00.000Z","key":1486429740000,"doc_count":14},{"key_as_string":"2017-02-07T01:10:00.000Z","key":1486429800000,"doc_count":8},{"key_as_string":"2017-02-07T01:11:00.000Z","key":1486429860000,"doc_count":6},{"key_as_string":"2017-02-07T01:12:00.000Z","key":1486429920000,"doc_count":16},{"key_as_string":"2017-02-07T01:13:00.000Z","key":1486429980000,"doc_count":10},{"key_as_string":"2017-02-07T01:14:00.000Z","key":1486430040000,"doc_count":8},{"key_as_string":"2017-02-07T01:15:00.000Z","key":1486430100000,"doc_count":12},{"key_as_string":"2017-02-07T01:16:00.000Z","key":1486430160000,"doc_count":13},{"key_as_string":"2017-02-07T01:17:00.000Z","key":1486430220000,"doc_count":10},{"key_as_string":"2017-02-07T01:18:00.000Z","key":1486430280000,"doc_count":11},{"key_as_string":"2017-02-07T01:19:00.000Z","key":1486430340000,"doc_count":12},{"key_as_string":"2017-02-07T01:20:00.000Z","key":1486430400000,"doc_count":12},{"key_as_string":"2017-02-07T01:21:00.000Z","key":1486430460000,"doc_count":12},{"key_as_string":"2017-02-07T01:22:00.000Z","key":1486430520000,"doc_count":7},{"key_as_string":"2017-02-07T01:23:00.000Z","key":1486430580000,"doc_count":13},{"key_as_string":"2017-02-07T01:24:00.000Z","key":1486430640000,"doc_count":5},{"key_as_string":"2017-02-07T01:25:00.000Z","key":1486430700000,"doc_count":11},{"key_as_string":"2017-02-07T01:26:00.000Z","key":1486430760000,"doc_count":11},{"key_as_string":"2017-02-07T01:27:00.000Z","key":1486430820000,"doc_count":9},{"key_as_string":"2017-02-07T01:28:00.000Z","key":1486430880000,"doc_count":11},{"key_as_string":"2017-02-07T01:29:00.000Z","key":1486430940000,"doc_count":10},{"key_as_string":"2017-02-07T01:30:00.000Z","key":1486431000000,"doc_count":10},{"key_as_string":"2017-02-07T01:31:00.000Z","key":1486431060000,"doc_count":12},{"key_as_string":"2017-02-07T01:32:00.000Z","key":1486431120000,"doc_count":12},{"key_as_string":"2017-02-07T01:33:00.000Z","key":1486431180000,"doc_count":10},{"key_as_string":"2017-02-07T01:34:00.000Z","key":1486431240000,"doc_count":10},{"key_as_string":"2017-02-07T01:35:00.000Z","key":1486431300000,"doc_count":10},{"key_as_string":"2017-02-07T01:36:00.000Z","key":1486431360000,"doc_count":14},{"key_as_string":"2017-02-07T01:37:00.000Z","key":1486431420000,"doc_count":9},{"key_as_string":"2017-02-07T01:38:00.000Z","key":1486431480000,"doc_count":8},{"key_as_string":"2017-02-07T01:39:00.000Z","key":1486431540000,"doc_count":16},{"key_as_string":"2017-02-07T01:40:00.000Z","key":1486431600000,"doc_count":8},{"key_as_string":"2017-02-07T01:41:00.000Z","key":1486431660000,"doc_count":11},{"key_as_string":"2017-02-07T01:42:00.000Z","key":1486431720000,"doc_count":12},{"key_as_string":"2017-02-07T01:43:00.000Z","key":1486431780000,"doc_count":10},{"key_as_string":"2017-02-07T01:44:00.000Z","key":1486431840000,"doc_count":16},{"key_as_string":"2017-02-07T01:45:00.000Z","key":1486431900000,"doc_count":10},{"key_as_string":"2017-02-07T01:46:00.000Z","key":1486431960000,"doc_count":7},{"key_as_string":"2017-02-07T01:47:00.000Z","key":1486432020000,"doc_count":10},{"key_as_string":"2017-02-07T01:48:00.000Z","key":1486432080000,"doc_count":5},{"key_as_string":"2017-02-07T01:49:00.000Z","key":1486432140000,"doc_count":11},{"key_as_string":"2017-02-07T01:50:00.000Z","key":1486432200000,"doc_count":7},{"key_as_string":"2017-02-07T01:51:00.000Z","key":1486432260000,"doc_count":16},{"key_as_string":"2017-02-07T01:52:00.000Z","key":1486432320000,"doc_count":8},{"key_as_string":"2017-02-07T01:53:00.000Z","key":1486432380000,"doc_count":14},{"key_as_string":"2017-02-07T01:54:00.000Z","key":1486432440000,"doc_count":10},{"key_as_string":"2017-02-07T01:55:00.000Z","key":1486432500000,"doc_count":8},{"key_as_string":"2017-02-07T01:56:00.000Z","key":1486432560000,"doc_count":12},{"key_as_string":"2017-02-07T01:57:00.000Z","key":1486432620000,"doc_count":14},{"key_as_string":"2017-02-07T01:58:00.000Z","key":1486432680000,"doc_count":9},{"key_as_string":"2017-02-07T01:59:00.000Z","key":1486432740000,"doc_count":10},{"key_as_string":"2017-02-07T02:00:00.000Z","key":1486432800000,"doc_count":9},{"key_as_string":"2017-02-07T02:01:00.000Z","key":1486432860000,"doc_count":14},{"key_as_string":"2017-02-07T02:02:00.000Z","key":1486432920000,"doc_count":10},{"key_as_string":"2017-02-07T02:03:00.000Z","key":1486432980000,"doc_count":7},{"key_as_string":"2017-02-07T02:04:00.000Z","key":1486433040000,"doc_count":8},{"key_as_string":"2017-02-07T02:05:00.000Z","key":1486433100000,"doc_count":8},{"key_as_string":"2017-02-07T02:06:00.000Z","key":1486433160000,"doc_count":14},{"key_as_string":"2017-02-07T02:07:00.000Z","key":1486433220000,"doc_count":10},{"key_as_string":"2017-02-07T02:08:00.000Z","key":1486433280000,"doc_count":7},{"key_as_string":"2017-02-07T02:09:00.000Z","key":1486433340000,"doc_count":11},{"key_as_string":"2017-02-07T02:10:00.000Z","key":1486433400000,"doc_count":6},{"key_as_string":"2017-02-07T02:11:00.000Z","key":1486433460000,"doc_count":8},{"key_as_string":"2017-02-07T02:12:00.000Z","key":1486433520000,"doc_count":7},{"key_as_string":"2017-02-07T02:13:00.000Z","key":1486433580000,"doc_count":15},{"key_as_string":"2017-02-07T02:14:00.000Z","key":1486433640000,"doc_count":8},{"key_as_string":"2017-02-07T02:15:00.000Z","key":1486433700000,"doc_count":14},{"key_as_string":"2017-02-07T02:16:00.000Z","key":1486433760000,"doc_count":5},{"key_as_string":"2017-02-07T02:17:00.000Z","key":1486433820000,"doc_count":9},{"key_as_string":"2017-02-07T02:18:00.000Z","key":1486433880000,"doc_count":7},{"key_as_string":"2017-02-07T02:19:00.000Z","key":1486433940000,"doc_count":8},{"key_as_string":"2017-02-07T02:20:00.000Z","key":1486434000000,"doc_count":13},{"key_as_string":"2017-02-07T02:21:00.000Z","key":1486434060000,"doc_count":13},{"key_as_string":"2017-02-07T02:22:00.000Z","key":1486434120000,"doc_count":13},{"key_as_string":"2017-02-07T02:23:00.000Z","key":1486434180000,"doc_count":8},{"key_as_string":"2017-02-07T02:24:00.000Z","key":1486434240000,"doc_count":11},{"key_as_string":"2017-02-07T02:25:00.000Z","key":1486434300000,"doc_count":9},{"key_as_string":"2017-02-07T02:26:00.000Z","key":1486434360000,"doc_count":11},{"key_as_string":"2017-02-07T02:27:00.000Z","key":1486434420000,"doc_count":14},{"key_as_string":"2017-02-07T02:28:00.000Z","key":1486434480000,"doc_count":9},{"key_as_string":"2017-02-07T02:29:00.000Z","key":1486434540000,"doc_count":15},{"key_as_string":"2017-02-07T02:30:00.000Z","key":1486434600000,"doc_count":13},{"key_as_string":"2017-02-07T02:31:00.000Z","key":1486434660000,"doc_count":6},{"key_as_string":"2017-02-07T02:32:00.000Z","key":1486434720000,"doc_count":16},{"key_as_string":"2017-02-07T02:33:00.000Z","key":1486434780000,"doc_count":11},{"key_as_string":"2017-02-07T02:34:00.000Z","key":1486434840000,"doc_count":9},{"key_as_string":"2017-02-07T02:35:00.000Z","key":1486434900000,"doc_count":11},{"key_as_string":"2017-02-07T02:36:00.000Z","key":1486434960000,"doc_count":15},{"key_as_string":"2017-02-07T02:37:00.000Z","key":1486435020000,"doc_count":6},{"key_as_string":"2017-02-07T02:38:00.000Z","key":1486435080000,"doc_count":11},{"key_as_string":"2017-02-07T02:39:00.000Z","key":1486435140000,"doc_count":5},{"key_as_string":"2017-02-07T02:40:00.000Z","key":1486435200000,"doc_count":14},{"key_as_string":"2017-02-07T02:41:00.000Z","key":1486435260000,"doc_count":9},{"key_as_string":"2017-02-07T02:42:00.000Z","key":1486435320000,"doc_count":9},{"key_as_string":"2017-02-07T02:43:00.000Z","key":1486435380000,"doc_count":9},{"key_as_string":"2017-02-07T02:44:00.000Z","key":1486435440000,"doc_count":16},{"key_as_string":"2017-02-07T02:45:00.000Z","key":1486435500000,"doc_count":10},{"key_as_string":"2017-02-07T02:46:00.000Z","key":1486435560000,"doc_count":8},{"key_as_string":"2017-02-07T02:47:00.000Z","key":1486435620000,"doc_count":10},{"key_as_string":"2017-02-07T02:48:00.000Z","key":1486435680000,"doc_count":11},{"key_as_string":"2017-02-07T02:49:00.000Z","key":1486435740000,"doc_count":13},{"key_as_string":"2017-02-07T02:50:00.000Z","key":1486435800000,"doc_count":9},{"key_as_string":"2017-02-07T02:51:00.000Z","key":1486435860000,"doc_count":14},{"key_as_string":"2017-02-07T02:52:00.000Z","key":1486435920000,"doc_count":17},{"key_as_string":"2017-02-07T02:53:00.000Z","key":1486435980000,"doc_count":10},{"key_as_string":"2017-02-07T02:54:00.000Z","key":1486436040000,"doc_count":8},{"key_as_string":"2017-02-07T02:55:00.000Z","key":1486436100000,"doc_count":10},{"key_as_string":"2017-02-07T02:56:00.000Z","key":1486436160000,"doc_count":9},{"key_as_string":"2017-02-07T02:57:00.000Z","key":1486436220000,"doc_count":9},{"key_as_string":"2017-02-07T02:58:00.000Z","key":1486436280000,"doc_count":12},{"key_as_string":"2017-02-07T02:59:00.000Z","key":1486436340000,"doc_count":8},{"key_as_string":"2017-02-07T03:00:00.000Z","key":1486436400000,"doc_count":11},{"key_as_string":"2017-02-07T03:01:00.000Z","key":1486436460000,"doc_count":12},{"key_as_string":"2017-02-07T03:02:00.000Z","key":1486436520000,"doc_count":7},{"key_as_string":"2017-02-07T03:03:00.000Z","key":1486436580000,"doc_count":16},{"key_as_string":"2017-02-07T03:04:00.000Z","key":1486436640000,"doc_count":13},{"key_as_string":"2017-02-07T03:05:00.000Z","key":1486436700000,"doc_count":10},{"key_as_string":"2017-02-07T03:06:00.000Z","key":1486436760000,"doc_count":11},{"key_as_string":"2017-02-07T03:07:00.000Z","key":1486436820000,"doc_count":6},{"key_as_string":"2017-02-07T03:08:00.000Z","key":1486436880000,"doc_count":9},{"key_as_string":"2017-02-07T03:09:00.000Z","key":1486436940000,"doc_count":7},{"key_as_string":"2017-02-07T03:10:00.000Z","key":1486437000000,"doc_count":14},{"key_as_string":"2017-02-07T03:11:00.000Z","key":1486437060000,"doc_count":9},{"key_as_string":"2017-02-07T03:12:00.000Z","key":1486437120000,"doc_count":12},{"key_as_string":"2017-02-07T03:13:00.000Z","key":1486437180000,"doc_count":10},{"key_as_string":"2017-02-07T03:14:00.000Z","key":1486437240000,"doc_count":9},{"key_as_string":"2017-02-07T03:15:00.000Z","key":1486437300000,"doc_count":12},{"key_as_string":"2017-02-07T03:16:00.000Z","key":1486437360000,"doc_count":12},{"key_as_string":"2017-02-07T03:17:00.000Z","key":1486437420000,"doc_count":8},{"key_as_string":"2017-02-07T03:18:00.000Z","key":1486437480000,"doc_count":13},{"key_as_string":"2017-02-07T03:19:00.000Z","key":1486437540000,"doc_count":12},{"key_as_string":"2017-02-07T03:20:00.000Z","key":1486437600000,"doc_count":8},{"key_as_string":"2017-02-07T03:21:00.000Z","key":1486437660000,"doc_count":20},{"key_as_string":"2017-02-07T03:22:00.000Z","key":1486437720000,"doc_count":8},{"key_as_string":"2017-02-07T03:23:00.000Z","key":1486437780000,"doc_count":9},{"key_as_string":"2017-02-07T03:24:00.000Z","key":1486437840000,"doc_count":12},{"key_as_string":"2017-02-07T03:25:00.000Z","key":1486437900000,"doc_count":9},{"key_as_string":"2017-02-07T03:26:00.000Z","key":1486437960000,"doc_count":9},{"key_as_string":"2017-02-07T03:27:00.000Z","key":1486438020000,"doc_count":12},{"key_as_string":"2017-02-07T03:28:00.000Z","key":1486438080000,"doc_count":12},{"key_as_string":"2017-02-07T03:29:00.000Z","key":1486438140000,"doc_count":7},{"key_as_string":"2017-02-07T03:30:00.000Z","key":1486438200000,"doc_count":12},{"key_as_string":"2017-02-07T03:31:00.000Z","key":1486438260000,"doc_count":15},{"key_as_string":"2017-02-07T03:32:00.000Z","key":1486438320000,"doc_count":12},{"key_as_string":"2017-02-07T03:33:00.000Z","key":1486438380000,"doc_count":9},{"key_as_string":"2017-02-07T03:34:00.000Z","key":1486438440000,"doc_count":9},{"key_as_string":"2017-02-07T03:35:00.000Z","key":1486438500000,"doc_count":12},{"key_as_string":"2017-02-07T03:36:00.000Z","key":1486438560000,"doc_count":8},{"key_as_string":"2017-02-07T03:37:00.000Z","key":1486438620000,"doc_count":12},{"key_as_string":"2017-02-07T03:38:00.000Z","key":1486438680000,"doc_count":13},{"key_as_string":"2017-02-07T03:39:00.000Z","key":1486438740000,"doc_count":10},{"key_as_string":"2017-02-07T03:40:00.000Z","key":1486438800000,"doc_count":8},{"key_as_string":"2017-02-07T03:41:00.000Z","key":1486438860000,"doc_count":10},{"key_as_string":"2017-02-07T03:42:00.000Z","key":1486438920000,"doc_count":12},{"key_as_string":"2017-02-07T03:43:00.000Z","key":1486438980000,"doc_count":9},{"key_as_string":"2017-02-07T03:44:00.000Z","key":1486439040000,"doc_count":13},{"key_as_string":"2017-02-07T03:45:00.000Z","key":1486439100000,"doc_count":11},{"key_as_string":"2017-02-07T03:46:00.000Z","key":1486439160000,"doc_count":16},{"key_as_string":"2017-02-07T03:47:00.000Z","key":1486439220000,"doc_count":10},{"key_as_string":"2017-02-07T03:48:00.000Z","key":1486439280000,"doc_count":10},{"key_as_string":"2017-02-07T03:49:00.000Z","key":1486439340000,"doc_count":10},{"key_as_string":"2017-02-07T03:50:00.000Z","key":1486439400000,"doc_count":10},{"key_as_string":"2017-02-07T03:51:00.000Z","key":1486439460000,"doc_count":8},{"key_as_string":"2017-02-07T03:52:00.000Z","key":1486439520000,"doc_count":8},{"key_as_string":"2017-02-07T03:53:00.000Z","key":1486439580000,"doc_count":14},{"key_as_string":"2017-02-07T03:54:00.000Z","key":1486439640000,"doc_count":12},{"key_as_string":"2017-02-07T03:55:00.000Z","key":1486439700000,"doc_count":9},{"key_as_string":"2017-02-07T03:56:00.000Z","key":1486439760000,"doc_count":10},{"key_as_string":"2017-02-07T03:57:00.000Z","key":1486439820000,"doc_count":15},{"key_as_string":"2017-02-07T03:58:00.000Z","key":1486439880000,"doc_count":8},{"key_as_string":"2017-02-07T03:59:00.000Z","key":1486439940000,"doc_count":13},{"key_as_string":"2017-02-07T04:00:00.000Z","key":1486440000000,"doc_count":9},{"key_as_string":"2017-02-07T04:01:00.000Z","key":1486440060000,"doc_count":13},{"key_as_string":"2017-02-07T04:02:00.000Z","key":1486440120000,"doc_count":7},{"key_as_string":"2017-02-07T04:03:00.000Z","key":1486440180000,"doc_count":10},{"key_as_string":"2017-02-07T04:04:00.000Z","key":1486440240000,"doc_count":15},{"key_as_string":"2017-02-07T04:05:00.000Z","key":1486440300000,"doc_count":12},{"key_as_string":"2017-02-07T04:06:00.000Z","key":1486440360000,"doc_count":10},{"key_as_string":"2017-02-07T04:07:00.000Z","key":1486440420000,"doc_count":9},{"key_as_string":"2017-02-07T04:08:00.000Z","key":1486440480000,"doc_count":8},{"key_as_string":"2017-02-07T04:09:00.000Z","key":1486440540000,"doc_count":12},{"key_as_string":"2017-02-07T04:10:00.000Z","key":1486440600000,"doc_count":10},{"key_as_string":"2017-02-07T04:11:00.000Z","key":1486440660000,"doc_count":11},{"key_as_string":"2017-02-07T04:12:00.000Z","key":1486440720000,"doc_count":9},{"key_as_string":"2017-02-07T04:13:00.000Z","key":1486440780000,"doc_count":14},{"key_as_string":"2017-02-07T04:14:00.000Z","key":1486440840000,"doc_count":16},{"key_as_string":"2017-02-07T04:15:00.000Z","key":1486440900000,"doc_count":12},{"key_as_string":"2017-02-07T04:16:00.000Z","key":1486440960000,"doc_count":12},{"key_as_string":"2017-02-07T04:17:00.000Z","key":1486441020000,"doc_count":12},{"key_as_string":"2017-02-07T04:18:00.000Z","key":1486441080000,"doc_count":10},{"key_as_string":"2017-02-07T04:19:00.000Z","key":1486441140000,"doc_count":14},{"key_as_string":"2017-02-07T04:20:00.000Z","key":1486441200000,"doc_count":10},{"key_as_string":"2017-02-07T04:21:00.000Z","key":1486441260000,"doc_count":13},{"key_as_string":"2017-02-07T04:22:00.000Z","key":1486441320000,"doc_count":13},{"key_as_string":"2017-02-07T04:23:00.000Z","key":1486441380000,"doc_count":8},{"key_as_string":"2017-02-07T04:24:00.000Z","key":1486441440000,"doc_count":10},{"key_as_string":"2017-02-07T04:25:00.000Z","key":1486441500000,"doc_count":14},{"key_as_string":"2017-02-07T04:26:00.000Z","key":1486441560000,"doc_count":6},{"key_as_string":"2017-02-07T04:27:00.000Z","key":1486441620000,"doc_count":15},{"key_as_string":"2017-02-07T04:28:00.000Z","key":1486441680000,"doc_count":12},{"key_as_string":"2017-02-07T04:29:00.000Z","key":1486441740000,"doc_count":11},{"key_as_string":"2017-02-07T04:30:00.000Z","key":1486441800000,"doc_count":8},{"key_as_string":"2017-02-07T04:31:00.000Z","key":1486441860000,"doc_count":8},{"key_as_string":"2017-02-07T04:32:00.000Z","key":1486441920000,"doc_count":14},{"key_as_string":"2017-02-07T04:33:00.000Z","key":1486441980000,"doc_count":10},{"key_as_string":"2017-02-07T04:34:00.000Z","key":1486442040000,"doc_count":12},{"key_as_string":"2017-02-07T04:35:00.000Z","key":1486442100000,"doc_count":13},{"key_as_string":"2017-02-07T04:36:00.000Z","key":1486442160000,"doc_count":7},{"key_as_string":"2017-02-07T04:37:00.000Z","key":1486442220000,"doc_count":11},{"key_as_string":"2017-02-07T04:38:00.000Z","key":1486442280000,"doc_count":10},{"key_as_string":"2017-02-07T04:39:00.000Z","key":1486442340000,"doc_count":13},{"key_as_string":"2017-02-07T04:40:00.000Z","key":1486442400000,"doc_count":10},{"key_as_string":"2017-02-07T04:41:00.000Z","key":1486442460000,"doc_count":17},{"key_as_string":"2017-02-07T04:42:00.000Z","key":1486442520000,"doc_count":9},{"key_as_string":"2017-02-07T04:43:00.000Z","key":1486442580000,"doc_count":14},{"key_as_string":"2017-02-07T04:44:00.000Z","key":1486442640000,"doc_count":11},{"key_as_string":"2017-02-07T04:45:00.000Z","key":1486442700000,"doc_count":12},{"key_as_string":"2017-02-07T04:46:00.000Z","key":1486442760000,"doc_count":10},{"key_as_string":"2017-02-07T04:47:00.000Z","key":1486442820000,"doc_count":17},{"key_as_string":"2017-02-07T04:48:00.000Z","key":1486442880000,"doc_count":7},{"key_as_string":"2017-02-07T04:49:00.000Z","key":1486442940000,"doc_count":12},{"key_as_string":"2017-02-07T04:50:00.000Z","key":1486443000000,"doc_count":7},{"key_as_string":"2017-02-07T04:51:00.000Z","key":1486443060000,"doc_count":12},{"key_as_string":"2017-02-07T04:52:00.000Z","key":1486443120000,"doc_count":14},{"key_as_string":"2017-02-07T04:53:00.000Z","key":1486443180000,"doc_count":6},{"key_as_string":"2017-02-07T04:54:00.000Z","key":1486443240000,"doc_count":10},{"key_as_string":"2017-02-07T04:55:00.000Z","key":1486443300000,"doc_count":16},{"key_as_string":"2017-02-07T04:56:00.000Z","key":1486443360000,"doc_count":7},{"key_as_string":"2017-02-07T04:57:00.000Z","key":1486443420000,"doc_count":6},{"key_as_string":"2017-02-07T04:58:00.000Z","key":1486443480000,"doc_count":11},{"key_as_string":"2017-02-07T04:59:00.000Z","key":1486443540000,"doc_count":14},{"key_as_string":"2017-02-07T05:00:00.000Z","key":1486443600000,"doc_count":10},{"key_as_string":"2017-02-07T05:01:00.000Z","key":1486443660000,"doc_count":9},{"key_as_string":"2017-02-07T05:02:00.000Z","key":1486443720000,"doc_count":6},{"key_as_string":"2017-02-07T05:03:00.000Z","key":1486443780000,"doc_count":11},{"key_as_string":"2017-02-07T05:04:00.000Z","key":1486443840000,"doc_count":14},{"key_as_string":"2017-02-07T05:05:00.000Z","key":1486443900000,"doc_count":12},{"key_as_string":"2017-02-07T05:06:00.000Z","key":1486443960000,"doc_count":7},{"key_as_string":"2017-02-07T05:07:00.000Z","key":1486444020000,"doc_count":15},{"key_as_string":"2017-02-07T05:08:00.000Z","key":1486444080000,"doc_count":12},{"key_as_string":"2017-02-07T05:09:00.000Z","key":1486444140000,"doc_count":7},{"key_as_string":"2017-02-07T05:10:00.000Z","key":1486444200000,"doc_count":14},{"key_as_string":"2017-02-07T05:11:00.000Z","key":1486444260000,"doc_count":10},{"key_as_string":"2017-02-07T05:12:00.000Z","key":1486444320000,"doc_count":12},{"key_as_string":"2017-02-07T05:13:00.000Z","key":1486444380000,"doc_count":12},{"key_as_string":"2017-02-07T05:14:00.000Z","key":1486444440000,"doc_count":12},{"key_as_string":"2017-02-07T05:15:00.000Z","key":1486444500000,"doc_count":11},{"key_as_string":"2017-02-07T05:16:00.000Z","key":1486444560000,"doc_count":10},{"key_as_string":"2017-02-07T05:17:00.000Z","key":1486444620000,"doc_count":12},{"key_as_string":"2017-02-07T05:18:00.000Z","key":1486444680000,"doc_count":9},{"key_as_string":"2017-02-07T05:19:00.000Z","key":1486444740000,"doc_count":14},{"key_as_string":"2017-02-07T05:20:00.000Z","key":1486444800000,"doc_count":7},{"key_as_string":"2017-02-07T05:21:00.000Z","key":1486444860000,"doc_count":12},{"key_as_string":"2017-02-07T05:22:00.000Z","key":1486444920000,"doc_count":10},{"key_as_string":"2017-02-07T05:23:00.000Z","key":1486444980000,"doc_count":14},{"key_as_string":"2017-02-07T05:24:00.000Z","key":1486445040000,"doc_count":14},{"key_as_string":"2017-02-07T05:25:00.000Z","key":1486445100000,"doc_count":5},{"key_as_string":"2017-02-07T05:26:00.000Z","key":1486445160000,"doc_count":10},{"key_as_string":"2017-02-07T05:27:00.000Z","key":1486445220000,"doc_count":10},{"key_as_string":"2017-02-07T05:28:00.000Z","key":1486445280000,"doc_count":13},{"key_as_string":"2017-02-07T05:29:00.000Z","key":1486445340000,"doc_count":12},{"key_as_string":"2017-02-07T05:30:00.000Z","key":1486445400000,"doc_count":13},{"key_as_string":"2017-02-07T05:31:00.000Z","key":1486445460000,"doc_count":13},{"key_as_string":"2017-02-07T05:32:00.000Z","key":1486445520000,"doc_count":13},{"key_as_string":"2017-02-07T05:33:00.000Z","key":1486445580000,"doc_count":16},{"key_as_string":"2017-02-07T05:34:00.000Z","key":1486445640000,"doc_count":10},{"key_as_string":"2017-02-07T05:35:00.000Z","key":1486445700000,"doc_count":16},{"key_as_string":"2017-02-07T05:36:00.000Z","key":1486445760000,"doc_count":14},{"key_as_string":"2017-02-07T05:37:00.000Z","key":1486445820000,"doc_count":10},{"key_as_string":"2017-02-07T05:38:00.000Z","key":1486445880000,"doc_count":11},{"key_as_string":"2017-02-07T05:39:00.000Z","key":1486445940000,"doc_count":13},{"key_as_string":"2017-02-07T05:40:00.000Z","key":1486446000000,"doc_count":16},{"key_as_string":"2017-02-07T05:41:00.000Z","key":1486446060000,"doc_count":9},{"key_as_string":"2017-02-07T05:42:00.000Z","key":1486446120000,"doc_count":10},{"key_as_string":"2017-02-07T05:43:00.000Z","key":1486446180000,"doc_count":16},{"key_as_string":"2017-02-07T05:44:00.000Z","key":1486446240000,"doc_count":18},{"key_as_string":"2017-02-07T05:45:00.000Z","key":1486446300000,"doc_count":10},{"key_as_string":"2017-02-07T05:46:00.000Z","key":1486446360000,"doc_count":9},{"key_as_string":"2017-02-07T05:47:00.000Z","key":1486446420000,"doc_count":7},{"key_as_string":"2017-02-07T05:48:00.000Z","key":1486446480000,"doc_count":10},{"key_as_string":"2017-02-07T05:49:00.000Z","key":1486446540000,"doc_count":17},{"key_as_string":"2017-02-07T05:50:00.000Z","key":1486446600000,"doc_count":8},{"key_as_string":"2017-02-07T05:51:00.000Z","key":1486446660000,"doc_count":10},{"key_as_string":"2017-02-07T05:52:00.000Z","key":1486446720000,"doc_count":10},{"key_as_string":"2017-02-07T05:53:00.000Z","key":1486446780000,"doc_count":13},{"key_as_string":"2017-02-07T05:54:00.000Z","key":1486446840000,"doc_count":9},{"key_as_string":"2017-02-07T05:55:00.000Z","key":1486446900000,"doc_count":11},{"key_as_string":"2017-02-07T05:56:00.000Z","key":1486446960000,"doc_count":14},{"key_as_string":"2017-02-07T05:57:00.000Z","key":1486447020000,"doc_count":15},{"key_as_string":"2017-02-07T05:58:00.000Z","key":1486447080000,"doc_count":14},{"key_as_string":"2017-02-07T05:59:00.000Z","key":1486447140000,"doc_count":6},{"key_as_string":"2017-02-07T06:00:00.000Z","key":1486447200000,"doc_count":14},{"key_as_string":"2017-02-07T06:01:00.000Z","key":1486447260000,"doc_count":18},{"key_as_string":"2017-02-07T06:02:00.000Z","key":1486447320000,"doc_count":9},{"key_as_string":"2017-02-07T06:03:00.000Z","key":1486447380000,"doc_count":14},{"key_as_string":"2017-02-07T06:04:00.000Z","key":1486447440000,"doc_count":12},{"key_as_string":"2017-02-07T06:05:00.000Z","key":1486447500000,"doc_count":14},{"key_as_string":"2017-02-07T06:06:00.000Z","key":1486447560000,"doc_count":11},{"key_as_string":"2017-02-07T06:07:00.000Z","key":1486447620000,"doc_count":12},{"key_as_string":"2017-02-07T06:08:00.000Z","key":1486447680000,"doc_count":20},{"key_as_string":"2017-02-07T06:09:00.000Z","key":1486447740000,"doc_count":9},{"key_as_string":"2017-02-07T06:10:00.000Z","key":1486447800000,"doc_count":10},{"key_as_string":"2017-02-07T06:11:00.000Z","key":1486447860000,"doc_count":13},{"key_as_string":"2017-02-07T06:12:00.000Z","key":1486447920000,"doc_count":10},{"key_as_string":"2017-02-07T06:13:00.000Z","key":1486447980000,"doc_count":13},{"key_as_string":"2017-02-07T06:14:00.000Z","key":1486448040000,"doc_count":10},{"key_as_string":"2017-02-07T06:15:00.000Z","key":1486448100000,"doc_count":17},{"key_as_string":"2017-02-07T06:16:00.000Z","key":1486448160000,"doc_count":7},{"key_as_string":"2017-02-07T06:17:00.000Z","key":1486448220000,"doc_count":9},{"key_as_string":"2017-02-07T06:18:00.000Z","key":1486448280000,"doc_count":12},{"key_as_string":"2017-02-07T06:19:00.000Z","key":1486448340000,"doc_count":8},{"key_as_string":"2017-02-07T06:20:00.000Z","key":1486448400000,"doc_count":21},{"key_as_string":"2017-02-07T06:21:00.000Z","key":1486448460000,"doc_count":10},{"key_as_string":"2017-02-07T06:22:00.000Z","key":1486448520000,"doc_count":13},{"key_as_string":"2017-02-07T06:23:00.000Z","key":1486448580000,"doc_count":12},{"key_as_string":"2017-02-07T06:24:00.000Z","key":1486448640000,"doc_count":13},{"key_as_string":"2017-02-07T06:25:00.000Z","key":1486448700000,"doc_count":11},{"key_as_string":"2017-02-07T06:26:00.000Z","key":1486448760000,"doc_count":16},{"key_as_string":"2017-02-07T06:27:00.000Z","key":1486448820000,"doc_count":5},{"key_as_string":"2017-02-07T06:28:00.000Z","key":1486448880000,"doc_count":11},{"key_as_string":"2017-02-07T06:29:00.000Z","key":1486448940000,"doc_count":14},{"key_as_string":"2017-02-07T06:30:00.000Z","key":1486449000000,"doc_count":8},{"key_as_string":"2017-02-07T06:31:00.000Z","key":1486449060000,"doc_count":13},{"key_as_string":"2017-02-07T06:32:00.000Z","key":1486449120000,"doc_count":17},{"key_as_string":"2017-02-07T06:33:00.000Z","key":1486449180000,"doc_count":15},{"key_as_string":"2017-02-07T06:34:00.000Z","key":1486449240000,"doc_count":6},{"key_as_string":"2017-02-07T06:35:00.000Z","key":1486449300000,"doc_count":13},{"key_as_string":"2017-02-07T06:36:00.000Z","key":1486449360000,"doc_count":8},{"key_as_string":"2017-02-07T06:37:00.000Z","key":1486449420000,"doc_count":12},{"key_as_string":"2017-02-07T06:38:00.000Z","key":1486449480000,"doc_count":13},{"key_as_string":"2017-02-07T06:39:00.000Z","key":1486449540000,"doc_count":12},{"key_as_string":"2017-02-07T06:40:00.000Z","key":1486449600000,"doc_count":11},{"key_as_string":"2017-02-07T06:41:00.000Z","key":1486449660000,"doc_count":14},{"key_as_string":"2017-02-07T06:42:00.000Z","key":1486449720000,"doc_count":6},{"key_as_string":"2017-02-07T06:43:00.000Z","key":1486449780000,"doc_count":13},{"key_as_string":"2017-02-07T06:44:00.000Z","key":1486449840000,"doc_count":11},{"key_as_string":"2017-02-07T06:45:00.000Z","key":1486449900000,"doc_count":11},{"key_as_string":"2017-02-07T06:46:00.000Z","key":1486449960000,"doc_count":21},{"key_as_string":"2017-02-07T06:47:00.000Z","key":1486450020000,"doc_count":9},{"key_as_string":"2017-02-07T06:48:00.000Z","key":1486450080000,"doc_count":11},{"key_as_string":"2017-02-07T06:49:00.000Z","key":1486450140000,"doc_count":10},{"key_as_string":"2017-02-07T06:50:00.000Z","key":1486450200000,"doc_count":11},{"key_as_string":"2017-02-07T06:51:00.000Z","key":1486450260000,"doc_count":11},{"key_as_string":"2017-02-07T06:52:00.000Z","key":1486450320000,"doc_count":12},{"key_as_string":"2017-02-07T06:53:00.000Z","key":1486450380000,"doc_count":8},{"key_as_string":"2017-02-07T06:54:00.000Z","key":1486450440000,"doc_count":13},{"key_as_string":"2017-02-07T06:55:00.000Z","key":1486450500000,"doc_count":7},{"key_as_string":"2017-02-07T06:56:00.000Z","key":1486450560000,"doc_count":9},{"key_as_string":"2017-02-07T06:57:00.000Z","key":1486450620000,"doc_count":7},{"key_as_string":"2017-02-07T06:58:00.000Z","key":1486450680000,"doc_count":10},{"key_as_string":"2017-02-07T06:59:00.000Z","key":1486450740000,"doc_count":19},{"key_as_string":"2017-02-07T07:00:00.000Z","key":1486450800000,"doc_count":11},{"key_as_string":"2017-02-07T07:01:00.000Z","key":1486450860000,"doc_count":9},{"key_as_string":"2017-02-07T07:02:00.000Z","key":1486450920000,"doc_count":14},{"key_as_string":"2017-02-07T07:03:00.000Z","key":1486450980000,"doc_count":13},{"key_as_string":"2017-02-07T07:04:00.000Z","key":1486451040000,"doc_count":14},{"key_as_string":"2017-02-07T07:05:00.000Z","key":1486451100000,"doc_count":10},{"key_as_string":"2017-02-07T07:06:00.000Z","key":1486451160000,"doc_count":14},{"key_as_string":"2017-02-07T07:07:00.000Z","key":1486451220000,"doc_count":8},{"key_as_string":"2017-02-07T07:08:00.000Z","key":1486451280000,"doc_count":10},{"key_as_string":"2017-02-07T07:09:00.000Z","key":1486451340000,"doc_count":15},{"key_as_string":"2017-02-07T07:10:00.000Z","key":1486451400000,"doc_count":17},{"key_as_string":"2017-02-07T07:11:00.000Z","key":1486451460000,"doc_count":10},{"key_as_string":"2017-02-07T07:12:00.000Z","key":1486451520000,"doc_count":10},{"key_as_string":"2017-02-07T07:13:00.000Z","key":1486451580000,"doc_count":10},{"key_as_string":"2017-02-07T07:14:00.000Z","key":1486451640000,"doc_count":10},{"key_as_string":"2017-02-07T07:15:00.000Z","key":1486451700000,"doc_count":12},{"key_as_string":"2017-02-07T07:16:00.000Z","key":1486451760000,"doc_count":12},{"key_as_string":"2017-02-07T07:17:00.000Z","key":1486451820000,"doc_count":17},{"key_as_string":"2017-02-07T07:18:00.000Z","key":1486451880000,"doc_count":10},{"key_as_string":"2017-02-07T07:19:00.000Z","key":1486451940000,"doc_count":13},{"key_as_string":"2017-02-07T07:20:00.000Z","key":1486452000000,"doc_count":12},{"key_as_string":"2017-02-07T07:21:00.000Z","key":1486452060000,"doc_count":13},{"key_as_string":"2017-02-07T07:22:00.000Z","key":1486452120000,"doc_count":15},{"key_as_string":"2017-02-07T07:23:00.000Z","key":1486452180000,"doc_count":13},{"key_as_string":"2017-02-07T07:24:00.000Z","key":1486452240000,"doc_count":12},{"key_as_string":"2017-02-07T07:25:00.000Z","key":1486452300000,"doc_count":12},{"key_as_string":"2017-02-07T07:26:00.000Z","key":1486452360000,"doc_count":11},{"key_as_string":"2017-02-07T07:27:00.000Z","key":1486452420000,"doc_count":11},{"key_as_string":"2017-02-07T07:28:00.000Z","key":1486452480000,"doc_count":14},{"key_as_string":"2017-02-07T07:29:00.000Z","key":1486452540000,"doc_count":16},{"key_as_string":"2017-02-07T07:30:00.000Z","key":1486452600000,"doc_count":9},{"key_as_string":"2017-02-07T07:31:00.000Z","key":1486452660000,"doc_count":12},{"key_as_string":"2017-02-07T07:32:00.000Z","key":1486452720000,"doc_count":17},{"key_as_string":"2017-02-07T07:33:00.000Z","key":1486452780000,"doc_count":9},{"key_as_string":"2017-02-07T07:34:00.000Z","key":1486452840000,"doc_count":15},{"key_as_string":"2017-02-07T07:35:00.000Z","key":1486452900000,"doc_count":13},{"key_as_string":"2017-02-07T07:36:00.000Z","key":1486452960000,"doc_count":14},{"key_as_string":"2017-02-07T07:37:00.000Z","key":1486453020000,"doc_count":14},{"key_as_string":"2017-02-07T07:38:00.000Z","key":1486453080000,"doc_count":9},{"key_as_string":"2017-02-07T07:39:00.000Z","key":1486453140000,"doc_count":10},{"key_as_string":"2017-02-07T07:40:00.000Z","key":1486453200000,"doc_count":12},{"key_as_string":"2017-02-07T07:41:00.000Z","key":1486453260000,"doc_count":11},{"key_as_string":"2017-02-07T07:42:00.000Z","key":1486453320000,"doc_count":18},{"key_as_string":"2017-02-07T07:43:00.000Z","key":1486453380000,"doc_count":7},{"key_as_string":"2017-02-07T07:44:00.000Z","key":1486453440000,"doc_count":13},{"key_as_string":"2017-02-07T07:45:00.000Z","key":1486453500000,"doc_count":14},{"key_as_string":"2017-02-07T07:46:00.000Z","key":1486453560000,"doc_count":13},{"key_as_string":"2017-02-07T07:47:00.000Z","key":1486453620000,"doc_count":15},{"key_as_string":"2017-02-07T07:48:00.000Z","key":1486453680000,"doc_count":13},{"key_as_string":"2017-02-07T07:49:00.000Z","key":1486453740000,"doc_count":15},{"key_as_string":"2017-02-07T07:50:00.000Z","key":1486453800000,"doc_count":12},{"key_as_string":"2017-02-07T07:51:00.000Z","key":1486453860000,"doc_count":15},{"key_as_string":"2017-02-07T07:52:00.000Z","key":1486453920000,"doc_count":12},{"key_as_string":"2017-02-07T07:53:00.000Z","key":1486453980000,"doc_count":9},{"key_as_string":"2017-02-07T07:54:00.000Z","key":1486454040000,"doc_count":12},{"key_as_string":"2017-02-07T07:55:00.000Z","key":1486454100000,"doc_count":13},{"key_as_string":"2017-02-07T07:56:00.000Z","key":1486454160000,"doc_count":12},{"key_as_string":"2017-02-07T07:57:00.000Z","key":1486454220000,"doc_count":9},{"key_as_string":"2017-02-07T07:58:00.000Z","key":1486454280000,"doc_count":12},{"key_as_string":"2017-02-07T07:59:00.000Z","key":1486454340000,"doc_count":12},{"key_as_string":"2017-02-07T08:00:00.000Z","key":1486454400000,"doc_count":14},{"key_as_string":"2017-02-07T08:01:00.000Z","key":1486454460000,"doc_count":13},{"key_as_string":"2017-02-07T08:02:00.000Z","key":1486454520000,"doc_count":11},{"key_as_string":"2017-02-07T08:03:00.000Z","key":1486454580000,"doc_count":14},{"key_as_string":"2017-02-07T08:04:00.000Z","key":1486454640000,"doc_count":6},{"key_as_string":"2017-02-07T08:05:00.000Z","key":1486454700000,"doc_count":13},{"key_as_string":"2017-02-07T08:06:00.000Z","key":1486454760000,"doc_count":11},{"key_as_string":"2017-02-07T08:07:00.000Z","key":1486454820000,"doc_count":14},{"key_as_string":"2017-02-07T08:08:00.000Z","key":1486454880000,"doc_count":14},{"key_as_string":"2017-02-07T08:09:00.000Z","key":1486454940000,"doc_count":9},{"key_as_string":"2017-02-07T08:10:00.000Z","key":1486455000000,"doc_count":11},{"key_as_string":"2017-02-07T08:11:00.000Z","key":1486455060000,"doc_count":8},{"key_as_string":"2017-02-07T08:12:00.000Z","key":1486455120000,"doc_count":14},{"key_as_string":"2017-02-07T08:13:00.000Z","key":1486455180000,"doc_count":9},{"key_as_string":"2017-02-07T08:14:00.000Z","key":1486455240000,"doc_count":10},{"key_as_string":"2017-02-07T08:15:00.000Z","key":1486455300000,"doc_count":14},{"key_as_string":"2017-02-07T08:16:00.000Z","key":1486455360000,"doc_count":12},{"key_as_string":"2017-02-07T08:17:00.000Z","key":1486455420000,"doc_count":11},{"key_as_string":"2017-02-07T08:18:00.000Z","key":1486455480000,"doc_count":18},{"key_as_string":"2017-02-07T08:19:00.000Z","key":1486455540000,"doc_count":13},{"key_as_string":"2017-02-07T08:20:00.000Z","key":1486455600000,"doc_count":13},{"key_as_string":"2017-02-07T08:21:00.000Z","key":1486455660000,"doc_count":10},{"key_as_string":"2017-02-07T08:22:00.000Z","key":1486455720000,"doc_count":10},{"key_as_string":"2017-02-07T08:23:00.000Z","key":1486455780000,"doc_count":13},{"key_as_string":"2017-02-07T08:24:00.000Z","key":1486455840000,"doc_count":11},{"key_as_string":"2017-02-07T08:25:00.000Z","key":1486455900000,"doc_count":12},{"key_as_string":"2017-02-07T08:26:00.000Z","key":1486455960000,"doc_count":20},{"key_as_string":"2017-02-07T08:27:00.000Z","key":1486456020000,"doc_count":15},{"key_as_string":"2017-02-07T08:28:00.000Z","key":1486456080000,"doc_count":12},{"key_as_string":"2017-02-07T08:29:00.000Z","key":1486456140000,"doc_count":14},{"key_as_string":"2017-02-07T08:30:00.000Z","key":1486456200000,"doc_count":9},{"key_as_string":"2017-02-07T08:31:00.000Z","key":1486456260000,"doc_count":17},{"key_as_string":"2017-02-07T08:32:00.000Z","key":1486456320000,"doc_count":11},{"key_as_string":"2017-02-07T08:33:00.000Z","key":1486456380000,"doc_count":15},{"key_as_string":"2017-02-07T08:34:00.000Z","key":1486456440000,"doc_count":11},{"key_as_string":"2017-02-07T08:35:00.000Z","key":1486456500000,"doc_count":15},{"key_as_string":"2017-02-07T08:36:00.000Z","key":1486456560000,"doc_count":17},{"key_as_string":"2017-02-07T08:37:00.000Z","key":1486456620000,"doc_count":8},{"key_as_string":"2017-02-07T08:38:00.000Z","key":1486456680000,"doc_count":13},{"key_as_string":"2017-02-07T08:39:00.000Z","key":1486456740000,"doc_count":10},{"key_as_string":"2017-02-07T08:40:00.000Z","key":1486456800000,"doc_count":11},{"key_as_string":"2017-02-07T08:41:00.000Z","key":1486456860000,"doc_count":12},{"key_as_string":"2017-02-07T08:42:00.000Z","key":1486456920000,"doc_count":15},{"key_as_string":"2017-02-07T08:43:00.000Z","key":1486456980000,"doc_count":12},{"key_as_string":"2017-02-07T08:44:00.000Z","key":1486457040000,"doc_count":14},{"key_as_string":"2017-02-07T08:45:00.000Z","key":1486457100000,"doc_count":14},{"key_as_string":"2017-02-07T08:46:00.000Z","key":1486457160000,"doc_count":15},{"key_as_string":"2017-02-07T08:47:00.000Z","key":1486457220000,"doc_count":13},{"key_as_string":"2017-02-07T08:48:00.000Z","key":1486457280000,"doc_count":10},{"key_as_string":"2017-02-07T08:49:00.000Z","key":1486457340000,"doc_count":12},{"key_as_string":"2017-02-07T08:50:00.000Z","key":1486457400000,"doc_count":14},{"key_as_string":"2017-02-07T08:51:00.000Z","key":1486457460000,"doc_count":13},{"key_as_string":"2017-02-07T08:52:00.000Z","key":1486457520000,"doc_count":11},{"key_as_string":"2017-02-07T08:53:00.000Z","key":1486457580000,"doc_count":14},{"key_as_string":"2017-02-07T08:54:00.000Z","key":1486457640000,"doc_count":14},{"key_as_string":"2017-02-07T08:55:00.000Z","key":1486457700000,"doc_count":9},{"key_as_string":"2017-02-07T08:56:00.000Z","key":1486457760000,"doc_count":13},{"key_as_string":"2017-02-07T08:57:00.000Z","key":1486457820000,"doc_count":16},{"key_as_string":"2017-02-07T08:58:00.000Z","key":1486457880000,"doc_count":14},{"key_as_string":"2017-02-07T08:59:00.000Z","key":1486457940000,"doc_count":9},{"key_as_string":"2017-02-07T09:00:00.000Z","key":1486458000000,"doc_count":15},{"key_as_string":"2017-02-07T09:01:00.000Z","key":1486458060000,"doc_count":13},{"key_as_string":"2017-02-07T09:02:00.000Z","key":1486458120000,"doc_count":11},{"key_as_string":"2017-02-07T09:03:00.000Z","key":1486458180000,"doc_count":23},{"key_as_string":"2017-02-07T09:04:00.000Z","key":1486458240000,"doc_count":14},{"key_as_string":"2017-02-07T09:05:00.000Z","key":1486458300000,"doc_count":6},{"key_as_string":"2017-02-07T09:06:00.000Z","key":1486458360000,"doc_count":14},{"key_as_string":"2017-02-07T09:07:00.000Z","key":1486458420000,"doc_count":15},{"key_as_string":"2017-02-07T09:08:00.000Z","key":1486458480000,"doc_count":15},{"key_as_string":"2017-02-07T09:09:00.000Z","key":1486458540000,"doc_count":11},{"key_as_string":"2017-02-07T09:10:00.000Z","key":1486458600000,"doc_count":17},{"key_as_string":"2017-02-07T09:11:00.000Z","key":1486458660000,"doc_count":16},{"key_as_string":"2017-02-07T09:12:00.000Z","key":1486458720000,"doc_count":15},{"key_as_string":"2017-02-07T09:13:00.000Z","key":1486458780000,"doc_count":15},{"key_as_string":"2017-02-07T09:14:00.000Z","key":1486458840000,"doc_count":18},{"key_as_string":"2017-02-07T09:15:00.000Z","key":1486458900000,"doc_count":13},{"key_as_string":"2017-02-07T09:16:00.000Z","key":1486458960000,"doc_count":9},{"key_as_string":"2017-02-07T09:17:00.000Z","key":1486459020000,"doc_count":19},{"key_as_string":"2017-02-07T09:18:00.000Z","key":1486459080000,"doc_count":11},{"key_as_string":"2017-02-07T09:19:00.000Z","key":1486459140000,"doc_count":8},{"key_as_string":"2017-02-07T09:20:00.000Z","key":1486459200000,"doc_count":18},{"key_as_string":"2017-02-07T09:21:00.000Z","key":1486459260000,"doc_count":16},{"key_as_string":"2017-02-07T09:22:00.000Z","key":1486459320000,"doc_count":13},{"key_as_string":"2017-02-07T09:23:00.000Z","key":1486459380000,"doc_count":14},{"key_as_string":"2017-02-07T09:24:00.000Z","key":1486459440000,"doc_count":16},{"key_as_string":"2017-02-07T09:25:00.000Z","key":1486459500000,"doc_count":13},{"key_as_string":"2017-02-07T09:26:00.000Z","key":1486459560000,"doc_count":13},{"key_as_string":"2017-02-07T09:27:00.000Z","key":1486459620000,"doc_count":16},{"key_as_string":"2017-02-07T09:28:00.000Z","key":1486459680000,"doc_count":13},{"key_as_string":"2017-02-07T09:29:00.000Z","key":1486459740000,"doc_count":14},{"key_as_string":"2017-02-07T09:30:00.000Z","key":1486459800000,"doc_count":13},{"key_as_string":"2017-02-07T09:31:00.000Z","key":1486459860000,"doc_count":16},{"key_as_string":"2017-02-07T09:32:00.000Z","key":1486459920000,"doc_count":18},{"key_as_string":"2017-02-07T09:33:00.000Z","key":1486459980000,"doc_count":7},{"key_as_string":"2017-02-07T09:34:00.000Z","key":1486460040000,"doc_count":14},{"key_as_string":"2017-02-07T09:35:00.000Z","key":1486460100000,"doc_count":15},{"key_as_string":"2017-02-07T09:36:00.000Z","key":1486460160000,"doc_count":13},{"key_as_string":"2017-02-07T09:37:00.000Z","key":1486460220000,"doc_count":16},{"key_as_string":"2017-02-07T09:38:00.000Z","key":1486460280000,"doc_count":15},{"key_as_string":"2017-02-07T09:39:00.000Z","key":1486460340000,"doc_count":12},{"key_as_string":"2017-02-07T09:40:00.000Z","key":1486460400000,"doc_count":15},{"key_as_string":"2017-02-07T09:41:00.000Z","key":1486460460000,"doc_count":13},{"key_as_string":"2017-02-07T09:42:00.000Z","key":1486460520000,"doc_count":10},{"key_as_string":"2017-02-07T09:43:00.000Z","key":1486460580000,"doc_count":17},{"key_as_string":"2017-02-07T09:44:00.000Z","key":1486460640000,"doc_count":16},{"key_as_string":"2017-02-07T09:45:00.000Z","key":1486460700000,"doc_count":16},{"key_as_string":"2017-02-07T09:46:00.000Z","key":1486460760000,"doc_count":12},{"key_as_string":"2017-02-07T09:47:00.000Z","key":1486460820000,"doc_count":14},{"key_as_string":"2017-02-07T09:48:00.000Z","key":1486460880000,"doc_count":14},{"key_as_string":"2017-02-07T09:49:00.000Z","key":1486460940000,"doc_count":10},{"key_as_string":"2017-02-07T09:50:00.000Z","key":1486461000000,"doc_count":14},{"key_as_string":"2017-02-07T09:51:00.000Z","key":1486461060000,"doc_count":16},{"key_as_string":"2017-02-07T09:52:00.000Z","key":1486461120000,"doc_count":14},{"key_as_string":"2017-02-07T09:53:00.000Z","key":1486461180000,"doc_count":11},{"key_as_string":"2017-02-07T09:54:00.000Z","key":1486461240000,"doc_count":11},{"key_as_string":"2017-02-07T09:55:00.000Z","key":1486461300000,"doc_count":14},{"key_as_string":"2017-02-07T09:56:00.000Z","key":1486461360000,"doc_count":14},{"key_as_string":"2017-02-07T09:57:00.000Z","key":1486461420000,"doc_count":13},{"key_as_string":"2017-02-07T09:58:00.000Z","key":1486461480000,"doc_count":14},{"key_as_string":"2017-02-07T09:59:00.000Z","key":1486461540000,"doc_count":13},{"key_as_string":"2017-02-07T10:00:00.000Z","key":1486461600000,"doc_count":17},{"key_as_string":"2017-02-07T10:01:00.000Z","key":1486461660000,"doc_count":17},{"key_as_string":"2017-02-07T10:02:00.000Z","key":1486461720000,"doc_count":6},{"key_as_string":"2017-02-07T10:03:00.000Z","key":1486461780000,"doc_count":13},{"key_as_string":"2017-02-07T10:04:00.000Z","key":1486461840000,"doc_count":15},{"key_as_string":"2017-02-07T10:05:00.000Z","key":1486461900000,"doc_count":10},{"key_as_string":"2017-02-07T10:06:00.000Z","key":1486461960000,"doc_count":11},{"key_as_string":"2017-02-07T10:07:00.000Z","key":1486462020000,"doc_count":15},{"key_as_string":"2017-02-07T10:08:00.000Z","key":1486462080000,"doc_count":14},{"key_as_string":"2017-02-07T10:09:00.000Z","key":1486462140000,"doc_count":11},{"key_as_string":"2017-02-07T10:10:00.000Z","key":1486462200000,"doc_count":19},{"key_as_string":"2017-02-07T10:11:00.000Z","key":1486462260000,"doc_count":10},{"key_as_string":"2017-02-07T10:12:00.000Z","key":1486462320000,"doc_count":12},{"key_as_string":"2017-02-07T10:13:00.000Z","key":1486462380000,"doc_count":12},{"key_as_string":"2017-02-07T10:14:00.000Z","key":1486462440000,"doc_count":20},{"key_as_string":"2017-02-07T10:15:00.000Z","key":1486462500000,"doc_count":15},{"key_as_string":"2017-02-07T10:16:00.000Z","key":1486462560000,"doc_count":13},{"key_as_string":"2017-02-07T10:17:00.000Z","key":1486462620000,"doc_count":16},{"key_as_string":"2017-02-07T10:18:00.000Z","key":1486462680000,"doc_count":14},{"key_as_string":"2017-02-07T10:19:00.000Z","key":1486462740000,"doc_count":11},{"key_as_string":"2017-02-07T10:20:00.000Z","key":1486462800000,"doc_count":15},{"key_as_string":"2017-02-07T10:21:00.000Z","key":1486462860000,"doc_count":14},{"key_as_string":"2017-02-07T10:22:00.000Z","key":1486462920000,"doc_count":11},{"key_as_string":"2017-02-07T10:23:00.000Z","key":1486462980000,"doc_count":12},{"key_as_string":"2017-02-07T10:24:00.000Z","key":1486463040000,"doc_count":16},{"key_as_string":"2017-02-07T10:25:00.000Z","key":1486463100000,"doc_count":14},{"key_as_string":"2017-02-07T10:26:00.000Z","key":1486463160000,"doc_count":18},{"key_as_string":"2017-02-07T10:27:00.000Z","key":1486463220000,"doc_count":13},{"key_as_string":"2017-02-07T10:28:00.000Z","key":1486463280000,"doc_count":18},{"key_as_string":"2017-02-07T10:29:00.000Z","key":1486463340000,"doc_count":14},{"key_as_string":"2017-02-07T10:30:00.000Z","key":1486463400000,"doc_count":15},{"key_as_string":"2017-02-07T10:31:00.000Z","key":1486463460000,"doc_count":16},{"key_as_string":"2017-02-07T10:32:00.000Z","key":1486463520000,"doc_count":16},{"key_as_string":"2017-02-07T10:33:00.000Z","key":1486463580000,"doc_count":16},{"key_as_string":"2017-02-07T10:34:00.000Z","key":1486463640000,"doc_count":9},{"key_as_string":"2017-02-07T10:35:00.000Z","key":1486463700000,"doc_count":13},{"key_as_string":"2017-02-07T10:36:00.000Z","key":1486463760000,"doc_count":16},{"key_as_string":"2017-02-07T10:37:00.000Z","key":1486463820000,"doc_count":14},{"key_as_string":"2017-02-07T10:38:00.000Z","key":1486463880000,"doc_count":14},{"key_as_string":"2017-02-07T10:39:00.000Z","key":1486463940000,"doc_count":12},{"key_as_string":"2017-02-07T10:40:00.000Z","key":1486464000000,"doc_count":12},{"key_as_string":"2017-02-07T10:41:00.000Z","key":1486464060000,"doc_count":15},{"key_as_string":"2017-02-07T10:42:00.000Z","key":1486464120000,"doc_count":10},{"key_as_string":"2017-02-07T10:43:00.000Z","key":1486464180000,"doc_count":11},{"key_as_string":"2017-02-07T10:44:00.000Z","key":1486464240000,"doc_count":14},{"key_as_string":"2017-02-07T10:45:00.000Z","key":1486464300000,"doc_count":11},{"key_as_string":"2017-02-07T10:46:00.000Z","key":1486464360000,"doc_count":16},{"key_as_string":"2017-02-07T10:47:00.000Z","key":1486464420000,"doc_count":17},{"key_as_string":"2017-02-07T10:48:00.000Z","key":1486464480000,"doc_count":14},{"key_as_string":"2017-02-07T10:49:00.000Z","key":1486464540000,"doc_count":17},{"key_as_string":"2017-02-07T10:50:00.000Z","key":1486464600000,"doc_count":14},{"key_as_string":"2017-02-07T10:51:00.000Z","key":1486464660000,"doc_count":14},{"key_as_string":"2017-02-07T10:52:00.000Z","key":1486464720000,"doc_count":13},{"key_as_string":"2017-02-07T10:53:00.000Z","key":1486464780000,"doc_count":14},{"key_as_string":"2017-02-07T10:54:00.000Z","key":1486464840000,"doc_count":13},{"key_as_string":"2017-02-07T10:55:00.000Z","key":1486464900000,"doc_count":10},{"key_as_string":"2017-02-07T10:56:00.000Z","key":1486464960000,"doc_count":14},{"key_as_string":"2017-02-07T10:57:00.000Z","key":1486465020000,"doc_count":9},{"key_as_string":"2017-02-07T10:58:00.000Z","key":1486465080000,"doc_count":19},{"key_as_string":"2017-02-07T10:59:00.000Z","key":1486465140000,"doc_count":12},{"key_as_string":"2017-02-07T11:00:00.000Z","key":1486465200000,"doc_count":20},{"key_as_string":"2017-02-07T11:01:00.000Z","key":1486465260000,"doc_count":11},{"key_as_string":"2017-02-07T11:02:00.000Z","key":1486465320000,"doc_count":16},{"key_as_string":"2017-02-07T11:03:00.000Z","key":1486465380000,"doc_count":14},{"key_as_string":"2017-02-07T11:04:00.000Z","key":1486465440000,"doc_count":14},{"key_as_string":"2017-02-07T11:05:00.000Z","key":1486465500000,"doc_count":11},{"key_as_string":"2017-02-07T11:06:00.000Z","key":1486465560000,"doc_count":11},{"key_as_string":"2017-02-07T11:07:00.000Z","key":1486465620000,"doc_count":18},{"key_as_string":"2017-02-07T11:08:00.000Z","key":1486465680000,"doc_count":14},{"key_as_string":"2017-02-07T11:09:00.000Z","key":1486465740000,"doc_count":14},{"key_as_string":"2017-02-07T11:10:00.000Z","key":1486465800000,"doc_count":9},{"key_as_string":"2017-02-07T11:11:00.000Z","key":1486465860000,"doc_count":18},{"key_as_string":"2017-02-07T11:12:00.000Z","key":1486465920000,"doc_count":18},{"key_as_string":"2017-02-07T11:13:00.000Z","key":1486465980000,"doc_count":10},{"key_as_string":"2017-02-07T11:14:00.000Z","key":1486466040000,"doc_count":10},{"key_as_string":"2017-02-07T11:15:00.000Z","key":1486466100000,"doc_count":17},{"key_as_string":"2017-02-07T11:16:00.000Z","key":1486466160000,"doc_count":16},{"key_as_string":"2017-02-07T11:17:00.000Z","key":1486466220000,"doc_count":15},{"key_as_string":"2017-02-07T11:18:00.000Z","key":1486466280000,"doc_count":17},{"key_as_string":"2017-02-07T11:19:00.000Z","key":1486466340000,"doc_count":18},{"key_as_string":"2017-02-07T11:20:00.000Z","key":1486466400000,"doc_count":11},{"key_as_string":"2017-02-07T11:21:00.000Z","key":1486466460000,"doc_count":18},{"key_as_string":"2017-02-07T11:22:00.000Z","key":1486466520000,"doc_count":13},{"key_as_string":"2017-02-07T11:23:00.000Z","key":1486466580000,"doc_count":10},{"key_as_string":"2017-02-07T11:24:00.000Z","key":1486466640000,"doc_count":12},{"key_as_string":"2017-02-07T11:25:00.000Z","key":1486466700000,"doc_count":13},{"key_as_string":"2017-02-07T11:26:00.000Z","key":1486466760000,"doc_count":16},{"key_as_string":"2017-02-07T11:27:00.000Z","key":1486466820000,"doc_count":12},{"key_as_string":"2017-02-07T11:28:00.000Z","key":1486466880000,"doc_count":12},{"key_as_string":"2017-02-07T11:29:00.000Z","key":1486466940000,"doc_count":18},{"key_as_string":"2017-02-07T11:30:00.000Z","key":1486467000000,"doc_count":11},{"key_as_string":"2017-02-07T11:31:00.000Z","key":1486467060000,"doc_count":13},{"key_as_string":"2017-02-07T11:32:00.000Z","key":1486467120000,"doc_count":13},{"key_as_string":"2017-02-07T11:33:00.000Z","key":1486467180000,"doc_count":24},{"key_as_string":"2017-02-07T11:34:00.000Z","key":1486467240000,"doc_count":12},{"key_as_string":"2017-02-07T11:35:00.000Z","key":1486467300000,"doc_count":13},{"key_as_string":"2017-02-07T11:36:00.000Z","key":1486467360000,"doc_count":16},{"key_as_string":"2017-02-07T11:37:00.000Z","key":1486467420000,"doc_count":16},{"key_as_string":"2017-02-07T11:38:00.000Z","key":1486467480000,"doc_count":14},{"key_as_string":"2017-02-07T11:39:00.000Z","key":1486467540000,"doc_count":12},{"key_as_string":"2017-02-07T11:40:00.000Z","key":1486467600000,"doc_count":14},{"key_as_string":"2017-02-07T11:41:00.000Z","key":1486467660000,"doc_count":14},{"key_as_string":"2017-02-07T11:42:00.000Z","key":1486467720000,"doc_count":16},{"key_as_string":"2017-02-07T11:43:00.000Z","key":1486467780000,"doc_count":19},{"key_as_string":"2017-02-07T11:44:00.000Z","key":1486467840000,"doc_count":9},{"key_as_string":"2017-02-07T11:45:00.000Z","key":1486467900000,"doc_count":14},{"key_as_string":"2017-02-07T11:46:00.000Z","key":1486467960000,"doc_count":8},{"key_as_string":"2017-02-07T11:47:00.000Z","key":1486468020000,"doc_count":14},{"key_as_string":"2017-02-07T11:48:00.000Z","key":1486468080000,"doc_count":11},{"key_as_string":"2017-02-07T11:49:00.000Z","key":1486468140000,"doc_count":10},{"key_as_string":"2017-02-07T11:50:00.000Z","key":1486468200000,"doc_count":13},{"key_as_string":"2017-02-07T11:51:00.000Z","key":1486468260000,"doc_count":14},{"key_as_string":"2017-02-07T11:52:00.000Z","key":1486468320000,"doc_count":13},{"key_as_string":"2017-02-07T11:53:00.000Z","key":1486468380000,"doc_count":15},{"key_as_string":"2017-02-07T11:54:00.000Z","key":1486468440000,"doc_count":11},{"key_as_string":"2017-02-07T11:55:00.000Z","key":1486468500000,"doc_count":11},{"key_as_string":"2017-02-07T11:56:00.000Z","key":1486468560000,"doc_count":13},{"key_as_string":"2017-02-07T11:57:00.000Z","key":1486468620000,"doc_count":17},{"key_as_string":"2017-02-07T11:58:00.000Z","key":1486468680000,"doc_count":19},{"key_as_string":"2017-02-07T11:59:00.000Z","key":1486468740000,"doc_count":15},{"key_as_string":"2017-02-07T12:00:00.000Z","key":1486468800000,"doc_count":14},{"key_as_string":"2017-02-07T12:01:00.000Z","key":1486468860000,"doc_count":14},{"key_as_string":"2017-02-07T12:02:00.000Z","key":1486468920000,"doc_count":19},{"key_as_string":"2017-02-07T12:03:00.000Z","key":1486468980000,"doc_count":16},{"key_as_string":"2017-02-07T12:04:00.000Z","key":1486469040000,"doc_count":13},{"key_as_string":"2017-02-07T12:05:00.000Z","key":1486469100000,"doc_count":20},{"key_as_string":"2017-02-07T12:06:00.000Z","key":1486469160000,"doc_count":9},{"key_as_string":"2017-02-07T12:07:00.000Z","key":1486469220000,"doc_count":12},{"key_as_string":"2017-02-07T12:08:00.000Z","key":1486469280000,"doc_count":14},{"key_as_string":"2017-02-07T12:09:00.000Z","key":1486469340000,"doc_count":18},{"key_as_string":"2017-02-07T12:10:00.000Z","key":1486469400000,"doc_count":10},{"key_as_string":"2017-02-07T12:11:00.000Z","key":1486469460000,"doc_count":11},{"key_as_string":"2017-02-07T12:12:00.000Z","key":1486469520000,"doc_count":15},{"key_as_string":"2017-02-07T12:13:00.000Z","key":1486469580000,"doc_count":10},{"key_as_string":"2017-02-07T12:14:00.000Z","key":1486469640000,"doc_count":14},{"key_as_string":"2017-02-07T12:15:00.000Z","key":1486469700000,"doc_count":18},{"key_as_string":"2017-02-07T12:16:00.000Z","key":1486469760000,"doc_count":15},{"key_as_string":"2017-02-07T12:17:00.000Z","key":1486469820000,"doc_count":12},{"key_as_string":"2017-02-07T12:18:00.000Z","key":1486469880000,"doc_count":7},{"key_as_string":"2017-02-07T12:19:00.000Z","key":1486469940000,"doc_count":17},{"key_as_string":"2017-02-07T12:20:00.000Z","key":1486470000000,"doc_count":14},{"key_as_string":"2017-02-07T12:21:00.000Z","key":1486470060000,"doc_count":15},{"key_as_string":"2017-02-07T12:22:00.000Z","key":1486470120000,"doc_count":17},{"key_as_string":"2017-02-07T12:23:00.000Z","key":1486470180000,"doc_count":17},{"key_as_string":"2017-02-07T12:24:00.000Z","key":1486470240000,"doc_count":12},{"key_as_string":"2017-02-07T12:25:00.000Z","key":1486470300000,"doc_count":15},{"key_as_string":"2017-02-07T12:26:00.000Z","key":1486470360000,"doc_count":8},{"key_as_string":"2017-02-07T12:27:00.000Z","key":1486470420000,"doc_count":19},{"key_as_string":"2017-02-07T12:28:00.000Z","key":1486470480000,"doc_count":10},{"key_as_string":"2017-02-07T12:29:00.000Z","key":1486470540000,"doc_count":13},{"key_as_string":"2017-02-07T12:30:00.000Z","key":1486470600000,"doc_count":14},{"key_as_string":"2017-02-07T12:31:00.000Z","key":1486470660000,"doc_count":17},{"key_as_string":"2017-02-07T12:32:00.000Z","key":1486470720000,"doc_count":12},{"key_as_string":"2017-02-07T12:33:00.000Z","key":1486470780000,"doc_count":11},{"key_as_string":"2017-02-07T12:34:00.000Z","key":1486470840000,"doc_count":18},{"key_as_string":"2017-02-07T12:35:00.000Z","key":1486470900000,"doc_count":16},{"key_as_string":"2017-02-07T12:36:00.000Z","key":1486470960000,"doc_count":17},{"key_as_string":"2017-02-07T12:37:00.000Z","key":1486471020000,"doc_count":18},{"key_as_string":"2017-02-07T12:38:00.000Z","key":1486471080000,"doc_count":16},{"key_as_string":"2017-02-07T12:39:00.000Z","key":1486471140000,"doc_count":15},{"key_as_string":"2017-02-07T12:40:00.000Z","key":1486471200000,"doc_count":16},{"key_as_string":"2017-02-07T12:41:00.000Z","key":1486471260000,"doc_count":22},{"key_as_string":"2017-02-07T12:42:00.000Z","key":1486471320000,"doc_count":14},{"key_as_string":"2017-02-07T12:43:00.000Z","key":1486471380000,"doc_count":13},{"key_as_string":"2017-02-07T12:44:00.000Z","key":1486471440000,"doc_count":10},{"key_as_string":"2017-02-07T12:45:00.000Z","key":1486471500000,"doc_count":13},{"key_as_string":"2017-02-07T12:46:00.000Z","key":1486471560000,"doc_count":19},{"key_as_string":"2017-02-07T12:47:00.000Z","key":1486471620000,"doc_count":12},{"key_as_string":"2017-02-07T12:48:00.000Z","key":1486471680000,"doc_count":12},{"key_as_string":"2017-02-07T12:49:00.000Z","key":1486471740000,"doc_count":14},{"key_as_string":"2017-02-07T12:50:00.000Z","key":1486471800000,"doc_count":17},{"key_as_string":"2017-02-07T12:51:00.000Z","key":1486471860000,"doc_count":14},{"key_as_string":"2017-02-07T12:52:00.000Z","key":1486471920000,"doc_count":9},{"key_as_string":"2017-02-07T12:53:00.000Z","key":1486471980000,"doc_count":21},{"key_as_string":"2017-02-07T12:54:00.000Z","key":1486472040000,"doc_count":14},{"key_as_string":"2017-02-07T12:55:00.000Z","key":1486472100000,"doc_count":11},{"key_as_string":"2017-02-07T12:56:00.000Z","key":1486472160000,"doc_count":13},{"key_as_string":"2017-02-07T12:57:00.000Z","key":1486472220000,"doc_count":13},{"key_as_string":"2017-02-07T12:58:00.000Z","key":1486472280000,"doc_count":12},{"key_as_string":"2017-02-07T12:59:00.000Z","key":1486472340000,"doc_count":19},{"key_as_string":"2017-02-07T13:00:00.000Z","key":1486472400000,"doc_count":10},{"key_as_string":"2017-02-07T13:01:00.000Z","key":1486472460000,"doc_count":13},{"key_as_string":"2017-02-07T13:02:00.000Z","key":1486472520000,"doc_count":12},{"key_as_string":"2017-02-07T13:03:00.000Z","key":1486472580000,"doc_count":9},{"key_as_string":"2017-02-07T13:04:00.000Z","key":1486472640000,"doc_count":17},{"key_as_string":"2017-02-07T13:05:00.000Z","key":1486472700000,"doc_count":14},{"key_as_string":"2017-02-07T13:06:00.000Z","key":1486472760000,"doc_count":13},{"key_as_string":"2017-02-07T13:07:00.000Z","key":1486472820000,"doc_count":18},{"key_as_string":"2017-02-07T13:08:00.000Z","key":1486472880000,"doc_count":16},{"key_as_string":"2017-02-07T13:09:00.000Z","key":1486472940000,"doc_count":11},{"key_as_string":"2017-02-07T13:10:00.000Z","key":1486473000000,"doc_count":9},{"key_as_string":"2017-02-07T13:11:00.000Z","key":1486473060000,"doc_count":14},{"key_as_string":"2017-02-07T13:12:00.000Z","key":1486473120000,"doc_count":11},{"key_as_string":"2017-02-07T13:13:00.000Z","key":1486473180000,"doc_count":17},{"key_as_string":"2017-02-07T13:14:00.000Z","key":1486473240000,"doc_count":14},{"key_as_string":"2017-02-07T13:15:00.000Z","key":1486473300000,"doc_count":17},{"key_as_string":"2017-02-07T13:16:00.000Z","key":1486473360000,"doc_count":14},{"key_as_string":"2017-02-07T13:17:00.000Z","key":1486473420000,"doc_count":18},{"key_as_string":"2017-02-07T13:18:00.000Z","key":1486473480000,"doc_count":13},{"key_as_string":"2017-02-07T13:19:00.000Z","key":1486473540000,"doc_count":24},{"key_as_string":"2017-02-07T13:20:00.000Z","key":1486473600000,"doc_count":6},{"key_as_string":"2017-02-07T13:21:00.000Z","key":1486473660000,"doc_count":16},{"key_as_string":"2017-02-07T13:22:00.000Z","key":1486473720000,"doc_count":19},{"key_as_string":"2017-02-07T13:23:00.000Z","key":1486473780000,"doc_count":12},{"key_as_string":"2017-02-07T13:24:00.000Z","key":1486473840000,"doc_count":18},{"key_as_string":"2017-02-07T13:25:00.000Z","key":1486473900000,"doc_count":11},{"key_as_string":"2017-02-07T13:26:00.000Z","key":1486473960000,"doc_count":14},{"key_as_string":"2017-02-07T13:27:00.000Z","key":1486474020000,"doc_count":13},{"key_as_string":"2017-02-07T13:28:00.000Z","key":1486474080000,"doc_count":13},{"key_as_string":"2017-02-07T13:29:00.000Z","key":1486474140000,"doc_count":12},{"key_as_string":"2017-02-07T13:30:00.000Z","key":1486474200000,"doc_count":12},{"key_as_string":"2017-02-07T13:31:00.000Z","key":1486474260000,"doc_count":10},{"key_as_string":"2017-02-07T13:32:00.000Z","key":1486474320000,"doc_count":15},{"key_as_string":"2017-02-07T13:33:00.000Z","key":1486474380000,"doc_count":11},{"key_as_string":"2017-02-07T13:34:00.000Z","key":1486474440000,"doc_count":15},{"key_as_string":"2017-02-07T13:35:00.000Z","key":1486474500000,"doc_count":6},{"key_as_string":"2017-02-07T13:36:00.000Z","key":1486474560000,"doc_count":20},{"key_as_string":"2017-02-07T13:37:00.000Z","key":1486474620000,"doc_count":9},{"key_as_string":"2017-02-07T13:38:00.000Z","key":1486474680000,"doc_count":15},{"key_as_string":"2017-02-07T13:39:00.000Z","key":1486474740000,"doc_count":18},{"key_as_string":"2017-02-07T13:40:00.000Z","key":1486474800000,"doc_count":14},{"key_as_string":"2017-02-07T13:41:00.000Z","key":1486474860000,"doc_count":11},{"key_as_string":"2017-02-07T13:42:00.000Z","key":1486474920000,"doc_count":15},{"key_as_string":"2017-02-07T13:43:00.000Z","key":1486474980000,"doc_count":10},{"key_as_string":"2017-02-07T13:44:00.000Z","key":1486475040000,"doc_count":14},{"key_as_string":"2017-02-07T13:45:00.000Z","key":1486475100000,"doc_count":13},{"key_as_string":"2017-02-07T13:46:00.000Z","key":1486475160000,"doc_count":16},{"key_as_string":"2017-02-07T13:47:00.000Z","key":1486475220000,"doc_count":10},{"key_as_string":"2017-02-07T13:48:00.000Z","key":1486475280000,"doc_count":13},{"key_as_string":"2017-02-07T13:49:00.000Z","key":1486475340000,"doc_count":14},{"key_as_string":"2017-02-07T13:50:00.000Z","key":1486475400000,"doc_count":12},{"key_as_string":"2017-02-07T13:51:00.000Z","key":1486475460000,"doc_count":12},{"key_as_string":"2017-02-07T13:52:00.000Z","key":1486475520000,"doc_count":11},{"key_as_string":"2017-02-07T13:53:00.000Z","key":1486475580000,"doc_count":15},{"key_as_string":"2017-02-07T13:54:00.000Z","key":1486475640000,"doc_count":13},{"key_as_string":"2017-02-07T13:55:00.000Z","key":1486475700000,"doc_count":14},{"key_as_string":"2017-02-07T13:56:00.000Z","key":1486475760000,"doc_count":18},{"key_as_string":"2017-02-07T13:57:00.000Z","key":1486475820000,"doc_count":6},{"key_as_string":"2017-02-07T13:58:00.000Z","key":1486475880000,"doc_count":19},{"key_as_string":"2017-02-07T13:59:00.000Z","key":1486475940000,"doc_count":13},{"key_as_string":"2017-02-07T14:00:00.000Z","key":1486476000000,"doc_count":9},{"key_as_string":"2017-02-07T14:01:00.000Z","key":1486476060000,"doc_count":10},{"key_as_string":"2017-02-07T14:02:00.000Z","key":1486476120000,"doc_count":14},{"key_as_string":"2017-02-07T14:03:00.000Z","key":1486476180000,"doc_count":13},{"key_as_string":"2017-02-07T14:04:00.000Z","key":1486476240000,"doc_count":19},{"key_as_string":"2017-02-07T14:05:00.000Z","key":1486476300000,"doc_count":15},{"key_as_string":"2017-02-07T14:06:00.000Z","key":1486476360000,"doc_count":12},{"key_as_string":"2017-02-07T14:07:00.000Z","key":1486476420000,"doc_count":11},{"key_as_string":"2017-02-07T14:08:00.000Z","key":1486476480000,"doc_count":15},{"key_as_string":"2017-02-07T14:09:00.000Z","key":1486476540000,"doc_count":10},{"key_as_string":"2017-02-07T14:10:00.000Z","key":1486476600000,"doc_count":13},{"key_as_string":"2017-02-07T14:11:00.000Z","key":1486476660000,"doc_count":18},{"key_as_string":"2017-02-07T14:12:00.000Z","key":1486476720000,"doc_count":10},{"key_as_string":"2017-02-07T14:13:00.000Z","key":1486476780000,"doc_count":13},{"key_as_string":"2017-02-07T14:14:00.000Z","key":1486476840000,"doc_count":15},{"key_as_string":"2017-02-07T14:15:00.000Z","key":1486476900000,"doc_count":18},{"key_as_string":"2017-02-07T14:16:00.000Z","key":1486476960000,"doc_count":14},{"key_as_string":"2017-02-07T14:17:00.000Z","key":1486477020000,"doc_count":13},{"key_as_string":"2017-02-07T14:18:00.000Z","key":1486477080000,"doc_count":12},{"key_as_string":"2017-02-07T14:19:00.000Z","key":1486477140000,"doc_count":18},{"key_as_string":"2017-02-07T14:20:00.000Z","key":1486477200000,"doc_count":13},{"key_as_string":"2017-02-07T14:21:00.000Z","key":1486477260000,"doc_count":14},{"key_as_string":"2017-02-07T14:22:00.000Z","key":1486477320000,"doc_count":8},{"key_as_string":"2017-02-07T14:23:00.000Z","key":1486477380000,"doc_count":16},{"key_as_string":"2017-02-07T14:24:00.000Z","key":1486477440000,"doc_count":12},{"key_as_string":"2017-02-07T14:25:00.000Z","key":1486477500000,"doc_count":17},{"key_as_string":"2017-02-07T14:26:00.000Z","key":1486477560000,"doc_count":11},{"key_as_string":"2017-02-07T14:27:00.000Z","key":1486477620000,"doc_count":17},{"key_as_string":"2017-02-07T14:28:00.000Z","key":1486477680000,"doc_count":17},{"key_as_string":"2017-02-07T14:29:00.000Z","key":1486477740000,"doc_count":14},{"key_as_string":"2017-02-07T14:30:00.000Z","key":1486477800000,"doc_count":15},{"key_as_string":"2017-02-07T14:31:00.000Z","key":1486477860000,"doc_count":13},{"key_as_string":"2017-02-07T14:32:00.000Z","key":1486477920000,"doc_count":9},{"key_as_string":"2017-02-07T14:33:00.000Z","key":1486477980000,"doc_count":17},{"key_as_string":"2017-02-07T14:34:00.000Z","key":1486478040000,"doc_count":12},{"key_as_string":"2017-02-07T14:35:00.000Z","key":1486478100000,"doc_count":14},{"key_as_string":"2017-02-07T14:36:00.000Z","key":1486478160000,"doc_count":14},{"key_as_string":"2017-02-07T14:37:00.000Z","key":1486478220000,"doc_count":13},{"key_as_string":"2017-02-07T14:38:00.000Z","key":1486478280000,"doc_count":13},{"key_as_string":"2017-02-07T14:39:00.000Z","key":1486478340000,"doc_count":11},{"key_as_string":"2017-02-07T14:40:00.000Z","key":1486478400000,"doc_count":20},{"key_as_string":"2017-02-07T14:41:00.000Z","key":1486478460000,"doc_count":12},{"key_as_string":"2017-02-07T14:42:00.000Z","key":1486478520000,"doc_count":14},{"key_as_string":"2017-02-07T14:43:00.000Z","key":1486478580000,"doc_count":14},{"key_as_string":"2017-02-07T14:44:00.000Z","key":1486478640000,"doc_count":13},{"key_as_string":"2017-02-07T14:45:00.000Z","key":1486478700000,"doc_count":16},{"key_as_string":"2017-02-07T14:46:00.000Z","key":1486478760000,"doc_count":16},{"key_as_string":"2017-02-07T14:47:00.000Z","key":1486478820000,"doc_count":12},{"key_as_string":"2017-02-07T14:48:00.000Z","key":1486478880000,"doc_count":11},{"key_as_string":"2017-02-07T14:49:00.000Z","key":1486478940000,"doc_count":16},{"key_as_string":"2017-02-07T14:50:00.000Z","key":1486479000000,"doc_count":12},{"key_as_string":"2017-02-07T14:51:00.000Z","key":1486479060000,"doc_count":9},{"key_as_string":"2017-02-07T14:52:00.000Z","key":1486479120000,"doc_count":13},{"key_as_string":"2017-02-07T14:53:00.000Z","key":1486479180000,"doc_count":12},{"key_as_string":"2017-02-07T14:54:00.000Z","key":1486479240000,"doc_count":19},{"key_as_string":"2017-02-07T14:55:00.000Z","key":1486479300000,"doc_count":10},{"key_as_string":"2017-02-07T14:56:00.000Z","key":1486479360000,"doc_count":15},{"key_as_string":"2017-02-07T14:57:00.000Z","key":1486479420000,"doc_count":16},{"key_as_string":"2017-02-07T14:58:00.000Z","key":1486479480000,"doc_count":14},{"key_as_string":"2017-02-07T14:59:00.000Z","key":1486479540000,"doc_count":12},{"key_as_string":"2017-02-07T15:00:00.000Z","key":1486479600000,"doc_count":14},{"key_as_string":"2017-02-07T15:01:00.000Z","key":1486479660000,"doc_count":12},{"key_as_string":"2017-02-07T15:02:00.000Z","key":1486479720000,"doc_count":11},{"key_as_string":"2017-02-07T15:03:00.000Z","key":1486479780000,"doc_count":13},{"key_as_string":"2017-02-07T15:04:00.000Z","key":1486479840000,"doc_count":14},{"key_as_string":"2017-02-07T15:05:00.000Z","key":1486479900000,"doc_count":10},{"key_as_string":"2017-02-07T15:06:00.000Z","key":1486479960000,"doc_count":9},{"key_as_string":"2017-02-07T15:07:00.000Z","key":1486480020000,"doc_count":10},{"key_as_string":"2017-02-07T15:08:00.000Z","key":1486480080000,"doc_count":15},{"key_as_string":"2017-02-07T15:09:00.000Z","key":1486480140000,"doc_count":13},{"key_as_string":"2017-02-07T15:10:00.000Z","key":1486480200000,"doc_count":12},{"key_as_string":"2017-02-07T15:11:00.000Z","key":1486480260000,"doc_count":13},{"key_as_string":"2017-02-07T15:12:00.000Z","key":1486480320000,"doc_count":12},{"key_as_string":"2017-02-07T15:13:00.000Z","key":1486480380000,"doc_count":13},{"key_as_string":"2017-02-07T15:14:00.000Z","key":1486480440000,"doc_count":15},{"key_as_string":"2017-02-07T15:15:00.000Z","key":1486480500000,"doc_count":15},{"key_as_string":"2017-02-07T15:16:00.000Z","key":1486480560000,"doc_count":14},{"key_as_string":"2017-02-07T15:17:00.000Z","key":1486480620000,"doc_count":7},{"key_as_string":"2017-02-07T15:18:00.000Z","key":1486480680000,"doc_count":16},{"key_as_string":"2017-02-07T15:19:00.000Z","key":1486480740000,"doc_count":13},{"key_as_string":"2017-02-07T15:20:00.000Z","key":1486480800000,"doc_count":14},{"key_as_string":"2017-02-07T15:21:00.000Z","key":1486480860000,"doc_count":13},{"key_as_string":"2017-02-07T15:22:00.000Z","key":1486480920000,"doc_count":12},{"key_as_string":"2017-02-07T15:23:00.000Z","key":1486480980000,"doc_count":16},{"key_as_string":"2017-02-07T15:24:00.000Z","key":1486481040000,"doc_count":15},{"key_as_string":"2017-02-07T15:25:00.000Z","key":1486481100000,"doc_count":8},{"key_as_string":"2017-02-07T15:26:00.000Z","key":1486481160000,"doc_count":15},{"key_as_string":"2017-02-07T15:27:00.000Z","key":1486481220000,"doc_count":11},{"key_as_string":"2017-02-07T15:28:00.000Z","key":1486481280000,"doc_count":14},{"key_as_string":"2017-02-07T15:29:00.000Z","key":1486481340000,"doc_count":14},{"key_as_string":"2017-02-07T15:30:00.000Z","key":1486481400000,"doc_count":12},{"key_as_string":"2017-02-07T15:31:00.000Z","key":1486481460000,"doc_count":19},{"key_as_string":"2017-02-07T15:32:00.000Z","key":1486481520000,"doc_count":15},{"key_as_string":"2017-02-07T15:33:00.000Z","key":1486481580000,"doc_count":15},{"key_as_string":"2017-02-07T15:34:00.000Z","key":1486481640000,"doc_count":11},{"key_as_string":"2017-02-07T15:35:00.000Z","key":1486481700000,"doc_count":14},{"key_as_string":"2017-02-07T15:36:00.000Z","key":1486481760000,"doc_count":13},{"key_as_string":"2017-02-07T15:37:00.000Z","key":1486481820000,"doc_count":18},{"key_as_string":"2017-02-07T15:38:00.000Z","key":1486481880000,"doc_count":8},{"key_as_string":"2017-02-07T15:39:00.000Z","key":1486481940000,"doc_count":14},{"key_as_string":"2017-02-07T15:40:00.000Z","key":1486482000000,"doc_count":11},{"key_as_string":"2017-02-07T15:41:00.000Z","key":1486482060000,"doc_count":10},{"key_as_string":"2017-02-07T15:42:00.000Z","key":1486482120000,"doc_count":10},{"key_as_string":"2017-02-07T15:43:00.000Z","key":1486482180000,"doc_count":14},{"key_as_string":"2017-02-07T15:44:00.000Z","key":1486482240000,"doc_count":10},{"key_as_string":"2017-02-07T15:45:00.000Z","key":1486482300000,"doc_count":13},{"key_as_string":"2017-02-07T15:46:00.000Z","key":1486482360000,"doc_count":15},{"key_as_string":"2017-02-07T15:47:00.000Z","key":1486482420000,"doc_count":11},{"key_as_string":"2017-02-07T15:48:00.000Z","key":1486482480000,"doc_count":13},{"key_as_string":"2017-02-07T15:49:00.000Z","key":1486482540000,"doc_count":10},{"key_as_string":"2017-02-07T15:50:00.000Z","key":1486482600000,"doc_count":17},{"key_as_string":"2017-02-07T15:51:00.000Z","key":1486482660000,"doc_count":11},{"key_as_string":"2017-02-07T15:52:00.000Z","key":1486482720000,"doc_count":15},{"key_as_string":"2017-02-07T15:53:00.000Z","key":1486482780000,"doc_count":10},{"key_as_string":"2017-02-07T15:54:00.000Z","key":1486482840000,"doc_count":11},{"key_as_string":"2017-02-07T15:55:00.000Z","key":1486482900000,"doc_count":14},{"key_as_string":"2017-02-07T15:56:00.000Z","key":1486482960000,"doc_count":16},{"key_as_string":"2017-02-07T15:57:00.000Z","key":1486483020000,"doc_count":15},{"key_as_string":"2017-02-07T15:58:00.000Z","key":1486483080000,"doc_count":13},{"key_as_string":"2017-02-07T15:59:00.000Z","key":1486483140000,"doc_count":10},{"key_as_string":"2017-02-07T16:00:00.000Z","key":1486483200000,"doc_count":18},{"key_as_string":"2017-02-07T16:01:00.000Z","key":1486483260000,"doc_count":11},{"key_as_string":"2017-02-07T16:02:00.000Z","key":1486483320000,"doc_count":14},{"key_as_string":"2017-02-07T16:03:00.000Z","key":1486483380000,"doc_count":16},{"key_as_string":"2017-02-07T16:04:00.000Z","key":1486483440000,"doc_count":10},{"key_as_string":"2017-02-07T16:05:00.000Z","key":1486483500000,"doc_count":12},{"key_as_string":"2017-02-07T16:06:00.000Z","key":1486483560000,"doc_count":11},{"key_as_string":"2017-02-07T16:07:00.000Z","key":1486483620000,"doc_count":14},{"key_as_string":"2017-02-07T16:08:00.000Z","key":1486483680000,"doc_count":12},{"key_as_string":"2017-02-07T16:09:00.000Z","key":1486483740000,"doc_count":8},{"key_as_string":"2017-02-07T16:10:00.000Z","key":1486483800000,"doc_count":13},{"key_as_string":"2017-02-07T16:11:00.000Z","key":1486483860000,"doc_count":15},{"key_as_string":"2017-02-07T16:12:00.000Z","key":1486483920000,"doc_count":9},{"key_as_string":"2017-02-07T16:13:00.000Z","key":1486483980000,"doc_count":14},{"key_as_string":"2017-02-07T16:14:00.000Z","key":1486484040000,"doc_count":11},{"key_as_string":"2017-02-07T16:15:00.000Z","key":1486484100000,"doc_count":10},{"key_as_string":"2017-02-07T16:16:00.000Z","key":1486484160000,"doc_count":14},{"key_as_string":"2017-02-07T16:17:00.000Z","key":1486484220000,"doc_count":10},{"key_as_string":"2017-02-07T16:18:00.000Z","key":1486484280000,"doc_count":10},{"key_as_string":"2017-02-07T16:19:00.000Z","key":1486484340000,"doc_count":17},{"key_as_string":"2017-02-07T16:20:00.000Z","key":1486484400000,"doc_count":11},{"key_as_string":"2017-02-07T16:21:00.000Z","key":1486484460000,"doc_count":14},{"key_as_string":"2017-02-07T16:22:00.000Z","key":1486484520000,"doc_count":15},{"key_as_string":"2017-02-07T16:23:00.000Z","key":1486484580000,"doc_count":8},{"key_as_string":"2017-02-07T16:24:00.000Z","key":1486484640000,"doc_count":14},{"key_as_string":"2017-02-07T16:25:00.000Z","key":1486484700000,"doc_count":10},{"key_as_string":"2017-02-07T16:26:00.000Z","key":1486484760000,"doc_count":10},{"key_as_string":"2017-02-07T16:27:00.000Z","key":1486484820000,"doc_count":14},{"key_as_string":"2017-02-07T16:28:00.000Z","key":1486484880000,"doc_count":19},{"key_as_string":"2017-02-07T16:29:00.000Z","key":1486484940000,"doc_count":9},{"key_as_string":"2017-02-07T16:30:00.000Z","key":1486485000000,"doc_count":15},{"key_as_string":"2017-02-07T16:31:00.000Z","key":1486485060000,"doc_count":13},{"key_as_string":"2017-02-07T16:32:00.000Z","key":1486485120000,"doc_count":10},{"key_as_string":"2017-02-07T16:33:00.000Z","key":1486485180000,"doc_count":12},{"key_as_string":"2017-02-07T16:34:00.000Z","key":1486485240000,"doc_count":12},{"key_as_string":"2017-02-07T16:35:00.000Z","key":1486485300000,"doc_count":17},{"key_as_string":"2017-02-07T16:36:00.000Z","key":1486485360000,"doc_count":8},{"key_as_string":"2017-02-07T16:37:00.000Z","key":1486485420000,"doc_count":17},{"key_as_string":"2017-02-07T16:38:00.000Z","key":1486485480000,"doc_count":13},{"key_as_string":"2017-02-07T16:39:00.000Z","key":1486485540000,"doc_count":7},{"key_as_string":"2017-02-07T16:40:00.000Z","key":1486485600000,"doc_count":11},{"key_as_string":"2017-02-07T16:41:00.000Z","key":1486485660000,"doc_count":14},{"key_as_string":"2017-02-07T16:42:00.000Z","key":1486485720000,"doc_count":16},{"key_as_string":"2017-02-07T16:43:00.000Z","key":1486485780000,"doc_count":11},{"key_as_string":"2017-02-07T16:44:00.000Z","key":1486485840000,"doc_count":15},{"key_as_string":"2017-02-07T16:45:00.000Z","key":1486485900000,"doc_count":15},{"key_as_string":"2017-02-07T16:46:00.000Z","key":1486485960000,"doc_count":11},{"key_as_string":"2017-02-07T16:47:00.000Z","key":1486486020000,"doc_count":11},{"key_as_string":"2017-02-07T16:48:00.000Z","key":1486486080000,"doc_count":12},{"key_as_string":"2017-02-07T16:49:00.000Z","key":1486486140000,"doc_count":12},{"key_as_string":"2017-02-07T16:50:00.000Z","key":1486486200000,"doc_count":11},{"key_as_string":"2017-02-07T16:51:00.000Z","key":1486486260000,"doc_count":12},{"key_as_string":"2017-02-07T16:52:00.000Z","key":1486486320000,"doc_count":12},{"key_as_string":"2017-02-07T16:53:00.000Z","key":1486486380000,"doc_count":14},{"key_as_string":"2017-02-07T16:54:00.000Z","key":1486486440000,"doc_count":10},{"key_as_string":"2017-02-07T16:55:00.000Z","key":1486486500000,"doc_count":12},{"key_as_string":"2017-02-07T16:56:00.000Z","key":1486486560000,"doc_count":15},{"key_as_string":"2017-02-07T16:57:00.000Z","key":1486486620000,"doc_count":14},{"key_as_string":"2017-02-07T16:58:00.000Z","key":1486486680000,"doc_count":9},{"key_as_string":"2017-02-07T16:59:00.000Z","key":1486486740000,"doc_count":15},{"key_as_string":"2017-02-07T17:00:00.000Z","key":1486486800000,"doc_count":10},{"key_as_string":"2017-02-07T17:01:00.000Z","key":1486486860000,"doc_count":9},{"key_as_string":"2017-02-07T17:02:00.000Z","key":1486486920000,"doc_count":15},{"key_as_string":"2017-02-07T17:03:00.000Z","key":1486486980000,"doc_count":11},{"key_as_string":"2017-02-07T17:04:00.000Z","key":1486487040000,"doc_count":11},{"key_as_string":"2017-02-07T17:05:00.000Z","key":1486487100000,"doc_count":6},{"key_as_string":"2017-02-07T17:06:00.000Z","key":1486487160000,"doc_count":20},{"key_as_string":"2017-02-07T17:07:00.000Z","key":1486487220000,"doc_count":12},{"key_as_string":"2017-02-07T17:08:00.000Z","key":1486487280000,"doc_count":10},{"key_as_string":"2017-02-07T17:09:00.000Z","key":1486487340000,"doc_count":15},{"key_as_string":"2017-02-07T17:10:00.000Z","key":1486487400000,"doc_count":15},{"key_as_string":"2017-02-07T17:11:00.000Z","key":1486487460000,"doc_count":12},{"key_as_string":"2017-02-07T17:12:00.000Z","key":1486487520000,"doc_count":10},{"key_as_string":"2017-02-07T17:13:00.000Z","key":1486487580000,"doc_count":14},{"key_as_string":"2017-02-07T17:14:00.000Z","key":1486487640000,"doc_count":11},{"key_as_string":"2017-02-07T17:15:00.000Z","key":1486487700000,"doc_count":15},{"key_as_string":"2017-02-07T17:16:00.000Z","key":1486487760000,"doc_count":9},{"key_as_string":"2017-02-07T17:17:00.000Z","key":1486487820000,"doc_count":15},{"key_as_string":"2017-02-07T17:18:00.000Z","key":1486487880000,"doc_count":10},{"key_as_string":"2017-02-07T17:19:00.000Z","key":1486487940000,"doc_count":15},{"key_as_string":"2017-02-07T17:20:00.000Z","key":1486488000000,"doc_count":8},{"key_as_string":"2017-02-07T17:21:00.000Z","key":1486488060000,"doc_count":9},{"key_as_string":"2017-02-07T17:22:00.000Z","key":1486488120000,"doc_count":13},{"key_as_string":"2017-02-07T17:23:00.000Z","key":1486488180000,"doc_count":12},{"key_as_string":"2017-02-07T17:24:00.000Z","key":1486488240000,"doc_count":12},{"key_as_string":"2017-02-07T17:25:00.000Z","key":1486488300000,"doc_count":13},{"key_as_string":"2017-02-07T17:26:00.000Z","key":1486488360000,"doc_count":12},{"key_as_string":"2017-02-07T17:27:00.000Z","key":1486488420000,"doc_count":13},{"key_as_string":"2017-02-07T17:28:00.000Z","key":1486488480000,"doc_count":13},{"key_as_string":"2017-02-07T17:29:00.000Z","key":1486488540000,"doc_count":13},{"key_as_string":"2017-02-07T17:30:00.000Z","key":1486488600000,"doc_count":15},{"key_as_string":"2017-02-07T17:31:00.000Z","key":1486488660000,"doc_count":11},{"key_as_string":"2017-02-07T17:32:00.000Z","key":1486488720000,"doc_count":10},{"key_as_string":"2017-02-07T17:33:00.000Z","key":1486488780000,"doc_count":10},{"key_as_string":"2017-02-07T17:34:00.000Z","key":1486488840000,"doc_count":10},{"key_as_string":"2017-02-07T17:35:00.000Z","key":1486488900000,"doc_count":12},{"key_as_string":"2017-02-07T17:36:00.000Z","key":1486488960000,"doc_count":15},{"key_as_string":"2017-02-07T17:37:00.000Z","key":1486489020000,"doc_count":8},{"key_as_string":"2017-02-07T17:38:00.000Z","key":1486489080000,"doc_count":15},{"key_as_string":"2017-02-07T17:39:00.000Z","key":1486489140000,"doc_count":11},{"key_as_string":"2017-02-07T17:40:00.000Z","key":1486489200000,"doc_count":8},{"key_as_string":"2017-02-07T17:41:00.000Z","key":1486489260000,"doc_count":17},{"key_as_string":"2017-02-07T17:42:00.000Z","key":1486489320000,"doc_count":16},{"key_as_string":"2017-02-07T17:43:00.000Z","key":1486489380000,"doc_count":12},{"key_as_string":"2017-02-07T17:44:00.000Z","key":1486489440000,"doc_count":8},{"key_as_string":"2017-02-07T17:45:00.000Z","key":1486489500000,"doc_count":12},{"key_as_string":"2017-02-07T17:46:00.000Z","key":1486489560000,"doc_count":13},{"key_as_string":"2017-02-07T17:47:00.000Z","key":1486489620000,"doc_count":8},{"key_as_string":"2017-02-07T17:48:00.000Z","key":1486489680000,"doc_count":7},{"key_as_string":"2017-02-07T17:49:00.000Z","key":1486489740000,"doc_count":16},{"key_as_string":"2017-02-07T17:50:00.000Z","key":1486489800000,"doc_count":13},{"key_as_string":"2017-02-07T17:51:00.000Z","key":1486489860000,"doc_count":11},{"key_as_string":"2017-02-07T17:52:00.000Z","key":1486489920000,"doc_count":14},{"key_as_string":"2017-02-07T17:53:00.000Z","key":1486489980000,"doc_count":8},{"key_as_string":"2017-02-07T17:54:00.000Z","key":1486490040000,"doc_count":10},{"key_as_string":"2017-02-07T17:55:00.000Z","key":1486490100000,"doc_count":12},{"key_as_string":"2017-02-07T17:56:00.000Z","key":1486490160000,"doc_count":11},{"key_as_string":"2017-02-07T17:57:00.000Z","key":1486490220000,"doc_count":9},{"key_as_string":"2017-02-07T17:58:00.000Z","key":1486490280000,"doc_count":10},{"key_as_string":"2017-02-07T17:59:00.000Z","key":1486490340000,"doc_count":11},{"key_as_string":"2017-02-07T18:00:00.000Z","key":1486490400000,"doc_count":8},{"key_as_string":"2017-02-07T18:01:00.000Z","key":1486490460000,"doc_count":13},{"key_as_string":"2017-02-07T18:02:00.000Z","key":1486490520000,"doc_count":19},{"key_as_string":"2017-02-07T18:03:00.000Z","key":1486490580000,"doc_count":7},{"key_as_string":"2017-02-07T18:04:00.000Z","key":1486490640000,"doc_count":11},{"key_as_string":"2017-02-07T18:05:00.000Z","key":1486490700000,"doc_count":11},{"key_as_string":"2017-02-07T18:06:00.000Z","key":1486490760000,"doc_count":9},{"key_as_string":"2017-02-07T18:07:00.000Z","key":1486490820000,"doc_count":16},{"key_as_string":"2017-02-07T18:08:00.000Z","key":1486490880000,"doc_count":13},{"key_as_string":"2017-02-07T18:09:00.000Z","key":1486490940000,"doc_count":9},{"key_as_string":"2017-02-07T18:10:00.000Z","key":1486491000000,"doc_count":14},{"key_as_string":"2017-02-07T18:11:00.000Z","key":1486491060000,"doc_count":9},{"key_as_string":"2017-02-07T18:12:00.000Z","key":1486491120000,"doc_count":12},{"key_as_string":"2017-02-07T18:13:00.000Z","key":1486491180000,"doc_count":12},{"key_as_string":"2017-02-07T18:14:00.000Z","key":1486491240000,"doc_count":10},{"key_as_string":"2017-02-07T18:15:00.000Z","key":1486491300000,"doc_count":13},{"key_as_string":"2017-02-07T18:16:00.000Z","key":1486491360000,"doc_count":11},{"key_as_string":"2017-02-07T18:17:00.000Z","key":1486491420000,"doc_count":13},{"key_as_string":"2017-02-07T18:18:00.000Z","key":1486491480000,"doc_count":10},{"key_as_string":"2017-02-07T18:19:00.000Z","key":1486491540000,"doc_count":10},{"key_as_string":"2017-02-07T18:20:00.000Z","key":1486491600000,"doc_count":8},{"key_as_string":"2017-02-07T18:21:00.000Z","key":1486491660000,"doc_count":15},{"key_as_string":"2017-02-07T18:22:00.000Z","key":1486491720000,"doc_count":16},{"key_as_string":"2017-02-07T18:23:00.000Z","key":1486491780000,"doc_count":14},{"key_as_string":"2017-02-07T18:24:00.000Z","key":1486491840000,"doc_count":17},{"key_as_string":"2017-02-07T18:25:00.000Z","key":1486491900000,"doc_count":11},{"key_as_string":"2017-02-07T18:26:00.000Z","key":1486491960000,"doc_count":13},{"key_as_string":"2017-02-07T18:27:00.000Z","key":1486492020000,"doc_count":15},{"key_as_string":"2017-02-07T18:28:00.000Z","key":1486492080000,"doc_count":13},{"key_as_string":"2017-02-07T18:29:00.000Z","key":1486492140000,"doc_count":13},{"key_as_string":"2017-02-07T18:30:00.000Z","key":1486492200000,"doc_count":12},{"key_as_string":"2017-02-07T18:31:00.000Z","key":1486492260000,"doc_count":14},{"key_as_string":"2017-02-07T18:32:00.000Z","key":1486492320000,"doc_count":13},{"key_as_string":"2017-02-07T18:33:00.000Z","key":1486492380000,"doc_count":6},{"key_as_string":"2017-02-07T18:34:00.000Z","key":1486492440000,"doc_count":14},{"key_as_string":"2017-02-07T18:35:00.000Z","key":1486492500000,"doc_count":14},{"key_as_string":"2017-02-07T18:36:00.000Z","key":1486492560000,"doc_count":9},{"key_as_string":"2017-02-07T18:37:00.000Z","key":1486492620000,"doc_count":12},{"key_as_string":"2017-02-07T18:38:00.000Z","key":1486492680000,"doc_count":8},{"key_as_string":"2017-02-07T18:39:00.000Z","key":1486492740000,"doc_count":13},{"key_as_string":"2017-02-07T18:40:00.000Z","key":1486492800000,"doc_count":6},{"key_as_string":"2017-02-07T18:41:00.000Z","key":1486492860000,"doc_count":16},{"key_as_string":"2017-02-07T18:42:00.000Z","key":1486492920000,"doc_count":12},{"key_as_string":"2017-02-07T18:43:00.000Z","key":1486492980000,"doc_count":9},{"key_as_string":"2017-02-07T18:44:00.000Z","key":1486493040000,"doc_count":14},{"key_as_string":"2017-02-07T18:45:00.000Z","key":1486493100000,"doc_count":14},{"key_as_string":"2017-02-07T18:46:00.000Z","key":1486493160000,"doc_count":8},{"key_as_string":"2017-02-07T18:47:00.000Z","key":1486493220000,"doc_count":12},{"key_as_string":"2017-02-07T18:48:00.000Z","key":1486493280000,"doc_count":11},{"key_as_string":"2017-02-07T18:49:00.000Z","key":1486493340000,"doc_count":14},{"key_as_string":"2017-02-07T18:50:00.000Z","key":1486493400000,"doc_count":10},{"key_as_string":"2017-02-07T18:51:00.000Z","key":1486493460000,"doc_count":11},{"key_as_string":"2017-02-07T18:52:00.000Z","key":1486493520000,"doc_count":17},{"key_as_string":"2017-02-07T18:53:00.000Z","key":1486493580000,"doc_count":11},{"key_as_string":"2017-02-07T18:54:00.000Z","key":1486493640000,"doc_count":12},{"key_as_string":"2017-02-07T18:55:00.000Z","key":1486493700000,"doc_count":10},{"key_as_string":"2017-02-07T18:56:00.000Z","key":1486493760000,"doc_count":10},{"key_as_string":"2017-02-07T18:57:00.000Z","key":1486493820000,"doc_count":11},{"key_as_string":"2017-02-07T18:58:00.000Z","key":1486493880000,"doc_count":11},{"key_as_string":"2017-02-07T18:59:00.000Z","key":1486493940000,"doc_count":13},{"key_as_string":"2017-02-07T19:00:00.000Z","key":1486494000000,"doc_count":9},{"key_as_string":"2017-02-07T19:01:00.000Z","key":1486494060000,"doc_count":15},{"key_as_string":"2017-02-07T19:02:00.000Z","key":1486494120000,"doc_count":10},{"key_as_string":"2017-02-07T19:03:00.000Z","key":1486494180000,"doc_count":11},{"key_as_string":"2017-02-07T19:04:00.000Z","key":1486494240000,"doc_count":10},{"key_as_string":"2017-02-07T19:05:00.000Z","key":1486494300000,"doc_count":10},{"key_as_string":"2017-02-07T19:06:00.000Z","key":1486494360000,"doc_count":15},{"key_as_string":"2017-02-07T19:07:00.000Z","key":1486494420000,"doc_count":14},{"key_as_string":"2017-02-07T19:08:00.000Z","key":1486494480000,"doc_count":7},{"key_as_string":"2017-02-07T19:09:00.000Z","key":1486494540000,"doc_count":14},{"key_as_string":"2017-02-07T19:10:00.000Z","key":1486494600000,"doc_count":8},{"key_as_string":"2017-02-07T19:11:00.000Z","key":1486494660000,"doc_count":11},{"key_as_string":"2017-02-07T19:12:00.000Z","key":1486494720000,"doc_count":10},{"key_as_string":"2017-02-07T19:13:00.000Z","key":1486494780000,"doc_count":11},{"key_as_string":"2017-02-07T19:14:00.000Z","key":1486494840000,"doc_count":13},{"key_as_string":"2017-02-07T19:15:00.000Z","key":1486494900000,"doc_count":16},{"key_as_string":"2017-02-07T19:16:00.000Z","key":1486494960000,"doc_count":5},{"key_as_string":"2017-02-07T19:17:00.000Z","key":1486495020000,"doc_count":14},{"key_as_string":"2017-02-07T19:18:00.000Z","key":1486495080000,"doc_count":13},{"key_as_string":"2017-02-07T19:19:00.000Z","key":1486495140000,"doc_count":10},{"key_as_string":"2017-02-07T19:20:00.000Z","key":1486495200000,"doc_count":13},{"key_as_string":"2017-02-07T19:21:00.000Z","key":1486495260000,"doc_count":10},{"key_as_string":"2017-02-07T19:22:00.000Z","key":1486495320000,"doc_count":12},{"key_as_string":"2017-02-07T19:23:00.000Z","key":1486495380000,"doc_count":13},{"key_as_string":"2017-02-07T19:24:00.000Z","key":1486495440000,"doc_count":10},{"key_as_string":"2017-02-07T19:25:00.000Z","key":1486495500000,"doc_count":10},{"key_as_string":"2017-02-07T19:26:00.000Z","key":1486495560000,"doc_count":11},{"key_as_string":"2017-02-07T19:27:00.000Z","key":1486495620000,"doc_count":9},{"key_as_string":"2017-02-07T19:28:00.000Z","key":1486495680000,"doc_count":10},{"key_as_string":"2017-02-07T19:29:00.000Z","key":1486495740000,"doc_count":14},{"key_as_string":"2017-02-07T19:30:00.000Z","key":1486495800000,"doc_count":14},{"key_as_string":"2017-02-07T19:31:00.000Z","key":1486495860000,"doc_count":12},{"key_as_string":"2017-02-07T19:32:00.000Z","key":1486495920000,"doc_count":6},{"key_as_string":"2017-02-07T19:33:00.000Z","key":1486495980000,"doc_count":11},{"key_as_string":"2017-02-07T19:34:00.000Z","key":1486496040000,"doc_count":12},{"key_as_string":"2017-02-07T19:35:00.000Z","key":1486496100000,"doc_count":9},{"key_as_string":"2017-02-07T19:36:00.000Z","key":1486496160000,"doc_count":11},{"key_as_string":"2017-02-07T19:37:00.000Z","key":1486496220000,"doc_count":14},{"key_as_string":"2017-02-07T19:38:00.000Z","key":1486496280000,"doc_count":9},{"key_as_string":"2017-02-07T19:39:00.000Z","key":1486496340000,"doc_count":10},{"key_as_string":"2017-02-07T19:40:00.000Z","key":1486496400000,"doc_count":10},{"key_as_string":"2017-02-07T19:41:00.000Z","key":1486496460000,"doc_count":9},{"key_as_string":"2017-02-07T19:42:00.000Z","key":1486496520000,"doc_count":12},{"key_as_string":"2017-02-07T19:43:00.000Z","key":1486496580000,"doc_count":10},{"key_as_string":"2017-02-07T19:44:00.000Z","key":1486496640000,"doc_count":10},{"key_as_string":"2017-02-07T19:45:00.000Z","key":1486496700000,"doc_count":14},{"key_as_string":"2017-02-07T19:46:00.000Z","key":1486496760000,"doc_count":7},{"key_as_string":"2017-02-07T19:47:00.000Z","key":1486496820000,"doc_count":14},{"key_as_string":"2017-02-07T19:48:00.000Z","key":1486496880000,"doc_count":12},{"key_as_string":"2017-02-07T19:49:00.000Z","key":1486496940000,"doc_count":8},{"key_as_string":"2017-02-07T19:50:00.000Z","key":1486497000000,"doc_count":14},{"key_as_string":"2017-02-07T19:51:00.000Z","key":1486497060000,"doc_count":7},{"key_as_string":"2017-02-07T19:52:00.000Z","key":1486497120000,"doc_count":14},{"key_as_string":"2017-02-07T19:53:00.000Z","key":1486497180000,"doc_count":10},{"key_as_string":"2017-02-07T19:54:00.000Z","key":1486497240000,"doc_count":9},{"key_as_string":"2017-02-07T19:55:00.000Z","key":1486497300000,"doc_count":13},{"key_as_string":"2017-02-07T19:56:00.000Z","key":1486497360000,"doc_count":6},{"key_as_string":"2017-02-07T19:57:00.000Z","key":1486497420000,"doc_count":7},{"key_as_string":"2017-02-07T19:58:00.000Z","key":1486497480000,"doc_count":13},{"key_as_string":"2017-02-07T19:59:00.000Z","key":1486497540000,"doc_count":14},{"key_as_string":"2017-02-07T20:00:00.000Z","key":1486497600000,"doc_count":9},{"key_as_string":"2017-02-07T20:01:00.000Z","key":1486497660000,"doc_count":12},{"key_as_string":"2017-02-07T20:02:00.000Z","key":1486497720000,"doc_count":9},{"key_as_string":"2017-02-07T20:03:00.000Z","key":1486497780000,"doc_count":11},{"key_as_string":"2017-02-07T20:04:00.000Z","key":1486497840000,"doc_count":12},{"key_as_string":"2017-02-07T20:05:00.000Z","key":1486497900000,"doc_count":15},{"key_as_string":"2017-02-07T20:06:00.000Z","key":1486497960000,"doc_count":8},{"key_as_string":"2017-02-07T20:07:00.000Z","key":1486498020000,"doc_count":3},{"key_as_string":"2017-02-07T20:08:00.000Z","key":1486498080000,"doc_count":12},{"key_as_string":"2017-02-07T20:09:00.000Z","key":1486498140000,"doc_count":12},{"key_as_string":"2017-02-07T20:10:00.000Z","key":1486498200000,"doc_count":10},{"key_as_string":"2017-02-07T20:11:00.000Z","key":1486498260000,"doc_count":16},{"key_as_string":"2017-02-07T20:12:00.000Z","key":1486498320000,"doc_count":12},{"key_as_string":"2017-02-07T20:13:00.000Z","key":1486498380000,"doc_count":6},{"key_as_string":"2017-02-07T20:14:00.000Z","key":1486498440000,"doc_count":12},{"key_as_string":"2017-02-07T20:15:00.000Z","key":1486498500000,"doc_count":7},{"key_as_string":"2017-02-07T20:16:00.000Z","key":1486498560000,"doc_count":12},{"key_as_string":"2017-02-07T20:17:00.000Z","key":1486498620000,"doc_count":9},{"key_as_string":"2017-02-07T20:18:00.000Z","key":1486498680000,"doc_count":13},{"key_as_string":"2017-02-07T20:19:00.000Z","key":1486498740000,"doc_count":11},{"key_as_string":"2017-02-07T20:20:00.000Z","key":1486498800000,"doc_count":8},{"key_as_string":"2017-02-07T20:21:00.000Z","key":1486498860000,"doc_count":11},{"key_as_string":"2017-02-07T20:22:00.000Z","key":1486498920000,"doc_count":7},{"key_as_string":"2017-02-07T20:23:00.000Z","key":1486498980000,"doc_count":11},{"key_as_string":"2017-02-07T20:24:00.000Z","key":1486499040000,"doc_count":11},{"key_as_string":"2017-02-07T20:25:00.000Z","key":1486499100000,"doc_count":7},{"key_as_string":"2017-02-07T20:26:00.000Z","key":1486499160000,"doc_count":11},{"key_as_string":"2017-02-07T20:27:00.000Z","key":1486499220000,"doc_count":12},{"key_as_string":"2017-02-07T20:28:00.000Z","key":1486499280000,"doc_count":13},{"key_as_string":"2017-02-07T20:29:00.000Z","key":1486499340000,"doc_count":11},{"key_as_string":"2017-02-07T20:30:00.000Z","key":1486499400000,"doc_count":6},{"key_as_string":"2017-02-07T20:31:00.000Z","key":1486499460000,"doc_count":12},{"key_as_string":"2017-02-07T20:32:00.000Z","key":1486499520000,"doc_count":9},{"key_as_string":"2017-02-07T20:33:00.000Z","key":1486499580000,"doc_count":13},{"key_as_string":"2017-02-07T20:34:00.000Z","key":1486499640000,"doc_count":11},{"key_as_string":"2017-02-07T20:35:00.000Z","key":1486499700000,"doc_count":16},{"key_as_string":"2017-02-07T20:36:00.000Z","key":1486499760000,"doc_count":9},{"key_as_string":"2017-02-07T20:37:00.000Z","key":1486499820000,"doc_count":7},{"key_as_string":"2017-02-07T20:38:00.000Z","key":1486499880000,"doc_count":14},{"key_as_string":"2017-02-07T20:39:00.000Z","key":1486499940000,"doc_count":10},{"key_as_string":"2017-02-07T20:40:00.000Z","key":1486500000000,"doc_count":9},{"key_as_string":"2017-02-07T20:41:00.000Z","key":1486500060000,"doc_count":11},{"key_as_string":"2017-02-07T20:42:00.000Z","key":1486500120000,"doc_count":15},{"key_as_string":"2017-02-07T20:43:00.000Z","key":1486500180000,"doc_count":8},{"key_as_string":"2017-02-07T20:44:00.000Z","key":1486500240000,"doc_count":16},{"key_as_string":"2017-02-07T20:45:00.000Z","key":1486500300000,"doc_count":8},{"key_as_string":"2017-02-07T20:46:00.000Z","key":1486500360000,"doc_count":12},{"key_as_string":"2017-02-07T20:47:00.000Z","key":1486500420000,"doc_count":11},{"key_as_string":"2017-02-07T20:48:00.000Z","key":1486500480000,"doc_count":6},{"key_as_string":"2017-02-07T20:49:00.000Z","key":1486500540000,"doc_count":10},{"key_as_string":"2017-02-07T20:50:00.000Z","key":1486500600000,"doc_count":8},{"key_as_string":"2017-02-07T20:51:00.000Z","key":1486500660000,"doc_count":15},{"key_as_string":"2017-02-07T20:52:00.000Z","key":1486500720000,"doc_count":9},{"key_as_string":"2017-02-07T20:53:00.000Z","key":1486500780000,"doc_count":11},{"key_as_string":"2017-02-07T20:54:00.000Z","key":1486500840000,"doc_count":13},{"key_as_string":"2017-02-07T20:55:00.000Z","key":1486500900000,"doc_count":9},{"key_as_string":"2017-02-07T20:56:00.000Z","key":1486500960000,"doc_count":5},{"key_as_string":"2017-02-07T20:57:00.000Z","key":1486501020000,"doc_count":10},{"key_as_string":"2017-02-07T20:58:00.000Z","key":1486501080000,"doc_count":13},{"key_as_string":"2017-02-07T20:59:00.000Z","key":1486501140000,"doc_count":14},{"key_as_string":"2017-02-07T21:00:00.000Z","key":1486501200000,"doc_count":13},{"key_as_string":"2017-02-07T21:01:00.000Z","key":1486501260000,"doc_count":8},{"key_as_string":"2017-02-07T21:02:00.000Z","key":1486501320000,"doc_count":11},{"key_as_string":"2017-02-07T21:03:00.000Z","key":1486501380000,"doc_count":9},{"key_as_string":"2017-02-07T21:04:00.000Z","key":1486501440000,"doc_count":16},{"key_as_string":"2017-02-07T21:05:00.000Z","key":1486501500000,"doc_count":10},{"key_as_string":"2017-02-07T21:06:00.000Z","key":1486501560000,"doc_count":8},{"key_as_string":"2017-02-07T21:07:00.000Z","key":1486501620000,"doc_count":16},{"key_as_string":"2017-02-07T21:08:00.000Z","key":1486501680000,"doc_count":13},{"key_as_string":"2017-02-07T21:09:00.000Z","key":1486501740000,"doc_count":10},{"key_as_string":"2017-02-07T21:10:00.000Z","key":1486501800000,"doc_count":11},{"key_as_string":"2017-02-07T21:11:00.000Z","key":1486501860000,"doc_count":8},{"key_as_string":"2017-02-07T21:12:00.000Z","key":1486501920000,"doc_count":12},{"key_as_string":"2017-02-07T21:13:00.000Z","key":1486501980000,"doc_count":17},{"key_as_string":"2017-02-07T21:14:00.000Z","key":1486502040000,"doc_count":6},{"key_as_string":"2017-02-07T21:15:00.000Z","key":1486502100000,"doc_count":12},{"key_as_string":"2017-02-07T21:16:00.000Z","key":1486502160000,"doc_count":9},{"key_as_string":"2017-02-07T21:17:00.000Z","key":1486502220000,"doc_count":8},{"key_as_string":"2017-02-07T21:18:00.000Z","key":1486502280000,"doc_count":8},{"key_as_string":"2017-02-07T21:19:00.000Z","key":1486502340000,"doc_count":11},{"key_as_string":"2017-02-07T21:20:00.000Z","key":1486502400000,"doc_count":11},{"key_as_string":"2017-02-07T21:21:00.000Z","key":1486502460000,"doc_count":10},{"key_as_string":"2017-02-07T21:22:00.000Z","key":1486502520000,"doc_count":10},{"key_as_string":"2017-02-07T21:23:00.000Z","key":1486502580000,"doc_count":13},{"key_as_string":"2017-02-07T21:24:00.000Z","key":1486502640000,"doc_count":10},{"key_as_string":"2017-02-07T21:25:00.000Z","key":1486502700000,"doc_count":11},{"key_as_string":"2017-02-07T21:26:00.000Z","key":1486502760000,"doc_count":7},{"key_as_string":"2017-02-07T21:27:00.000Z","key":1486502820000,"doc_count":15},{"key_as_string":"2017-02-07T21:28:00.000Z","key":1486502880000,"doc_count":14},{"key_as_string":"2017-02-07T21:29:00.000Z","key":1486502940000,"doc_count":8},{"key_as_string":"2017-02-07T21:30:00.000Z","key":1486503000000,"doc_count":7},{"key_as_string":"2017-02-07T21:31:00.000Z","key":1486503060000,"doc_count":12},{"key_as_string":"2017-02-07T21:32:00.000Z","key":1486503120000,"doc_count":10},{"key_as_string":"2017-02-07T21:33:00.000Z","key":1486503180000,"doc_count":10},{"key_as_string":"2017-02-07T21:34:00.000Z","key":1486503240000,"doc_count":14},{"key_as_string":"2017-02-07T21:35:00.000Z","key":1486503300000,"doc_count":9},{"key_as_string":"2017-02-07T21:36:00.000Z","key":1486503360000,"doc_count":9},{"key_as_string":"2017-02-07T21:37:00.000Z","key":1486503420000,"doc_count":13},{"key_as_string":"2017-02-07T21:38:00.000Z","key":1486503480000,"doc_count":7},{"key_as_string":"2017-02-07T21:39:00.000Z","key":1486503540000,"doc_count":6},{"key_as_string":"2017-02-07T21:40:00.000Z","key":1486503600000,"doc_count":16},{"key_as_string":"2017-02-07T21:41:00.000Z","key":1486503660000,"doc_count":13},{"key_as_string":"2017-02-07T21:42:00.000Z","key":1486503720000,"doc_count":9},{"key_as_string":"2017-02-07T21:43:00.000Z","key":1486503780000,"doc_count":10},{"key_as_string":"2017-02-07T21:44:00.000Z","key":1486503840000,"doc_count":9},{"key_as_string":"2017-02-07T21:45:00.000Z","key":1486503900000,"doc_count":10},{"key_as_string":"2017-02-07T21:46:00.000Z","key":1486503960000,"doc_count":13},{"key_as_string":"2017-02-07T21:47:00.000Z","key":1486504020000,"doc_count":11},{"key_as_string":"2017-02-07T21:48:00.000Z","key":1486504080000,"doc_count":8},{"key_as_string":"2017-02-07T21:49:00.000Z","key":1486504140000,"doc_count":11},{"key_as_string":"2017-02-07T21:50:00.000Z","key":1486504200000,"doc_count":14},{"key_as_string":"2017-02-07T21:51:00.000Z","key":1486504260000,"doc_count":7},{"key_as_string":"2017-02-07T21:52:00.000Z","key":1486504320000,"doc_count":11},{"key_as_string":"2017-02-07T21:53:00.000Z","key":1486504380000,"doc_count":9},{"key_as_string":"2017-02-07T21:54:00.000Z","key":1486504440000,"doc_count":10},{"key_as_string":"2017-02-07T21:55:00.000Z","key":1486504500000,"doc_count":11},{"key_as_string":"2017-02-07T21:56:00.000Z","key":1486504560000,"doc_count":12},{"key_as_string":"2017-02-07T21:57:00.000Z","key":1486504620000,"doc_count":14},{"key_as_string":"2017-02-07T21:58:00.000Z","key":1486504680000,"doc_count":9},{"key_as_string":"2017-02-07T21:59:00.000Z","key":1486504740000,"doc_count":7},{"key_as_string":"2017-02-07T22:00:00.000Z","key":1486504800000,"doc_count":14},{"key_as_string":"2017-02-07T22:01:00.000Z","key":1486504860000,"doc_count":12},{"key_as_string":"2017-02-07T22:02:00.000Z","key":1486504920000,"doc_count":7},{"key_as_string":"2017-02-07T22:03:00.000Z","key":1486504980000,"doc_count":16},{"key_as_string":"2017-02-07T22:04:00.000Z","key":1486505040000,"doc_count":9},{"key_as_string":"2017-02-07T22:05:00.000Z","key":1486505100000,"doc_count":10},{"key_as_string":"2017-02-07T22:06:00.000Z","key":1486505160000,"doc_count":11},{"key_as_string":"2017-02-07T22:07:00.000Z","key":1486505220000,"doc_count":16},{"key_as_string":"2017-02-07T22:08:00.000Z","key":1486505280000,"doc_count":9},{"key_as_string":"2017-02-07T22:09:00.000Z","key":1486505340000,"doc_count":7},{"key_as_string":"2017-02-07T22:10:00.000Z","key":1486505400000,"doc_count":15},{"key_as_string":"2017-02-07T22:11:00.000Z","key":1486505460000,"doc_count":12},{"key_as_string":"2017-02-07T22:12:00.000Z","key":1486505520000,"doc_count":8},{"key_as_string":"2017-02-07T22:13:00.000Z","key":1486505580000,"doc_count":12},{"key_as_string":"2017-02-07T22:14:00.000Z","key":1486505640000,"doc_count":15},{"key_as_string":"2017-02-07T22:15:00.000Z","key":1486505700000,"doc_count":10},{"key_as_string":"2017-02-07T22:16:00.000Z","key":1486505760000,"doc_count":11},{"key_as_string":"2017-02-07T22:17:00.000Z","key":1486505820000,"doc_count":6},{"key_as_string":"2017-02-07T22:18:00.000Z","key":1486505880000,"doc_count":13},{"key_as_string":"2017-02-07T22:19:00.000Z","key":1486505940000,"doc_count":8},{"key_as_string":"2017-02-07T22:20:00.000Z","key":1486506000000,"doc_count":5},{"key_as_string":"2017-02-07T22:21:00.000Z","key":1486506060000,"doc_count":15},{"key_as_string":"2017-02-07T22:22:00.000Z","key":1486506120000,"doc_count":10},{"key_as_string":"2017-02-07T22:23:00.000Z","key":1486506180000,"doc_count":10},{"key_as_string":"2017-02-07T22:24:00.000Z","key":1486506240000,"doc_count":14},{"key_as_string":"2017-02-07T22:25:00.000Z","key":1486506300000,"doc_count":8},{"key_as_string":"2017-02-07T22:26:00.000Z","key":1486506360000,"doc_count":12},{"key_as_string":"2017-02-07T22:27:00.000Z","key":1486506420000,"doc_count":6},{"key_as_string":"2017-02-07T22:28:00.000Z","key":1486506480000,"doc_count":12},{"key_as_string":"2017-02-07T22:29:00.000Z","key":1486506540000,"doc_count":14},{"key_as_string":"2017-02-07T22:30:00.000Z","key":1486506600000,"doc_count":8},{"key_as_string":"2017-02-07T22:31:00.000Z","key":1486506660000,"doc_count":10},{"key_as_string":"2017-02-07T22:32:00.000Z","key":1486506720000,"doc_count":15},{"key_as_string":"2017-02-07T22:33:00.000Z","key":1486506780000,"doc_count":9},{"key_as_string":"2017-02-07T22:34:00.000Z","key":1486506840000,"doc_count":7},{"key_as_string":"2017-02-07T22:35:00.000Z","key":1486506900000,"doc_count":12},{"key_as_string":"2017-02-07T22:36:00.000Z","key":1486506960000,"doc_count":9},{"key_as_string":"2017-02-07T22:37:00.000Z","key":1486507020000,"doc_count":15},{"key_as_string":"2017-02-07T22:38:00.000Z","key":1486507080000,"doc_count":6},{"key_as_string":"2017-02-07T22:39:00.000Z","key":1486507140000,"doc_count":12},{"key_as_string":"2017-02-07T22:40:00.000Z","key":1486507200000,"doc_count":13},{"key_as_string":"2017-02-07T22:41:00.000Z","key":1486507260000,"doc_count":8},{"key_as_string":"2017-02-07T22:42:00.000Z","key":1486507320000,"doc_count":13},{"key_as_string":"2017-02-07T22:43:00.000Z","key":1486507380000,"doc_count":7},{"key_as_string":"2017-02-07T22:44:00.000Z","key":1486507440000,"doc_count":10},{"key_as_string":"2017-02-07T22:45:00.000Z","key":1486507500000,"doc_count":7},{"key_as_string":"2017-02-07T22:46:00.000Z","key":1486507560000,"doc_count":9},{"key_as_string":"2017-02-07T22:47:00.000Z","key":1486507620000,"doc_count":12},{"key_as_string":"2017-02-07T22:48:00.000Z","key":1486507680000,"doc_count":9},{"key_as_string":"2017-02-07T22:49:00.000Z","key":1486507740000,"doc_count":6},{"key_as_string":"2017-02-07T22:50:00.000Z","key":1486507800000,"doc_count":12},{"key_as_string":"2017-02-07T22:51:00.000Z","key":1486507860000,"doc_count":12},{"key_as_string":"2017-02-07T22:52:00.000Z","key":1486507920000,"doc_count":9},{"key_as_string":"2017-02-07T22:53:00.000Z","key":1486507980000,"doc_count":10},{"key_as_string":"2017-02-07T22:54:00.000Z","key":1486508040000,"doc_count":12},{"key_as_string":"2017-02-07T22:55:00.000Z","key":1486508100000,"doc_count":8},{"key_as_string":"2017-02-07T22:56:00.000Z","key":1486508160000,"doc_count":9},{"key_as_string":"2017-02-07T22:57:00.000Z","key":1486508220000,"doc_count":10},{"key_as_string":"2017-02-07T22:58:00.000Z","key":1486508280000,"doc_count":13},{"key_as_string":"2017-02-07T22:59:00.000Z","key":1486508340000,"doc_count":12},{"key_as_string":"2017-02-07T23:00:00.000Z","key":1486508400000,"doc_count":9},{"key_as_string":"2017-02-07T23:01:00.000Z","key":1486508460000,"doc_count":9},{"key_as_string":"2017-02-07T23:02:00.000Z","key":1486508520000,"doc_count":10},{"key_as_string":"2017-02-07T23:03:00.000Z","key":1486508580000,"doc_count":14},{"key_as_string":"2017-02-07T23:04:00.000Z","key":1486508640000,"doc_count":9},{"key_as_string":"2017-02-07T23:05:00.000Z","key":1486508700000,"doc_count":11},{"key_as_string":"2017-02-07T23:06:00.000Z","key":1486508760000,"doc_count":10},{"key_as_string":"2017-02-07T23:07:00.000Z","key":1486508820000,"doc_count":16},{"key_as_string":"2017-02-07T23:08:00.000Z","key":1486508880000,"doc_count":12},{"key_as_string":"2017-02-07T23:09:00.000Z","key":1486508940000,"doc_count":11},{"key_as_string":"2017-02-07T23:10:00.000Z","key":1486509000000,"doc_count":9},{"key_as_string":"2017-02-07T23:11:00.000Z","key":1486509060000,"doc_count":13},{"key_as_string":"2017-02-07T23:12:00.000Z","key":1486509120000,"doc_count":5},{"key_as_string":"2017-02-07T23:13:00.000Z","key":1486509180000,"doc_count":9},{"key_as_string":"2017-02-07T23:14:00.000Z","key":1486509240000,"doc_count":11},{"key_as_string":"2017-02-07T23:15:00.000Z","key":1486509300000,"doc_count":14},{"key_as_string":"2017-02-07T23:16:00.000Z","key":1486509360000,"doc_count":11},{"key_as_string":"2017-02-07T23:17:00.000Z","key":1486509420000,"doc_count":8},{"key_as_string":"2017-02-07T23:18:00.000Z","key":1486509480000,"doc_count":12},{"key_as_string":"2017-02-07T23:19:00.000Z","key":1486509540000,"doc_count":8},{"key_as_string":"2017-02-07T23:20:00.000Z","key":1486509600000,"doc_count":7},{"key_as_string":"2017-02-07T23:21:00.000Z","key":1486509660000,"doc_count":13},{"key_as_string":"2017-02-07T23:22:00.000Z","key":1486509720000,"doc_count":13},{"key_as_string":"2017-02-07T23:23:00.000Z","key":1486509780000,"doc_count":5},{"key_as_string":"2017-02-07T23:24:00.000Z","key":1486509840000,"doc_count":13},{"key_as_string":"2017-02-07T23:25:00.000Z","key":1486509900000,"doc_count":5},{"key_as_string":"2017-02-07T23:26:00.000Z","key":1486509960000,"doc_count":11},{"key_as_string":"2017-02-07T23:27:00.000Z","key":1486510020000,"doc_count":11},{"key_as_string":"2017-02-07T23:28:00.000Z","key":1486510080000,"doc_count":12},{"key_as_string":"2017-02-07T23:29:00.000Z","key":1486510140000,"doc_count":5},{"key_as_string":"2017-02-07T23:30:00.000Z","key":1486510200000,"doc_count":11},{"key_as_string":"2017-02-07T23:31:00.000Z","key":1486510260000,"doc_count":6},{"key_as_string":"2017-02-07T23:32:00.000Z","key":1486510320000,"doc_count":15},{"key_as_string":"2017-02-07T23:33:00.000Z","key":1486510380000,"doc_count":13},{"key_as_string":"2017-02-07T23:34:00.000Z","key":1486510440000,"doc_count":15},{"key_as_string":"2017-02-07T23:35:00.000Z","key":1486510500000,"doc_count":8},{"key_as_string":"2017-02-07T23:36:00.000Z","key":1486510560000,"doc_count":11},{"key_as_string":"2017-02-07T23:37:00.000Z","key":1486510620000,"doc_count":15},{"key_as_string":"2017-02-07T23:38:00.000Z","key":1486510680000,"doc_count":7},{"key_as_string":"2017-02-07T23:39:00.000Z","key":1486510740000,"doc_count":11},{"key_as_string":"2017-02-07T23:40:00.000Z","key":1486510800000,"doc_count":7},{"key_as_string":"2017-02-07T23:41:00.000Z","key":1486510860000,"doc_count":9},{"key_as_string":"2017-02-07T23:42:00.000Z","key":1486510920000,"doc_count":11},{"key_as_string":"2017-02-07T23:43:00.000Z","key":1486510980000,"doc_count":12},{"key_as_string":"2017-02-07T23:44:00.000Z","key":1486511040000,"doc_count":19},{"key_as_string":"2017-02-07T23:45:00.000Z","key":1486511100000,"doc_count":6},{"key_as_string":"2017-02-07T23:46:00.000Z","key":1486511160000,"doc_count":12},{"key_as_string":"2017-02-07T23:47:00.000Z","key":1486511220000,"doc_count":7},{"key_as_string":"2017-02-07T23:48:00.000Z","key":1486511280000,"doc_count":19},{"key_as_string":"2017-02-07T23:49:00.000Z","key":1486511340000,"doc_count":4},{"key_as_string":"2017-02-07T23:50:00.000Z","key":1486511400000,"doc_count":15},{"key_as_string":"2017-02-07T23:51:00.000Z","key":1486511460000,"doc_count":9},{"key_as_string":"2017-02-07T23:52:00.000Z","key":1486511520000,"doc_count":7},{"key_as_string":"2017-02-07T23:53:00.000Z","key":1486511580000,"doc_count":11},{"key_as_string":"2017-02-07T23:54:00.000Z","key":1486511640000,"doc_count":11},{"key_as_string":"2017-02-07T23:55:00.000Z","key":1486511700000,"doc_count":10},{"key_as_string":"2017-02-07T23:56:00.000Z","key":1486511760000,"doc_count":7},{"key_as_string":"2017-02-07T23:57:00.000Z","key":1486511820000,"doc_count":16},{"key_as_string":"2017-02-07T23:58:00.000Z","key":1486511880000,"doc_count":9},{"key_as_string":"2017-02-07T23:59:00.000Z","key":1486511940000,"doc_count":13},{"key_as_string":"2017-02-08T00:00:00.000Z","key":1486512000000,"doc_count":11},{"key_as_string":"2017-02-08T00:01:00.000Z","key":1486512060000,"doc_count":8},{"key_as_string":"2017-02-08T00:02:00.000Z","key":1486512120000,"doc_count":11},{"key_as_string":"2017-02-08T00:03:00.000Z","key":1486512180000,"doc_count":11},{"key_as_string":"2017-02-08T00:04:00.000Z","key":1486512240000,"doc_count":10},{"key_as_string":"2017-02-08T00:05:00.000Z","key":1486512300000,"doc_count":11},{"key_as_string":"2017-02-08T00:06:00.000Z","key":1486512360000,"doc_count":9},{"key_as_string":"2017-02-08T00:07:00.000Z","key":1486512420000,"doc_count":10},{"key_as_string":"2017-02-08T00:08:00.000Z","key":1486512480000,"doc_count":9},{"key_as_string":"2017-02-08T00:09:00.000Z","key":1486512540000,"doc_count":12},{"key_as_string":"2017-02-08T00:10:00.000Z","key":1486512600000,"doc_count":7},{"key_as_string":"2017-02-08T00:11:00.000Z","key":1486512660000,"doc_count":14},{"key_as_string":"2017-02-08T00:12:00.000Z","key":1486512720000,"doc_count":10},{"key_as_string":"2017-02-08T00:13:00.000Z","key":1486512780000,"doc_count":8},{"key_as_string":"2017-02-08T00:14:00.000Z","key":1486512840000,"doc_count":7},{"key_as_string":"2017-02-08T00:15:00.000Z","key":1486512900000,"doc_count":10},{"key_as_string":"2017-02-08T00:16:00.000Z","key":1486512960000,"doc_count":12},{"key_as_string":"2017-02-08T00:17:00.000Z","key":1486513020000,"doc_count":13},{"key_as_string":"2017-02-08T00:18:00.000Z","key":1486513080000,"doc_count":7},{"key_as_string":"2017-02-08T00:19:00.000Z","key":1486513140000,"doc_count":7},{"key_as_string":"2017-02-08T00:20:00.000Z","key":1486513200000,"doc_count":7},{"key_as_string":"2017-02-08T00:21:00.000Z","key":1486513260000,"doc_count":9},{"key_as_string":"2017-02-08T00:22:00.000Z","key":1486513320000,"doc_count":13},{"key_as_string":"2017-02-08T00:23:00.000Z","key":1486513380000,"doc_count":10},{"key_as_string":"2017-02-08T00:24:00.000Z","key":1486513440000,"doc_count":8},{"key_as_string":"2017-02-08T00:25:00.000Z","key":1486513500000,"doc_count":13},{"key_as_string":"2017-02-08T00:26:00.000Z","key":1486513560000,"doc_count":10},{"key_as_string":"2017-02-08T00:27:00.000Z","key":1486513620000,"doc_count":8},{"key_as_string":"2017-02-08T00:28:00.000Z","key":1486513680000,"doc_count":15},{"key_as_string":"2017-02-08T00:29:00.000Z","key":1486513740000,"doc_count":7},{"key_as_string":"2017-02-08T00:30:00.000Z","key":1486513800000,"doc_count":9},{"key_as_string":"2017-02-08T00:31:00.000Z","key":1486513860000,"doc_count":13},{"key_as_string":"2017-02-08T00:32:00.000Z","key":1486513920000,"doc_count":8},{"key_as_string":"2017-02-08T00:33:00.000Z","key":1486513980000,"doc_count":12},{"key_as_string":"2017-02-08T00:34:00.000Z","key":1486514040000,"doc_count":13},{"key_as_string":"2017-02-08T00:35:00.000Z","key":1486514100000,"doc_count":9},{"key_as_string":"2017-02-08T00:36:00.000Z","key":1486514160000,"doc_count":12},{"key_as_string":"2017-02-08T00:37:00.000Z","key":1486514220000,"doc_count":9},{"key_as_string":"2017-02-08T00:38:00.000Z","key":1486514280000,"doc_count":9},{"key_as_string":"2017-02-08T00:39:00.000Z","key":1486514340000,"doc_count":16},{"key_as_string":"2017-02-08T00:40:00.000Z","key":1486514400000,"doc_count":10},{"key_as_string":"2017-02-08T00:41:00.000Z","key":1486514460000,"doc_count":13},{"key_as_string":"2017-02-08T00:42:00.000Z","key":1486514520000,"doc_count":6},{"key_as_string":"2017-02-08T00:43:00.000Z","key":1486514580000,"doc_count":16},{"key_as_string":"2017-02-08T00:44:00.000Z","key":1486514640000,"doc_count":16},{"key_as_string":"2017-02-08T00:45:00.000Z","key":1486514700000,"doc_count":6},{"key_as_string":"2017-02-08T00:46:00.000Z","key":1486514760000,"doc_count":11},{"key_as_string":"2017-02-08T00:47:00.000Z","key":1486514820000,"doc_count":11},{"key_as_string":"2017-02-08T00:48:00.000Z","key":1486514880000,"doc_count":9},{"key_as_string":"2017-02-08T00:49:00.000Z","key":1486514940000,"doc_count":11},{"key_as_string":"2017-02-08T00:50:00.000Z","key":1486515000000,"doc_count":9},{"key_as_string":"2017-02-08T00:51:00.000Z","key":1486515060000,"doc_count":12},{"key_as_string":"2017-02-08T00:52:00.000Z","key":1486515120000,"doc_count":10},{"key_as_string":"2017-02-08T00:53:00.000Z","key":1486515180000,"doc_count":13},{"key_as_string":"2017-02-08T00:54:00.000Z","key":1486515240000,"doc_count":9},{"key_as_string":"2017-02-08T00:55:00.000Z","key":1486515300000,"doc_count":15},{"key_as_string":"2017-02-08T00:56:00.000Z","key":1486515360000,"doc_count":11},{"key_as_string":"2017-02-08T00:57:00.000Z","key":1486515420000,"doc_count":12},{"key_as_string":"2017-02-08T00:58:00.000Z","key":1486515480000,"doc_count":17},{"key_as_string":"2017-02-08T00:59:00.000Z","key":1486515540000,"doc_count":11},{"key_as_string":"2017-02-08T01:00:00.000Z","key":1486515600000,"doc_count":14},{"key_as_string":"2017-02-08T01:01:00.000Z","key":1486515660000,"doc_count":12},{"key_as_string":"2017-02-08T01:02:00.000Z","key":1486515720000,"doc_count":8},{"key_as_string":"2017-02-08T01:03:00.000Z","key":1486515780000,"doc_count":12},{"key_as_string":"2017-02-08T01:04:00.000Z","key":1486515840000,"doc_count":8},{"key_as_string":"2017-02-08T01:05:00.000Z","key":1486515900000,"doc_count":13},{"key_as_string":"2017-02-08T01:06:00.000Z","key":1486515960000,"doc_count":9},{"key_as_string":"2017-02-08T01:07:00.000Z","key":1486516020000,"doc_count":7},{"key_as_string":"2017-02-08T01:08:00.000Z","key":1486516080000,"doc_count":14},{"key_as_string":"2017-02-08T01:09:00.000Z","key":1486516140000,"doc_count":9},{"key_as_string":"2017-02-08T01:10:00.000Z","key":1486516200000,"doc_count":10},{"key_as_string":"2017-02-08T01:11:00.000Z","key":1486516260000,"doc_count":12},{"key_as_string":"2017-02-08T01:12:00.000Z","key":1486516320000,"doc_count":8},{"key_as_string":"2017-02-08T01:13:00.000Z","key":1486516380000,"doc_count":9},{"key_as_string":"2017-02-08T01:14:00.000Z","key":1486516440000,"doc_count":11},{"key_as_string":"2017-02-08T01:15:00.000Z","key":1486516500000,"doc_count":10},{"key_as_string":"2017-02-08T01:16:00.000Z","key":1486516560000,"doc_count":16},{"key_as_string":"2017-02-08T01:17:00.000Z","key":1486516620000,"doc_count":12},{"key_as_string":"2017-02-08T01:18:00.000Z","key":1486516680000,"doc_count":7},{"key_as_string":"2017-02-08T01:19:00.000Z","key":1486516740000,"doc_count":7},{"key_as_string":"2017-02-08T01:20:00.000Z","key":1486516800000,"doc_count":12},{"key_as_string":"2017-02-08T01:21:00.000Z","key":1486516860000,"doc_count":10},{"key_as_string":"2017-02-08T01:22:00.000Z","key":1486516920000,"doc_count":15},{"key_as_string":"2017-02-08T01:23:00.000Z","key":1486516980000,"doc_count":9},{"key_as_string":"2017-02-08T01:24:00.000Z","key":1486517040000,"doc_count":15},{"key_as_string":"2017-02-08T01:25:00.000Z","key":1486517100000,"doc_count":9},{"key_as_string":"2017-02-08T01:26:00.000Z","key":1486517160000,"doc_count":15},{"key_as_string":"2017-02-08T01:27:00.000Z","key":1486517220000,"doc_count":11},{"key_as_string":"2017-02-08T01:28:00.000Z","key":1486517280000,"doc_count":15},{"key_as_string":"2017-02-08T01:29:00.000Z","key":1486517340000,"doc_count":17},{"key_as_string":"2017-02-08T01:30:00.000Z","key":1486517400000,"doc_count":5},{"key_as_string":"2017-02-08T01:31:00.000Z","key":1486517460000,"doc_count":10},{"key_as_string":"2017-02-08T01:32:00.000Z","key":1486517520000,"doc_count":9},{"key_as_string":"2017-02-08T01:33:00.000Z","key":1486517580000,"doc_count":13},{"key_as_string":"2017-02-08T01:34:00.000Z","key":1486517640000,"doc_count":17},{"key_as_string":"2017-02-08T01:35:00.000Z","key":1486517700000,"doc_count":8},{"key_as_string":"2017-02-08T01:36:00.000Z","key":1486517760000,"doc_count":7},{"key_as_string":"2017-02-08T01:37:00.000Z","key":1486517820000,"doc_count":14},{"key_as_string":"2017-02-08T01:38:00.000Z","key":1486517880000,"doc_count":11},{"key_as_string":"2017-02-08T01:39:00.000Z","key":1486517940000,"doc_count":4},{"key_as_string":"2017-02-08T01:40:00.000Z","key":1486518000000,"doc_count":13},{"key_as_string":"2017-02-08T01:41:00.000Z","key":1486518060000,"doc_count":13},{"key_as_string":"2017-02-08T01:42:00.000Z","key":1486518120000,"doc_count":6},{"key_as_string":"2017-02-08T01:43:00.000Z","key":1486518180000,"doc_count":12},{"key_as_string":"2017-02-08T01:44:00.000Z","key":1486518240000,"doc_count":13},{"key_as_string":"2017-02-08T01:45:00.000Z","key":1486518300000,"doc_count":9},{"key_as_string":"2017-02-08T01:46:00.000Z","key":1486518360000,"doc_count":15},{"key_as_string":"2017-02-08T01:47:00.000Z","key":1486518420000,"doc_count":14},{"key_as_string":"2017-02-08T01:48:00.000Z","key":1486518480000,"doc_count":7},{"key_as_string":"2017-02-08T01:49:00.000Z","key":1486518540000,"doc_count":15},{"key_as_string":"2017-02-08T01:50:00.000Z","key":1486518600000,"doc_count":10},{"key_as_string":"2017-02-08T01:51:00.000Z","key":1486518660000,"doc_count":9},{"key_as_string":"2017-02-08T01:52:00.000Z","key":1486518720000,"doc_count":7},{"key_as_string":"2017-02-08T01:53:00.000Z","key":1486518780000,"doc_count":14},{"key_as_string":"2017-02-08T01:54:00.000Z","key":1486518840000,"doc_count":10},{"key_as_string":"2017-02-08T01:55:00.000Z","key":1486518900000,"doc_count":9},{"key_as_string":"2017-02-08T01:56:00.000Z","key":1486518960000,"doc_count":11},{"key_as_string":"2017-02-08T01:57:00.000Z","key":1486519020000,"doc_count":7},{"key_as_string":"2017-02-08T01:58:00.000Z","key":1486519080000,"doc_count":12},{"key_as_string":"2017-02-08T01:59:00.000Z","key":1486519140000,"doc_count":7},{"key_as_string":"2017-02-08T02:00:00.000Z","key":1486519200000,"doc_count":16},{"key_as_string":"2017-02-08T02:01:00.000Z","key":1486519260000,"doc_count":8},{"key_as_string":"2017-02-08T02:02:00.000Z","key":1486519320000,"doc_count":5},{"key_as_string":"2017-02-08T02:03:00.000Z","key":1486519380000,"doc_count":12},{"key_as_string":"2017-02-08T02:04:00.000Z","key":1486519440000,"doc_count":11},{"key_as_string":"2017-02-08T02:05:00.000Z","key":1486519500000,"doc_count":12},{"key_as_string":"2017-02-08T02:06:00.000Z","key":1486519560000,"doc_count":12},{"key_as_string":"2017-02-08T02:07:00.000Z","key":1486519620000,"doc_count":9},{"key_as_string":"2017-02-08T02:08:00.000Z","key":1486519680000,"doc_count":11},{"key_as_string":"2017-02-08T02:09:00.000Z","key":1486519740000,"doc_count":16},{"key_as_string":"2017-02-08T02:10:00.000Z","key":1486519800000,"doc_count":9},{"key_as_string":"2017-02-08T02:11:00.000Z","key":1486519860000,"doc_count":8},{"key_as_string":"2017-02-08T02:12:00.000Z","key":1486519920000,"doc_count":9},{"key_as_string":"2017-02-08T02:13:00.000Z","key":1486519980000,"doc_count":8},{"key_as_string":"2017-02-08T02:14:00.000Z","key":1486520040000,"doc_count":12},{"key_as_string":"2017-02-08T02:15:00.000Z","key":1486520100000,"doc_count":8},{"key_as_string":"2017-02-08T02:16:00.000Z","key":1486520160000,"doc_count":9},{"key_as_string":"2017-02-08T02:17:00.000Z","key":1486520220000,"doc_count":11},{"key_as_string":"2017-02-08T02:18:00.000Z","key":1486520280000,"doc_count":8},{"key_as_string":"2017-02-08T02:19:00.000Z","key":1486520340000,"doc_count":9},{"key_as_string":"2017-02-08T02:20:00.000Z","key":1486520400000,"doc_count":7},{"key_as_string":"2017-02-08T02:21:00.000Z","key":1486520460000,"doc_count":15},{"key_as_string":"2017-02-08T02:22:00.000Z","key":1486520520000,"doc_count":6},{"key_as_string":"2017-02-08T02:23:00.000Z","key":1486520580000,"doc_count":11},{"key_as_string":"2017-02-08T02:24:00.000Z","key":1486520640000,"doc_count":14},{"key_as_string":"2017-02-08T02:25:00.000Z","key":1486520700000,"doc_count":8},{"key_as_string":"2017-02-08T02:26:00.000Z","key":1486520760000,"doc_count":11},{"key_as_string":"2017-02-08T02:27:00.000Z","key":1486520820000,"doc_count":15},{"key_as_string":"2017-02-08T02:28:00.000Z","key":1486520880000,"doc_count":6},{"key_as_string":"2017-02-08T02:29:00.000Z","key":1486520940000,"doc_count":5},{"key_as_string":"2017-02-08T02:30:00.000Z","key":1486521000000,"doc_count":18},{"key_as_string":"2017-02-08T02:31:00.000Z","key":1486521060000,"doc_count":7},{"key_as_string":"2017-02-08T02:32:00.000Z","key":1486521120000,"doc_count":6},{"key_as_string":"2017-02-08T02:33:00.000Z","key":1486521180000,"doc_count":15},{"key_as_string":"2017-02-08T02:34:00.000Z","key":1486521240000,"doc_count":11},{"key_as_string":"2017-02-08T02:35:00.000Z","key":1486521300000,"doc_count":13},{"key_as_string":"2017-02-08T02:36:00.000Z","key":1486521360000,"doc_count":12},{"key_as_string":"2017-02-08T02:37:00.000Z","key":1486521420000,"doc_count":9},{"key_as_string":"2017-02-08T02:38:00.000Z","key":1486521480000,"doc_count":14},{"key_as_string":"2017-02-08T02:39:00.000Z","key":1486521540000,"doc_count":9},{"key_as_string":"2017-02-08T02:40:00.000Z","key":1486521600000,"doc_count":12},{"key_as_string":"2017-02-08T02:41:00.000Z","key":1486521660000,"doc_count":10},{"key_as_string":"2017-02-08T02:42:00.000Z","key":1486521720000,"doc_count":12},{"key_as_string":"2017-02-08T02:43:00.000Z","key":1486521780000,"doc_count":8},{"key_as_string":"2017-02-08T02:44:00.000Z","key":1486521840000,"doc_count":15},{"key_as_string":"2017-02-08T02:45:00.000Z","key":1486521900000,"doc_count":6},{"key_as_string":"2017-02-08T02:46:00.000Z","key":1486521960000,"doc_count":12},{"key_as_string":"2017-02-08T02:47:00.000Z","key":1486522020000,"doc_count":10},{"key_as_string":"2017-02-08T02:48:00.000Z","key":1486522080000,"doc_count":13},{"key_as_string":"2017-02-08T02:49:00.000Z","key":1486522140000,"doc_count":14},{"key_as_string":"2017-02-08T02:50:00.000Z","key":1486522200000,"doc_count":8},{"key_as_string":"2017-02-08T02:51:00.000Z","key":1486522260000,"doc_count":12},{"key_as_string":"2017-02-08T02:52:00.000Z","key":1486522320000,"doc_count":6},{"key_as_string":"2017-02-08T02:53:00.000Z","key":1486522380000,"doc_count":14},{"key_as_string":"2017-02-08T02:54:00.000Z","key":1486522440000,"doc_count":12},{"key_as_string":"2017-02-08T02:55:00.000Z","key":1486522500000,"doc_count":11},{"key_as_string":"2017-02-08T02:56:00.000Z","key":1486522560000,"doc_count":14},{"key_as_string":"2017-02-08T02:57:00.000Z","key":1486522620000,"doc_count":13},{"key_as_string":"2017-02-08T02:58:00.000Z","key":1486522680000,"doc_count":7},{"key_as_string":"2017-02-08T02:59:00.000Z","key":1486522740000,"doc_count":9},{"key_as_string":"2017-02-08T03:00:00.000Z","key":1486522800000,"doc_count":9},{"key_as_string":"2017-02-08T03:01:00.000Z","key":1486522860000,"doc_count":13},{"key_as_string":"2017-02-08T03:02:00.000Z","key":1486522920000,"doc_count":10},{"key_as_string":"2017-02-08T03:03:00.000Z","key":1486522980000,"doc_count":12},{"key_as_string":"2017-02-08T03:04:00.000Z","key":1486523040000,"doc_count":4},{"key_as_string":"2017-02-08T03:05:00.000Z","key":1486523100000,"doc_count":12},{"key_as_string":"2017-02-08T03:06:00.000Z","key":1486523160000,"doc_count":10},{"key_as_string":"2017-02-08T03:07:00.000Z","key":1486523220000,"doc_count":8},{"key_as_string":"2017-02-08T03:08:00.000Z","key":1486523280000,"doc_count":12},{"key_as_string":"2017-02-08T03:09:00.000Z","key":1486523340000,"doc_count":12},{"key_as_string":"2017-02-08T03:10:00.000Z","key":1486523400000,"doc_count":9},{"key_as_string":"2017-02-08T03:11:00.000Z","key":1486523460000,"doc_count":12},{"key_as_string":"2017-02-08T03:12:00.000Z","key":1486523520000,"doc_count":6},{"key_as_string":"2017-02-08T03:13:00.000Z","key":1486523580000,"doc_count":11},{"key_as_string":"2017-02-08T03:14:00.000Z","key":1486523640000,"doc_count":8},{"key_as_string":"2017-02-08T03:15:00.000Z","key":1486523700000,"doc_count":11},{"key_as_string":"2017-02-08T03:16:00.000Z","key":1486523760000,"doc_count":9},{"key_as_string":"2017-02-08T03:17:00.000Z","key":1486523820000,"doc_count":9},{"key_as_string":"2017-02-08T03:18:00.000Z","key":1486523880000,"doc_count":16},{"key_as_string":"2017-02-08T03:19:00.000Z","key":1486523940000,"doc_count":6},{"key_as_string":"2017-02-08T03:20:00.000Z","key":1486524000000,"doc_count":10},{"key_as_string":"2017-02-08T03:21:00.000Z","key":1486524060000,"doc_count":14},{"key_as_string":"2017-02-08T03:22:00.000Z","key":1486524120000,"doc_count":3},{"key_as_string":"2017-02-08T03:23:00.000Z","key":1486524180000,"doc_count":11},{"key_as_string":"2017-02-08T03:24:00.000Z","key":1486524240000,"doc_count":13},{"key_as_string":"2017-02-08T03:25:00.000Z","key":1486524300000,"doc_count":11},{"key_as_string":"2017-02-08T03:26:00.000Z","key":1486524360000,"doc_count":18},{"key_as_string":"2017-02-08T03:27:00.000Z","key":1486524420000,"doc_count":12},{"key_as_string":"2017-02-08T03:28:00.000Z","key":1486524480000,"doc_count":11},{"key_as_string":"2017-02-08T03:29:00.000Z","key":1486524540000,"doc_count":8},{"key_as_string":"2017-02-08T03:30:00.000Z","key":1486524600000,"doc_count":18},{"key_as_string":"2017-02-08T03:31:00.000Z","key":1486524660000,"doc_count":12},{"key_as_string":"2017-02-08T03:32:00.000Z","key":1486524720000,"doc_count":13},{"key_as_string":"2017-02-08T03:33:00.000Z","key":1486524780000,"doc_count":12},{"key_as_string":"2017-02-08T03:34:00.000Z","key":1486524840000,"doc_count":10},{"key_as_string":"2017-02-08T03:35:00.000Z","key":1486524900000,"doc_count":10},{"key_as_string":"2017-02-08T03:36:00.000Z","key":1486524960000,"doc_count":10},{"key_as_string":"2017-02-08T03:37:00.000Z","key":1486525020000,"doc_count":9},{"key_as_string":"2017-02-08T03:38:00.000Z","key":1486525080000,"doc_count":20},{"key_as_string":"2017-02-08T03:39:00.000Z","key":1486525140000,"doc_count":8},{"key_as_string":"2017-02-08T03:40:00.000Z","key":1486525200000,"doc_count":7},{"key_as_string":"2017-02-08T03:41:00.000Z","key":1486525260000,"doc_count":10},{"key_as_string":"2017-02-08T03:42:00.000Z","key":1486525320000,"doc_count":12},{"key_as_string":"2017-02-08T03:43:00.000Z","key":1486525380000,"doc_count":9},{"key_as_string":"2017-02-08T03:44:00.000Z","key":1486525440000,"doc_count":7},{"key_as_string":"2017-02-08T03:45:00.000Z","key":1486525500000,"doc_count":8},{"key_as_string":"2017-02-08T03:46:00.000Z","key":1486525560000,"doc_count":10},{"key_as_string":"2017-02-08T03:47:00.000Z","key":1486525620000,"doc_count":10},{"key_as_string":"2017-02-08T03:48:00.000Z","key":1486525680000,"doc_count":7},{"key_as_string":"2017-02-08T03:49:00.000Z","key":1486525740000,"doc_count":9},{"key_as_string":"2017-02-08T03:50:00.000Z","key":1486525800000,"doc_count":11},{"key_as_string":"2017-02-08T03:51:00.000Z","key":1486525860000,"doc_count":8},{"key_as_string":"2017-02-08T03:52:00.000Z","key":1486525920000,"doc_count":10},{"key_as_string":"2017-02-08T03:53:00.000Z","key":1486525980000,"doc_count":12},{"key_as_string":"2017-02-08T03:54:00.000Z","key":1486526040000,"doc_count":14},{"key_as_string":"2017-02-08T03:55:00.000Z","key":1486526100000,"doc_count":9},{"key_as_string":"2017-02-08T03:56:00.000Z","key":1486526160000,"doc_count":11},{"key_as_string":"2017-02-08T03:57:00.000Z","key":1486526220000,"doc_count":7},{"key_as_string":"2017-02-08T03:58:00.000Z","key":1486526280000,"doc_count":11},{"key_as_string":"2017-02-08T03:59:00.000Z","key":1486526340000,"doc_count":14},{"key_as_string":"2017-02-08T04:00:00.000Z","key":1486526400000,"doc_count":10},{"key_as_string":"2017-02-08T04:01:00.000Z","key":1486526460000,"doc_count":11},{"key_as_string":"2017-02-08T04:02:00.000Z","key":1486526520000,"doc_count":12},{"key_as_string":"2017-02-08T04:03:00.000Z","key":1486526580000,"doc_count":8},{"key_as_string":"2017-02-08T04:04:00.000Z","key":1486526640000,"doc_count":11},{"key_as_string":"2017-02-08T04:05:00.000Z","key":1486526700000,"doc_count":15},{"key_as_string":"2017-02-08T04:06:00.000Z","key":1486526760000,"doc_count":8},{"key_as_string":"2017-02-08T04:07:00.000Z","key":1486526820000,"doc_count":13},{"key_as_string":"2017-02-08T04:08:00.000Z","key":1486526880000,"doc_count":12},{"key_as_string":"2017-02-08T04:09:00.000Z","key":1486526940000,"doc_count":11},{"key_as_string":"2017-02-08T04:10:00.000Z","key":1486527000000,"doc_count":12},{"key_as_string":"2017-02-08T04:11:00.000Z","key":1486527060000,"doc_count":10},{"key_as_string":"2017-02-08T04:12:00.000Z","key":1486527120000,"doc_count":13},{"key_as_string":"2017-02-08T04:13:00.000Z","key":1486527180000,"doc_count":5},{"key_as_string":"2017-02-08T04:14:00.000Z","key":1486527240000,"doc_count":6},{"key_as_string":"2017-02-08T04:15:00.000Z","key":1486527300000,"doc_count":16},{"key_as_string":"2017-02-08T04:16:00.000Z","key":1486527360000,"doc_count":12},{"key_as_string":"2017-02-08T04:17:00.000Z","key":1486527420000,"doc_count":17},{"key_as_string":"2017-02-08T04:18:00.000Z","key":1486527480000,"doc_count":11},{"key_as_string":"2017-02-08T04:19:00.000Z","key":1486527540000,"doc_count":16},{"key_as_string":"2017-02-08T04:20:00.000Z","key":1486527600000,"doc_count":8},{"key_as_string":"2017-02-08T04:21:00.000Z","key":1486527660000,"doc_count":10},{"key_as_string":"2017-02-08T04:22:00.000Z","key":1486527720000,"doc_count":14},{"key_as_string":"2017-02-08T04:23:00.000Z","key":1486527780000,"doc_count":10},{"key_as_string":"2017-02-08T04:24:00.000Z","key":1486527840000,"doc_count":9},{"key_as_string":"2017-02-08T04:25:00.000Z","key":1486527900000,"doc_count":13},{"key_as_string":"2017-02-08T04:26:00.000Z","key":1486527960000,"doc_count":8},{"key_as_string":"2017-02-08T04:27:00.000Z","key":1486528020000,"doc_count":13},{"key_as_string":"2017-02-08T04:28:00.000Z","key":1486528080000,"doc_count":16},{"key_as_string":"2017-02-08T04:29:00.000Z","key":1486528140000,"doc_count":8},{"key_as_string":"2017-02-08T04:30:00.000Z","key":1486528200000,"doc_count":13},{"key_as_string":"2017-02-08T04:31:00.000Z","key":1486528260000,"doc_count":12},{"key_as_string":"2017-02-08T04:32:00.000Z","key":1486528320000,"doc_count":9},{"key_as_string":"2017-02-08T04:33:00.000Z","key":1486528380000,"doc_count":14},{"key_as_string":"2017-02-08T04:34:00.000Z","key":1486528440000,"doc_count":8},{"key_as_string":"2017-02-08T04:35:00.000Z","key":1486528500000,"doc_count":9},{"key_as_string":"2017-02-08T04:36:00.000Z","key":1486528560000,"doc_count":19},{"key_as_string":"2017-02-08T04:37:00.000Z","key":1486528620000,"doc_count":8},{"key_as_string":"2017-02-08T04:38:00.000Z","key":1486528680000,"doc_count":12},{"key_as_string":"2017-02-08T04:39:00.000Z","key":1486528740000,"doc_count":13},{"key_as_string":"2017-02-08T04:40:00.000Z","key":1486528800000,"doc_count":13},{"key_as_string":"2017-02-08T04:41:00.000Z","key":1486528860000,"doc_count":9},{"key_as_string":"2017-02-08T04:42:00.000Z","key":1486528920000,"doc_count":8},{"key_as_string":"2017-02-08T04:43:00.000Z","key":1486528980000,"doc_count":8},{"key_as_string":"2017-02-08T04:44:00.000Z","key":1486529040000,"doc_count":11},{"key_as_string":"2017-02-08T04:45:00.000Z","key":1486529100000,"doc_count":11},{"key_as_string":"2017-02-08T04:46:00.000Z","key":1486529160000,"doc_count":14},{"key_as_string":"2017-02-08T04:47:00.000Z","key":1486529220000,"doc_count":9},{"key_as_string":"2017-02-08T04:48:00.000Z","key":1486529280000,"doc_count":11},{"key_as_string":"2017-02-08T04:49:00.000Z","key":1486529340000,"doc_count":16},{"key_as_string":"2017-02-08T04:50:00.000Z","key":1486529400000,"doc_count":6},{"key_as_string":"2017-02-08T04:51:00.000Z","key":1486529460000,"doc_count":14},{"key_as_string":"2017-02-08T04:52:00.000Z","key":1486529520000,"doc_count":12},{"key_as_string":"2017-02-08T04:53:00.000Z","key":1486529580000,"doc_count":13},{"key_as_string":"2017-02-08T04:54:00.000Z","key":1486529640000,"doc_count":12},{"key_as_string":"2017-02-08T04:55:00.000Z","key":1486529700000,"doc_count":12},{"key_as_string":"2017-02-08T04:56:00.000Z","key":1486529760000,"doc_count":15},{"key_as_string":"2017-02-08T04:57:00.000Z","key":1486529820000,"doc_count":12},{"key_as_string":"2017-02-08T04:58:00.000Z","key":1486529880000,"doc_count":11},{"key_as_string":"2017-02-08T04:59:00.000Z","key":1486529940000,"doc_count":7},{"key_as_string":"2017-02-08T05:00:00.000Z","key":1486530000000,"doc_count":10},{"key_as_string":"2017-02-08T05:01:00.000Z","key":1486530060000,"doc_count":15},{"key_as_string":"2017-02-08T05:02:00.000Z","key":1486530120000,"doc_count":15},{"key_as_string":"2017-02-08T05:03:00.000Z","key":1486530180000,"doc_count":11},{"key_as_string":"2017-02-08T05:04:00.000Z","key":1486530240000,"doc_count":11},{"key_as_string":"2017-02-08T05:05:00.000Z","key":1486530300000,"doc_count":14},{"key_as_string":"2017-02-08T05:06:00.000Z","key":1486530360000,"doc_count":9},{"key_as_string":"2017-02-08T05:07:00.000Z","key":1486530420000,"doc_count":15},{"key_as_string":"2017-02-08T05:08:00.000Z","key":1486530480000,"doc_count":8},{"key_as_string":"2017-02-08T05:09:00.000Z","key":1486530540000,"doc_count":13},{"key_as_string":"2017-02-08T05:10:00.000Z","key":1486530600000,"doc_count":12},{"key_as_string":"2017-02-08T05:11:00.000Z","key":1486530660000,"doc_count":7},{"key_as_string":"2017-02-08T05:12:00.000Z","key":1486530720000,"doc_count":9},{"key_as_string":"2017-02-08T05:13:00.000Z","key":1486530780000,"doc_count":12},{"key_as_string":"2017-02-08T05:14:00.000Z","key":1486530840000,"doc_count":14},{"key_as_string":"2017-02-08T05:15:00.000Z","key":1486530900000,"doc_count":15},{"key_as_string":"2017-02-08T05:16:00.000Z","key":1486530960000,"doc_count":7},{"key_as_string":"2017-02-08T05:17:00.000Z","key":1486531020000,"doc_count":10},{"key_as_string":"2017-02-08T05:18:00.000Z","key":1486531080000,"doc_count":10},{"key_as_string":"2017-02-08T05:19:00.000Z","key":1486531140000,"doc_count":12},{"key_as_string":"2017-02-08T05:20:00.000Z","key":1486531200000,"doc_count":7},{"key_as_string":"2017-02-08T05:21:00.000Z","key":1486531260000,"doc_count":9},{"key_as_string":"2017-02-08T05:22:00.000Z","key":1486531320000,"doc_count":13},{"key_as_string":"2017-02-08T05:23:00.000Z","key":1486531380000,"doc_count":9},{"key_as_string":"2017-02-08T05:24:00.000Z","key":1486531440000,"doc_count":10},{"key_as_string":"2017-02-08T05:25:00.000Z","key":1486531500000,"doc_count":12},{"key_as_string":"2017-02-08T05:26:00.000Z","key":1486531560000,"doc_count":7},{"key_as_string":"2017-02-08T05:27:00.000Z","key":1486531620000,"doc_count":16},{"key_as_string":"2017-02-08T05:28:00.000Z","key":1486531680000,"doc_count":12},{"key_as_string":"2017-02-08T05:29:00.000Z","key":1486531740000,"doc_count":13},{"key_as_string":"2017-02-08T05:30:00.000Z","key":1486531800000,"doc_count":10},{"key_as_string":"2017-02-08T05:31:00.000Z","key":1486531860000,"doc_count":12},{"key_as_string":"2017-02-08T05:32:00.000Z","key":1486531920000,"doc_count":6},{"key_as_string":"2017-02-08T05:33:00.000Z","key":1486531980000,"doc_count":16},{"key_as_string":"2017-02-08T05:34:00.000Z","key":1486532040000,"doc_count":11},{"key_as_string":"2017-02-08T05:35:00.000Z","key":1486532100000,"doc_count":13},{"key_as_string":"2017-02-08T05:36:00.000Z","key":1486532160000,"doc_count":12},{"key_as_string":"2017-02-08T05:37:00.000Z","key":1486532220000,"doc_count":14},{"key_as_string":"2017-02-08T05:38:00.000Z","key":1486532280000,"doc_count":9},{"key_as_string":"2017-02-08T05:39:00.000Z","key":1486532340000,"doc_count":9},{"key_as_string":"2017-02-08T05:40:00.000Z","key":1486532400000,"doc_count":11},{"key_as_string":"2017-02-08T05:41:00.000Z","key":1486532460000,"doc_count":17},{"key_as_string":"2017-02-08T05:42:00.000Z","key":1486532520000,"doc_count":13},{"key_as_string":"2017-02-08T05:43:00.000Z","key":1486532580000,"doc_count":10},{"key_as_string":"2017-02-08T05:44:00.000Z","key":1486532640000,"doc_count":12},{"key_as_string":"2017-02-08T05:45:00.000Z","key":1486532700000,"doc_count":17},{"key_as_string":"2017-02-08T05:46:00.000Z","key":1486532760000,"doc_count":7},{"key_as_string":"2017-02-08T05:47:00.000Z","key":1486532820000,"doc_count":11},{"key_as_string":"2017-02-08T05:48:00.000Z","key":1486532880000,"doc_count":10},{"key_as_string":"2017-02-08T05:49:00.000Z","key":1486532940000,"doc_count":7},{"key_as_string":"2017-02-08T05:50:00.000Z","key":1486533000000,"doc_count":12},{"key_as_string":"2017-02-08T05:51:00.000Z","key":1486533060000,"doc_count":12},{"key_as_string":"2017-02-08T05:52:00.000Z","key":1486533120000,"doc_count":6},{"key_as_string":"2017-02-08T05:53:00.000Z","key":1486533180000,"doc_count":11},{"key_as_string":"2017-02-08T05:54:00.000Z","key":1486533240000,"doc_count":14},{"key_as_string":"2017-02-08T05:55:00.000Z","key":1486533300000,"doc_count":10},{"key_as_string":"2017-02-08T05:56:00.000Z","key":1486533360000,"doc_count":11},{"key_as_string":"2017-02-08T05:57:00.000Z","key":1486533420000,"doc_count":14},{"key_as_string":"2017-02-08T05:58:00.000Z","key":1486533480000,"doc_count":5},{"key_as_string":"2017-02-08T05:59:00.000Z","key":1486533540000,"doc_count":16},{"key_as_string":"2017-02-08T06:00:00.000Z","key":1486533600000,"doc_count":9},{"key_as_string":"2017-02-08T06:01:00.000Z","key":1486533660000,"doc_count":12},{"key_as_string":"2017-02-08T06:02:00.000Z","key":1486533720000,"doc_count":10},{"key_as_string":"2017-02-08T06:03:00.000Z","key":1486533780000,"doc_count":13},{"key_as_string":"2017-02-08T06:04:00.000Z","key":1486533840000,"doc_count":14},{"key_as_string":"2017-02-08T06:05:00.000Z","key":1486533900000,"doc_count":11},{"key_as_string":"2017-02-08T06:06:00.000Z","key":1486533960000,"doc_count":9},{"key_as_string":"2017-02-08T06:07:00.000Z","key":1486534020000,"doc_count":10},{"key_as_string":"2017-02-08T06:08:00.000Z","key":1486534080000,"doc_count":7},{"key_as_string":"2017-02-08T06:09:00.000Z","key":1486534140000,"doc_count":14},{"key_as_string":"2017-02-08T06:10:00.000Z","key":1486534200000,"doc_count":13},{"key_as_string":"2017-02-08T06:11:00.000Z","key":1486534260000,"doc_count":15},{"key_as_string":"2017-02-08T06:12:00.000Z","key":1486534320000,"doc_count":9},{"key_as_string":"2017-02-08T06:13:00.000Z","key":1486534380000,"doc_count":8},{"key_as_string":"2017-02-08T06:14:00.000Z","key":1486534440000,"doc_count":7},{"key_as_string":"2017-02-08T06:15:00.000Z","key":1486534500000,"doc_count":15},{"key_as_string":"2017-02-08T06:16:00.000Z","key":1486534560000,"doc_count":11},{"key_as_string":"2017-02-08T06:17:00.000Z","key":1486534620000,"doc_count":15},{"key_as_string":"2017-02-08T06:18:00.000Z","key":1486534680000,"doc_count":14},{"key_as_string":"2017-02-08T06:19:00.000Z","key":1486534740000,"doc_count":12},{"key_as_string":"2017-02-08T06:20:00.000Z","key":1486534800000,"doc_count":15},{"key_as_string":"2017-02-08T06:21:00.000Z","key":1486534860000,"doc_count":13},{"key_as_string":"2017-02-08T06:22:00.000Z","key":1486534920000,"doc_count":10},{"key_as_string":"2017-02-08T06:23:00.000Z","key":1486534980000,"doc_count":14},{"key_as_string":"2017-02-08T06:24:00.000Z","key":1486535040000,"doc_count":15},{"key_as_string":"2017-02-08T06:25:00.000Z","key":1486535100000,"doc_count":14},{"key_as_string":"2017-02-08T06:26:00.000Z","key":1486535160000,"doc_count":11},{"key_as_string":"2017-02-08T06:27:00.000Z","key":1486535220000,"doc_count":13},{"key_as_string":"2017-02-08T06:28:00.000Z","key":1486535280000,"doc_count":11},{"key_as_string":"2017-02-08T06:29:00.000Z","key":1486535340000,"doc_count":16},{"key_as_string":"2017-02-08T06:30:00.000Z","key":1486535400000,"doc_count":12},{"key_as_string":"2017-02-08T06:31:00.000Z","key":1486535460000,"doc_count":11},{"key_as_string":"2017-02-08T06:32:00.000Z","key":1486535520000,"doc_count":10},{"key_as_string":"2017-02-08T06:33:00.000Z","key":1486535580000,"doc_count":8},{"key_as_string":"2017-02-08T06:34:00.000Z","key":1486535640000,"doc_count":14},{"key_as_string":"2017-02-08T06:35:00.000Z","key":1486535700000,"doc_count":9},{"key_as_string":"2017-02-08T06:36:00.000Z","key":1486535760000,"doc_count":16},{"key_as_string":"2017-02-08T06:37:00.000Z","key":1486535820000,"doc_count":13},{"key_as_string":"2017-02-08T06:38:00.000Z","key":1486535880000,"doc_count":10},{"key_as_string":"2017-02-08T06:39:00.000Z","key":1486535940000,"doc_count":13},{"key_as_string":"2017-02-08T06:40:00.000Z","key":1486536000000,"doc_count":13},{"key_as_string":"2017-02-08T06:41:00.000Z","key":1486536060000,"doc_count":10},{"key_as_string":"2017-02-08T06:42:00.000Z","key":1486536120000,"doc_count":12},{"key_as_string":"2017-02-08T06:43:00.000Z","key":1486536180000,"doc_count":10},{"key_as_string":"2017-02-08T06:44:00.000Z","key":1486536240000,"doc_count":15},{"key_as_string":"2017-02-08T06:45:00.000Z","key":1486536300000,"doc_count":10},{"key_as_string":"2017-02-08T06:46:00.000Z","key":1486536360000,"doc_count":8},{"key_as_string":"2017-02-08T06:47:00.000Z","key":1486536420000,"doc_count":15},{"key_as_string":"2017-02-08T06:48:00.000Z","key":1486536480000,"doc_count":14},{"key_as_string":"2017-02-08T06:49:00.000Z","key":1486536540000,"doc_count":8},{"key_as_string":"2017-02-08T06:50:00.000Z","key":1486536600000,"doc_count":10},{"key_as_string":"2017-02-08T06:51:00.000Z","key":1486536660000,"doc_count":12},{"key_as_string":"2017-02-08T06:52:00.000Z","key":1486536720000,"doc_count":19},{"key_as_string":"2017-02-08T06:53:00.000Z","key":1486536780000,"doc_count":10},{"key_as_string":"2017-02-08T06:54:00.000Z","key":1486536840000,"doc_count":12},{"key_as_string":"2017-02-08T06:55:00.000Z","key":1486536900000,"doc_count":13},{"key_as_string":"2017-02-08T06:56:00.000Z","key":1486536960000,"doc_count":12},{"key_as_string":"2017-02-08T06:57:00.000Z","key":1486537020000,"doc_count":10},{"key_as_string":"2017-02-08T06:58:00.000Z","key":1486537080000,"doc_count":13},{"key_as_string":"2017-02-08T06:59:00.000Z","key":1486537140000,"doc_count":9},{"key_as_string":"2017-02-08T07:00:00.000Z","key":1486537200000,"doc_count":17},{"key_as_string":"2017-02-08T07:01:00.000Z","key":1486537260000,"doc_count":14},{"key_as_string":"2017-02-08T07:02:00.000Z","key":1486537320000,"doc_count":11},{"key_as_string":"2017-02-08T07:03:00.000Z","key":1486537380000,"doc_count":13},{"key_as_string":"2017-02-08T07:04:00.000Z","key":1486537440000,"doc_count":15},{"key_as_string":"2017-02-08T07:05:00.000Z","key":1486537500000,"doc_count":16},{"key_as_string":"2017-02-08T07:06:00.000Z","key":1486537560000,"doc_count":11},{"key_as_string":"2017-02-08T07:07:00.000Z","key":1486537620000,"doc_count":7},{"key_as_string":"2017-02-08T07:08:00.000Z","key":1486537680000,"doc_count":12},{"key_as_string":"2017-02-08T07:09:00.000Z","key":1486537740000,"doc_count":14},{"key_as_string":"2017-02-08T07:10:00.000Z","key":1486537800000,"doc_count":9},{"key_as_string":"2017-02-08T07:11:00.000Z","key":1486537860000,"doc_count":11},{"key_as_string":"2017-02-08T07:12:00.000Z","key":1486537920000,"doc_count":12},{"key_as_string":"2017-02-08T07:13:00.000Z","key":1486537980000,"doc_count":7},{"key_as_string":"2017-02-08T07:14:00.000Z","key":1486538040000,"doc_count":15},{"key_as_string":"2017-02-08T07:15:00.000Z","key":1486538100000,"doc_count":13},{"key_as_string":"2017-02-08T07:16:00.000Z","key":1486538160000,"doc_count":10},{"key_as_string":"2017-02-08T07:17:00.000Z","key":1486538220000,"doc_count":8},{"key_as_string":"2017-02-08T07:18:00.000Z","key":1486538280000,"doc_count":16},{"key_as_string":"2017-02-08T07:19:00.000Z","key":1486538340000,"doc_count":12},{"key_as_string":"2017-02-08T07:20:00.000Z","key":1486538400000,"doc_count":13},{"key_as_string":"2017-02-08T07:21:00.000Z","key":1486538460000,"doc_count":15},{"key_as_string":"2017-02-08T07:22:00.000Z","key":1486538520000,"doc_count":12},{"key_as_string":"2017-02-08T07:23:00.000Z","key":1486538580000,"doc_count":17},{"key_as_string":"2017-02-08T07:24:00.000Z","key":1486538640000,"doc_count":10},{"key_as_string":"2017-02-08T07:25:00.000Z","key":1486538700000,"doc_count":11},{"key_as_string":"2017-02-08T07:26:00.000Z","key":1486538760000,"doc_count":11},{"key_as_string":"2017-02-08T07:27:00.000Z","key":1486538820000,"doc_count":13},{"key_as_string":"2017-02-08T07:28:00.000Z","key":1486538880000,"doc_count":10},{"key_as_string":"2017-02-08T07:29:00.000Z","key":1486538940000,"doc_count":13},{"key_as_string":"2017-02-08T07:30:00.000Z","key":1486539000000,"doc_count":11},{"key_as_string":"2017-02-08T07:31:00.000Z","key":1486539060000,"doc_count":17},{"key_as_string":"2017-02-08T07:32:00.000Z","key":1486539120000,"doc_count":12},{"key_as_string":"2017-02-08T07:33:00.000Z","key":1486539180000,"doc_count":11},{"key_as_string":"2017-02-08T07:34:00.000Z","key":1486539240000,"doc_count":11},{"key_as_string":"2017-02-08T07:35:00.000Z","key":1486539300000,"doc_count":17},{"key_as_string":"2017-02-08T07:36:00.000Z","key":1486539360000,"doc_count":12},{"key_as_string":"2017-02-08T07:37:00.000Z","key":1486539420000,"doc_count":15},{"key_as_string":"2017-02-08T07:38:00.000Z","key":1486539480000,"doc_count":12},{"key_as_string":"2017-02-08T07:39:00.000Z","key":1486539540000,"doc_count":19},{"key_as_string":"2017-02-08T07:40:00.000Z","key":1486539600000,"doc_count":10},{"key_as_string":"2017-02-08T07:41:00.000Z","key":1486539660000,"doc_count":10},{"key_as_string":"2017-02-08T07:42:00.000Z","key":1486539720000,"doc_count":13},{"key_as_string":"2017-02-08T07:43:00.000Z","key":1486539780000,"doc_count":17},{"key_as_string":"2017-02-08T07:44:00.000Z","key":1486539840000,"doc_count":15},{"key_as_string":"2017-02-08T07:45:00.000Z","key":1486539900000,"doc_count":8},{"key_as_string":"2017-02-08T07:46:00.000Z","key":1486539960000,"doc_count":13},{"key_as_string":"2017-02-08T07:47:00.000Z","key":1486540020000,"doc_count":9},{"key_as_string":"2017-02-08T07:48:00.000Z","key":1486540080000,"doc_count":10},{"key_as_string":"2017-02-08T07:49:00.000Z","key":1486540140000,"doc_count":10},{"key_as_string":"2017-02-08T07:50:00.000Z","key":1486540200000,"doc_count":15},{"key_as_string":"2017-02-08T07:51:00.000Z","key":1486540260000,"doc_count":13},{"key_as_string":"2017-02-08T07:52:00.000Z","key":1486540320000,"doc_count":14},{"key_as_string":"2017-02-08T07:53:00.000Z","key":1486540380000,"doc_count":13},{"key_as_string":"2017-02-08T07:54:00.000Z","key":1486540440000,"doc_count":14},{"key_as_string":"2017-02-08T07:55:00.000Z","key":1486540500000,"doc_count":11},{"key_as_string":"2017-02-08T07:56:00.000Z","key":1486540560000,"doc_count":10},{"key_as_string":"2017-02-08T07:57:00.000Z","key":1486540620000,"doc_count":9},{"key_as_string":"2017-02-08T07:58:00.000Z","key":1486540680000,"doc_count":16},{"key_as_string":"2017-02-08T07:59:00.000Z","key":1486540740000,"doc_count":17},{"key_as_string":"2017-02-08T08:00:00.000Z","key":1486540800000,"doc_count":14},{"key_as_string":"2017-02-08T08:01:00.000Z","key":1486540860000,"doc_count":12},{"key_as_string":"2017-02-08T08:02:00.000Z","key":1486540920000,"doc_count":15},{"key_as_string":"2017-02-08T08:03:00.000Z","key":1486540980000,"doc_count":15},{"key_as_string":"2017-02-08T08:04:00.000Z","key":1486541040000,"doc_count":10},{"key_as_string":"2017-02-08T08:05:00.000Z","key":1486541100000,"doc_count":12},{"key_as_string":"2017-02-08T08:06:00.000Z","key":1486541160000,"doc_count":6},{"key_as_string":"2017-02-08T08:07:00.000Z","key":1486541220000,"doc_count":17},{"key_as_string":"2017-02-08T08:08:00.000Z","key":1486541280000,"doc_count":15},{"key_as_string":"2017-02-08T08:09:00.000Z","key":1486541340000,"doc_count":14},{"key_as_string":"2017-02-08T08:10:00.000Z","key":1486541400000,"doc_count":12},{"key_as_string":"2017-02-08T08:11:00.000Z","key":1486541460000,"doc_count":18},{"key_as_string":"2017-02-08T08:12:00.000Z","key":1486541520000,"doc_count":9},{"key_as_string":"2017-02-08T08:13:00.000Z","key":1486541580000,"doc_count":12},{"key_as_string":"2017-02-08T08:14:00.000Z","key":1486541640000,"doc_count":11},{"key_as_string":"2017-02-08T08:15:00.000Z","key":1486541700000,"doc_count":19},{"key_as_string":"2017-02-08T08:16:00.000Z","key":1486541760000,"doc_count":12},{"key_as_string":"2017-02-08T08:17:00.000Z","key":1486541820000,"doc_count":10},{"key_as_string":"2017-02-08T08:18:00.000Z","key":1486541880000,"doc_count":16},{"key_as_string":"2017-02-08T08:19:00.000Z","key":1486541940000,"doc_count":12},{"key_as_string":"2017-02-08T08:20:00.000Z","key":1486542000000,"doc_count":15},{"key_as_string":"2017-02-08T08:21:00.000Z","key":1486542060000,"doc_count":14},{"key_as_string":"2017-02-08T08:22:00.000Z","key":1486542120000,"doc_count":15},{"key_as_string":"2017-02-08T08:23:00.000Z","key":1486542180000,"doc_count":12},{"key_as_string":"2017-02-08T08:24:00.000Z","key":1486542240000,"doc_count":15},{"key_as_string":"2017-02-08T08:25:00.000Z","key":1486542300000,"doc_count":7},{"key_as_string":"2017-02-08T08:26:00.000Z","key":1486542360000,"doc_count":10},{"key_as_string":"2017-02-08T08:27:00.000Z","key":1486542420000,"doc_count":12},{"key_as_string":"2017-02-08T08:28:00.000Z","key":1486542480000,"doc_count":10},{"key_as_string":"2017-02-08T08:29:00.000Z","key":1486542540000,"doc_count":12},{"key_as_string":"2017-02-08T08:30:00.000Z","key":1486542600000,"doc_count":17},{"key_as_string":"2017-02-08T08:31:00.000Z","key":1486542660000,"doc_count":13},{"key_as_string":"2017-02-08T08:32:00.000Z","key":1486542720000,"doc_count":14},{"key_as_string":"2017-02-08T08:33:00.000Z","key":1486542780000,"doc_count":10},{"key_as_string":"2017-02-08T08:34:00.000Z","key":1486542840000,"doc_count":12},{"key_as_string":"2017-02-08T08:35:00.000Z","key":1486542900000,"doc_count":14},{"key_as_string":"2017-02-08T08:36:00.000Z","key":1486542960000,"doc_count":11},{"key_as_string":"2017-02-08T08:37:00.000Z","key":1486543020000,"doc_count":16},{"key_as_string":"2017-02-08T08:38:00.000Z","key":1486543080000,"doc_count":13},{"key_as_string":"2017-02-08T08:39:00.000Z","key":1486543140000,"doc_count":11},{"key_as_string":"2017-02-08T08:40:00.000Z","key":1486543200000,"doc_count":9},{"key_as_string":"2017-02-08T08:41:00.000Z","key":1486543260000,"doc_count":15},{"key_as_string":"2017-02-08T08:42:00.000Z","key":1486543320000,"doc_count":12},{"key_as_string":"2017-02-08T08:43:00.000Z","key":1486543380000,"doc_count":9},{"key_as_string":"2017-02-08T08:44:00.000Z","key":1486543440000,"doc_count":15},{"key_as_string":"2017-02-08T08:45:00.000Z","key":1486543500000,"doc_count":17},{"key_as_string":"2017-02-08T08:46:00.000Z","key":1486543560000,"doc_count":5},{"key_as_string":"2017-02-08T08:47:00.000Z","key":1486543620000,"doc_count":19},{"key_as_string":"2017-02-08T08:48:00.000Z","key":1486543680000,"doc_count":14},{"key_as_string":"2017-02-08T08:49:00.000Z","key":1486543740000,"doc_count":13},{"key_as_string":"2017-02-08T08:50:00.000Z","key":1486543800000,"doc_count":16},{"key_as_string":"2017-02-08T08:51:00.000Z","key":1486543860000,"doc_count":14},{"key_as_string":"2017-02-08T08:52:00.000Z","key":1486543920000,"doc_count":17},{"key_as_string":"2017-02-08T08:53:00.000Z","key":1486543980000,"doc_count":12},{"key_as_string":"2017-02-08T08:54:00.000Z","key":1486544040000,"doc_count":13},{"key_as_string":"2017-02-08T08:55:00.000Z","key":1486544100000,"doc_count":17},{"key_as_string":"2017-02-08T08:56:00.000Z","key":1486544160000,"doc_count":11},{"key_as_string":"2017-02-08T08:57:00.000Z","key":1486544220000,"doc_count":10},{"key_as_string":"2017-02-08T08:58:00.000Z","key":1486544280000,"doc_count":13},{"key_as_string":"2017-02-08T08:59:00.000Z","key":1486544340000,"doc_count":11},{"key_as_string":"2017-02-08T09:00:00.000Z","key":1486544400000,"doc_count":12},{"key_as_string":"2017-02-08T09:01:00.000Z","key":1486544460000,"doc_count":15},{"key_as_string":"2017-02-08T09:02:00.000Z","key":1486544520000,"doc_count":8},{"key_as_string":"2017-02-08T09:03:00.000Z","key":1486544580000,"doc_count":14},{"key_as_string":"2017-02-08T09:04:00.000Z","key":1486544640000,"doc_count":13},{"key_as_string":"2017-02-08T09:05:00.000Z","key":1486544700000,"doc_count":12},{"key_as_string":"2017-02-08T09:06:00.000Z","key":1486544760000,"doc_count":15},{"key_as_string":"2017-02-08T09:07:00.000Z","key":1486544820000,"doc_count":13},{"key_as_string":"2017-02-08T09:08:00.000Z","key":1486544880000,"doc_count":19},{"key_as_string":"2017-02-08T09:09:00.000Z","key":1486544940000,"doc_count":14},{"key_as_string":"2017-02-08T09:10:00.000Z","key":1486545000000,"doc_count":11},{"key_as_string":"2017-02-08T09:11:00.000Z","key":1486545060000,"doc_count":15},{"key_as_string":"2017-02-08T09:12:00.000Z","key":1486545120000,"doc_count":15},{"key_as_string":"2017-02-08T09:13:00.000Z","key":1486545180000,"doc_count":10},{"key_as_string":"2017-02-08T09:14:00.000Z","key":1486545240000,"doc_count":17},{"key_as_string":"2017-02-08T09:15:00.000Z","key":1486545300000,"doc_count":18},{"key_as_string":"2017-02-08T09:16:00.000Z","key":1486545360000,"doc_count":15},{"key_as_string":"2017-02-08T09:17:00.000Z","key":1486545420000,"doc_count":13},{"key_as_string":"2017-02-08T09:18:00.000Z","key":1486545480000,"doc_count":9},{"key_as_string":"2017-02-08T09:19:00.000Z","key":1486545540000,"doc_count":15},{"key_as_string":"2017-02-08T09:20:00.000Z","key":1486545600000,"doc_count":10},{"key_as_string":"2017-02-08T09:21:00.000Z","key":1486545660000,"doc_count":9},{"key_as_string":"2017-02-08T09:22:00.000Z","key":1486545720000,"doc_count":13},{"key_as_string":"2017-02-08T09:23:00.000Z","key":1486545780000,"doc_count":18},{"key_as_string":"2017-02-08T09:24:00.000Z","key":1486545840000,"doc_count":12},{"key_as_string":"2017-02-08T09:25:00.000Z","key":1486545900000,"doc_count":15},{"key_as_string":"2017-02-08T09:26:00.000Z","key":1486545960000,"doc_count":10},{"key_as_string":"2017-02-08T09:27:00.000Z","key":1486546020000,"doc_count":16},{"key_as_string":"2017-02-08T09:28:00.000Z","key":1486546080000,"doc_count":17},{"key_as_string":"2017-02-08T09:29:00.000Z","key":1486546140000,"doc_count":14},{"key_as_string":"2017-02-08T09:30:00.000Z","key":1486546200000,"doc_count":13},{"key_as_string":"2017-02-08T09:31:00.000Z","key":1486546260000,"doc_count":14},{"key_as_string":"2017-02-08T09:32:00.000Z","key":1486546320000,"doc_count":11},{"key_as_string":"2017-02-08T09:33:00.000Z","key":1486546380000,"doc_count":13},{"key_as_string":"2017-02-08T09:34:00.000Z","key":1486546440000,"doc_count":10},{"key_as_string":"2017-02-08T09:35:00.000Z","key":1486546500000,"doc_count":15},{"key_as_string":"2017-02-08T09:36:00.000Z","key":1486546560000,"doc_count":15},{"key_as_string":"2017-02-08T09:37:00.000Z","key":1486546620000,"doc_count":11},{"key_as_string":"2017-02-08T09:38:00.000Z","key":1486546680000,"doc_count":13},{"key_as_string":"2017-02-08T09:39:00.000Z","key":1486546740000,"doc_count":12},{"key_as_string":"2017-02-08T09:40:00.000Z","key":1486546800000,"doc_count":12},{"key_as_string":"2017-02-08T09:41:00.000Z","key":1486546860000,"doc_count":11},{"key_as_string":"2017-02-08T09:42:00.000Z","key":1486546920000,"doc_count":10},{"key_as_string":"2017-02-08T09:43:00.000Z","key":1486546980000,"doc_count":15},{"key_as_string":"2017-02-08T09:44:00.000Z","key":1486547040000,"doc_count":12},{"key_as_string":"2017-02-08T09:45:00.000Z","key":1486547100000,"doc_count":11},{"key_as_string":"2017-02-08T09:46:00.000Z","key":1486547160000,"doc_count":12},{"key_as_string":"2017-02-08T09:47:00.000Z","key":1486547220000,"doc_count":12},{"key_as_string":"2017-02-08T09:48:00.000Z","key":1486547280000,"doc_count":10},{"key_as_string":"2017-02-08T09:49:00.000Z","key":1486547340000,"doc_count":18},{"key_as_string":"2017-02-08T09:50:00.000Z","key":1486547400000,"doc_count":16},{"key_as_string":"2017-02-08T09:51:00.000Z","key":1486547460000,"doc_count":20},{"key_as_string":"2017-02-08T09:52:00.000Z","key":1486547520000,"doc_count":12},{"key_as_string":"2017-02-08T09:53:00.000Z","key":1486547580000,"doc_count":13},{"key_as_string":"2017-02-08T09:54:00.000Z","key":1486547640000,"doc_count":16},{"key_as_string":"2017-02-08T09:55:00.000Z","key":1486547700000,"doc_count":14},{"key_as_string":"2017-02-08T09:56:00.000Z","key":1486547760000,"doc_count":12},{"key_as_string":"2017-02-08T09:57:00.000Z","key":1486547820000,"doc_count":18},{"key_as_string":"2017-02-08T09:58:00.000Z","key":1486547880000,"doc_count":11},{"key_as_string":"2017-02-08T09:59:00.000Z","key":1486547940000,"doc_count":17},{"key_as_string":"2017-02-08T10:00:00.000Z","key":1486548000000,"doc_count":12},{"key_as_string":"2017-02-08T10:01:00.000Z","key":1486548060000,"doc_count":13},{"key_as_string":"2017-02-08T10:02:00.000Z","key":1486548120000,"doc_count":21},{"key_as_string":"2017-02-08T10:03:00.000Z","key":1486548180000,"doc_count":17},{"key_as_string":"2017-02-08T10:04:00.000Z","key":1486548240000,"doc_count":16},{"key_as_string":"2017-02-08T10:05:00.000Z","key":1486548300000,"doc_count":11},{"key_as_string":"2017-02-08T10:06:00.000Z","key":1486548360000,"doc_count":16},{"key_as_string":"2017-02-08T10:07:00.000Z","key":1486548420000,"doc_count":11},{"key_as_string":"2017-02-08T10:08:00.000Z","key":1486548480000,"doc_count":15},{"key_as_string":"2017-02-08T10:09:00.000Z","key":1486548540000,"doc_count":12},{"key_as_string":"2017-02-08T10:10:00.000Z","key":1486548600000,"doc_count":14},{"key_as_string":"2017-02-08T10:11:00.000Z","key":1486548660000,"doc_count":11},{"key_as_string":"2017-02-08T10:12:00.000Z","key":1486548720000,"doc_count":19},{"key_as_string":"2017-02-08T10:13:00.000Z","key":1486548780000,"doc_count":13},{"key_as_string":"2017-02-08T10:14:00.000Z","key":1486548840000,"doc_count":16},{"key_as_string":"2017-02-08T10:15:00.000Z","key":1486548900000,"doc_count":10},{"key_as_string":"2017-02-08T10:16:00.000Z","key":1486548960000,"doc_count":13},{"key_as_string":"2017-02-08T10:17:00.000Z","key":1486549020000,"doc_count":8},{"key_as_string":"2017-02-08T10:18:00.000Z","key":1486549080000,"doc_count":15},{"key_as_string":"2017-02-08T10:19:00.000Z","key":1486549140000,"doc_count":14},{"key_as_string":"2017-02-08T10:20:00.000Z","key":1486549200000,"doc_count":14},{"key_as_string":"2017-02-08T10:21:00.000Z","key":1486549260000,"doc_count":10},{"key_as_string":"2017-02-08T10:22:00.000Z","key":1486549320000,"doc_count":15},{"key_as_string":"2017-02-08T10:23:00.000Z","key":1486549380000,"doc_count":10},{"key_as_string":"2017-02-08T10:24:00.000Z","key":1486549440000,"doc_count":13},{"key_as_string":"2017-02-08T10:25:00.000Z","key":1486549500000,"doc_count":14},{"key_as_string":"2017-02-08T10:26:00.000Z","key":1486549560000,"doc_count":14},{"key_as_string":"2017-02-08T10:27:00.000Z","key":1486549620000,"doc_count":17},{"key_as_string":"2017-02-08T10:28:00.000Z","key":1486549680000,"doc_count":10},{"key_as_string":"2017-02-08T10:29:00.000Z","key":1486549740000,"doc_count":13},{"key_as_string":"2017-02-08T10:30:00.000Z","key":1486549800000,"doc_count":16},{"key_as_string":"2017-02-08T10:31:00.000Z","key":1486549860000,"doc_count":14},{"key_as_string":"2017-02-08T10:32:00.000Z","key":1486549920000,"doc_count":16},{"key_as_string":"2017-02-08T10:33:00.000Z","key":1486549980000,"doc_count":15},{"key_as_string":"2017-02-08T10:34:00.000Z","key":1486550040000,"doc_count":15},{"key_as_string":"2017-02-08T10:35:00.000Z","key":1486550100000,"doc_count":15},{"key_as_string":"2017-02-08T10:36:00.000Z","key":1486550160000,"doc_count":10},{"key_as_string":"2017-02-08T10:37:00.000Z","key":1486550220000,"doc_count":15},{"key_as_string":"2017-02-08T10:38:00.000Z","key":1486550280000,"doc_count":14},{"key_as_string":"2017-02-08T10:39:00.000Z","key":1486550340000,"doc_count":17},{"key_as_string":"2017-02-08T10:40:00.000Z","key":1486550400000,"doc_count":15},{"key_as_string":"2017-02-08T10:41:00.000Z","key":1486550460000,"doc_count":19},{"key_as_string":"2017-02-08T10:42:00.000Z","key":1486550520000,"doc_count":9},{"key_as_string":"2017-02-08T10:43:00.000Z","key":1486550580000,"doc_count":14},{"key_as_string":"2017-02-08T10:44:00.000Z","key":1486550640000,"doc_count":10},{"key_as_string":"2017-02-08T10:45:00.000Z","key":1486550700000,"doc_count":20},{"key_as_string":"2017-02-08T10:46:00.000Z","key":1486550760000,"doc_count":10},{"key_as_string":"2017-02-08T10:47:00.000Z","key":1486550820000,"doc_count":16},{"key_as_string":"2017-02-08T10:48:00.000Z","key":1486550880000,"doc_count":13},{"key_as_string":"2017-02-08T10:49:00.000Z","key":1486550940000,"doc_count":14},{"key_as_string":"2017-02-08T10:50:00.000Z","key":1486551000000,"doc_count":10},{"key_as_string":"2017-02-08T10:51:00.000Z","key":1486551060000,"doc_count":17},{"key_as_string":"2017-02-08T10:52:00.000Z","key":1486551120000,"doc_count":16},{"key_as_string":"2017-02-08T10:53:00.000Z","key":1486551180000,"doc_count":9},{"key_as_string":"2017-02-08T10:54:00.000Z","key":1486551240000,"doc_count":15},{"key_as_string":"2017-02-08T10:55:00.000Z","key":1486551300000,"doc_count":16},{"key_as_string":"2017-02-08T10:56:00.000Z","key":1486551360000,"doc_count":5},{"key_as_string":"2017-02-08T10:57:00.000Z","key":1486551420000,"doc_count":15},{"key_as_string":"2017-02-08T10:58:00.000Z","key":1486551480000,"doc_count":9},{"key_as_string":"2017-02-08T10:59:00.000Z","key":1486551540000,"doc_count":14},{"key_as_string":"2017-02-08T11:00:00.000Z","key":1486551600000,"doc_count":16},{"key_as_string":"2017-02-08T11:01:00.000Z","key":1486551660000,"doc_count":9},{"key_as_string":"2017-02-08T11:02:00.000Z","key":1486551720000,"doc_count":17},{"key_as_string":"2017-02-08T11:03:00.000Z","key":1486551780000,"doc_count":9},{"key_as_string":"2017-02-08T11:04:00.000Z","key":1486551840000,"doc_count":18},{"key_as_string":"2017-02-08T11:05:00.000Z","key":1486551900000,"doc_count":12},{"key_as_string":"2017-02-08T11:06:00.000Z","key":1486551960000,"doc_count":16},{"key_as_string":"2017-02-08T11:07:00.000Z","key":1486552020000,"doc_count":13},{"key_as_string":"2017-02-08T11:08:00.000Z","key":1486552080000,"doc_count":14},{"key_as_string":"2017-02-08T11:09:00.000Z","key":1486552140000,"doc_count":13},{"key_as_string":"2017-02-08T11:10:00.000Z","key":1486552200000,"doc_count":17},{"key_as_string":"2017-02-08T11:11:00.000Z","key":1486552260000,"doc_count":12},{"key_as_string":"2017-02-08T11:12:00.000Z","key":1486552320000,"doc_count":11},{"key_as_string":"2017-02-08T11:13:00.000Z","key":1486552380000,"doc_count":15},{"key_as_string":"2017-02-08T11:14:00.000Z","key":1486552440000,"doc_count":10},{"key_as_string":"2017-02-08T11:15:00.000Z","key":1486552500000,"doc_count":9},{"key_as_string":"2017-02-08T11:16:00.000Z","key":1486552560000,"doc_count":14},{"key_as_string":"2017-02-08T11:17:00.000Z","key":1486552620000,"doc_count":16},{"key_as_string":"2017-02-08T11:18:00.000Z","key":1486552680000,"doc_count":19},{"key_as_string":"2017-02-08T11:19:00.000Z","key":1486552740000,"doc_count":14},{"key_as_string":"2017-02-08T11:20:00.000Z","key":1486552800000,"doc_count":10},{"key_as_string":"2017-02-08T11:21:00.000Z","key":1486552860000,"doc_count":14},{"key_as_string":"2017-02-08T11:22:00.000Z","key":1486552920000,"doc_count":13},{"key_as_string":"2017-02-08T11:23:00.000Z","key":1486552980000,"doc_count":16},{"key_as_string":"2017-02-08T11:24:00.000Z","key":1486553040000,"doc_count":15},{"key_as_string":"2017-02-08T11:25:00.000Z","key":1486553100000,"doc_count":16},{"key_as_string":"2017-02-08T11:26:00.000Z","key":1486553160000,"doc_count":18},{"key_as_string":"2017-02-08T11:27:00.000Z","key":1486553220000,"doc_count":13},{"key_as_string":"2017-02-08T11:28:00.000Z","key":1486553280000,"doc_count":13},{"key_as_string":"2017-02-08T11:29:00.000Z","key":1486553340000,"doc_count":16},{"key_as_string":"2017-02-08T11:30:00.000Z","key":1486553400000,"doc_count":13},{"key_as_string":"2017-02-08T11:31:00.000Z","key":1486553460000,"doc_count":16},{"key_as_string":"2017-02-08T11:32:00.000Z","key":1486553520000,"doc_count":13},{"key_as_string":"2017-02-08T11:33:00.000Z","key":1486553580000,"doc_count":18},{"key_as_string":"2017-02-08T11:34:00.000Z","key":1486553640000,"doc_count":12},{"key_as_string":"2017-02-08T11:35:00.000Z","key":1486553700000,"doc_count":11},{"key_as_string":"2017-02-08T11:36:00.000Z","key":1486553760000,"doc_count":16},{"key_as_string":"2017-02-08T11:37:00.000Z","key":1486553820000,"doc_count":18},{"key_as_string":"2017-02-08T11:38:00.000Z","key":1486553880000,"doc_count":10},{"key_as_string":"2017-02-08T11:39:00.000Z","key":1486553940000,"doc_count":17},{"key_as_string":"2017-02-08T11:40:00.000Z","key":1486554000000,"doc_count":11},{"key_as_string":"2017-02-08T11:41:00.000Z","key":1486554060000,"doc_count":20},{"key_as_string":"2017-02-08T11:42:00.000Z","key":1486554120000,"doc_count":10},{"key_as_string":"2017-02-08T11:43:00.000Z","key":1486554180000,"doc_count":17},{"key_as_string":"2017-02-08T11:44:00.000Z","key":1486554240000,"doc_count":21},{"key_as_string":"2017-02-08T11:45:00.000Z","key":1486554300000,"doc_count":13},{"key_as_string":"2017-02-08T11:46:00.000Z","key":1486554360000,"doc_count":12},{"key_as_string":"2017-02-08T11:47:00.000Z","key":1486554420000,"doc_count":11},{"key_as_string":"2017-02-08T11:48:00.000Z","key":1486554480000,"doc_count":14},{"key_as_string":"2017-02-08T11:49:00.000Z","key":1486554540000,"doc_count":11},{"key_as_string":"2017-02-08T11:50:00.000Z","key":1486554600000,"doc_count":9},{"key_as_string":"2017-02-08T11:51:00.000Z","key":1486554660000,"doc_count":14},{"key_as_string":"2017-02-08T11:52:00.000Z","key":1486554720000,"doc_count":13},{"key_as_string":"2017-02-08T11:53:00.000Z","key":1486554780000,"doc_count":12},{"key_as_string":"2017-02-08T11:54:00.000Z","key":1486554840000,"doc_count":13},{"key_as_string":"2017-02-08T11:55:00.000Z","key":1486554900000,"doc_count":18},{"key_as_string":"2017-02-08T11:56:00.000Z","key":1486554960000,"doc_count":18},{"key_as_string":"2017-02-08T11:57:00.000Z","key":1486555020000,"doc_count":13},{"key_as_string":"2017-02-08T11:58:00.000Z","key":1486555080000,"doc_count":13},{"key_as_string":"2017-02-08T11:59:00.000Z","key":1486555140000,"doc_count":14},{"key_as_string":"2017-02-08T12:00:00.000Z","key":1486555200000,"doc_count":18},{"key_as_string":"2017-02-08T12:01:00.000Z","key":1486555260000,"doc_count":14},{"key_as_string":"2017-02-08T12:02:00.000Z","key":1486555320000,"doc_count":14},{"key_as_string":"2017-02-08T12:03:00.000Z","key":1486555380000,"doc_count":13},{"key_as_string":"2017-02-08T12:04:00.000Z","key":1486555440000,"doc_count":18},{"key_as_string":"2017-02-08T12:05:00.000Z","key":1486555500000,"doc_count":13},{"key_as_string":"2017-02-08T12:06:00.000Z","key":1486555560000,"doc_count":16},{"key_as_string":"2017-02-08T12:07:00.000Z","key":1486555620000,"doc_count":13},{"key_as_string":"2017-02-08T12:08:00.000Z","key":1486555680000,"doc_count":14},{"key_as_string":"2017-02-08T12:09:00.000Z","key":1486555740000,"doc_count":16},{"key_as_string":"2017-02-08T12:10:00.000Z","key":1486555800000,"doc_count":13},{"key_as_string":"2017-02-08T12:11:00.000Z","key":1486555860000,"doc_count":13},{"key_as_string":"2017-02-08T12:12:00.000Z","key":1486555920000,"doc_count":15},{"key_as_string":"2017-02-08T12:13:00.000Z","key":1486555980000,"doc_count":11},{"key_as_string":"2017-02-08T12:14:00.000Z","key":1486556040000,"doc_count":15},{"key_as_string":"2017-02-08T12:15:00.000Z","key":1486556100000,"doc_count":12},{"key_as_string":"2017-02-08T12:16:00.000Z","key":1486556160000,"doc_count":14},{"key_as_string":"2017-02-08T12:17:00.000Z","key":1486556220000,"doc_count":13},{"key_as_string":"2017-02-08T12:18:00.000Z","key":1486556280000,"doc_count":19},{"key_as_string":"2017-02-08T12:19:00.000Z","key":1486556340000,"doc_count":13},{"key_as_string":"2017-02-08T12:20:00.000Z","key":1486556400000,"doc_count":14},{"key_as_string":"2017-02-08T12:21:00.000Z","key":1486556460000,"doc_count":12},{"key_as_string":"2017-02-08T12:22:00.000Z","key":1486556520000,"doc_count":15},{"key_as_string":"2017-02-08T12:23:00.000Z","key":1486556580000,"doc_count":17},{"key_as_string":"2017-02-08T12:24:00.000Z","key":1486556640000,"doc_count":14},{"key_as_string":"2017-02-08T12:25:00.000Z","key":1486556700000,"doc_count":10},{"key_as_string":"2017-02-08T12:26:00.000Z","key":1486556760000,"doc_count":13},{"key_as_string":"2017-02-08T12:27:00.000Z","key":1486556820000,"doc_count":14},{"key_as_string":"2017-02-08T12:28:00.000Z","key":1486556880000,"doc_count":10},{"key_as_string":"2017-02-08T12:29:00.000Z","key":1486556940000,"doc_count":13},{"key_as_string":"2017-02-08T12:30:00.000Z","key":1486557000000,"doc_count":16},{"key_as_string":"2017-02-08T12:31:00.000Z","key":1486557060000,"doc_count":15},{"key_as_string":"2017-02-08T12:32:00.000Z","key":1486557120000,"doc_count":9},{"key_as_string":"2017-02-08T12:33:00.000Z","key":1486557180000,"doc_count":16},{"key_as_string":"2017-02-08T12:34:00.000Z","key":1486557240000,"doc_count":16},{"key_as_string":"2017-02-08T12:35:00.000Z","key":1486557300000,"doc_count":9},{"key_as_string":"2017-02-08T12:36:00.000Z","key":1486557360000,"doc_count":11},{"key_as_string":"2017-02-08T12:37:00.000Z","key":1486557420000,"doc_count":12},{"key_as_string":"2017-02-08T12:38:00.000Z","key":1486557480000,"doc_count":16},{"key_as_string":"2017-02-08T12:39:00.000Z","key":1486557540000,"doc_count":13},{"key_as_string":"2017-02-08T12:40:00.000Z","key":1486557600000,"doc_count":12},{"key_as_string":"2017-02-08T12:41:00.000Z","key":1486557660000,"doc_count":15},{"key_as_string":"2017-02-08T12:42:00.000Z","key":1486557720000,"doc_count":12},{"key_as_string":"2017-02-08T12:43:00.000Z","key":1486557780000,"doc_count":13},{"key_as_string":"2017-02-08T12:44:00.000Z","key":1486557840000,"doc_count":13},{"key_as_string":"2017-02-08T12:45:00.000Z","key":1486557900000,"doc_count":15},{"key_as_string":"2017-02-08T12:46:00.000Z","key":1486557960000,"doc_count":15},{"key_as_string":"2017-02-08T12:47:00.000Z","key":1486558020000,"doc_count":12},{"key_as_string":"2017-02-08T12:48:00.000Z","key":1486558080000,"doc_count":13},{"key_as_string":"2017-02-08T12:49:00.000Z","key":1486558140000,"doc_count":15},{"key_as_string":"2017-02-08T12:50:00.000Z","key":1486558200000,"doc_count":16},{"key_as_string":"2017-02-08T12:51:00.000Z","key":1486558260000,"doc_count":14},{"key_as_string":"2017-02-08T12:52:00.000Z","key":1486558320000,"doc_count":11},{"key_as_string":"2017-02-08T12:53:00.000Z","key":1486558380000,"doc_count":10},{"key_as_string":"2017-02-08T12:54:00.000Z","key":1486558440000,"doc_count":14},{"key_as_string":"2017-02-08T12:55:00.000Z","key":1486558500000,"doc_count":11},{"key_as_string":"2017-02-08T12:56:00.000Z","key":1486558560000,"doc_count":9},{"key_as_string":"2017-02-08T12:57:00.000Z","key":1486558620000,"doc_count":13},{"key_as_string":"2017-02-08T12:58:00.000Z","key":1486558680000,"doc_count":13},{"key_as_string":"2017-02-08T12:59:00.000Z","key":1486558740000,"doc_count":13},{"key_as_string":"2017-02-08T13:00:00.000Z","key":1486558800000,"doc_count":18},{"key_as_string":"2017-02-08T13:01:00.000Z","key":1486558860000,"doc_count":13},{"key_as_string":"2017-02-08T13:02:00.000Z","key":1486558920000,"doc_count":20},{"key_as_string":"2017-02-08T13:03:00.000Z","key":1486558980000,"doc_count":10},{"key_as_string":"2017-02-08T13:04:00.000Z","key":1486559040000,"doc_count":16},{"key_as_string":"2017-02-08T13:05:00.000Z","key":1486559100000,"doc_count":11},{"key_as_string":"2017-02-08T13:06:00.000Z","key":1486559160000,"doc_count":18},{"key_as_string":"2017-02-08T13:07:00.000Z","key":1486559220000,"doc_count":10},{"key_as_string":"2017-02-08T13:08:00.000Z","key":1486559280000,"doc_count":15},{"key_as_string":"2017-02-08T13:09:00.000Z","key":1486559340000,"doc_count":17},{"key_as_string":"2017-02-08T13:10:00.000Z","key":1486559400000,"doc_count":6},{"key_as_string":"2017-02-08T13:11:00.000Z","key":1486559460000,"doc_count":19},{"key_as_string":"2017-02-08T13:12:00.000Z","key":1486559520000,"doc_count":12},{"key_as_string":"2017-02-08T13:13:00.000Z","key":1486559580000,"doc_count":11},{"key_as_string":"2017-02-08T13:14:00.000Z","key":1486559640000,"doc_count":15},{"key_as_string":"2017-02-08T13:15:00.000Z","key":1486559700000,"doc_count":10},{"key_as_string":"2017-02-08T13:16:00.000Z","key":1486559760000,"doc_count":16},{"key_as_string":"2017-02-08T13:17:00.000Z","key":1486559820000,"doc_count":16},{"key_as_string":"2017-02-08T13:18:00.000Z","key":1486559880000,"doc_count":14},{"key_as_string":"2017-02-08T13:19:00.000Z","key":1486559940000,"doc_count":12},{"key_as_string":"2017-02-08T13:20:00.000Z","key":1486560000000,"doc_count":10},{"key_as_string":"2017-02-08T13:21:00.000Z","key":1486560060000,"doc_count":18},{"key_as_string":"2017-02-08T13:22:00.000Z","key":1486560120000,"doc_count":14},{"key_as_string":"2017-02-08T13:23:00.000Z","key":1486560180000,"doc_count":11},{"key_as_string":"2017-02-08T13:24:00.000Z","key":1486560240000,"doc_count":15},{"key_as_string":"2017-02-08T13:25:00.000Z","key":1486560300000,"doc_count":17},{"key_as_string":"2017-02-08T13:26:00.000Z","key":1486560360000,"doc_count":10},{"key_as_string":"2017-02-08T13:27:00.000Z","key":1486560420000,"doc_count":14},{"key_as_string":"2017-02-08T13:28:00.000Z","key":1486560480000,"doc_count":14},{"key_as_string":"2017-02-08T13:29:00.000Z","key":1486560540000,"doc_count":13},{"key_as_string":"2017-02-08T13:30:00.000Z","key":1486560600000,"doc_count":15},{"key_as_string":"2017-02-08T13:31:00.000Z","key":1486560660000,"doc_count":16},{"key_as_string":"2017-02-08T13:32:00.000Z","key":1486560720000,"doc_count":13},{"key_as_string":"2017-02-08T13:33:00.000Z","key":1486560780000,"doc_count":13},{"key_as_string":"2017-02-08T13:34:00.000Z","key":1486560840000,"doc_count":15},{"key_as_string":"2017-02-08T13:35:00.000Z","key":1486560900000,"doc_count":8},{"key_as_string":"2017-02-08T13:36:00.000Z","key":1486560960000,"doc_count":18},{"key_as_string":"2017-02-08T13:37:00.000Z","key":1486561020000,"doc_count":13},{"key_as_string":"2017-02-08T13:38:00.000Z","key":1486561080000,"doc_count":14},{"key_as_string":"2017-02-08T13:39:00.000Z","key":1486561140000,"doc_count":14},{"key_as_string":"2017-02-08T13:40:00.000Z","key":1486561200000,"doc_count":17},{"key_as_string":"2017-02-08T13:41:00.000Z","key":1486561260000,"doc_count":12},{"key_as_string":"2017-02-08T13:42:00.000Z","key":1486561320000,"doc_count":10},{"key_as_string":"2017-02-08T13:43:00.000Z","key":1486561380000,"doc_count":17},{"key_as_string":"2017-02-08T13:44:00.000Z","key":1486561440000,"doc_count":12},{"key_as_string":"2017-02-08T13:45:00.000Z","key":1486561500000,"doc_count":9},{"key_as_string":"2017-02-08T13:46:00.000Z","key":1486561560000,"doc_count":21},{"key_as_string":"2017-02-08T13:47:00.000Z","key":1486561620000,"doc_count":16},{"key_as_string":"2017-02-08T13:48:00.000Z","key":1486561680000,"doc_count":17},{"key_as_string":"2017-02-08T13:49:00.000Z","key":1486561740000,"doc_count":11},{"key_as_string":"2017-02-08T13:50:00.000Z","key":1486561800000,"doc_count":17},{"key_as_string":"2017-02-08T13:51:00.000Z","key":1486561860000,"doc_count":9},{"key_as_string":"2017-02-08T13:52:00.000Z","key":1486561920000,"doc_count":14},{"key_as_string":"2017-02-08T13:53:00.000Z","key":1486561980000,"doc_count":10},{"key_as_string":"2017-02-08T13:54:00.000Z","key":1486562040000,"doc_count":9},{"key_as_string":"2017-02-08T13:55:00.000Z","key":1486562100000,"doc_count":21},{"key_as_string":"2017-02-08T13:56:00.000Z","key":1486562160000,"doc_count":14},{"key_as_string":"2017-02-08T13:57:00.000Z","key":1486562220000,"doc_count":11},{"key_as_string":"2017-02-08T13:58:00.000Z","key":1486562280000,"doc_count":15},{"key_as_string":"2017-02-08T13:59:00.000Z","key":1486562340000,"doc_count":10},{"key_as_string":"2017-02-08T14:00:00.000Z","key":1486562400000,"doc_count":12},{"key_as_string":"2017-02-08T14:01:00.000Z","key":1486562460000,"doc_count":15},{"key_as_string":"2017-02-08T14:02:00.000Z","key":1486562520000,"doc_count":11},{"key_as_string":"2017-02-08T14:03:00.000Z","key":1486562580000,"doc_count":14},{"key_as_string":"2017-02-08T14:04:00.000Z","key":1486562640000,"doc_count":18},{"key_as_string":"2017-02-08T14:05:00.000Z","key":1486562700000,"doc_count":11},{"key_as_string":"2017-02-08T14:06:00.000Z","key":1486562760000,"doc_count":11},{"key_as_string":"2017-02-08T14:07:00.000Z","key":1486562820000,"doc_count":16},{"key_as_string":"2017-02-08T14:08:00.000Z","key":1486562880000,"doc_count":10},{"key_as_string":"2017-02-08T14:09:00.000Z","key":1486562940000,"doc_count":14},{"key_as_string":"2017-02-08T14:10:00.000Z","key":1486563000000,"doc_count":14},{"key_as_string":"2017-02-08T14:11:00.000Z","key":1486563060000,"doc_count":9},{"key_as_string":"2017-02-08T14:12:00.000Z","key":1486563120000,"doc_count":15},{"key_as_string":"2017-02-08T14:13:00.000Z","key":1486563180000,"doc_count":17},{"key_as_string":"2017-02-08T14:14:00.000Z","key":1486563240000,"doc_count":5},{"key_as_string":"2017-02-08T14:15:00.000Z","key":1486563300000,"doc_count":15},{"key_as_string":"2017-02-08T14:16:00.000Z","key":1486563360000,"doc_count":15},{"key_as_string":"2017-02-08T14:17:00.000Z","key":1486563420000,"doc_count":13},{"key_as_string":"2017-02-08T14:18:00.000Z","key":1486563480000,"doc_count":15},{"key_as_string":"2017-02-08T14:19:00.000Z","key":1486563540000,"doc_count":14},{"key_as_string":"2017-02-08T14:20:00.000Z","key":1486563600000,"doc_count":8},{"key_as_string":"2017-02-08T14:21:00.000Z","key":1486563660000,"doc_count":14},{"key_as_string":"2017-02-08T14:22:00.000Z","key":1486563720000,"doc_count":11},{"key_as_string":"2017-02-08T14:23:00.000Z","key":1486563780000,"doc_count":14},{"key_as_string":"2017-02-08T14:24:00.000Z","key":1486563840000,"doc_count":15},{"key_as_string":"2017-02-08T14:25:00.000Z","key":1486563900000,"doc_count":9},{"key_as_string":"2017-02-08T14:26:00.000Z","key":1486563960000,"doc_count":16},{"key_as_string":"2017-02-08T14:27:00.000Z","key":1486564020000,"doc_count":15},{"key_as_string":"2017-02-08T14:28:00.000Z","key":1486564080000,"doc_count":13},{"key_as_string":"2017-02-08T14:29:00.000Z","key":1486564140000,"doc_count":14},{"key_as_string":"2017-02-08T14:30:00.000Z","key":1486564200000,"doc_count":10},{"key_as_string":"2017-02-08T14:31:00.000Z","key":1486564260000,"doc_count":15},{"key_as_string":"2017-02-08T14:32:00.000Z","key":1486564320000,"doc_count":15},{"key_as_string":"2017-02-08T14:33:00.000Z","key":1486564380000,"doc_count":11},{"key_as_string":"2017-02-08T14:34:00.000Z","key":1486564440000,"doc_count":13},{"key_as_string":"2017-02-08T14:35:00.000Z","key":1486564500000,"doc_count":14},{"key_as_string":"2017-02-08T14:36:00.000Z","key":1486564560000,"doc_count":11},{"key_as_string":"2017-02-08T14:37:00.000Z","key":1486564620000,"doc_count":10},{"key_as_string":"2017-02-08T14:38:00.000Z","key":1486564680000,"doc_count":18},{"key_as_string":"2017-02-08T14:39:00.000Z","key":1486564740000,"doc_count":12},{"key_as_string":"2017-02-08T14:40:00.000Z","key":1486564800000,"doc_count":14},{"key_as_string":"2017-02-08T14:41:00.000Z","key":1486564860000,"doc_count":15},{"key_as_string":"2017-02-08T14:42:00.000Z","key":1486564920000,"doc_count":17},{"key_as_string":"2017-02-08T14:43:00.000Z","key":1486564980000,"doc_count":9},{"key_as_string":"2017-02-08T14:44:00.000Z","key":1486565040000,"doc_count":10},{"key_as_string":"2017-02-08T14:45:00.000Z","key":1486565100000,"doc_count":9},{"key_as_string":"2017-02-08T14:46:00.000Z","key":1486565160000,"doc_count":15},{"key_as_string":"2017-02-08T14:47:00.000Z","key":1486565220000,"doc_count":12},{"key_as_string":"2017-02-08T14:48:00.000Z","key":1486565280000,"doc_count":10},{"key_as_string":"2017-02-08T14:49:00.000Z","key":1486565340000,"doc_count":18},{"key_as_string":"2017-02-08T14:50:00.000Z","key":1486565400000,"doc_count":9},{"key_as_string":"2017-02-08T14:51:00.000Z","key":1486565460000,"doc_count":15},{"key_as_string":"2017-02-08T14:52:00.000Z","key":1486565520000,"doc_count":19},{"key_as_string":"2017-02-08T14:53:00.000Z","key":1486565580000,"doc_count":11},{"key_as_string":"2017-02-08T14:54:00.000Z","key":1486565640000,"doc_count":12},{"key_as_string":"2017-02-08T14:55:00.000Z","key":1486565700000,"doc_count":10},{"key_as_string":"2017-02-08T14:56:00.000Z","key":1486565760000,"doc_count":9},{"key_as_string":"2017-02-08T14:57:00.000Z","key":1486565820000,"doc_count":21},{"key_as_string":"2017-02-08T14:58:00.000Z","key":1486565880000,"doc_count":13},{"key_as_string":"2017-02-08T14:59:00.000Z","key":1486565940000,"doc_count":16},{"key_as_string":"2017-02-08T15:00:00.000Z","key":1486566000000,"doc_count":9},{"key_as_string":"2017-02-08T15:01:00.000Z","key":1486566060000,"doc_count":16},{"key_as_string":"2017-02-08T15:02:00.000Z","key":1486566120000,"doc_count":11},{"key_as_string":"2017-02-08T15:03:00.000Z","key":1486566180000,"doc_count":14},{"key_as_string":"2017-02-08T15:04:00.000Z","key":1486566240000,"doc_count":16},{"key_as_string":"2017-02-08T15:05:00.000Z","key":1486566300000,"doc_count":10},{"key_as_string":"2017-02-08T15:06:00.000Z","key":1486566360000,"doc_count":14},{"key_as_string":"2017-02-08T15:07:00.000Z","key":1486566420000,"doc_count":9},{"key_as_string":"2017-02-08T15:08:00.000Z","key":1486566480000,"doc_count":13},{"key_as_string":"2017-02-08T15:09:00.000Z","key":1486566540000,"doc_count":13},{"key_as_string":"2017-02-08T15:10:00.000Z","key":1486566600000,"doc_count":14},{"key_as_string":"2017-02-08T15:11:00.000Z","key":1486566660000,"doc_count":15},{"key_as_string":"2017-02-08T15:12:00.000Z","key":1486566720000,"doc_count":15},{"key_as_string":"2017-02-08T15:13:00.000Z","key":1486566780000,"doc_count":11},{"key_as_string":"2017-02-08T15:14:00.000Z","key":1486566840000,"doc_count":7},{"key_as_string":"2017-02-08T15:15:00.000Z","key":1486566900000,"doc_count":20},{"key_as_string":"2017-02-08T15:16:00.000Z","key":1486566960000,"doc_count":11},{"key_as_string":"2017-02-08T15:17:00.000Z","key":1486567020000,"doc_count":15},{"key_as_string":"2017-02-08T15:18:00.000Z","key":1486567080000,"doc_count":14},{"key_as_string":"2017-02-08T15:19:00.000Z","key":1486567140000,"doc_count":11},{"key_as_string":"2017-02-08T15:20:00.000Z","key":1486567200000,"doc_count":18},{"key_as_string":"2017-02-08T15:21:00.000Z","key":1486567260000,"doc_count":11},{"key_as_string":"2017-02-08T15:22:00.000Z","key":1486567320000,"doc_count":12},{"key_as_string":"2017-02-08T15:23:00.000Z","key":1486567380000,"doc_count":12},{"key_as_string":"2017-02-08T15:24:00.000Z","key":1486567440000,"doc_count":8},{"key_as_string":"2017-02-08T15:25:00.000Z","key":1486567500000,"doc_count":11},{"key_as_string":"2017-02-08T15:26:00.000Z","key":1486567560000,"doc_count":12},{"key_as_string":"2017-02-08T15:27:00.000Z","key":1486567620000,"doc_count":12},{"key_as_string":"2017-02-08T15:28:00.000Z","key":1486567680000,"doc_count":14},{"key_as_string":"2017-02-08T15:29:00.000Z","key":1486567740000,"doc_count":13},{"key_as_string":"2017-02-08T15:30:00.000Z","key":1486567800000,"doc_count":13},{"key_as_string":"2017-02-08T15:31:00.000Z","key":1486567860000,"doc_count":14},{"key_as_string":"2017-02-08T15:32:00.000Z","key":1486567920000,"doc_count":15},{"key_as_string":"2017-02-08T15:33:00.000Z","key":1486567980000,"doc_count":12},{"key_as_string":"2017-02-08T15:34:00.000Z","key":1486568040000,"doc_count":15},{"key_as_string":"2017-02-08T15:35:00.000Z","key":1486568100000,"doc_count":20},{"key_as_string":"2017-02-08T15:36:00.000Z","key":1486568160000,"doc_count":11},{"key_as_string":"2017-02-08T15:37:00.000Z","key":1486568220000,"doc_count":13},{"key_as_string":"2017-02-08T15:38:00.000Z","key":1486568280000,"doc_count":13},{"key_as_string":"2017-02-08T15:39:00.000Z","key":1486568340000,"doc_count":10},{"key_as_string":"2017-02-08T15:40:00.000Z","key":1486568400000,"doc_count":14},{"key_as_string":"2017-02-08T15:41:00.000Z","key":1486568460000,"doc_count":16},{"key_as_string":"2017-02-08T15:42:00.000Z","key":1486568520000,"doc_count":17},{"key_as_string":"2017-02-08T15:43:00.000Z","key":1486568580000,"doc_count":15},{"key_as_string":"2017-02-08T15:44:00.000Z","key":1486568640000,"doc_count":14},{"key_as_string":"2017-02-08T15:45:00.000Z","key":1486568700000,"doc_count":14},{"key_as_string":"2017-02-08T15:46:00.000Z","key":1486568760000,"doc_count":12},{"key_as_string":"2017-02-08T15:47:00.000Z","key":1486568820000,"doc_count":16},{"key_as_string":"2017-02-08T15:48:00.000Z","key":1486568880000,"doc_count":16},{"key_as_string":"2017-02-08T15:49:00.000Z","key":1486568940000,"doc_count":12},{"key_as_string":"2017-02-08T15:50:00.000Z","key":1486569000000,"doc_count":15},{"key_as_string":"2017-02-08T15:51:00.000Z","key":1486569060000,"doc_count":10},{"key_as_string":"2017-02-08T15:52:00.000Z","key":1486569120000,"doc_count":12},{"key_as_string":"2017-02-08T15:53:00.000Z","key":1486569180000,"doc_count":12},{"key_as_string":"2017-02-08T15:54:00.000Z","key":1486569240000,"doc_count":16},{"key_as_string":"2017-02-08T15:55:00.000Z","key":1486569300000,"doc_count":12},{"key_as_string":"2017-02-08T15:56:00.000Z","key":1486569360000,"doc_count":9},{"key_as_string":"2017-02-08T15:57:00.000Z","key":1486569420000,"doc_count":11},{"key_as_string":"2017-02-08T15:58:00.000Z","key":1486569480000,"doc_count":10},{"key_as_string":"2017-02-08T15:59:00.000Z","key":1486569540000,"doc_count":12},{"key_as_string":"2017-02-08T16:00:00.000Z","key":1486569600000,"doc_count":12},{"key_as_string":"2017-02-08T16:01:00.000Z","key":1486569660000,"doc_count":14},{"key_as_string":"2017-02-08T16:02:00.000Z","key":1486569720000,"doc_count":13},{"key_as_string":"2017-02-08T16:03:00.000Z","key":1486569780000,"doc_count":11},{"key_as_string":"2017-02-08T16:04:00.000Z","key":1486569840000,"doc_count":12},{"key_as_string":"2017-02-08T16:05:00.000Z","key":1486569900000,"doc_count":16},{"key_as_string":"2017-02-08T16:06:00.000Z","key":1486569960000,"doc_count":13},{"key_as_string":"2017-02-08T16:07:00.000Z","key":1486570020000,"doc_count":12},{"key_as_string":"2017-02-08T16:08:00.000Z","key":1486570080000,"doc_count":15},{"key_as_string":"2017-02-08T16:09:00.000Z","key":1486570140000,"doc_count":7},{"key_as_string":"2017-02-08T16:10:00.000Z","key":1486570200000,"doc_count":15},{"key_as_string":"2017-02-08T16:11:00.000Z","key":1486570260000,"doc_count":13},{"key_as_string":"2017-02-08T16:12:00.000Z","key":1486570320000,"doc_count":10},{"key_as_string":"2017-02-08T16:13:00.000Z","key":1486570380000,"doc_count":13},{"key_as_string":"2017-02-08T16:14:00.000Z","key":1486570440000,"doc_count":13},{"key_as_string":"2017-02-08T16:15:00.000Z","key":1486570500000,"doc_count":7},{"key_as_string":"2017-02-08T16:16:00.000Z","key":1486570560000,"doc_count":12},{"key_as_string":"2017-02-08T16:17:00.000Z","key":1486570620000,"doc_count":11},{"key_as_string":"2017-02-08T16:18:00.000Z","key":1486570680000,"doc_count":10},{"key_as_string":"2017-02-08T16:19:00.000Z","key":1486570740000,"doc_count":8},{"key_as_string":"2017-02-08T16:20:00.000Z","key":1486570800000,"doc_count":13},{"key_as_string":"2017-02-08T16:21:00.000Z","key":1486570860000,"doc_count":12},{"key_as_string":"2017-02-08T16:22:00.000Z","key":1486570920000,"doc_count":12},{"key_as_string":"2017-02-08T16:23:00.000Z","key":1486570980000,"doc_count":9},{"key_as_string":"2017-02-08T16:24:00.000Z","key":1486571040000,"doc_count":12},{"key_as_string":"2017-02-08T16:25:00.000Z","key":1486571100000,"doc_count":13},{"key_as_string":"2017-02-08T16:26:00.000Z","key":1486571160000,"doc_count":17},{"key_as_string":"2017-02-08T16:27:00.000Z","key":1486571220000,"doc_count":15},{"key_as_string":"2017-02-08T16:28:00.000Z","key":1486571280000,"doc_count":14},{"key_as_string":"2017-02-08T16:29:00.000Z","key":1486571340000,"doc_count":15},{"key_as_string":"2017-02-08T16:30:00.000Z","key":1486571400000,"doc_count":12},{"key_as_string":"2017-02-08T16:31:00.000Z","key":1486571460000,"doc_count":11},{"key_as_string":"2017-02-08T16:32:00.000Z","key":1486571520000,"doc_count":16},{"key_as_string":"2017-02-08T16:33:00.000Z","key":1486571580000,"doc_count":9},{"key_as_string":"2017-02-08T16:34:00.000Z","key":1486571640000,"doc_count":10},{"key_as_string":"2017-02-08T16:35:00.000Z","key":1486571700000,"doc_count":16},{"key_as_string":"2017-02-08T16:36:00.000Z","key":1486571760000,"doc_count":18},{"key_as_string":"2017-02-08T16:37:00.000Z","key":1486571820000,"doc_count":13},{"key_as_string":"2017-02-08T16:38:00.000Z","key":1486571880000,"doc_count":12},{"key_as_string":"2017-02-08T16:39:00.000Z","key":1486571940000,"doc_count":12},{"key_as_string":"2017-02-08T16:40:00.000Z","key":1486572000000,"doc_count":15},{"key_as_string":"2017-02-08T16:41:00.000Z","key":1486572060000,"doc_count":14},{"key_as_string":"2017-02-08T16:42:00.000Z","key":1486572120000,"doc_count":9},{"key_as_string":"2017-02-08T16:43:00.000Z","key":1486572180000,"doc_count":10},{"key_as_string":"2017-02-08T16:44:00.000Z","key":1486572240000,"doc_count":14},{"key_as_string":"2017-02-08T16:45:00.000Z","key":1486572300000,"doc_count":15},{"key_as_string":"2017-02-08T16:46:00.000Z","key":1486572360000,"doc_count":18},{"key_as_string":"2017-02-08T16:47:00.000Z","key":1486572420000,"doc_count":8},{"key_as_string":"2017-02-08T16:48:00.000Z","key":1486572480000,"doc_count":14},{"key_as_string":"2017-02-08T16:49:00.000Z","key":1486572540000,"doc_count":11},{"key_as_string":"2017-02-08T16:50:00.000Z","key":1486572600000,"doc_count":12},{"key_as_string":"2017-02-08T16:51:00.000Z","key":1486572660000,"doc_count":8},{"key_as_string":"2017-02-08T16:52:00.000Z","key":1486572720000,"doc_count":13},{"key_as_string":"2017-02-08T16:53:00.000Z","key":1486572780000,"doc_count":12},{"key_as_string":"2017-02-08T16:54:00.000Z","key":1486572840000,"doc_count":15},{"key_as_string":"2017-02-08T16:55:00.000Z","key":1486572900000,"doc_count":15},{"key_as_string":"2017-02-08T16:56:00.000Z","key":1486572960000,"doc_count":12},{"key_as_string":"2017-02-08T16:57:00.000Z","key":1486573020000,"doc_count":10},{"key_as_string":"2017-02-08T16:58:00.000Z","key":1486573080000,"doc_count":11},{"key_as_string":"2017-02-08T16:59:00.000Z","key":1486573140000,"doc_count":18},{"key_as_string":"2017-02-08T17:00:00.000Z","key":1486573200000,"doc_count":11},{"key_as_string":"2017-02-08T17:01:00.000Z","key":1486573260000,"doc_count":10},{"key_as_string":"2017-02-08T17:02:00.000Z","key":1486573320000,"doc_count":14},{"key_as_string":"2017-02-08T17:03:00.000Z","key":1486573380000,"doc_count":11},{"key_as_string":"2017-02-08T17:04:00.000Z","key":1486573440000,"doc_count":14},{"key_as_string":"2017-02-08T17:05:00.000Z","key":1486573500000,"doc_count":7},{"key_as_string":"2017-02-08T17:06:00.000Z","key":1486573560000,"doc_count":17},{"key_as_string":"2017-02-08T17:07:00.000Z","key":1486573620000,"doc_count":6},{"key_as_string":"2017-02-08T17:08:00.000Z","key":1486573680000,"doc_count":12},{"key_as_string":"2017-02-08T17:09:00.000Z","key":1486573740000,"doc_count":7},{"key_as_string":"2017-02-08T17:10:00.000Z","key":1486573800000,"doc_count":17},{"key_as_string":"2017-02-08T17:11:00.000Z","key":1486573860000,"doc_count":19},{"key_as_string":"2017-02-08T17:12:00.000Z","key":1486573920000,"doc_count":13},{"key_as_string":"2017-02-08T17:13:00.000Z","key":1486573980000,"doc_count":9},{"key_as_string":"2017-02-08T17:14:00.000Z","key":1486574040000,"doc_count":16},{"key_as_string":"2017-02-08T17:15:00.000Z","key":1486574100000,"doc_count":15},{"key_as_string":"2017-02-08T17:16:00.000Z","key":1486574160000,"doc_count":11},{"key_as_string":"2017-02-08T17:17:00.000Z","key":1486574220000,"doc_count":18},{"key_as_string":"2017-02-08T17:18:00.000Z","key":1486574280000,"doc_count":13},{"key_as_string":"2017-02-08T17:19:00.000Z","key":1486574340000,"doc_count":16},{"key_as_string":"2017-02-08T17:20:00.000Z","key":1486574400000,"doc_count":14},{"key_as_string":"2017-02-08T17:21:00.000Z","key":1486574460000,"doc_count":13},{"key_as_string":"2017-02-08T17:22:00.000Z","key":1486574520000,"doc_count":13},{"key_as_string":"2017-02-08T17:23:00.000Z","key":1486574580000,"doc_count":11},{"key_as_string":"2017-02-08T17:24:00.000Z","key":1486574640000,"doc_count":8},{"key_as_string":"2017-02-08T17:25:00.000Z","key":1486574700000,"doc_count":9},{"key_as_string":"2017-02-08T17:26:00.000Z","key":1486574760000,"doc_count":16},{"key_as_string":"2017-02-08T17:27:00.000Z","key":1486574820000,"doc_count":13},{"key_as_string":"2017-02-08T17:28:00.000Z","key":1486574880000,"doc_count":9},{"key_as_string":"2017-02-08T17:29:00.000Z","key":1486574940000,"doc_count":13},{"key_as_string":"2017-02-08T17:30:00.000Z","key":1486575000000,"doc_count":13},{"key_as_string":"2017-02-08T17:31:00.000Z","key":1486575060000,"doc_count":15},{"key_as_string":"2017-02-08T17:32:00.000Z","key":1486575120000,"doc_count":10},{"key_as_string":"2017-02-08T17:33:00.000Z","key":1486575180000,"doc_count":14},{"key_as_string":"2017-02-08T17:34:00.000Z","key":1486575240000,"doc_count":10},{"key_as_string":"2017-02-08T17:35:00.000Z","key":1486575300000,"doc_count":14},{"key_as_string":"2017-02-08T17:36:00.000Z","key":1486575360000,"doc_count":10},{"key_as_string":"2017-02-08T17:37:00.000Z","key":1486575420000,"doc_count":9},{"key_as_string":"2017-02-08T17:38:00.000Z","key":1486575480000,"doc_count":11},{"key_as_string":"2017-02-08T17:39:00.000Z","key":1486575540000,"doc_count":12},{"key_as_string":"2017-02-08T17:40:00.000Z","key":1486575600000,"doc_count":10},{"key_as_string":"2017-02-08T17:41:00.000Z","key":1486575660000,"doc_count":15},{"key_as_string":"2017-02-08T17:42:00.000Z","key":1486575720000,"doc_count":18},{"key_as_string":"2017-02-08T17:43:00.000Z","key":1486575780000,"doc_count":9},{"key_as_string":"2017-02-08T17:44:00.000Z","key":1486575840000,"doc_count":14},{"key_as_string":"2017-02-08T17:45:00.000Z","key":1486575900000,"doc_count":9},{"key_as_string":"2017-02-08T17:46:00.000Z","key":1486575960000,"doc_count":11},{"key_as_string":"2017-02-08T17:47:00.000Z","key":1486576020000,"doc_count":13},{"key_as_string":"2017-02-08T17:48:00.000Z","key":1486576080000,"doc_count":10},{"key_as_string":"2017-02-08T17:49:00.000Z","key":1486576140000,"doc_count":9},{"key_as_string":"2017-02-08T17:50:00.000Z","key":1486576200000,"doc_count":13},{"key_as_string":"2017-02-08T17:51:00.000Z","key":1486576260000,"doc_count":12},{"key_as_string":"2017-02-08T17:52:00.000Z","key":1486576320000,"doc_count":11},{"key_as_string":"2017-02-08T17:53:00.000Z","key":1486576380000,"doc_count":12},{"key_as_string":"2017-02-08T17:54:00.000Z","key":1486576440000,"doc_count":11},{"key_as_string":"2017-02-08T17:55:00.000Z","key":1486576500000,"doc_count":14},{"key_as_string":"2017-02-08T17:56:00.000Z","key":1486576560000,"doc_count":17},{"key_as_string":"2017-02-08T17:57:00.000Z","key":1486576620000,"doc_count":12},{"key_as_string":"2017-02-08T17:58:00.000Z","key":1486576680000,"doc_count":8},{"key_as_string":"2017-02-08T17:59:00.000Z","key":1486576740000,"doc_count":12},{"key_as_string":"2017-02-08T18:00:00.000Z","key":1486576800000,"doc_count":15},{"key_as_string":"2017-02-08T18:01:00.000Z","key":1486576860000,"doc_count":10},{"key_as_string":"2017-02-08T18:02:00.000Z","key":1486576920000,"doc_count":11},{"key_as_string":"2017-02-08T18:03:00.000Z","key":1486576980000,"doc_count":11},{"key_as_string":"2017-02-08T18:04:00.000Z","key":1486577040000,"doc_count":13},{"key_as_string":"2017-02-08T18:05:00.000Z","key":1486577100000,"doc_count":11},{"key_as_string":"2017-02-08T18:06:00.000Z","key":1486577160000,"doc_count":10},{"key_as_string":"2017-02-08T18:07:00.000Z","key":1486577220000,"doc_count":12},{"key_as_string":"2017-02-08T18:08:00.000Z","key":1486577280000,"doc_count":13},{"key_as_string":"2017-02-08T18:09:00.000Z","key":1486577340000,"doc_count":8},{"key_as_string":"2017-02-08T18:10:00.000Z","key":1486577400000,"doc_count":6},{"key_as_string":"2017-02-08T18:11:00.000Z","key":1486577460000,"doc_count":17},{"key_as_string":"2017-02-08T18:12:00.000Z","key":1486577520000,"doc_count":11},{"key_as_string":"2017-02-08T18:13:00.000Z","key":1486577580000,"doc_count":13},{"key_as_string":"2017-02-08T18:14:00.000Z","key":1486577640000,"doc_count":10},{"key_as_string":"2017-02-08T18:15:00.000Z","key":1486577700000,"doc_count":11},{"key_as_string":"2017-02-08T18:16:00.000Z","key":1486577760000,"doc_count":13},{"key_as_string":"2017-02-08T18:17:00.000Z","key":1486577820000,"doc_count":12},{"key_as_string":"2017-02-08T18:18:00.000Z","key":1486577880000,"doc_count":15},{"key_as_string":"2017-02-08T18:19:00.000Z","key":1486577940000,"doc_count":10},{"key_as_string":"2017-02-08T18:20:00.000Z","key":1486578000000,"doc_count":10},{"key_as_string":"2017-02-08T18:21:00.000Z","key":1486578060000,"doc_count":12},{"key_as_string":"2017-02-08T18:22:00.000Z","key":1486578120000,"doc_count":16},{"key_as_string":"2017-02-08T18:23:00.000Z","key":1486578180000,"doc_count":7},{"key_as_string":"2017-02-08T18:24:00.000Z","key":1486578240000,"doc_count":12},{"key_as_string":"2017-02-08T18:25:00.000Z","key":1486578300000,"doc_count":10},{"key_as_string":"2017-02-08T18:26:00.000Z","key":1486578360000,"doc_count":8},{"key_as_string":"2017-02-08T18:27:00.000Z","key":1486578420000,"doc_count":15},{"key_as_string":"2017-02-08T18:28:00.000Z","key":1486578480000,"doc_count":10},{"key_as_string":"2017-02-08T18:29:00.000Z","key":1486578540000,"doc_count":13},{"key_as_string":"2017-02-08T18:30:00.000Z","key":1486578600000,"doc_count":10},{"key_as_string":"2017-02-08T18:31:00.000Z","key":1486578660000,"doc_count":11},{"key_as_string":"2017-02-08T18:32:00.000Z","key":1486578720000,"doc_count":12},{"key_as_string":"2017-02-08T18:33:00.000Z","key":1486578780000,"doc_count":10},{"key_as_string":"2017-02-08T18:34:00.000Z","key":1486578840000,"doc_count":15},{"key_as_string":"2017-02-08T18:35:00.000Z","key":1486578900000,"doc_count":13},{"key_as_string":"2017-02-08T18:36:00.000Z","key":1486578960000,"doc_count":13},{"key_as_string":"2017-02-08T18:37:00.000Z","key":1486579020000,"doc_count":11},{"key_as_string":"2017-02-08T18:38:00.000Z","key":1486579080000,"doc_count":9},{"key_as_string":"2017-02-08T18:39:00.000Z","key":1486579140000,"doc_count":14},{"key_as_string":"2017-02-08T18:40:00.000Z","key":1486579200000,"doc_count":12},{"key_as_string":"2017-02-08T18:41:00.000Z","key":1486579260000,"doc_count":14},{"key_as_string":"2017-02-08T18:42:00.000Z","key":1486579320000,"doc_count":13},{"key_as_string":"2017-02-08T18:43:00.000Z","key":1486579380000,"doc_count":11},{"key_as_string":"2017-02-08T18:44:00.000Z","key":1486579440000,"doc_count":11},{"key_as_string":"2017-02-08T18:45:00.000Z","key":1486579500000,"doc_count":11},{"key_as_string":"2017-02-08T18:46:00.000Z","key":1486579560000,"doc_count":9},{"key_as_string":"2017-02-08T18:47:00.000Z","key":1486579620000,"doc_count":14},{"key_as_string":"2017-02-08T18:48:00.000Z","key":1486579680000,"doc_count":9},{"key_as_string":"2017-02-08T18:49:00.000Z","key":1486579740000,"doc_count":13},{"key_as_string":"2017-02-08T18:50:00.000Z","key":1486579800000,"doc_count":16},{"key_as_string":"2017-02-08T18:51:00.000Z","key":1486579860000,"doc_count":10},{"key_as_string":"2017-02-08T18:52:00.000Z","key":1486579920000,"doc_count":9},{"key_as_string":"2017-02-08T18:53:00.000Z","key":1486579980000,"doc_count":9},{"key_as_string":"2017-02-08T18:54:00.000Z","key":1486580040000,"doc_count":11},{"key_as_string":"2017-02-08T18:55:00.000Z","key":1486580100000,"doc_count":13},{"key_as_string":"2017-02-08T18:56:00.000Z","key":1486580160000,"doc_count":11},{"key_as_string":"2017-02-08T18:57:00.000Z","key":1486580220000,"doc_count":16},{"key_as_string":"2017-02-08T18:58:00.000Z","key":1486580280000,"doc_count":11},{"key_as_string":"2017-02-08T18:59:00.000Z","key":1486580340000,"doc_count":14},{"key_as_string":"2017-02-08T19:00:00.000Z","key":1486580400000,"doc_count":14},{"key_as_string":"2017-02-08T19:01:00.000Z","key":1486580460000,"doc_count":7},{"key_as_string":"2017-02-08T19:02:00.000Z","key":1486580520000,"doc_count":12},{"key_as_string":"2017-02-08T19:03:00.000Z","key":1486580580000,"doc_count":12},{"key_as_string":"2017-02-08T19:04:00.000Z","key":1486580640000,"doc_count":8},{"key_as_string":"2017-02-08T19:05:00.000Z","key":1486580700000,"doc_count":7},{"key_as_string":"2017-02-08T19:06:00.000Z","key":1486580760000,"doc_count":17},{"key_as_string":"2017-02-08T19:07:00.000Z","key":1486580820000,"doc_count":8},{"key_as_string":"2017-02-08T19:08:00.000Z","key":1486580880000,"doc_count":15},{"key_as_string":"2017-02-08T19:09:00.000Z","key":1486580940000,"doc_count":11},{"key_as_string":"2017-02-08T19:10:00.000Z","key":1486581000000,"doc_count":9},{"key_as_string":"2017-02-08T19:11:00.000Z","key":1486581060000,"doc_count":14},{"key_as_string":"2017-02-08T19:12:00.000Z","key":1486581120000,"doc_count":15},{"key_as_string":"2017-02-08T19:13:00.000Z","key":1486581180000,"doc_count":12},{"key_as_string":"2017-02-08T19:14:00.000Z","key":1486581240000,"doc_count":7},{"key_as_string":"2017-02-08T19:15:00.000Z","key":1486581300000,"doc_count":10},{"key_as_string":"2017-02-08T19:16:00.000Z","key":1486581360000,"doc_count":13},{"key_as_string":"2017-02-08T19:17:00.000Z","key":1486581420000,"doc_count":13},{"key_as_string":"2017-02-08T19:18:00.000Z","key":1486581480000,"doc_count":8},{"key_as_string":"2017-02-08T19:19:00.000Z","key":1486581540000,"doc_count":9},{"key_as_string":"2017-02-08T19:20:00.000Z","key":1486581600000,"doc_count":12},{"key_as_string":"2017-02-08T19:21:00.000Z","key":1486581660000,"doc_count":8},{"key_as_string":"2017-02-08T19:22:00.000Z","key":1486581720000,"doc_count":16},{"key_as_string":"2017-02-08T19:23:00.000Z","key":1486581780000,"doc_count":10},{"key_as_string":"2017-02-08T19:24:00.000Z","key":1486581840000,"doc_count":12},{"key_as_string":"2017-02-08T19:25:00.000Z","key":1486581900000,"doc_count":11},{"key_as_string":"2017-02-08T19:26:00.000Z","key":1486581960000,"doc_count":8},{"key_as_string":"2017-02-08T19:27:00.000Z","key":1486582020000,"doc_count":11},{"key_as_string":"2017-02-08T19:28:00.000Z","key":1486582080000,"doc_count":19},{"key_as_string":"2017-02-08T19:29:00.000Z","key":1486582140000,"doc_count":8},{"key_as_string":"2017-02-08T19:30:00.000Z","key":1486582200000,"doc_count":13},{"key_as_string":"2017-02-08T19:31:00.000Z","key":1486582260000,"doc_count":17},{"key_as_string":"2017-02-08T19:32:00.000Z","key":1486582320000,"doc_count":11},{"key_as_string":"2017-02-08T19:33:00.000Z","key":1486582380000,"doc_count":9},{"key_as_string":"2017-02-08T19:34:00.000Z","key":1486582440000,"doc_count":9},{"key_as_string":"2017-02-08T19:35:00.000Z","key":1486582500000,"doc_count":18},{"key_as_string":"2017-02-08T19:36:00.000Z","key":1486582560000,"doc_count":8},{"key_as_string":"2017-02-08T19:37:00.000Z","key":1486582620000,"doc_count":9},{"key_as_string":"2017-02-08T19:38:00.000Z","key":1486582680000,"doc_count":12},{"key_as_string":"2017-02-08T19:39:00.000Z","key":1486582740000,"doc_count":11},{"key_as_string":"2017-02-08T19:40:00.000Z","key":1486582800000,"doc_count":13},{"key_as_string":"2017-02-08T19:41:00.000Z","key":1486582860000,"doc_count":8},{"key_as_string":"2017-02-08T19:42:00.000Z","key":1486582920000,"doc_count":10},{"key_as_string":"2017-02-08T19:43:00.000Z","key":1486582980000,"doc_count":10},{"key_as_string":"2017-02-08T19:44:00.000Z","key":1486583040000,"doc_count":15},{"key_as_string":"2017-02-08T19:45:00.000Z","key":1486583100000,"doc_count":7},{"key_as_string":"2017-02-08T19:46:00.000Z","key":1486583160000,"doc_count":12},{"key_as_string":"2017-02-08T19:47:00.000Z","key":1486583220000,"doc_count":8},{"key_as_string":"2017-02-08T19:48:00.000Z","key":1486583280000,"doc_count":11},{"key_as_string":"2017-02-08T19:49:00.000Z","key":1486583340000,"doc_count":10},{"key_as_string":"2017-02-08T19:50:00.000Z","key":1486583400000,"doc_count":10},{"key_as_string":"2017-02-08T19:51:00.000Z","key":1486583460000,"doc_count":9},{"key_as_string":"2017-02-08T19:52:00.000Z","key":1486583520000,"doc_count":13},{"key_as_string":"2017-02-08T19:53:00.000Z","key":1486583580000,"doc_count":6},{"key_as_string":"2017-02-08T19:54:00.000Z","key":1486583640000,"doc_count":16},{"key_as_string":"2017-02-08T19:55:00.000Z","key":1486583700000,"doc_count":15},{"key_as_string":"2017-02-08T19:56:00.000Z","key":1486583760000,"doc_count":14},{"key_as_string":"2017-02-08T19:57:00.000Z","key":1486583820000,"doc_count":6},{"key_as_string":"2017-02-08T19:58:00.000Z","key":1486583880000,"doc_count":13},{"key_as_string":"2017-02-08T19:59:00.000Z","key":1486583940000,"doc_count":11},{"key_as_string":"2017-02-08T20:00:00.000Z","key":1486584000000,"doc_count":9},{"key_as_string":"2017-02-08T20:01:00.000Z","key":1486584060000,"doc_count":11},{"key_as_string":"2017-02-08T20:02:00.000Z","key":1486584120000,"doc_count":16},{"key_as_string":"2017-02-08T20:03:00.000Z","key":1486584180000,"doc_count":8},{"key_as_string":"2017-02-08T20:04:00.000Z","key":1486584240000,"doc_count":9},{"key_as_string":"2017-02-08T20:05:00.000Z","key":1486584300000,"doc_count":8},{"key_as_string":"2017-02-08T20:06:00.000Z","key":1486584360000,"doc_count":13},{"key_as_string":"2017-02-08T20:07:00.000Z","key":1486584420000,"doc_count":15},{"key_as_string":"2017-02-08T20:08:00.000Z","key":1486584480000,"doc_count":7},{"key_as_string":"2017-02-08T20:09:00.000Z","key":1486584540000,"doc_count":13},{"key_as_string":"2017-02-08T20:10:00.000Z","key":1486584600000,"doc_count":12},{"key_as_string":"2017-02-08T20:11:00.000Z","key":1486584660000,"doc_count":6},{"key_as_string":"2017-02-08T20:12:00.000Z","key":1486584720000,"doc_count":9},{"key_as_string":"2017-02-08T20:13:00.000Z","key":1486584780000,"doc_count":12},{"key_as_string":"2017-02-08T20:14:00.000Z","key":1486584840000,"doc_count":13},{"key_as_string":"2017-02-08T20:15:00.000Z","key":1486584900000,"doc_count":13},{"key_as_string":"2017-02-08T20:16:00.000Z","key":1486584960000,"doc_count":10},{"key_as_string":"2017-02-08T20:17:00.000Z","key":1486585020000,"doc_count":8},{"key_as_string":"2017-02-08T20:18:00.000Z","key":1486585080000,"doc_count":12},{"key_as_string":"2017-02-08T20:19:00.000Z","key":1486585140000,"doc_count":12},{"key_as_string":"2017-02-08T20:20:00.000Z","key":1486585200000,"doc_count":14},{"key_as_string":"2017-02-08T20:21:00.000Z","key":1486585260000,"doc_count":11},{"key_as_string":"2017-02-08T20:22:00.000Z","key":1486585320000,"doc_count":13},{"key_as_string":"2017-02-08T20:23:00.000Z","key":1486585380000,"doc_count":13},{"key_as_string":"2017-02-08T20:24:00.000Z","key":1486585440000,"doc_count":9},{"key_as_string":"2017-02-08T20:25:00.000Z","key":1486585500000,"doc_count":11},{"key_as_string":"2017-02-08T20:26:00.000Z","key":1486585560000,"doc_count":9},{"key_as_string":"2017-02-08T20:27:00.000Z","key":1486585620000,"doc_count":20},{"key_as_string":"2017-02-08T20:28:00.000Z","key":1486585680000,"doc_count":6},{"key_as_string":"2017-02-08T20:29:00.000Z","key":1486585740000,"doc_count":12},{"key_as_string":"2017-02-08T20:30:00.000Z","key":1486585800000,"doc_count":11},{"key_as_string":"2017-02-08T20:31:00.000Z","key":1486585860000,"doc_count":9},{"key_as_string":"2017-02-08T20:32:00.000Z","key":1486585920000,"doc_count":12},{"key_as_string":"2017-02-08T20:33:00.000Z","key":1486585980000,"doc_count":8},{"key_as_string":"2017-02-08T20:34:00.000Z","key":1486586040000,"doc_count":12},{"key_as_string":"2017-02-08T20:35:00.000Z","key":1486586100000,"doc_count":11},{"key_as_string":"2017-02-08T20:36:00.000Z","key":1486586160000,"doc_count":9},{"key_as_string":"2017-02-08T20:37:00.000Z","key":1486586220000,"doc_count":14},{"key_as_string":"2017-02-08T20:38:00.000Z","key":1486586280000,"doc_count":12},{"key_as_string":"2017-02-08T20:39:00.000Z","key":1486586340000,"doc_count":8},{"key_as_string":"2017-02-08T20:40:00.000Z","key":1486586400000,"doc_count":11},{"key_as_string":"2017-02-08T20:41:00.000Z","key":1486586460000,"doc_count":10},{"key_as_string":"2017-02-08T20:42:00.000Z","key":1486586520000,"doc_count":8},{"key_as_string":"2017-02-08T20:43:00.000Z","key":1486586580000,"doc_count":11},{"key_as_string":"2017-02-08T20:44:00.000Z","key":1486586640000,"doc_count":16},{"key_as_string":"2017-02-08T20:45:00.000Z","key":1486586700000,"doc_count":9},{"key_as_string":"2017-02-08T20:46:00.000Z","key":1486586760000,"doc_count":9},{"key_as_string":"2017-02-08T20:47:00.000Z","key":1486586820000,"doc_count":8},{"key_as_string":"2017-02-08T20:48:00.000Z","key":1486586880000,"doc_count":13},{"key_as_string":"2017-02-08T20:49:00.000Z","key":1486586940000,"doc_count":10},{"key_as_string":"2017-02-08T20:50:00.000Z","key":1486587000000,"doc_count":9},{"key_as_string":"2017-02-08T20:51:00.000Z","key":1486587060000,"doc_count":10},{"key_as_string":"2017-02-08T20:52:00.000Z","key":1486587120000,"doc_count":10},{"key_as_string":"2017-02-08T20:53:00.000Z","key":1486587180000,"doc_count":10},{"key_as_string":"2017-02-08T20:54:00.000Z","key":1486587240000,"doc_count":12},{"key_as_string":"2017-02-08T20:55:00.000Z","key":1486587300000,"doc_count":8},{"key_as_string":"2017-02-08T20:56:00.000Z","key":1486587360000,"doc_count":10},{"key_as_string":"2017-02-08T20:57:00.000Z","key":1486587420000,"doc_count":11},{"key_as_string":"2017-02-08T20:58:00.000Z","key":1486587480000,"doc_count":9},{"key_as_string":"2017-02-08T20:59:00.000Z","key":1486587540000,"doc_count":15},{"key_as_string":"2017-02-08T21:00:00.000Z","key":1486587600000,"doc_count":12},{"key_as_string":"2017-02-08T21:01:00.000Z","key":1486587660000,"doc_count":13},{"key_as_string":"2017-02-08T21:02:00.000Z","key":1486587720000,"doc_count":10},{"key_as_string":"2017-02-08T21:03:00.000Z","key":1486587780000,"doc_count":7},{"key_as_string":"2017-02-08T21:04:00.000Z","key":1486587840000,"doc_count":9},{"key_as_string":"2017-02-08T21:05:00.000Z","key":1486587900000,"doc_count":13},{"key_as_string":"2017-02-08T21:06:00.000Z","key":1486587960000,"doc_count":9},{"key_as_string":"2017-02-08T21:07:00.000Z","key":1486588020000,"doc_count":12},{"key_as_string":"2017-02-08T21:08:00.000Z","key":1486588080000,"doc_count":6},{"key_as_string":"2017-02-08T21:09:00.000Z","key":1486588140000,"doc_count":17},{"key_as_string":"2017-02-08T21:10:00.000Z","key":1486588200000,"doc_count":4},{"key_as_string":"2017-02-08T21:11:00.000Z","key":1486588260000,"doc_count":13},{"key_as_string":"2017-02-08T21:12:00.000Z","key":1486588320000,"doc_count":9},{"key_as_string":"2017-02-08T21:13:00.000Z","key":1486588380000,"doc_count":13},{"key_as_string":"2017-02-08T21:14:00.000Z","key":1486588440000,"doc_count":10},{"key_as_string":"2017-02-08T21:15:00.000Z","key":1486588500000,"doc_count":8},{"key_as_string":"2017-02-08T21:16:00.000Z","key":1486588560000,"doc_count":8},{"key_as_string":"2017-02-08T21:17:00.000Z","key":1486588620000,"doc_count":10},{"key_as_string":"2017-02-08T21:18:00.000Z","key":1486588680000,"doc_count":12},{"key_as_string":"2017-02-08T21:19:00.000Z","key":1486588740000,"doc_count":10},{"key_as_string":"2017-02-08T21:20:00.000Z","key":1486588800000,"doc_count":13},{"key_as_string":"2017-02-08T21:21:00.000Z","key":1486588860000,"doc_count":14},{"key_as_string":"2017-02-08T21:22:00.000Z","key":1486588920000,"doc_count":9},{"key_as_string":"2017-02-08T21:23:00.000Z","key":1486588980000,"doc_count":9},{"key_as_string":"2017-02-08T21:24:00.000Z","key":1486589040000,"doc_count":12},{"key_as_string":"2017-02-08T21:25:00.000Z","key":1486589100000,"doc_count":12},{"key_as_string":"2017-02-08T21:26:00.000Z","key":1486589160000,"doc_count":19},{"key_as_string":"2017-02-08T21:27:00.000Z","key":1486589220000,"doc_count":6},{"key_as_string":"2017-02-08T21:28:00.000Z","key":1486589280000,"doc_count":15},{"key_as_string":"2017-02-08T21:29:00.000Z","key":1486589340000,"doc_count":10},{"key_as_string":"2017-02-08T21:30:00.000Z","key":1486589400000,"doc_count":9},{"key_as_string":"2017-02-08T21:31:00.000Z","key":1486589460000,"doc_count":9},{"key_as_string":"2017-02-08T21:32:00.000Z","key":1486589520000,"doc_count":12},{"key_as_string":"2017-02-08T21:33:00.000Z","key":1486589580000,"doc_count":10},{"key_as_string":"2017-02-08T21:34:00.000Z","key":1486589640000,"doc_count":11},{"key_as_string":"2017-02-08T21:35:00.000Z","key":1486589700000,"doc_count":10},{"key_as_string":"2017-02-08T21:36:00.000Z","key":1486589760000,"doc_count":15},{"key_as_string":"2017-02-08T21:37:00.000Z","key":1486589820000,"doc_count":8},{"key_as_string":"2017-02-08T21:38:00.000Z","key":1486589880000,"doc_count":11},{"key_as_string":"2017-02-08T21:39:00.000Z","key":1486589940000,"doc_count":9},{"key_as_string":"2017-02-08T21:40:00.000Z","key":1486590000000,"doc_count":9},{"key_as_string":"2017-02-08T21:41:00.000Z","key":1486590060000,"doc_count":10},{"key_as_string":"2017-02-08T21:42:00.000Z","key":1486590120000,"doc_count":8},{"key_as_string":"2017-02-08T21:43:00.000Z","key":1486590180000,"doc_count":13},{"key_as_string":"2017-02-08T21:44:00.000Z","key":1486590240000,"doc_count":13},{"key_as_string":"2017-02-08T21:45:00.000Z","key":1486590300000,"doc_count":15},{"key_as_string":"2017-02-08T21:46:00.000Z","key":1486590360000,"doc_count":8},{"key_as_string":"2017-02-08T21:47:00.000Z","key":1486590420000,"doc_count":7},{"key_as_string":"2017-02-08T21:48:00.000Z","key":1486590480000,"doc_count":14},{"key_as_string":"2017-02-08T21:49:00.000Z","key":1486590540000,"doc_count":8},{"key_as_string":"2017-02-08T21:50:00.000Z","key":1486590600000,"doc_count":11},{"key_as_string":"2017-02-08T21:51:00.000Z","key":1486590660000,"doc_count":12},{"key_as_string":"2017-02-08T21:52:00.000Z","key":1486590720000,"doc_count":9},{"key_as_string":"2017-02-08T21:53:00.000Z","key":1486590780000,"doc_count":11},{"key_as_string":"2017-02-08T21:54:00.000Z","key":1486590840000,"doc_count":9},{"key_as_string":"2017-02-08T21:55:00.000Z","key":1486590900000,"doc_count":7},{"key_as_string":"2017-02-08T21:56:00.000Z","key":1486590960000,"doc_count":13},{"key_as_string":"2017-02-08T21:57:00.000Z","key":1486591020000,"doc_count":10},{"key_as_string":"2017-02-08T21:58:00.000Z","key":1486591080000,"doc_count":12},{"key_as_string":"2017-02-08T21:59:00.000Z","key":1486591140000,"doc_count":15},{"key_as_string":"2017-02-08T22:00:00.000Z","key":1486591200000,"doc_count":13},{"key_as_string":"2017-02-08T22:01:00.000Z","key":1486591260000,"doc_count":14},{"key_as_string":"2017-02-08T22:02:00.000Z","key":1486591320000,"doc_count":7},{"key_as_string":"2017-02-08T22:03:00.000Z","key":1486591380000,"doc_count":12},{"key_as_string":"2017-02-08T22:04:00.000Z","key":1486591440000,"doc_count":11},{"key_as_string":"2017-02-08T22:05:00.000Z","key":1486591500000,"doc_count":11},{"key_as_string":"2017-02-08T22:06:00.000Z","key":1486591560000,"doc_count":11},{"key_as_string":"2017-02-08T22:07:00.000Z","key":1486591620000,"doc_count":8},{"key_as_string":"2017-02-08T22:08:00.000Z","key":1486591680000,"doc_count":14},{"key_as_string":"2017-02-08T22:09:00.000Z","key":1486591740000,"doc_count":11},{"key_as_string":"2017-02-08T22:10:00.000Z","key":1486591800000,"doc_count":16},{"key_as_string":"2017-02-08T22:11:00.000Z","key":1486591860000,"doc_count":8},{"key_as_string":"2017-02-08T22:12:00.000Z","key":1486591920000,"doc_count":15},{"key_as_string":"2017-02-08T22:13:00.000Z","key":1486591980000,"doc_count":11},{"key_as_string":"2017-02-08T22:14:00.000Z","key":1486592040000,"doc_count":6},{"key_as_string":"2017-02-08T22:15:00.000Z","key":1486592100000,"doc_count":11},{"key_as_string":"2017-02-08T22:16:00.000Z","key":1486592160000,"doc_count":9},{"key_as_string":"2017-02-08T22:17:00.000Z","key":1486592220000,"doc_count":15},{"key_as_string":"2017-02-08T22:18:00.000Z","key":1486592280000,"doc_count":10},{"key_as_string":"2017-02-08T22:19:00.000Z","key":1486592340000,"doc_count":7},{"key_as_string":"2017-02-08T22:20:00.000Z","key":1486592400000,"doc_count":11},{"key_as_string":"2017-02-08T22:21:00.000Z","key":1486592460000,"doc_count":8},{"key_as_string":"2017-02-08T22:22:00.000Z","key":1486592520000,"doc_count":11},{"key_as_string":"2017-02-08T22:23:00.000Z","key":1486592580000,"doc_count":5},{"key_as_string":"2017-02-08T22:24:00.000Z","key":1486592640000,"doc_count":13},{"key_as_string":"2017-02-08T22:25:00.000Z","key":1486592700000,"doc_count":11},{"key_as_string":"2017-02-08T22:26:00.000Z","key":1486592760000,"doc_count":13},{"key_as_string":"2017-02-08T22:27:00.000Z","key":1486592820000,"doc_count":15},{"key_as_string":"2017-02-08T22:28:00.000Z","key":1486592880000,"doc_count":12},{"key_as_string":"2017-02-08T22:29:00.000Z","key":1486592940000,"doc_count":7},{"key_as_string":"2017-02-08T22:30:00.000Z","key":1486593000000,"doc_count":14},{"key_as_string":"2017-02-08T22:31:00.000Z","key":1486593060000,"doc_count":13},{"key_as_string":"2017-02-08T22:32:00.000Z","key":1486593120000,"doc_count":13},{"key_as_string":"2017-02-08T22:33:00.000Z","key":1486593180000,"doc_count":9},{"key_as_string":"2017-02-08T22:34:00.000Z","key":1486593240000,"doc_count":13},{"key_as_string":"2017-02-08T22:35:00.000Z","key":1486593300000,"doc_count":14},{"key_as_string":"2017-02-08T22:36:00.000Z","key":1486593360000,"doc_count":9},{"key_as_string":"2017-02-08T22:37:00.000Z","key":1486593420000,"doc_count":11},{"key_as_string":"2017-02-08T22:38:00.000Z","key":1486593480000,"doc_count":8},{"key_as_string":"2017-02-08T22:39:00.000Z","key":1486593540000,"doc_count":14},{"key_as_string":"2017-02-08T22:40:00.000Z","key":1486593600000,"doc_count":16},{"key_as_string":"2017-02-08T22:41:00.000Z","key":1486593660000,"doc_count":7},{"key_as_string":"2017-02-08T22:42:00.000Z","key":1486593720000,"doc_count":14},{"key_as_string":"2017-02-08T22:43:00.000Z","key":1486593780000,"doc_count":10},{"key_as_string":"2017-02-08T22:44:00.000Z","key":1486593840000,"doc_count":12},{"key_as_string":"2017-02-08T22:45:00.000Z","key":1486593900000,"doc_count":7},{"key_as_string":"2017-02-08T22:46:00.000Z","key":1486593960000,"doc_count":13},{"key_as_string":"2017-02-08T22:47:00.000Z","key":1486594020000,"doc_count":11},{"key_as_string":"2017-02-08T22:48:00.000Z","key":1486594080000,"doc_count":18},{"key_as_string":"2017-02-08T22:49:00.000Z","key":1486594140000,"doc_count":4},{"key_as_string":"2017-02-08T22:50:00.000Z","key":1486594200000,"doc_count":5},{"key_as_string":"2017-02-08T22:51:00.000Z","key":1486594260000,"doc_count":16},{"key_as_string":"2017-02-08T22:52:00.000Z","key":1486594320000,"doc_count":8},{"key_as_string":"2017-02-08T22:53:00.000Z","key":1486594380000,"doc_count":11},{"key_as_string":"2017-02-08T22:54:00.000Z","key":1486594440000,"doc_count":10},{"key_as_string":"2017-02-08T22:55:00.000Z","key":1486594500000,"doc_count":10},{"key_as_string":"2017-02-08T22:56:00.000Z","key":1486594560000,"doc_count":15},{"key_as_string":"2017-02-08T22:57:00.000Z","key":1486594620000,"doc_count":7},{"key_as_string":"2017-02-08T22:58:00.000Z","key":1486594680000,"doc_count":14},{"key_as_string":"2017-02-08T22:59:00.000Z","key":1486594740000,"doc_count":14},{"key_as_string":"2017-02-08T23:00:00.000Z","key":1486594800000,"doc_count":6},{"key_as_string":"2017-02-08T23:01:00.000Z","key":1486594860000,"doc_count":9},{"key_as_string":"2017-02-08T23:02:00.000Z","key":1486594920000,"doc_count":14},{"key_as_string":"2017-02-08T23:03:00.000Z","key":1486594980000,"doc_count":9},{"key_as_string":"2017-02-08T23:04:00.000Z","key":1486595040000,"doc_count":11},{"key_as_string":"2017-02-08T23:05:00.000Z","key":1486595100000,"doc_count":14},{"key_as_string":"2017-02-08T23:06:00.000Z","key":1486595160000,"doc_count":6},{"key_as_string":"2017-02-08T23:07:00.000Z","key":1486595220000,"doc_count":10},{"key_as_string":"2017-02-08T23:08:00.000Z","key":1486595280000,"doc_count":9},{"key_as_string":"2017-02-08T23:09:00.000Z","key":1486595340000,"doc_count":5},{"key_as_string":"2017-02-08T23:10:00.000Z","key":1486595400000,"doc_count":12},{"key_as_string":"2017-02-08T23:11:00.000Z","key":1486595460000,"doc_count":11},{"key_as_string":"2017-02-08T23:12:00.000Z","key":1486595520000,"doc_count":8},{"key_as_string":"2017-02-08T23:13:00.000Z","key":1486595580000,"doc_count":10},{"key_as_string":"2017-02-08T23:14:00.000Z","key":1486595640000,"doc_count":14},{"key_as_string":"2017-02-08T23:15:00.000Z","key":1486595700000,"doc_count":6},{"key_as_string":"2017-02-08T23:16:00.000Z","key":1486595760000,"doc_count":9},{"key_as_string":"2017-02-08T23:17:00.000Z","key":1486595820000,"doc_count":12},{"key_as_string":"2017-02-08T23:18:00.000Z","key":1486595880000,"doc_count":12},{"key_as_string":"2017-02-08T23:19:00.000Z","key":1486595940000,"doc_count":5},{"key_as_string":"2017-02-08T23:20:00.000Z","key":1486596000000,"doc_count":12},{"key_as_string":"2017-02-08T23:21:00.000Z","key":1486596060000,"doc_count":10},{"key_as_string":"2017-02-08T23:22:00.000Z","key":1486596120000,"doc_count":13},{"key_as_string":"2017-02-08T23:23:00.000Z","key":1486596180000,"doc_count":10},{"key_as_string":"2017-02-08T23:24:00.000Z","key":1486596240000,"doc_count":8},{"key_as_string":"2017-02-08T23:25:00.000Z","key":1486596300000,"doc_count":11},{"key_as_string":"2017-02-08T23:26:00.000Z","key":1486596360000,"doc_count":11},{"key_as_string":"2017-02-08T23:27:00.000Z","key":1486596420000,"doc_count":5},{"key_as_string":"2017-02-08T23:28:00.000Z","key":1486596480000,"doc_count":9},{"key_as_string":"2017-02-08T23:29:00.000Z","key":1486596540000,"doc_count":12},{"key_as_string":"2017-02-08T23:30:00.000Z","key":1486596600000,"doc_count":7},{"key_as_string":"2017-02-08T23:31:00.000Z","key":1486596660000,"doc_count":14},{"key_as_string":"2017-02-08T23:32:00.000Z","key":1486596720000,"doc_count":12},{"key_as_string":"2017-02-08T23:33:00.000Z","key":1486596780000,"doc_count":12},{"key_as_string":"2017-02-08T23:34:00.000Z","key":1486596840000,"doc_count":18},{"key_as_string":"2017-02-08T23:35:00.000Z","key":1486596900000,"doc_count":6},{"key_as_string":"2017-02-08T23:36:00.000Z","key":1486596960000,"doc_count":7},{"key_as_string":"2017-02-08T23:37:00.000Z","key":1486597020000,"doc_count":12},{"key_as_string":"2017-02-08T23:38:00.000Z","key":1486597080000,"doc_count":11},{"key_as_string":"2017-02-08T23:39:00.000Z","key":1486597140000,"doc_count":7},{"key_as_string":"2017-02-08T23:40:00.000Z","key":1486597200000,"doc_count":12},{"key_as_string":"2017-02-08T23:41:00.000Z","key":1486597260000,"doc_count":16},{"key_as_string":"2017-02-08T23:42:00.000Z","key":1486597320000,"doc_count":8},{"key_as_string":"2017-02-08T23:43:00.000Z","key":1486597380000,"doc_count":11},{"key_as_string":"2017-02-08T23:44:00.000Z","key":1486597440000,"doc_count":8},{"key_as_string":"2017-02-08T23:45:00.000Z","key":1486597500000,"doc_count":11},{"key_as_string":"2017-02-08T23:46:00.000Z","key":1486597560000,"doc_count":11},{"key_as_string":"2017-02-08T23:47:00.000Z","key":1486597620000,"doc_count":9},{"key_as_string":"2017-02-08T23:48:00.000Z","key":1486597680000,"doc_count":7},{"key_as_string":"2017-02-08T23:49:00.000Z","key":1486597740000,"doc_count":11},{"key_as_string":"2017-02-08T23:50:00.000Z","key":1486597800000,"doc_count":11},{"key_as_string":"2017-02-08T23:51:00.000Z","key":1486597860000,"doc_count":8},{"key_as_string":"2017-02-08T23:52:00.000Z","key":1486597920000,"doc_count":11},{"key_as_string":"2017-02-08T23:53:00.000Z","key":1486597980000,"doc_count":10},{"key_as_string":"2017-02-08T23:54:00.000Z","key":1486598040000,"doc_count":11},{"key_as_string":"2017-02-08T23:55:00.000Z","key":1486598100000,"doc_count":9},{"key_as_string":"2017-02-08T23:56:00.000Z","key":1486598160000,"doc_count":6},{"key_as_string":"2017-02-08T23:57:00.000Z","key":1486598220000,"doc_count":13},{"key_as_string":"2017-02-08T23:58:00.000Z","key":1486598280000,"doc_count":10},{"key_as_string":"2017-02-08T23:59:00.000Z","key":1486598340000,"doc_count":9},{"key_as_string":"2017-02-09T00:00:00.000Z","key":1486598400000,"doc_count":14},{"key_as_string":"2017-02-09T00:01:00.000Z","key":1486598460000,"doc_count":7},{"key_as_string":"2017-02-09T00:02:00.000Z","key":1486598520000,"doc_count":11},{"key_as_string":"2017-02-09T00:03:00.000Z","key":1486598580000,"doc_count":14},{"key_as_string":"2017-02-09T00:04:00.000Z","key":1486598640000,"doc_count":7},{"key_as_string":"2017-02-09T00:05:00.000Z","key":1486598700000,"doc_count":15},{"key_as_string":"2017-02-09T00:06:00.000Z","key":1486598760000,"doc_count":4},{"key_as_string":"2017-02-09T00:07:00.000Z","key":1486598820000,"doc_count":14},{"key_as_string":"2017-02-09T00:08:00.000Z","key":1486598880000,"doc_count":11},{"key_as_string":"2017-02-09T00:09:00.000Z","key":1486598940000,"doc_count":8},{"key_as_string":"2017-02-09T00:10:00.000Z","key":1486599000000,"doc_count":9},{"key_as_string":"2017-02-09T00:11:00.000Z","key":1486599060000,"doc_count":13},{"key_as_string":"2017-02-09T00:12:00.000Z","key":1486599120000,"doc_count":8},{"key_as_string":"2017-02-09T00:13:00.000Z","key":1486599180000,"doc_count":9},{"key_as_string":"2017-02-09T00:14:00.000Z","key":1486599240000,"doc_count":14},{"key_as_string":"2017-02-09T00:15:00.000Z","key":1486599300000,"doc_count":13},{"key_as_string":"2017-02-09T00:16:00.000Z","key":1486599360000,"doc_count":8},{"key_as_string":"2017-02-09T00:17:00.000Z","key":1486599420000,"doc_count":6},{"key_as_string":"2017-02-09T00:18:00.000Z","key":1486599480000,"doc_count":14},{"key_as_string":"2017-02-09T00:19:00.000Z","key":1486599540000,"doc_count":15},{"key_as_string":"2017-02-09T00:20:00.000Z","key":1486599600000,"doc_count":9},{"key_as_string":"2017-02-09T00:21:00.000Z","key":1486599660000,"doc_count":6},{"key_as_string":"2017-02-09T00:22:00.000Z","key":1486599720000,"doc_count":9},{"key_as_string":"2017-02-09T00:23:00.000Z","key":1486599780000,"doc_count":15},{"key_as_string":"2017-02-09T00:24:00.000Z","key":1486599840000,"doc_count":10},{"key_as_string":"2017-02-09T00:25:00.000Z","key":1486599900000,"doc_count":9},{"key_as_string":"2017-02-09T00:26:00.000Z","key":1486599960000,"doc_count":11},{"key_as_string":"2017-02-09T00:27:00.000Z","key":1486600020000,"doc_count":10},{"key_as_string":"2017-02-09T00:28:00.000Z","key":1486600080000,"doc_count":11},{"key_as_string":"2017-02-09T00:29:00.000Z","key":1486600140000,"doc_count":8},{"key_as_string":"2017-02-09T00:30:00.000Z","key":1486600200000,"doc_count":5},{"key_as_string":"2017-02-09T00:31:00.000Z","key":1486600260000,"doc_count":15},{"key_as_string":"2017-02-09T00:32:00.000Z","key":1486600320000,"doc_count":5},{"key_as_string":"2017-02-09T00:33:00.000Z","key":1486600380000,"doc_count":12},{"key_as_string":"2017-02-09T00:34:00.000Z","key":1486600440000,"doc_count":11},{"key_as_string":"2017-02-09T00:35:00.000Z","key":1486600500000,"doc_count":8},{"key_as_string":"2017-02-09T00:36:00.000Z","key":1486600560000,"doc_count":10},{"key_as_string":"2017-02-09T00:37:00.000Z","key":1486600620000,"doc_count":11},{"key_as_string":"2017-02-09T00:38:00.000Z","key":1486600680000,"doc_count":11},{"key_as_string":"2017-02-09T00:39:00.000Z","key":1486600740000,"doc_count":7},{"key_as_string":"2017-02-09T00:40:00.000Z","key":1486600800000,"doc_count":8},{"key_as_string":"2017-02-09T00:41:00.000Z","key":1486600860000,"doc_count":10},{"key_as_string":"2017-02-09T00:42:00.000Z","key":1486600920000,"doc_count":11},{"key_as_string":"2017-02-09T00:43:00.000Z","key":1486600980000,"doc_count":10},{"key_as_string":"2017-02-09T00:44:00.000Z","key":1486601040000,"doc_count":9},{"key_as_string":"2017-02-09T00:45:00.000Z","key":1486601100000,"doc_count":10},{"key_as_string":"2017-02-09T00:46:00.000Z","key":1486601160000,"doc_count":9},{"key_as_string":"2017-02-09T00:47:00.000Z","key":1486601220000,"doc_count":9},{"key_as_string":"2017-02-09T00:48:00.000Z","key":1486601280000,"doc_count":11},{"key_as_string":"2017-02-09T00:49:00.000Z","key":1486601340000,"doc_count":6},{"key_as_string":"2017-02-09T00:50:00.000Z","key":1486601400000,"doc_count":13},{"key_as_string":"2017-02-09T00:51:00.000Z","key":1486601460000,"doc_count":8},{"key_as_string":"2017-02-09T00:52:00.000Z","key":1486601520000,"doc_count":9},{"key_as_string":"2017-02-09T00:53:00.000Z","key":1486601580000,"doc_count":12},{"key_as_string":"2017-02-09T00:54:00.000Z","key":1486601640000,"doc_count":11},{"key_as_string":"2017-02-09T00:55:00.000Z","key":1486601700000,"doc_count":7},{"key_as_string":"2017-02-09T00:56:00.000Z","key":1486601760000,"doc_count":16},{"key_as_string":"2017-02-09T00:57:00.000Z","key":1486601820000,"doc_count":11},{"key_as_string":"2017-02-09T00:58:00.000Z","key":1486601880000,"doc_count":7},{"key_as_string":"2017-02-09T00:59:00.000Z","key":1486601940000,"doc_count":9},{"key_as_string":"2017-02-09T01:00:00.000Z","key":1486602000000,"doc_count":14},{"key_as_string":"2017-02-09T01:01:00.000Z","key":1486602060000,"doc_count":9},{"key_as_string":"2017-02-09T01:02:00.000Z","key":1486602120000,"doc_count":15},{"key_as_string":"2017-02-09T01:03:00.000Z","key":1486602180000,"doc_count":10},{"key_as_string":"2017-02-09T01:04:00.000Z","key":1486602240000,"doc_count":14},{"key_as_string":"2017-02-09T01:05:00.000Z","key":1486602300000,"doc_count":8},{"key_as_string":"2017-02-09T01:06:00.000Z","key":1486602360000,"doc_count":13},{"key_as_string":"2017-02-09T01:07:00.000Z","key":1486602420000,"doc_count":10},{"key_as_string":"2017-02-09T01:08:00.000Z","key":1486602480000,"doc_count":7},{"key_as_string":"2017-02-09T01:09:00.000Z","key":1486602540000,"doc_count":15},{"key_as_string":"2017-02-09T01:10:00.000Z","key":1486602600000,"doc_count":10},{"key_as_string":"2017-02-09T01:11:00.000Z","key":1486602660000,"doc_count":7},{"key_as_string":"2017-02-09T01:12:00.000Z","key":1486602720000,"doc_count":14},{"key_as_string":"2017-02-09T01:13:00.000Z","key":1486602780000,"doc_count":11},{"key_as_string":"2017-02-09T01:14:00.000Z","key":1486602840000,"doc_count":10},{"key_as_string":"2017-02-09T01:15:00.000Z","key":1486602900000,"doc_count":12},{"key_as_string":"2017-02-09T01:16:00.000Z","key":1486602960000,"doc_count":10},{"key_as_string":"2017-02-09T01:17:00.000Z","key":1486603020000,"doc_count":9},{"key_as_string":"2017-02-09T01:18:00.000Z","key":1486603080000,"doc_count":12},{"key_as_string":"2017-02-09T01:19:00.000Z","key":1486603140000,"doc_count":6},{"key_as_string":"2017-02-09T01:20:00.000Z","key":1486603200000,"doc_count":12},{"key_as_string":"2017-02-09T01:21:00.000Z","key":1486603260000,"doc_count":7},{"key_as_string":"2017-02-09T01:22:00.000Z","key":1486603320000,"doc_count":11},{"key_as_string":"2017-02-09T01:23:00.000Z","key":1486603380000,"doc_count":6},{"key_as_string":"2017-02-09T01:24:00.000Z","key":1486603440000,"doc_count":14},{"key_as_string":"2017-02-09T01:25:00.000Z","key":1486603500000,"doc_count":6},{"key_as_string":"2017-02-09T01:26:00.000Z","key":1486603560000,"doc_count":9},{"key_as_string":"2017-02-09T01:27:00.000Z","key":1486603620000,"doc_count":14},{"key_as_string":"2017-02-09T01:28:00.000Z","key":1486603680000,"doc_count":9},{"key_as_string":"2017-02-09T01:29:00.000Z","key":1486603740000,"doc_count":13},{"key_as_string":"2017-02-09T01:30:00.000Z","key":1486603800000,"doc_count":9},{"key_as_string":"2017-02-09T01:31:00.000Z","key":1486603860000,"doc_count":11},{"key_as_string":"2017-02-09T01:32:00.000Z","key":1486603920000,"doc_count":13},{"key_as_string":"2017-02-09T01:33:00.000Z","key":1486603980000,"doc_count":6},{"key_as_string":"2017-02-09T01:34:00.000Z","key":1486604040000,"doc_count":13},{"key_as_string":"2017-02-09T01:35:00.000Z","key":1486604100000,"doc_count":7},{"key_as_string":"2017-02-09T01:36:00.000Z","key":1486604160000,"doc_count":11},{"key_as_string":"2017-02-09T01:37:00.000Z","key":1486604220000,"doc_count":10},{"key_as_string":"2017-02-09T01:38:00.000Z","key":1486604280000,"doc_count":6},{"key_as_string":"2017-02-09T01:39:00.000Z","key":1486604340000,"doc_count":14},{"key_as_string":"2017-02-09T01:40:00.000Z","key":1486604400000,"doc_count":5},{"key_as_string":"2017-02-09T01:41:00.000Z","key":1486604460000,"doc_count":8},{"key_as_string":"2017-02-09T01:42:00.000Z","key":1486604520000,"doc_count":12},{"key_as_string":"2017-02-09T01:43:00.000Z","key":1486604580000,"doc_count":16},{"key_as_string":"2017-02-09T01:44:00.000Z","key":1486604640000,"doc_count":8},{"key_as_string":"2017-02-09T01:45:00.000Z","key":1486604700000,"doc_count":5},{"key_as_string":"2017-02-09T01:46:00.000Z","key":1486604760000,"doc_count":13},{"key_as_string":"2017-02-09T01:47:00.000Z","key":1486604820000,"doc_count":7},{"key_as_string":"2017-02-09T01:48:00.000Z","key":1486604880000,"doc_count":8},{"key_as_string":"2017-02-09T01:49:00.000Z","key":1486604940000,"doc_count":17},{"key_as_string":"2017-02-09T01:50:00.000Z","key":1486605000000,"doc_count":7},{"key_as_string":"2017-02-09T01:51:00.000Z","key":1486605060000,"doc_count":10},{"key_as_string":"2017-02-09T01:52:00.000Z","key":1486605120000,"doc_count":13},{"key_as_string":"2017-02-09T01:53:00.000Z","key":1486605180000,"doc_count":15},{"key_as_string":"2017-02-09T01:54:00.000Z","key":1486605240000,"doc_count":12},{"key_as_string":"2017-02-09T01:55:00.000Z","key":1486605300000,"doc_count":6},{"key_as_string":"2017-02-09T01:56:00.000Z","key":1486605360000,"doc_count":14},{"key_as_string":"2017-02-09T01:57:00.000Z","key":1486605420000,"doc_count":13},{"key_as_string":"2017-02-09T01:58:00.000Z","key":1486605480000,"doc_count":12},{"key_as_string":"2017-02-09T01:59:00.000Z","key":1486605540000,"doc_count":11},{"key_as_string":"2017-02-09T02:00:00.000Z","key":1486605600000,"doc_count":12},{"key_as_string":"2017-02-09T02:01:00.000Z","key":1486605660000,"doc_count":15},{"key_as_string":"2017-02-09T02:02:00.000Z","key":1486605720000,"doc_count":6},{"key_as_string":"2017-02-09T02:03:00.000Z","key":1486605780000,"doc_count":15},{"key_as_string":"2017-02-09T02:04:00.000Z","key":1486605840000,"doc_count":4},{"key_as_string":"2017-02-09T02:05:00.000Z","key":1486605900000,"doc_count":14},{"key_as_string":"2017-02-09T02:06:00.000Z","key":1486605960000,"doc_count":15},{"key_as_string":"2017-02-09T02:07:00.000Z","key":1486606020000,"doc_count":8},{"key_as_string":"2017-02-09T02:08:00.000Z","key":1486606080000,"doc_count":9},{"key_as_string":"2017-02-09T02:09:00.000Z","key":1486606140000,"doc_count":13},{"key_as_string":"2017-02-09T02:10:00.000Z","key":1486606200000,"doc_count":8},{"key_as_string":"2017-02-09T02:11:00.000Z","key":1486606260000,"doc_count":12},{"key_as_string":"2017-02-09T02:12:00.000Z","key":1486606320000,"doc_count":12},{"key_as_string":"2017-02-09T02:13:00.000Z","key":1486606380000,"doc_count":16},{"key_as_string":"2017-02-09T02:14:00.000Z","key":1486606440000,"doc_count":9},{"key_as_string":"2017-02-09T02:15:00.000Z","key":1486606500000,"doc_count":10},{"key_as_string":"2017-02-09T02:16:00.000Z","key":1486606560000,"doc_count":12},{"key_as_string":"2017-02-09T02:17:00.000Z","key":1486606620000,"doc_count":11},{"key_as_string":"2017-02-09T02:18:00.000Z","key":1486606680000,"doc_count":10},{"key_as_string":"2017-02-09T02:19:00.000Z","key":1486606740000,"doc_count":10},{"key_as_string":"2017-02-09T02:20:00.000Z","key":1486606800000,"doc_count":9},{"key_as_string":"2017-02-09T02:21:00.000Z","key":1486606860000,"doc_count":16},{"key_as_string":"2017-02-09T02:22:00.000Z","key":1486606920000,"doc_count":11},{"key_as_string":"2017-02-09T02:23:00.000Z","key":1486606980000,"doc_count":10},{"key_as_string":"2017-02-09T02:24:00.000Z","key":1486607040000,"doc_count":10},{"key_as_string":"2017-02-09T02:25:00.000Z","key":1486607100000,"doc_count":11},{"key_as_string":"2017-02-09T02:26:00.000Z","key":1486607160000,"doc_count":7},{"key_as_string":"2017-02-09T02:27:00.000Z","key":1486607220000,"doc_count":12},{"key_as_string":"2017-02-09T02:28:00.000Z","key":1486607280000,"doc_count":9},{"key_as_string":"2017-02-09T02:29:00.000Z","key":1486607340000,"doc_count":6},{"key_as_string":"2017-02-09T02:30:00.000Z","key":1486607400000,"doc_count":10},{"key_as_string":"2017-02-09T02:31:00.000Z","key":1486607460000,"doc_count":8},{"key_as_string":"2017-02-09T02:32:00.000Z","key":1486607520000,"doc_count":14},{"key_as_string":"2017-02-09T02:33:00.000Z","key":1486607580000,"doc_count":9},{"key_as_string":"2017-02-09T02:34:00.000Z","key":1486607640000,"doc_count":10},{"key_as_string":"2017-02-09T02:35:00.000Z","key":1486607700000,"doc_count":9},{"key_as_string":"2017-02-09T02:36:00.000Z","key":1486607760000,"doc_count":11},{"key_as_string":"2017-02-09T02:37:00.000Z","key":1486607820000,"doc_count":11},{"key_as_string":"2017-02-09T02:38:00.000Z","key":1486607880000,"doc_count":6},{"key_as_string":"2017-02-09T02:39:00.000Z","key":1486607940000,"doc_count":20},{"key_as_string":"2017-02-09T02:40:00.000Z","key":1486608000000,"doc_count":11},{"key_as_string":"2017-02-09T02:41:00.000Z","key":1486608060000,"doc_count":11},{"key_as_string":"2017-02-09T02:42:00.000Z","key":1486608120000,"doc_count":11},{"key_as_string":"2017-02-09T02:43:00.000Z","key":1486608180000,"doc_count":5},{"key_as_string":"2017-02-09T02:44:00.000Z","key":1486608240000,"doc_count":10},{"key_as_string":"2017-02-09T02:45:00.000Z","key":1486608300000,"doc_count":10},{"key_as_string":"2017-02-09T02:46:00.000Z","key":1486608360000,"doc_count":14},{"key_as_string":"2017-02-09T02:47:00.000Z","key":1486608420000,"doc_count":10},{"key_as_string":"2017-02-09T02:48:00.000Z","key":1486608480000,"doc_count":13},{"key_as_string":"2017-02-09T02:49:00.000Z","key":1486608540000,"doc_count":9},{"key_as_string":"2017-02-09T02:50:00.000Z","key":1486608600000,"doc_count":10},{"key_as_string":"2017-02-09T02:51:00.000Z","key":1486608660000,"doc_count":9},{"key_as_string":"2017-02-09T02:52:00.000Z","key":1486608720000,"doc_count":13},{"key_as_string":"2017-02-09T02:53:00.000Z","key":1486608780000,"doc_count":16},{"key_as_string":"2017-02-09T02:54:00.000Z","key":1486608840000,"doc_count":5},{"key_as_string":"2017-02-09T02:55:00.000Z","key":1486608900000,"doc_count":8},{"key_as_string":"2017-02-09T02:56:00.000Z","key":1486608960000,"doc_count":13},{"key_as_string":"2017-02-09T02:57:00.000Z","key":1486609020000,"doc_count":10},{"key_as_string":"2017-02-09T02:58:00.000Z","key":1486609080000,"doc_count":11},{"key_as_string":"2017-02-09T02:59:00.000Z","key":1486609140000,"doc_count":9},{"key_as_string":"2017-02-09T03:00:00.000Z","key":1486609200000,"doc_count":14},{"key_as_string":"2017-02-09T03:01:00.000Z","key":1486609260000,"doc_count":7},{"key_as_string":"2017-02-09T03:02:00.000Z","key":1486609320000,"doc_count":9},{"key_as_string":"2017-02-09T03:03:00.000Z","key":1486609380000,"doc_count":11},{"key_as_string":"2017-02-09T03:04:00.000Z","key":1486609440000,"doc_count":21},{"key_as_string":"2017-02-09T03:05:00.000Z","key":1486609500000,"doc_count":12},{"key_as_string":"2017-02-09T03:06:00.000Z","key":1486609560000,"doc_count":14},{"key_as_string":"2017-02-09T03:07:00.000Z","key":1486609620000,"doc_count":9},{"key_as_string":"2017-02-09T03:08:00.000Z","key":1486609680000,"doc_count":12},{"key_as_string":"2017-02-09T03:09:00.000Z","key":1486609740000,"doc_count":12},{"key_as_string":"2017-02-09T03:10:00.000Z","key":1486609800000,"doc_count":10},{"key_as_string":"2017-02-09T03:11:00.000Z","key":1486609860000,"doc_count":7},{"key_as_string":"2017-02-09T03:12:00.000Z","key":1486609920000,"doc_count":11},{"key_as_string":"2017-02-09T03:13:00.000Z","key":1486609980000,"doc_count":9},{"key_as_string":"2017-02-09T03:14:00.000Z","key":1486610040000,"doc_count":5},{"key_as_string":"2017-02-09T03:15:00.000Z","key":1486610100000,"doc_count":14},{"key_as_string":"2017-02-09T03:16:00.000Z","key":1486610160000,"doc_count":7},{"key_as_string":"2017-02-09T03:17:00.000Z","key":1486610220000,"doc_count":11},{"key_as_string":"2017-02-09T03:18:00.000Z","key":1486610280000,"doc_count":14},{"key_as_string":"2017-02-09T03:19:00.000Z","key":1486610340000,"doc_count":12},{"key_as_string":"2017-02-09T03:20:00.000Z","key":1486610400000,"doc_count":7},{"key_as_string":"2017-02-09T03:21:00.000Z","key":1486610460000,"doc_count":15},{"key_as_string":"2017-02-09T03:22:00.000Z","key":1486610520000,"doc_count":12},{"key_as_string":"2017-02-09T03:23:00.000Z","key":1486610580000,"doc_count":10},{"key_as_string":"2017-02-09T03:24:00.000Z","key":1486610640000,"doc_count":6},{"key_as_string":"2017-02-09T03:25:00.000Z","key":1486610700000,"doc_count":11},{"key_as_string":"2017-02-09T03:26:00.000Z","key":1486610760000,"doc_count":10},{"key_as_string":"2017-02-09T03:27:00.000Z","key":1486610820000,"doc_count":11},{"key_as_string":"2017-02-09T03:28:00.000Z","key":1486610880000,"doc_count":12},{"key_as_string":"2017-02-09T03:29:00.000Z","key":1486610940000,"doc_count":11},{"key_as_string":"2017-02-09T03:30:00.000Z","key":1486611000000,"doc_count":15},{"key_as_string":"2017-02-09T03:31:00.000Z","key":1486611060000,"doc_count":10},{"key_as_string":"2017-02-09T03:32:00.000Z","key":1486611120000,"doc_count":14},{"key_as_string":"2017-02-09T03:33:00.000Z","key":1486611180000,"doc_count":10},{"key_as_string":"2017-02-09T03:34:00.000Z","key":1486611240000,"doc_count":10},{"key_as_string":"2017-02-09T03:35:00.000Z","key":1486611300000,"doc_count":15},{"key_as_string":"2017-02-09T03:36:00.000Z","key":1486611360000,"doc_count":8},{"key_as_string":"2017-02-09T03:37:00.000Z","key":1486611420000,"doc_count":8},{"key_as_string":"2017-02-09T03:38:00.000Z","key":1486611480000,"doc_count":15},{"key_as_string":"2017-02-09T03:39:00.000Z","key":1486611540000,"doc_count":7},{"key_as_string":"2017-02-09T03:40:00.000Z","key":1486611600000,"doc_count":15},{"key_as_string":"2017-02-09T03:41:00.000Z","key":1486611660000,"doc_count":7},{"key_as_string":"2017-02-09T03:42:00.000Z","key":1486611720000,"doc_count":14},{"key_as_string":"2017-02-09T03:43:00.000Z","key":1486611780000,"doc_count":8},{"key_as_string":"2017-02-09T03:44:00.000Z","key":1486611840000,"doc_count":9},{"key_as_string":"2017-02-09T03:45:00.000Z","key":1486611900000,"doc_count":11},{"key_as_string":"2017-02-09T03:46:00.000Z","key":1486611960000,"doc_count":15},{"key_as_string":"2017-02-09T03:47:00.000Z","key":1486612020000,"doc_count":6},{"key_as_string":"2017-02-09T03:48:00.000Z","key":1486612080000,"doc_count":9},{"key_as_string":"2017-02-09T03:49:00.000Z","key":1486612140000,"doc_count":13},{"key_as_string":"2017-02-09T03:50:00.000Z","key":1486612200000,"doc_count":9},{"key_as_string":"2017-02-09T03:51:00.000Z","key":1486612260000,"doc_count":11},{"key_as_string":"2017-02-09T03:52:00.000Z","key":1486612320000,"doc_count":12},{"key_as_string":"2017-02-09T03:53:00.000Z","key":1486612380000,"doc_count":13},{"key_as_string":"2017-02-09T03:54:00.000Z","key":1486612440000,"doc_count":7},{"key_as_string":"2017-02-09T03:55:00.000Z","key":1486612500000,"doc_count":14},{"key_as_string":"2017-02-09T03:56:00.000Z","key":1486612560000,"doc_count":10},{"key_as_string":"2017-02-09T03:57:00.000Z","key":1486612620000,"doc_count":8},{"key_as_string":"2017-02-09T03:58:00.000Z","key":1486612680000,"doc_count":6},{"key_as_string":"2017-02-09T03:59:00.000Z","key":1486612740000,"doc_count":11},{"key_as_string":"2017-02-09T04:00:00.000Z","key":1486612800000,"doc_count":8},{"key_as_string":"2017-02-09T04:01:00.000Z","key":1486612860000,"doc_count":12},{"key_as_string":"2017-02-09T04:02:00.000Z","key":1486612920000,"doc_count":13},{"key_as_string":"2017-02-09T04:03:00.000Z","key":1486612980000,"doc_count":10},{"key_as_string":"2017-02-09T04:04:00.000Z","key":1486613040000,"doc_count":12},{"key_as_string":"2017-02-09T04:05:00.000Z","key":1486613100000,"doc_count":9},{"key_as_string":"2017-02-09T04:06:00.000Z","key":1486613160000,"doc_count":16},{"key_as_string":"2017-02-09T04:07:00.000Z","key":1486613220000,"doc_count":12},{"key_as_string":"2017-02-09T04:08:00.000Z","key":1486613280000,"doc_count":16},{"key_as_string":"2017-02-09T04:09:00.000Z","key":1486613340000,"doc_count":10},{"key_as_string":"2017-02-09T04:10:00.000Z","key":1486613400000,"doc_count":9},{"key_as_string":"2017-02-09T04:11:00.000Z","key":1486613460000,"doc_count":9},{"key_as_string":"2017-02-09T04:12:00.000Z","key":1486613520000,"doc_count":11},{"key_as_string":"2017-02-09T04:13:00.000Z","key":1486613580000,"doc_count":8},{"key_as_string":"2017-02-09T04:14:00.000Z","key":1486613640000,"doc_count":11},{"key_as_string":"2017-02-09T04:15:00.000Z","key":1486613700000,"doc_count":7},{"key_as_string":"2017-02-09T04:16:00.000Z","key":1486613760000,"doc_count":9},{"key_as_string":"2017-02-09T04:17:00.000Z","key":1486613820000,"doc_count":14},{"key_as_string":"2017-02-09T04:18:00.000Z","key":1486613880000,"doc_count":12},{"key_as_string":"2017-02-09T04:19:00.000Z","key":1486613940000,"doc_count":12},{"key_as_string":"2017-02-09T04:20:00.000Z","key":1486614000000,"doc_count":11},{"key_as_string":"2017-02-09T04:21:00.000Z","key":1486614060000,"doc_count":15},{"key_as_string":"2017-02-09T04:22:00.000Z","key":1486614120000,"doc_count":15},{"key_as_string":"2017-02-09T04:23:00.000Z","key":1486614180000,"doc_count":14},{"key_as_string":"2017-02-09T04:24:00.000Z","key":1486614240000,"doc_count":10},{"key_as_string":"2017-02-09T04:25:00.000Z","key":1486614300000,"doc_count":8},{"key_as_string":"2017-02-09T04:26:00.000Z","key":1486614360000,"doc_count":8},{"key_as_string":"2017-02-09T04:27:00.000Z","key":1486614420000,"doc_count":14},{"key_as_string":"2017-02-09T04:28:00.000Z","key":1486614480000,"doc_count":9},{"key_as_string":"2017-02-09T04:29:00.000Z","key":1486614540000,"doc_count":16},{"key_as_string":"2017-02-09T04:30:00.000Z","key":1486614600000,"doc_count":11},{"key_as_string":"2017-02-09T04:31:00.000Z","key":1486614660000,"doc_count":13},{"key_as_string":"2017-02-09T04:32:00.000Z","key":1486614720000,"doc_count":9},{"key_as_string":"2017-02-09T04:33:00.000Z","key":1486614780000,"doc_count":16},{"key_as_string":"2017-02-09T04:34:00.000Z","key":1486614840000,"doc_count":11},{"key_as_string":"2017-02-09T04:35:00.000Z","key":1486614900000,"doc_count":9},{"key_as_string":"2017-02-09T04:36:00.000Z","key":1486614960000,"doc_count":11},{"key_as_string":"2017-02-09T04:37:00.000Z","key":1486615020000,"doc_count":14},{"key_as_string":"2017-02-09T04:38:00.000Z","key":1486615080000,"doc_count":14},{"key_as_string":"2017-02-09T04:39:00.000Z","key":1486615140000,"doc_count":10},{"key_as_string":"2017-02-09T04:40:00.000Z","key":1486615200000,"doc_count":7},{"key_as_string":"2017-02-09T04:41:00.000Z","key":1486615260000,"doc_count":13},{"key_as_string":"2017-02-09T04:42:00.000Z","key":1486615320000,"doc_count":10},{"key_as_string":"2017-02-09T04:43:00.000Z","key":1486615380000,"doc_count":17},{"key_as_string":"2017-02-09T04:44:00.000Z","key":1486615440000,"doc_count":12},{"key_as_string":"2017-02-09T04:45:00.000Z","key":1486615500000,"doc_count":9},{"key_as_string":"2017-02-09T04:46:00.000Z","key":1486615560000,"doc_count":7},{"key_as_string":"2017-02-09T04:47:00.000Z","key":1486615620000,"doc_count":14},{"key_as_string":"2017-02-09T04:48:00.000Z","key":1486615680000,"doc_count":11},{"key_as_string":"2017-02-09T04:49:00.000Z","key":1486615740000,"doc_count":15},{"key_as_string":"2017-02-09T04:50:00.000Z","key":1486615800000,"doc_count":12},{"key_as_string":"2017-02-09T04:51:00.000Z","key":1486615860000,"doc_count":11},{"key_as_string":"2017-02-09T04:52:00.000Z","key":1486615920000,"doc_count":10},{"key_as_string":"2017-02-09T04:53:00.000Z","key":1486615980000,"doc_count":10},{"key_as_string":"2017-02-09T04:54:00.000Z","key":1486616040000,"doc_count":12},{"key_as_string":"2017-02-09T04:55:00.000Z","key":1486616100000,"doc_count":10},{"key_as_string":"2017-02-09T04:56:00.000Z","key":1486616160000,"doc_count":13},{"key_as_string":"2017-02-09T04:57:00.000Z","key":1486616220000,"doc_count":10},{"key_as_string":"2017-02-09T04:58:00.000Z","key":1486616280000,"doc_count":12},{"key_as_string":"2017-02-09T04:59:00.000Z","key":1486616340000,"doc_count":13},{"key_as_string":"2017-02-09T05:00:00.000Z","key":1486616400000,"doc_count":11},{"key_as_string":"2017-02-09T05:01:00.000Z","key":1486616460000,"doc_count":14},{"key_as_string":"2017-02-09T05:02:00.000Z","key":1486616520000,"doc_count":10},{"key_as_string":"2017-02-09T05:03:00.000Z","key":1486616580000,"doc_count":13},{"key_as_string":"2017-02-09T05:04:00.000Z","key":1486616640000,"doc_count":11},{"key_as_string":"2017-02-09T05:05:00.000Z","key":1486616700000,"doc_count":11},{"key_as_string":"2017-02-09T05:06:00.000Z","key":1486616760000,"doc_count":12},{"key_as_string":"2017-02-09T05:07:00.000Z","key":1486616820000,"doc_count":21},{"key_as_string":"2017-02-09T05:08:00.000Z","key":1486616880000,"doc_count":7},{"key_as_string":"2017-02-09T05:09:00.000Z","key":1486616940000,"doc_count":14},{"key_as_string":"2017-02-09T05:10:00.000Z","key":1486617000000,"doc_count":9},{"key_as_string":"2017-02-09T05:11:00.000Z","key":1486617060000,"doc_count":7},{"key_as_string":"2017-02-09T05:12:00.000Z","key":1486617120000,"doc_count":15},{"key_as_string":"2017-02-09T05:13:00.000Z","key":1486617180000,"doc_count":12},{"key_as_string":"2017-02-09T05:14:00.000Z","key":1486617240000,"doc_count":15},{"key_as_string":"2017-02-09T05:15:00.000Z","key":1486617300000,"doc_count":12},{"key_as_string":"2017-02-09T05:16:00.000Z","key":1486617360000,"doc_count":15},{"key_as_string":"2017-02-09T05:17:00.000Z","key":1486617420000,"doc_count":11},{"key_as_string":"2017-02-09T05:18:00.000Z","key":1486617480000,"doc_count":16},{"key_as_string":"2017-02-09T05:19:00.000Z","key":1486617540000,"doc_count":8},{"key_as_string":"2017-02-09T05:20:00.000Z","key":1486617600000,"doc_count":12},{"key_as_string":"2017-02-09T05:21:00.000Z","key":1486617660000,"doc_count":12},{"key_as_string":"2017-02-09T05:22:00.000Z","key":1486617720000,"doc_count":11},{"key_as_string":"2017-02-09T05:23:00.000Z","key":1486617780000,"doc_count":10},{"key_as_string":"2017-02-09T05:24:00.000Z","key":1486617840000,"doc_count":15},{"key_as_string":"2017-02-09T05:25:00.000Z","key":1486617900000,"doc_count":8},{"key_as_string":"2017-02-09T05:26:00.000Z","key":1486617960000,"doc_count":13},{"key_as_string":"2017-02-09T05:27:00.000Z","key":1486618020000,"doc_count":14},{"key_as_string":"2017-02-09T05:28:00.000Z","key":1486618080000,"doc_count":7},{"key_as_string":"2017-02-09T05:29:00.000Z","key":1486618140000,"doc_count":9},{"key_as_string":"2017-02-09T05:30:00.000Z","key":1486618200000,"doc_count":10},{"key_as_string":"2017-02-09T05:31:00.000Z","key":1486618260000,"doc_count":11},{"key_as_string":"2017-02-09T05:32:00.000Z","key":1486618320000,"doc_count":8},{"key_as_string":"2017-02-09T05:33:00.000Z","key":1486618380000,"doc_count":12},{"key_as_string":"2017-02-09T05:34:00.000Z","key":1486618440000,"doc_count":13},{"key_as_string":"2017-02-09T05:35:00.000Z","key":1486618500000,"doc_count":10},{"key_as_string":"2017-02-09T05:36:00.000Z","key":1486618560000,"doc_count":13},{"key_as_string":"2017-02-09T05:37:00.000Z","key":1486618620000,"doc_count":5},{"key_as_string":"2017-02-09T05:38:00.000Z","key":1486618680000,"doc_count":13},{"key_as_string":"2017-02-09T05:39:00.000Z","key":1486618740000,"doc_count":5},{"key_as_string":"2017-02-09T05:40:00.000Z","key":1486618800000,"doc_count":13},{"key_as_string":"2017-02-09T05:41:00.000Z","key":1486618860000,"doc_count":12},{"key_as_string":"2017-02-09T05:42:00.000Z","key":1486618920000,"doc_count":21},{"key_as_string":"2017-02-09T05:43:00.000Z","key":1486618980000,"doc_count":6},{"key_as_string":"2017-02-09T05:44:00.000Z","key":1486619040000,"doc_count":16},{"key_as_string":"2017-02-09T05:45:00.000Z","key":1486619100000,"doc_count":11},{"key_as_string":"2017-02-09T05:46:00.000Z","key":1486619160000,"doc_count":10},{"key_as_string":"2017-02-09T05:47:00.000Z","key":1486619220000,"doc_count":10},{"key_as_string":"2017-02-09T05:48:00.000Z","key":1486619280000,"doc_count":12},{"key_as_string":"2017-02-09T05:49:00.000Z","key":1486619340000,"doc_count":11},{"key_as_string":"2017-02-09T05:50:00.000Z","key":1486619400000,"doc_count":13},{"key_as_string":"2017-02-09T05:51:00.000Z","key":1486619460000,"doc_count":12},{"key_as_string":"2017-02-09T05:52:00.000Z","key":1486619520000,"doc_count":6},{"key_as_string":"2017-02-09T05:53:00.000Z","key":1486619580000,"doc_count":13},{"key_as_string":"2017-02-09T05:54:00.000Z","key":1486619640000,"doc_count":11},{"key_as_string":"2017-02-09T05:55:00.000Z","key":1486619700000,"doc_count":13},{"key_as_string":"2017-02-09T05:56:00.000Z","key":1486619760000,"doc_count":13},{"key_as_string":"2017-02-09T05:57:00.000Z","key":1486619820000,"doc_count":13},{"key_as_string":"2017-02-09T05:58:00.000Z","key":1486619880000,"doc_count":9},{"key_as_string":"2017-02-09T05:59:00.000Z","key":1486619940000,"doc_count":12},{"key_as_string":"2017-02-09T06:00:00.000Z","key":1486620000000,"doc_count":12},{"key_as_string":"2017-02-09T06:01:00.000Z","key":1486620060000,"doc_count":17},{"key_as_string":"2017-02-09T06:02:00.000Z","key":1486620120000,"doc_count":14},{"key_as_string":"2017-02-09T06:03:00.000Z","key":1486620180000,"doc_count":7},{"key_as_string":"2017-02-09T06:04:00.000Z","key":1486620240000,"doc_count":9},{"key_as_string":"2017-02-09T06:05:00.000Z","key":1486620300000,"doc_count":15},{"key_as_string":"2017-02-09T06:06:00.000Z","key":1486620360000,"doc_count":11},{"key_as_string":"2017-02-09T06:07:00.000Z","key":1486620420000,"doc_count":10},{"key_as_string":"2017-02-09T06:08:00.000Z","key":1486620480000,"doc_count":11},{"key_as_string":"2017-02-09T06:09:00.000Z","key":1486620540000,"doc_count":8},{"key_as_string":"2017-02-09T06:10:00.000Z","key":1486620600000,"doc_count":12},{"key_as_string":"2017-02-09T06:11:00.000Z","key":1486620660000,"doc_count":16},{"key_as_string":"2017-02-09T06:12:00.000Z","key":1486620720000,"doc_count":11},{"key_as_string":"2017-02-09T06:13:00.000Z","key":1486620780000,"doc_count":8},{"key_as_string":"2017-02-09T06:14:00.000Z","key":1486620840000,"doc_count":11},{"key_as_string":"2017-02-09T06:15:00.000Z","key":1486620900000,"doc_count":16},{"key_as_string":"2017-02-09T06:16:00.000Z","key":1486620960000,"doc_count":12},{"key_as_string":"2017-02-09T06:17:00.000Z","key":1486621020000,"doc_count":10},{"key_as_string":"2017-02-09T06:18:00.000Z","key":1486621080000,"doc_count":10},{"key_as_string":"2017-02-09T06:19:00.000Z","key":1486621140000,"doc_count":18},{"key_as_string":"2017-02-09T06:20:00.000Z","key":1486621200000,"doc_count":8},{"key_as_string":"2017-02-09T06:21:00.000Z","key":1486621260000,"doc_count":13},{"key_as_string":"2017-02-09T06:22:00.000Z","key":1486621320000,"doc_count":10},{"key_as_string":"2017-02-09T06:23:00.000Z","key":1486621380000,"doc_count":15},{"key_as_string":"2017-02-09T06:24:00.000Z","key":1486621440000,"doc_count":13},{"key_as_string":"2017-02-09T06:25:00.000Z","key":1486621500000,"doc_count":10},{"key_as_string":"2017-02-09T06:26:00.000Z","key":1486621560000,"doc_count":11},{"key_as_string":"2017-02-09T06:27:00.000Z","key":1486621620000,"doc_count":10},{"key_as_string":"2017-02-09T06:28:00.000Z","key":1486621680000,"doc_count":11},{"key_as_string":"2017-02-09T06:29:00.000Z","key":1486621740000,"doc_count":14},{"key_as_string":"2017-02-09T06:30:00.000Z","key":1486621800000,"doc_count":7},{"key_as_string":"2017-02-09T06:31:00.000Z","key":1486621860000,"doc_count":13},{"key_as_string":"2017-02-09T06:32:00.000Z","key":1486621920000,"doc_count":10},{"key_as_string":"2017-02-09T06:33:00.000Z","key":1486621980000,"doc_count":7},{"key_as_string":"2017-02-09T06:34:00.000Z","key":1486622040000,"doc_count":15},{"key_as_string":"2017-02-09T06:35:00.000Z","key":1486622100000,"doc_count":10},{"key_as_string":"2017-02-09T06:36:00.000Z","key":1486622160000,"doc_count":14},{"key_as_string":"2017-02-09T06:37:00.000Z","key":1486622220000,"doc_count":10},{"key_as_string":"2017-02-09T06:38:00.000Z","key":1486622280000,"doc_count":8},{"key_as_string":"2017-02-09T06:39:00.000Z","key":1486622340000,"doc_count":7},{"key_as_string":"2017-02-09T06:40:00.000Z","key":1486622400000,"doc_count":13},{"key_as_string":"2017-02-09T06:41:00.000Z","key":1486622460000,"doc_count":13},{"key_as_string":"2017-02-09T06:42:00.000Z","key":1486622520000,"doc_count":7},{"key_as_string":"2017-02-09T06:43:00.000Z","key":1486622580000,"doc_count":12},{"key_as_string":"2017-02-09T06:44:00.000Z","key":1486622640000,"doc_count":11},{"key_as_string":"2017-02-09T06:45:00.000Z","key":1486622700000,"doc_count":10},{"key_as_string":"2017-02-09T06:46:00.000Z","key":1486622760000,"doc_count":16},{"key_as_string":"2017-02-09T06:47:00.000Z","key":1486622820000,"doc_count":17},{"key_as_string":"2017-02-09T06:48:00.000Z","key":1486622880000,"doc_count":13},{"key_as_string":"2017-02-09T06:49:00.000Z","key":1486622940000,"doc_count":11},{"key_as_string":"2017-02-09T06:50:00.000Z","key":1486623000000,"doc_count":8},{"key_as_string":"2017-02-09T06:51:00.000Z","key":1486623060000,"doc_count":6},{"key_as_string":"2017-02-09T06:52:00.000Z","key":1486623120000,"doc_count":17},{"key_as_string":"2017-02-09T06:53:00.000Z","key":1486623180000,"doc_count":11},{"key_as_string":"2017-02-09T06:54:00.000Z","key":1486623240000,"doc_count":11},{"key_as_string":"2017-02-09T06:55:00.000Z","key":1486623300000,"doc_count":14},{"key_as_string":"2017-02-09T06:56:00.000Z","key":1486623360000,"doc_count":10},{"key_as_string":"2017-02-09T06:57:00.000Z","key":1486623420000,"doc_count":14},{"key_as_string":"2017-02-09T06:58:00.000Z","key":1486623480000,"doc_count":8},{"key_as_string":"2017-02-09T06:59:00.000Z","key":1486623540000,"doc_count":10},{"key_as_string":"2017-02-09T07:00:00.000Z","key":1486623600000,"doc_count":11},{"key_as_string":"2017-02-09T07:01:00.000Z","key":1486623660000,"doc_count":16},{"key_as_string":"2017-02-09T07:02:00.000Z","key":1486623720000,"doc_count":17},{"key_as_string":"2017-02-09T07:03:00.000Z","key":1486623780000,"doc_count":16},{"key_as_string":"2017-02-09T07:04:00.000Z","key":1486623840000,"doc_count":15},{"key_as_string":"2017-02-09T07:05:00.000Z","key":1486623900000,"doc_count":12},{"key_as_string":"2017-02-09T07:06:00.000Z","key":1486623960000,"doc_count":9},{"key_as_string":"2017-02-09T07:07:00.000Z","key":1486624020000,"doc_count":11},{"key_as_string":"2017-02-09T07:08:00.000Z","key":1486624080000,"doc_count":11},{"key_as_string":"2017-02-09T07:09:00.000Z","key":1486624140000,"doc_count":20},{"key_as_string":"2017-02-09T07:10:00.000Z","key":1486624200000,"doc_count":9},{"key_as_string":"2017-02-09T07:11:00.000Z","key":1486624260000,"doc_count":17},{"key_as_string":"2017-02-09T07:12:00.000Z","key":1486624320000,"doc_count":13},{"key_as_string":"2017-02-09T07:13:00.000Z","key":1486624380000,"doc_count":18},{"key_as_string":"2017-02-09T07:14:00.000Z","key":1486624440000,"doc_count":8},{"key_as_string":"2017-02-09T07:15:00.000Z","key":1486624500000,"doc_count":14},{"key_as_string":"2017-02-09T07:16:00.000Z","key":1486624560000,"doc_count":9},{"key_as_string":"2017-02-09T07:17:00.000Z","key":1486624620000,"doc_count":15},{"key_as_string":"2017-02-09T07:18:00.000Z","key":1486624680000,"doc_count":15},{"key_as_string":"2017-02-09T07:19:00.000Z","key":1486624740000,"doc_count":15},{"key_as_string":"2017-02-09T07:20:00.000Z","key":1486624800000,"doc_count":17},{"key_as_string":"2017-02-09T07:21:00.000Z","key":1486624860000,"doc_count":13},{"key_as_string":"2017-02-09T07:22:00.000Z","key":1486624920000,"doc_count":10},{"key_as_string":"2017-02-09T07:23:00.000Z","key":1486624980000,"doc_count":10},{"key_as_string":"2017-02-09T07:24:00.000Z","key":1486625040000,"doc_count":9},{"key_as_string":"2017-02-09T07:25:00.000Z","key":1486625100000,"doc_count":16},{"key_as_string":"2017-02-09T07:26:00.000Z","key":1486625160000,"doc_count":14},{"key_as_string":"2017-02-09T07:27:00.000Z","key":1486625220000,"doc_count":13},{"key_as_string":"2017-02-09T07:28:00.000Z","key":1486625280000,"doc_count":14},{"key_as_string":"2017-02-09T07:29:00.000Z","key":1486625340000,"doc_count":14},{"key_as_string":"2017-02-09T07:30:00.000Z","key":1486625400000,"doc_count":14},{"key_as_string":"2017-02-09T07:31:00.000Z","key":1486625460000,"doc_count":16},{"key_as_string":"2017-02-09T07:32:00.000Z","key":1486625520000,"doc_count":13},{"key_as_string":"2017-02-09T07:33:00.000Z","key":1486625580000,"doc_count":12},{"key_as_string":"2017-02-09T07:34:00.000Z","key":1486625640000,"doc_count":15},{"key_as_string":"2017-02-09T07:35:00.000Z","key":1486625700000,"doc_count":13},{"key_as_string":"2017-02-09T07:36:00.000Z","key":1486625760000,"doc_count":15},{"key_as_string":"2017-02-09T07:37:00.000Z","key":1486625820000,"doc_count":12},{"key_as_string":"2017-02-09T07:38:00.000Z","key":1486625880000,"doc_count":9},{"key_as_string":"2017-02-09T07:39:00.000Z","key":1486625940000,"doc_count":20},{"key_as_string":"2017-02-09T07:40:00.000Z","key":1486626000000,"doc_count":13},{"key_as_string":"2017-02-09T07:41:00.000Z","key":1486626060000,"doc_count":17},{"key_as_string":"2017-02-09T07:42:00.000Z","key":1486626120000,"doc_count":10},{"key_as_string":"2017-02-09T07:43:00.000Z","key":1486626180000,"doc_count":15},{"key_as_string":"2017-02-09T07:44:00.000Z","key":1486626240000,"doc_count":11},{"key_as_string":"2017-02-09T07:45:00.000Z","key":1486626300000,"doc_count":11},{"key_as_string":"2017-02-09T07:46:00.000Z","key":1486626360000,"doc_count":13},{"key_as_string":"2017-02-09T07:47:00.000Z","key":1486626420000,"doc_count":14},{"key_as_string":"2017-02-09T07:48:00.000Z","key":1486626480000,"doc_count":13},{"key_as_string":"2017-02-09T07:49:00.000Z","key":1486626540000,"doc_count":13},{"key_as_string":"2017-02-09T07:50:00.000Z","key":1486626600000,"doc_count":12},{"key_as_string":"2017-02-09T07:51:00.000Z","key":1486626660000,"doc_count":15},{"key_as_string":"2017-02-09T07:52:00.000Z","key":1486626720000,"doc_count":15},{"key_as_string":"2017-02-09T07:53:00.000Z","key":1486626780000,"doc_count":15},{"key_as_string":"2017-02-09T07:54:00.000Z","key":1486626840000,"doc_count":12},{"key_as_string":"2017-02-09T07:55:00.000Z","key":1486626900000,"doc_count":11},{"key_as_string":"2017-02-09T07:56:00.000Z","key":1486626960000,"doc_count":14},{"key_as_string":"2017-02-09T07:57:00.000Z","key":1486627020000,"doc_count":8},{"key_as_string":"2017-02-09T07:58:00.000Z","key":1486627080000,"doc_count":17},{"key_as_string":"2017-02-09T07:59:00.000Z","key":1486627140000,"doc_count":13},{"key_as_string":"2017-02-09T08:00:00.000Z","key":1486627200000,"doc_count":13},{"key_as_string":"2017-02-09T08:01:00.000Z","key":1486627260000,"doc_count":12},{"key_as_string":"2017-02-09T08:02:00.000Z","key":1486627320000,"doc_count":19},{"key_as_string":"2017-02-09T08:03:00.000Z","key":1486627380000,"doc_count":15},{"key_as_string":"2017-02-09T08:04:00.000Z","key":1486627440000,"doc_count":9},{"key_as_string":"2017-02-09T08:05:00.000Z","key":1486627500000,"doc_count":14},{"key_as_string":"2017-02-09T08:06:00.000Z","key":1486627560000,"doc_count":14},{"key_as_string":"2017-02-09T08:07:00.000Z","key":1486627620000,"doc_count":13},{"key_as_string":"2017-02-09T08:08:00.000Z","key":1486627680000,"doc_count":10},{"key_as_string":"2017-02-09T08:09:00.000Z","key":1486627740000,"doc_count":14},{"key_as_string":"2017-02-09T08:10:00.000Z","key":1486627800000,"doc_count":11},{"key_as_string":"2017-02-09T08:11:00.000Z","key":1486627860000,"doc_count":12},{"key_as_string":"2017-02-09T08:12:00.000Z","key":1486627920000,"doc_count":15},{"key_as_string":"2017-02-09T08:13:00.000Z","key":1486627980000,"doc_count":13},{"key_as_string":"2017-02-09T08:14:00.000Z","key":1486628040000,"doc_count":12},{"key_as_string":"2017-02-09T08:15:00.000Z","key":1486628100000,"doc_count":11},{"key_as_string":"2017-02-09T08:16:00.000Z","key":1486628160000,"doc_count":21},{"key_as_string":"2017-02-09T08:17:00.000Z","key":1486628220000,"doc_count":16},{"key_as_string":"2017-02-09T08:18:00.000Z","key":1486628280000,"doc_count":16},{"key_as_string":"2017-02-09T08:19:00.000Z","key":1486628340000,"doc_count":11},{"key_as_string":"2017-02-09T08:20:00.000Z","key":1486628400000,"doc_count":14},{"key_as_string":"2017-02-09T08:21:00.000Z","key":1486628460000,"doc_count":14},{"key_as_string":"2017-02-09T08:22:00.000Z","key":1486628520000,"doc_count":13},{"key_as_string":"2017-02-09T08:23:00.000Z","key":1486628580000,"doc_count":13},{"key_as_string":"2017-02-09T08:24:00.000Z","key":1486628640000,"doc_count":12},{"key_as_string":"2017-02-09T08:25:00.000Z","key":1486628700000,"doc_count":16},{"key_as_string":"2017-02-09T08:26:00.000Z","key":1486628760000,"doc_count":12},{"key_as_string":"2017-02-09T08:27:00.000Z","key":1486628820000,"doc_count":10},{"key_as_string":"2017-02-09T08:28:00.000Z","key":1486628880000,"doc_count":15},{"key_as_string":"2017-02-09T08:29:00.000Z","key":1486628940000,"doc_count":17},{"key_as_string":"2017-02-09T08:30:00.000Z","key":1486629000000,"doc_count":12},{"key_as_string":"2017-02-09T08:31:00.000Z","key":1486629060000,"doc_count":13},{"key_as_string":"2017-02-09T08:32:00.000Z","key":1486629120000,"doc_count":14},{"key_as_string":"2017-02-09T08:33:00.000Z","key":1486629180000,"doc_count":14},{"key_as_string":"2017-02-09T08:34:00.000Z","key":1486629240000,"doc_count":14},{"key_as_string":"2017-02-09T08:35:00.000Z","key":1486629300000,"doc_count":12},{"key_as_string":"2017-02-09T08:36:00.000Z","key":1486629360000,"doc_count":14},{"key_as_string":"2017-02-09T08:37:00.000Z","key":1486629420000,"doc_count":14},{"key_as_string":"2017-02-09T08:38:00.000Z","key":1486629480000,"doc_count":12},{"key_as_string":"2017-02-09T08:39:00.000Z","key":1486629540000,"doc_count":7},{"key_as_string":"2017-02-09T08:40:00.000Z","key":1486629600000,"doc_count":18},{"key_as_string":"2017-02-09T08:41:00.000Z","key":1486629660000,"doc_count":10},{"key_as_string":"2017-02-09T08:42:00.000Z","key":1486629720000,"doc_count":13},{"key_as_string":"2017-02-09T08:43:00.000Z","key":1486629780000,"doc_count":14},{"key_as_string":"2017-02-09T08:44:00.000Z","key":1486629840000,"doc_count":16},{"key_as_string":"2017-02-09T08:45:00.000Z","key":1486629900000,"doc_count":14},{"key_as_string":"2017-02-09T08:46:00.000Z","key":1486629960000,"doc_count":13},{"key_as_string":"2017-02-09T08:47:00.000Z","key":1486630020000,"doc_count":15},{"key_as_string":"2017-02-09T08:48:00.000Z","key":1486630080000,"doc_count":14},{"key_as_string":"2017-02-09T08:49:00.000Z","key":1486630140000,"doc_count":16},{"key_as_string":"2017-02-09T08:50:00.000Z","key":1486630200000,"doc_count":11},{"key_as_string":"2017-02-09T08:51:00.000Z","key":1486630260000,"doc_count":15},{"key_as_string":"2017-02-09T08:52:00.000Z","key":1486630320000,"doc_count":15},{"key_as_string":"2017-02-09T08:53:00.000Z","key":1486630380000,"doc_count":12},{"key_as_string":"2017-02-09T08:54:00.000Z","key":1486630440000,"doc_count":13},{"key_as_string":"2017-02-09T08:55:00.000Z","key":1486630500000,"doc_count":11},{"key_as_string":"2017-02-09T08:56:00.000Z","key":1486630560000,"doc_count":7},{"key_as_string":"2017-02-09T08:57:00.000Z","key":1486630620000,"doc_count":14},{"key_as_string":"2017-02-09T08:58:00.000Z","key":1486630680000,"doc_count":12},{"key_as_string":"2017-02-09T08:59:00.000Z","key":1486630740000,"doc_count":8},{"key_as_string":"2017-02-09T09:00:00.000Z","key":1486630800000,"doc_count":15},{"key_as_string":"2017-02-09T09:01:00.000Z","key":1486630860000,"doc_count":13},{"key_as_string":"2017-02-09T09:02:00.000Z","key":1486630920000,"doc_count":17},{"key_as_string":"2017-02-09T09:03:00.000Z","key":1486630980000,"doc_count":10},{"key_as_string":"2017-02-09T09:04:00.000Z","key":1486631040000,"doc_count":12},{"key_as_string":"2017-02-09T09:05:00.000Z","key":1486631100000,"doc_count":12},{"key_as_string":"2017-02-09T09:06:00.000Z","key":1486631160000,"doc_count":10},{"key_as_string":"2017-02-09T09:07:00.000Z","key":1486631220000,"doc_count":13},{"key_as_string":"2017-02-09T09:08:00.000Z","key":1486631280000,"doc_count":15},{"key_as_string":"2017-02-09T09:09:00.000Z","key":1486631340000,"doc_count":10},{"key_as_string":"2017-02-09T09:10:00.000Z","key":1486631400000,"doc_count":17},{"key_as_string":"2017-02-09T09:11:00.000Z","key":1486631460000,"doc_count":14},{"key_as_string":"2017-02-09T09:12:00.000Z","key":1486631520000,"doc_count":10},{"key_as_string":"2017-02-09T09:13:00.000Z","key":1486631580000,"doc_count":15},{"key_as_string":"2017-02-09T09:14:00.000Z","key":1486631640000,"doc_count":14},{"key_as_string":"2017-02-09T09:15:00.000Z","key":1486631700000,"doc_count":16},{"key_as_string":"2017-02-09T09:16:00.000Z","key":1486631760000,"doc_count":11},{"key_as_string":"2017-02-09T09:17:00.000Z","key":1486631820000,"doc_count":16},{"key_as_string":"2017-02-09T09:18:00.000Z","key":1486631880000,"doc_count":11},{"key_as_string":"2017-02-09T09:19:00.000Z","key":1486631940000,"doc_count":11},{"key_as_string":"2017-02-09T09:20:00.000Z","key":1486632000000,"doc_count":18},{"key_as_string":"2017-02-09T09:21:00.000Z","key":1486632060000,"doc_count":10},{"key_as_string":"2017-02-09T09:22:00.000Z","key":1486632120000,"doc_count":10},{"key_as_string":"2017-02-09T09:23:00.000Z","key":1486632180000,"doc_count":14},{"key_as_string":"2017-02-09T09:24:00.000Z","key":1486632240000,"doc_count":18},{"key_as_string":"2017-02-09T09:25:00.000Z","key":1486632300000,"doc_count":12},{"key_as_string":"2017-02-09T09:26:00.000Z","key":1486632360000,"doc_count":16},{"key_as_string":"2017-02-09T09:27:00.000Z","key":1486632420000,"doc_count":15},{"key_as_string":"2017-02-09T09:28:00.000Z","key":1486632480000,"doc_count":25},{"key_as_string":"2017-02-09T09:29:00.000Z","key":1486632540000,"doc_count":13},{"key_as_string":"2017-02-09T09:30:00.000Z","key":1486632600000,"doc_count":11},{"key_as_string":"2017-02-09T09:31:00.000Z","key":1486632660000,"doc_count":12},{"key_as_string":"2017-02-09T09:32:00.000Z","key":1486632720000,"doc_count":16},{"key_as_string":"2017-02-09T09:33:00.000Z","key":1486632780000,"doc_count":10},{"key_as_string":"2017-02-09T09:34:00.000Z","key":1486632840000,"doc_count":14},{"key_as_string":"2017-02-09T09:35:00.000Z","key":1486632900000,"doc_count":14},{"key_as_string":"2017-02-09T09:36:00.000Z","key":1486632960000,"doc_count":16},{"key_as_string":"2017-02-09T09:37:00.000Z","key":1486633020000,"doc_count":19},{"key_as_string":"2017-02-09T09:38:00.000Z","key":1486633080000,"doc_count":15},{"key_as_string":"2017-02-09T09:39:00.000Z","key":1486633140000,"doc_count":13},{"key_as_string":"2017-02-09T09:40:00.000Z","key":1486633200000,"doc_count":10},{"key_as_string":"2017-02-09T09:41:00.000Z","key":1486633260000,"doc_count":16},{"key_as_string":"2017-02-09T09:42:00.000Z","key":1486633320000,"doc_count":20},{"key_as_string":"2017-02-09T09:43:00.000Z","key":1486633380000,"doc_count":7},{"key_as_string":"2017-02-09T09:44:00.000Z","key":1486633440000,"doc_count":16},{"key_as_string":"2017-02-09T09:45:00.000Z","key":1486633500000,"doc_count":10},{"key_as_string":"2017-02-09T09:46:00.000Z","key":1486633560000,"doc_count":15},{"key_as_string":"2017-02-09T09:47:00.000Z","key":1486633620000,"doc_count":10},{"key_as_string":"2017-02-09T09:48:00.000Z","key":1486633680000,"doc_count":19},{"key_as_string":"2017-02-09T09:49:00.000Z","key":1486633740000,"doc_count":11},{"key_as_string":"2017-02-09T09:50:00.000Z","key":1486633800000,"doc_count":12},{"key_as_string":"2017-02-09T09:51:00.000Z","key":1486633860000,"doc_count":13},{"key_as_string":"2017-02-09T09:52:00.000Z","key":1486633920000,"doc_count":10},{"key_as_string":"2017-02-09T09:53:00.000Z","key":1486633980000,"doc_count":15},{"key_as_string":"2017-02-09T09:54:00.000Z","key":1486634040000,"doc_count":11},{"key_as_string":"2017-02-09T09:55:00.000Z","key":1486634100000,"doc_count":15},{"key_as_string":"2017-02-09T09:56:00.000Z","key":1486634160000,"doc_count":14},{"key_as_string":"2017-02-09T09:57:00.000Z","key":1486634220000,"doc_count":11},{"key_as_string":"2017-02-09T09:58:00.000Z","key":1486634280000,"doc_count":9},{"key_as_string":"2017-02-09T09:59:00.000Z","key":1486634340000,"doc_count":18},{"key_as_string":"2017-02-09T10:00:00.000Z","key":1486634400000,"doc_count":13},{"key_as_string":"2017-02-09T10:01:00.000Z","key":1486634460000,"doc_count":13},{"key_as_string":"2017-02-09T10:02:00.000Z","key":1486634520000,"doc_count":11},{"key_as_string":"2017-02-09T10:03:00.000Z","key":1486634580000,"doc_count":15},{"key_as_string":"2017-02-09T10:04:00.000Z","key":1486634640000,"doc_count":11},{"key_as_string":"2017-02-09T10:05:00.000Z","key":1486634700000,"doc_count":16},{"key_as_string":"2017-02-09T10:06:00.000Z","key":1486634760000,"doc_count":15},{"key_as_string":"2017-02-09T10:07:00.000Z","key":1486634820000,"doc_count":9},{"key_as_string":"2017-02-09T10:08:00.000Z","key":1486634880000,"doc_count":14},{"key_as_string":"2017-02-09T10:09:00.000Z","key":1486634940000,"doc_count":16},{"key_as_string":"2017-02-09T10:10:00.000Z","key":1486635000000,"doc_count":16},{"key_as_string":"2017-02-09T10:11:00.000Z","key":1486635060000,"doc_count":13},{"key_as_string":"2017-02-09T10:12:00.000Z","key":1486635120000,"doc_count":16},{"key_as_string":"2017-02-09T10:13:00.000Z","key":1486635180000,"doc_count":12},{"key_as_string":"2017-02-09T10:14:00.000Z","key":1486635240000,"doc_count":12},{"key_as_string":"2017-02-09T10:15:00.000Z","key":1486635300000,"doc_count":14},{"key_as_string":"2017-02-09T10:16:00.000Z","key":1486635360000,"doc_count":12},{"key_as_string":"2017-02-09T10:17:00.000Z","key":1486635420000,"doc_count":18},{"key_as_string":"2017-02-09T10:18:00.000Z","key":1486635480000,"doc_count":19},{"key_as_string":"2017-02-09T10:19:00.000Z","key":1486635540000,"doc_count":8},{"key_as_string":"2017-02-09T10:20:00.000Z","key":1486635600000,"doc_count":12},{"key_as_string":"2017-02-09T10:21:00.000Z","key":1486635660000,"doc_count":13},{"key_as_string":"2017-02-09T10:22:00.000Z","key":1486635720000,"doc_count":16},{"key_as_string":"2017-02-09T10:23:00.000Z","key":1486635780000,"doc_count":13},{"key_as_string":"2017-02-09T10:24:00.000Z","key":1486635840000,"doc_count":9},{"key_as_string":"2017-02-09T10:25:00.000Z","key":1486635900000,"doc_count":17},{"key_as_string":"2017-02-09T10:26:00.000Z","key":1486635960000,"doc_count":16},{"key_as_string":"2017-02-09T10:27:00.000Z","key":1486636020000,"doc_count":14},{"key_as_string":"2017-02-09T10:28:00.000Z","key":1486636080000,"doc_count":11},{"key_as_string":"2017-02-09T10:29:00.000Z","key":1486636140000,"doc_count":12},{"key_as_string":"2017-02-09T10:30:00.000Z","key":1486636200000,"doc_count":19},{"key_as_string":"2017-02-09T10:31:00.000Z","key":1486636260000,"doc_count":16},{"key_as_string":"2017-02-09T10:32:00.000Z","key":1486636320000,"doc_count":12},{"key_as_string":"2017-02-09T10:33:00.000Z","key":1486636380000,"doc_count":14},{"key_as_string":"2017-02-09T10:34:00.000Z","key":1486636440000,"doc_count":11},{"key_as_string":"2017-02-09T10:35:00.000Z","key":1486636500000,"doc_count":15},{"key_as_string":"2017-02-09T10:36:00.000Z","key":1486636560000,"doc_count":18},{"key_as_string":"2017-02-09T10:37:00.000Z","key":1486636620000,"doc_count":15},{"key_as_string":"2017-02-09T10:38:00.000Z","key":1486636680000,"doc_count":12},{"key_as_string":"2017-02-09T10:39:00.000Z","key":1486636740000,"doc_count":14},{"key_as_string":"2017-02-09T10:40:00.000Z","key":1486636800000,"doc_count":14},{"key_as_string":"2017-02-09T10:41:00.000Z","key":1486636860000,"doc_count":17},{"key_as_string":"2017-02-09T10:42:00.000Z","key":1486636920000,"doc_count":13},{"key_as_string":"2017-02-09T10:43:00.000Z","key":1486636980000,"doc_count":9},{"key_as_string":"2017-02-09T10:44:00.000Z","key":1486637040000,"doc_count":11},{"key_as_string":"2017-02-09T10:45:00.000Z","key":1486637100000,"doc_count":14},{"key_as_string":"2017-02-09T10:46:00.000Z","key":1486637160000,"doc_count":15},{"key_as_string":"2017-02-09T10:47:00.000Z","key":1486637220000,"doc_count":14},{"key_as_string":"2017-02-09T10:48:00.000Z","key":1486637280000,"doc_count":13},{"key_as_string":"2017-02-09T10:49:00.000Z","key":1486637340000,"doc_count":16},{"key_as_string":"2017-02-09T10:50:00.000Z","key":1486637400000,"doc_count":11},{"key_as_string":"2017-02-09T10:51:00.000Z","key":1486637460000,"doc_count":15},{"key_as_string":"2017-02-09T10:52:00.000Z","key":1486637520000,"doc_count":16},{"key_as_string":"2017-02-09T10:53:00.000Z","key":1486637580000,"doc_count":14},{"key_as_string":"2017-02-09T10:54:00.000Z","key":1486637640000,"doc_count":13},{"key_as_string":"2017-02-09T10:55:00.000Z","key":1486637700000,"doc_count":12},{"key_as_string":"2017-02-09T10:56:00.000Z","key":1486637760000,"doc_count":14},{"key_as_string":"2017-02-09T10:57:00.000Z","key":1486637820000,"doc_count":14},{"key_as_string":"2017-02-09T10:58:00.000Z","key":1486637880000,"doc_count":15},{"key_as_string":"2017-02-09T10:59:00.000Z","key":1486637940000,"doc_count":11},{"key_as_string":"2017-02-09T11:00:00.000Z","key":1486638000000,"doc_count":14},{"key_as_string":"2017-02-09T11:01:00.000Z","key":1486638060000,"doc_count":12},{"key_as_string":"2017-02-09T11:02:00.000Z","key":1486638120000,"doc_count":17},{"key_as_string":"2017-02-09T11:03:00.000Z","key":1486638180000,"doc_count":10},{"key_as_string":"2017-02-09T11:04:00.000Z","key":1486638240000,"doc_count":14},{"key_as_string":"2017-02-09T11:05:00.000Z","key":1486638300000,"doc_count":13},{"key_as_string":"2017-02-09T11:06:00.000Z","key":1486638360000,"doc_count":11},{"key_as_string":"2017-02-09T11:07:00.000Z","key":1486638420000,"doc_count":14},{"key_as_string":"2017-02-09T11:08:00.000Z","key":1486638480000,"doc_count":8},{"key_as_string":"2017-02-09T11:09:00.000Z","key":1486638540000,"doc_count":20},{"key_as_string":"2017-02-09T11:10:00.000Z","key":1486638600000,"doc_count":15},{"key_as_string":"2017-02-09T11:11:00.000Z","key":1486638660000,"doc_count":17},{"key_as_string":"2017-02-09T11:12:00.000Z","key":1486638720000,"doc_count":14},{"key_as_string":"2017-02-09T11:13:00.000Z","key":1486638780000,"doc_count":12},{"key_as_string":"2017-02-09T11:14:00.000Z","key":1486638840000,"doc_count":12},{"key_as_string":"2017-02-09T11:15:00.000Z","key":1486638900000,"doc_count":18},{"key_as_string":"2017-02-09T11:16:00.000Z","key":1486638960000,"doc_count":17},{"key_as_string":"2017-02-09T11:17:00.000Z","key":1486639020000,"doc_count":16},{"key_as_string":"2017-02-09T11:18:00.000Z","key":1486639080000,"doc_count":11},{"key_as_string":"2017-02-09T11:19:00.000Z","key":1486639140000,"doc_count":14},{"key_as_string":"2017-02-09T11:20:00.000Z","key":1486639200000,"doc_count":17},{"key_as_string":"2017-02-09T11:21:00.000Z","key":1486639260000,"doc_count":16},{"key_as_string":"2017-02-09T11:22:00.000Z","key":1486639320000,"doc_count":13},{"key_as_string":"2017-02-09T11:23:00.000Z","key":1486639380000,"doc_count":15},{"key_as_string":"2017-02-09T11:24:00.000Z","key":1486639440000,"doc_count":11},{"key_as_string":"2017-02-09T11:25:00.000Z","key":1486639500000,"doc_count":12},{"key_as_string":"2017-02-09T11:26:00.000Z","key":1486639560000,"doc_count":20},{"key_as_string":"2017-02-09T11:27:00.000Z","key":1486639620000,"doc_count":13},{"key_as_string":"2017-02-09T11:28:00.000Z","key":1486639680000,"doc_count":15},{"key_as_string":"2017-02-09T11:29:00.000Z","key":1486639740000,"doc_count":19},{"key_as_string":"2017-02-09T11:30:00.000Z","key":1486639800000,"doc_count":12},{"key_as_string":"2017-02-09T11:31:00.000Z","key":1486639860000,"doc_count":12},{"key_as_string":"2017-02-09T11:32:00.000Z","key":1486639920000,"doc_count":13},{"key_as_string":"2017-02-09T11:33:00.000Z","key":1486639980000,"doc_count":15},{"key_as_string":"2017-02-09T11:34:00.000Z","key":1486640040000,"doc_count":14},{"key_as_string":"2017-02-09T11:35:00.000Z","key":1486640100000,"doc_count":16},{"key_as_string":"2017-02-09T11:36:00.000Z","key":1486640160000,"doc_count":18},{"key_as_string":"2017-02-09T11:37:00.000Z","key":1486640220000,"doc_count":13},{"key_as_string":"2017-02-09T11:38:00.000Z","key":1486640280000,"doc_count":11},{"key_as_string":"2017-02-09T11:39:00.000Z","key":1486640340000,"doc_count":18},{"key_as_string":"2017-02-09T11:40:00.000Z","key":1486640400000,"doc_count":10},{"key_as_string":"2017-02-09T11:41:00.000Z","key":1486640460000,"doc_count":16},{"key_as_string":"2017-02-09T11:42:00.000Z","key":1486640520000,"doc_count":16},{"key_as_string":"2017-02-09T11:43:00.000Z","key":1486640580000,"doc_count":10},{"key_as_string":"2017-02-09T11:44:00.000Z","key":1486640640000,"doc_count":8},{"key_as_string":"2017-02-09T11:45:00.000Z","key":1486640700000,"doc_count":17},{"key_as_string":"2017-02-09T11:46:00.000Z","key":1486640760000,"doc_count":15},{"key_as_string":"2017-02-09T11:47:00.000Z","key":1486640820000,"doc_count":11},{"key_as_string":"2017-02-09T11:48:00.000Z","key":1486640880000,"doc_count":14},{"key_as_string":"2017-02-09T11:49:00.000Z","key":1486640940000,"doc_count":16},{"key_as_string":"2017-02-09T11:50:00.000Z","key":1486641000000,"doc_count":15},{"key_as_string":"2017-02-09T11:51:00.000Z","key":1486641060000,"doc_count":16},{"key_as_string":"2017-02-09T11:52:00.000Z","key":1486641120000,"doc_count":19},{"key_as_string":"2017-02-09T11:53:00.000Z","key":1486641180000,"doc_count":14},{"key_as_string":"2017-02-09T11:54:00.000Z","key":1486641240000,"doc_count":11},{"key_as_string":"2017-02-09T11:55:00.000Z","key":1486641300000,"doc_count":7},{"key_as_string":"2017-02-09T11:56:00.000Z","key":1486641360000,"doc_count":15},{"key_as_string":"2017-02-09T11:57:00.000Z","key":1486641420000,"doc_count":10},{"key_as_string":"2017-02-09T11:58:00.000Z","key":1486641480000,"doc_count":11},{"key_as_string":"2017-02-09T11:59:00.000Z","key":1486641540000,"doc_count":16},{"key_as_string":"2017-02-09T12:00:00.000Z","key":1486641600000,"doc_count":18},{"key_as_string":"2017-02-09T12:01:00.000Z","key":1486641660000,"doc_count":11},{"key_as_string":"2017-02-09T12:02:00.000Z","key":1486641720000,"doc_count":16},{"key_as_string":"2017-02-09T12:03:00.000Z","key":1486641780000,"doc_count":12},{"key_as_string":"2017-02-09T12:04:00.000Z","key":1486641840000,"doc_count":14},{"key_as_string":"2017-02-09T12:05:00.000Z","key":1486641900000,"doc_count":13},{"key_as_string":"2017-02-09T12:06:00.000Z","key":1486641960000,"doc_count":11},{"key_as_string":"2017-02-09T12:07:00.000Z","key":1486642020000,"doc_count":19},{"key_as_string":"2017-02-09T12:08:00.000Z","key":1486642080000,"doc_count":19},{"key_as_string":"2017-02-09T12:09:00.000Z","key":1486642140000,"doc_count":9},{"key_as_string":"2017-02-09T12:10:00.000Z","key":1486642200000,"doc_count":16},{"key_as_string":"2017-02-09T12:11:00.000Z","key":1486642260000,"doc_count":14},{"key_as_string":"2017-02-09T12:12:00.000Z","key":1486642320000,"doc_count":12},{"key_as_string":"2017-02-09T12:13:00.000Z","key":1486642380000,"doc_count":19},{"key_as_string":"2017-02-09T12:14:00.000Z","key":1486642440000,"doc_count":16},{"key_as_string":"2017-02-09T12:15:00.000Z","key":1486642500000,"doc_count":15},{"key_as_string":"2017-02-09T12:16:00.000Z","key":1486642560000,"doc_count":13},{"key_as_string":"2017-02-09T12:17:00.000Z","key":1486642620000,"doc_count":10},{"key_as_string":"2017-02-09T12:18:00.000Z","key":1486642680000,"doc_count":13},{"key_as_string":"2017-02-09T12:19:00.000Z","key":1486642740000,"doc_count":13},{"key_as_string":"2017-02-09T12:20:00.000Z","key":1486642800000,"doc_count":11},{"key_as_string":"2017-02-09T12:21:00.000Z","key":1486642860000,"doc_count":19},{"key_as_string":"2017-02-09T12:22:00.000Z","key":1486642920000,"doc_count":13},{"key_as_string":"2017-02-09T12:23:00.000Z","key":1486642980000,"doc_count":17},{"key_as_string":"2017-02-09T12:24:00.000Z","key":1486643040000,"doc_count":10},{"key_as_string":"2017-02-09T12:25:00.000Z","key":1486643100000,"doc_count":12},{"key_as_string":"2017-02-09T12:26:00.000Z","key":1486643160000,"doc_count":13},{"key_as_string":"2017-02-09T12:27:00.000Z","key":1486643220000,"doc_count":12},{"key_as_string":"2017-02-09T12:28:00.000Z","key":1486643280000,"doc_count":16},{"key_as_string":"2017-02-09T12:29:00.000Z","key":1486643340000,"doc_count":15},{"key_as_string":"2017-02-09T12:30:00.000Z","key":1486643400000,"doc_count":14},{"key_as_string":"2017-02-09T12:31:00.000Z","key":1486643460000,"doc_count":18},{"key_as_string":"2017-02-09T12:32:00.000Z","key":1486643520000,"doc_count":10},{"key_as_string":"2017-02-09T12:33:00.000Z","key":1486643580000,"doc_count":13},{"key_as_string":"2017-02-09T12:34:00.000Z","key":1486643640000,"doc_count":9},{"key_as_string":"2017-02-09T12:35:00.000Z","key":1486643700000,"doc_count":16},{"key_as_string":"2017-02-09T12:36:00.000Z","key":1486643760000,"doc_count":12},{"key_as_string":"2017-02-09T12:37:00.000Z","key":1486643820000,"doc_count":13},{"key_as_string":"2017-02-09T12:38:00.000Z","key":1486643880000,"doc_count":16},{"key_as_string":"2017-02-09T12:39:00.000Z","key":1486643940000,"doc_count":9},{"key_as_string":"2017-02-09T12:40:00.000Z","key":1486644000000,"doc_count":12},{"key_as_string":"2017-02-09T12:41:00.000Z","key":1486644060000,"doc_count":11},{"key_as_string":"2017-02-09T12:42:00.000Z","key":1486644120000,"doc_count":16},{"key_as_string":"2017-02-09T12:43:00.000Z","key":1486644180000,"doc_count":13},{"key_as_string":"2017-02-09T12:44:00.000Z","key":1486644240000,"doc_count":15},{"key_as_string":"2017-02-09T12:45:00.000Z","key":1486644300000,"doc_count":13},{"key_as_string":"2017-02-09T12:46:00.000Z","key":1486644360000,"doc_count":15},{"key_as_string":"2017-02-09T12:47:00.000Z","key":1486644420000,"doc_count":13},{"key_as_string":"2017-02-09T12:48:00.000Z","key":1486644480000,"doc_count":9},{"key_as_string":"2017-02-09T12:49:00.000Z","key":1486644540000,"doc_count":18},{"key_as_string":"2017-02-09T12:50:00.000Z","key":1486644600000,"doc_count":13},{"key_as_string":"2017-02-09T12:51:00.000Z","key":1486644660000,"doc_count":13},{"key_as_string":"2017-02-09T12:52:00.000Z","key":1486644720000,"doc_count":13},{"key_as_string":"2017-02-09T12:53:00.000Z","key":1486644780000,"doc_count":11},{"key_as_string":"2017-02-09T12:54:00.000Z","key":1486644840000,"doc_count":19},{"key_as_string":"2017-02-09T12:55:00.000Z","key":1486644900000,"doc_count":12},{"key_as_string":"2017-02-09T12:56:00.000Z","key":1486644960000,"doc_count":15},{"key_as_string":"2017-02-09T12:57:00.000Z","key":1486645020000,"doc_count":14},{"key_as_string":"2017-02-09T12:58:00.000Z","key":1486645080000,"doc_count":17},{"key_as_string":"2017-02-09T12:59:00.000Z","key":1486645140000,"doc_count":12},{"key_as_string":"2017-02-09T13:00:00.000Z","key":1486645200000,"doc_count":17},{"key_as_string":"2017-02-09T13:01:00.000Z","key":1486645260000,"doc_count":13},{"key_as_string":"2017-02-09T13:02:00.000Z","key":1486645320000,"doc_count":12},{"key_as_string":"2017-02-09T13:03:00.000Z","key":1486645380000,"doc_count":11},{"key_as_string":"2017-02-09T13:04:00.000Z","key":1486645440000,"doc_count":14},{"key_as_string":"2017-02-09T13:05:00.000Z","key":1486645500000,"doc_count":18},{"key_as_string":"2017-02-09T13:06:00.000Z","key":1486645560000,"doc_count":10},{"key_as_string":"2017-02-09T13:07:00.000Z","key":1486645620000,"doc_count":14},{"key_as_string":"2017-02-09T13:08:00.000Z","key":1486645680000,"doc_count":15},{"key_as_string":"2017-02-09T13:09:00.000Z","key":1486645740000,"doc_count":11},{"key_as_string":"2017-02-09T13:10:00.000Z","key":1486645800000,"doc_count":15},{"key_as_string":"2017-02-09T13:11:00.000Z","key":1486645860000,"doc_count":14},{"key_as_string":"2017-02-09T13:12:00.000Z","key":1486645920000,"doc_count":9},{"key_as_string":"2017-02-09T13:13:00.000Z","key":1486645980000,"doc_count":16},{"key_as_string":"2017-02-09T13:14:00.000Z","key":1486646040000,"doc_count":16},{"key_as_string":"2017-02-09T13:15:00.000Z","key":1486646100000,"doc_count":13},{"key_as_string":"2017-02-09T13:16:00.000Z","key":1486646160000,"doc_count":9},{"key_as_string":"2017-02-09T13:17:00.000Z","key":1486646220000,"doc_count":11},{"key_as_string":"2017-02-09T13:18:00.000Z","key":1486646280000,"doc_count":14},{"key_as_string":"2017-02-09T13:19:00.000Z","key":1486646340000,"doc_count":15},{"key_as_string":"2017-02-09T13:20:00.000Z","key":1486646400000,"doc_count":16},{"key_as_string":"2017-02-09T13:21:00.000Z","key":1486646460000,"doc_count":9},{"key_as_string":"2017-02-09T13:22:00.000Z","key":1486646520000,"doc_count":16},{"key_as_string":"2017-02-09T13:23:00.000Z","key":1486646580000,"doc_count":13},{"key_as_string":"2017-02-09T13:24:00.000Z","key":1486646640000,"doc_count":11},{"key_as_string":"2017-02-09T13:25:00.000Z","key":1486646700000,"doc_count":13},{"key_as_string":"2017-02-09T13:26:00.000Z","key":1486646760000,"doc_count":10},{"key_as_string":"2017-02-09T13:27:00.000Z","key":1486646820000,"doc_count":18},{"key_as_string":"2017-02-09T13:28:00.000Z","key":1486646880000,"doc_count":13},{"key_as_string":"2017-02-09T13:29:00.000Z","key":1486646940000,"doc_count":13},{"key_as_string":"2017-02-09T13:30:00.000Z","key":1486647000000,"doc_count":18},{"key_as_string":"2017-02-09T13:31:00.000Z","key":1486647060000,"doc_count":10},{"key_as_string":"2017-02-09T13:32:00.000Z","key":1486647120000,"doc_count":15},{"key_as_string":"2017-02-09T13:33:00.000Z","key":1486647180000,"doc_count":15},{"key_as_string":"2017-02-09T13:34:00.000Z","key":1486647240000,"doc_count":18},{"key_as_string":"2017-02-09T13:35:00.000Z","key":1486647300000,"doc_count":15},{"key_as_string":"2017-02-09T13:36:00.000Z","key":1486647360000,"doc_count":20},{"key_as_string":"2017-02-09T13:37:00.000Z","key":1486647420000,"doc_count":13},{"key_as_string":"2017-02-09T13:38:00.000Z","key":1486647480000,"doc_count":15},{"key_as_string":"2017-02-09T13:39:00.000Z","key":1486647540000,"doc_count":15},{"key_as_string":"2017-02-09T13:40:00.000Z","key":1486647600000,"doc_count":16},{"key_as_string":"2017-02-09T13:41:00.000Z","key":1486647660000,"doc_count":7},{"key_as_string":"2017-02-09T13:42:00.000Z","key":1486647720000,"doc_count":17},{"key_as_string":"2017-02-09T13:43:00.000Z","key":1486647780000,"doc_count":12},{"key_as_string":"2017-02-09T13:44:00.000Z","key":1486647840000,"doc_count":15},{"key_as_string":"2017-02-09T13:45:00.000Z","key":1486647900000,"doc_count":16},{"key_as_string":"2017-02-09T13:46:00.000Z","key":1486647960000,"doc_count":14},{"key_as_string":"2017-02-09T13:47:00.000Z","key":1486648020000,"doc_count":18},{"key_as_string":"2017-02-09T13:48:00.000Z","key":1486648080000,"doc_count":17},{"key_as_string":"2017-02-09T13:49:00.000Z","key":1486648140000,"doc_count":16},{"key_as_string":"2017-02-09T13:50:00.000Z","key":1486648200000,"doc_count":9},{"key_as_string":"2017-02-09T13:51:00.000Z","key":1486648260000,"doc_count":14},{"key_as_string":"2017-02-09T13:52:00.000Z","key":1486648320000,"doc_count":14},{"key_as_string":"2017-02-09T13:53:00.000Z","key":1486648380000,"doc_count":20},{"key_as_string":"2017-02-09T13:54:00.000Z","key":1486648440000,"doc_count":9},{"key_as_string":"2017-02-09T13:55:00.000Z","key":1486648500000,"doc_count":12},{"key_as_string":"2017-02-09T13:56:00.000Z","key":1486648560000,"doc_count":15},{"key_as_string":"2017-02-09T13:57:00.000Z","key":1486648620000,"doc_count":11},{"key_as_string":"2017-02-09T13:58:00.000Z","key":1486648680000,"doc_count":15},{"key_as_string":"2017-02-09T13:59:00.000Z","key":1486648740000,"doc_count":13},{"key_as_string":"2017-02-09T14:00:00.000Z","key":1486648800000,"doc_count":10},{"key_as_string":"2017-02-09T14:01:00.000Z","key":1486648860000,"doc_count":14},{"key_as_string":"2017-02-09T14:02:00.000Z","key":1486648920000,"doc_count":14},{"key_as_string":"2017-02-09T14:03:00.000Z","key":1486648980000,"doc_count":16},{"key_as_string":"2017-02-09T14:04:00.000Z","key":1486649040000,"doc_count":12},{"key_as_string":"2017-02-09T14:05:00.000Z","key":1486649100000,"doc_count":9},{"key_as_string":"2017-02-09T14:06:00.000Z","key":1486649160000,"doc_count":11},{"key_as_string":"2017-02-09T14:07:00.000Z","key":1486649220000,"doc_count":15},{"key_as_string":"2017-02-09T14:08:00.000Z","key":1486649280000,"doc_count":12},{"key_as_string":"2017-02-09T14:09:00.000Z","key":1486649340000,"doc_count":19},{"key_as_string":"2017-02-09T14:10:00.000Z","key":1486649400000,"doc_count":14},{"key_as_string":"2017-02-09T14:11:00.000Z","key":1486649460000,"doc_count":17},{"key_as_string":"2017-02-09T14:12:00.000Z","key":1486649520000,"doc_count":7},{"key_as_string":"2017-02-09T14:13:00.000Z","key":1486649580000,"doc_count":20},{"key_as_string":"2017-02-09T14:14:00.000Z","key":1486649640000,"doc_count":9},{"key_as_string":"2017-02-09T14:15:00.000Z","key":1486649700000,"doc_count":17},{"key_as_string":"2017-02-09T14:16:00.000Z","key":1486649760000,"doc_count":16},{"key_as_string":"2017-02-09T14:17:00.000Z","key":1486649820000,"doc_count":15},{"key_as_string":"2017-02-09T14:18:00.000Z","key":1486649880000,"doc_count":15},{"key_as_string":"2017-02-09T14:19:00.000Z","key":1486649940000,"doc_count":12},{"key_as_string":"2017-02-09T14:20:00.000Z","key":1486650000000,"doc_count":8},{"key_as_string":"2017-02-09T14:21:00.000Z","key":1486650060000,"doc_count":17},{"key_as_string":"2017-02-09T14:22:00.000Z","key":1486650120000,"doc_count":10},{"key_as_string":"2017-02-09T14:23:00.000Z","key":1486650180000,"doc_count":11},{"key_as_string":"2017-02-09T14:24:00.000Z","key":1486650240000,"doc_count":11},{"key_as_string":"2017-02-09T14:25:00.000Z","key":1486650300000,"doc_count":14},{"key_as_string":"2017-02-09T14:26:00.000Z","key":1486650360000,"doc_count":16},{"key_as_string":"2017-02-09T14:27:00.000Z","key":1486650420000,"doc_count":12},{"key_as_string":"2017-02-09T14:28:00.000Z","key":1486650480000,"doc_count":14},{"key_as_string":"2017-02-09T14:29:00.000Z","key":1486650540000,"doc_count":11},{"key_as_string":"2017-02-09T14:30:00.000Z","key":1486650600000,"doc_count":13},{"key_as_string":"2017-02-09T14:31:00.000Z","key":1486650660000,"doc_count":13},{"key_as_string":"2017-02-09T14:32:00.000Z","key":1486650720000,"doc_count":19},{"key_as_string":"2017-02-09T14:33:00.000Z","key":1486650780000,"doc_count":13},{"key_as_string":"2017-02-09T14:34:00.000Z","key":1486650840000,"doc_count":15},{"key_as_string":"2017-02-09T14:35:00.000Z","key":1486650900000,"doc_count":11},{"key_as_string":"2017-02-09T14:36:00.000Z","key":1486650960000,"doc_count":15},{"key_as_string":"2017-02-09T14:37:00.000Z","key":1486651020000,"doc_count":12},{"key_as_string":"2017-02-09T14:38:00.000Z","key":1486651080000,"doc_count":11},{"key_as_string":"2017-02-09T14:39:00.000Z","key":1486651140000,"doc_count":18},{"key_as_string":"2017-02-09T14:40:00.000Z","key":1486651200000,"doc_count":9},{"key_as_string":"2017-02-09T14:41:00.000Z","key":1486651260000,"doc_count":15},{"key_as_string":"2017-02-09T14:42:00.000Z","key":1486651320000,"doc_count":12},{"key_as_string":"2017-02-09T14:43:00.000Z","key":1486651380000,"doc_count":15},{"key_as_string":"2017-02-09T14:44:00.000Z","key":1486651440000,"doc_count":12},{"key_as_string":"2017-02-09T14:45:00.000Z","key":1486651500000,"doc_count":13},{"key_as_string":"2017-02-09T14:46:00.000Z","key":1486651560000,"doc_count":12},{"key_as_string":"2017-02-09T14:47:00.000Z","key":1486651620000,"doc_count":14},{"key_as_string":"2017-02-09T14:48:00.000Z","key":1486651680000,"doc_count":13},{"key_as_string":"2017-02-09T14:49:00.000Z","key":1486651740000,"doc_count":17},{"key_as_string":"2017-02-09T14:50:00.000Z","key":1486651800000,"doc_count":9},{"key_as_string":"2017-02-09T14:51:00.000Z","key":1486651860000,"doc_count":12},{"key_as_string":"2017-02-09T14:52:00.000Z","key":1486651920000,"doc_count":16},{"key_as_string":"2017-02-09T14:53:00.000Z","key":1486651980000,"doc_count":19},{"key_as_string":"2017-02-09T14:54:00.000Z","key":1486652040000,"doc_count":15},{"key_as_string":"2017-02-09T14:55:00.000Z","key":1486652100000,"doc_count":11},{"key_as_string":"2017-02-09T14:56:00.000Z","key":1486652160000,"doc_count":15},{"key_as_string":"2017-02-09T14:57:00.000Z","key":1486652220000,"doc_count":11},{"key_as_string":"2017-02-09T14:58:00.000Z","key":1486652280000,"doc_count":12},{"key_as_string":"2017-02-09T14:59:00.000Z","key":1486652340000,"doc_count":11},{"key_as_string":"2017-02-09T15:00:00.000Z","key":1486652400000,"doc_count":13},{"key_as_string":"2017-02-09T15:01:00.000Z","key":1486652460000,"doc_count":10},{"key_as_string":"2017-02-09T15:02:00.000Z","key":1486652520000,"doc_count":17},{"key_as_string":"2017-02-09T15:03:00.000Z","key":1486652580000,"doc_count":12},{"key_as_string":"2017-02-09T15:04:00.000Z","key":1486652640000,"doc_count":13},{"key_as_string":"2017-02-09T15:05:00.000Z","key":1486652700000,"doc_count":13},{"key_as_string":"2017-02-09T15:06:00.000Z","key":1486652760000,"doc_count":15},{"key_as_string":"2017-02-09T15:07:00.000Z","key":1486652820000,"doc_count":12},{"key_as_string":"2017-02-09T15:08:00.000Z","key":1486652880000,"doc_count":12},{"key_as_string":"2017-02-09T15:09:00.000Z","key":1486652940000,"doc_count":13},{"key_as_string":"2017-02-09T15:10:00.000Z","key":1486653000000,"doc_count":15},{"key_as_string":"2017-02-09T15:11:00.000Z","key":1486653060000,"doc_count":20},{"key_as_string":"2017-02-09T15:12:00.000Z","key":1486653120000,"doc_count":10},{"key_as_string":"2017-02-09T15:13:00.000Z","key":1486653180000,"doc_count":12},{"key_as_string":"2017-02-09T15:14:00.000Z","key":1486653240000,"doc_count":8},{"key_as_string":"2017-02-09T15:15:00.000Z","key":1486653300000,"doc_count":18},{"key_as_string":"2017-02-09T15:16:00.000Z","key":1486653360000,"doc_count":16},{"key_as_string":"2017-02-09T15:17:00.000Z","key":1486653420000,"doc_count":13},{"key_as_string":"2017-02-09T15:18:00.000Z","key":1486653480000,"doc_count":14},{"key_as_string":"2017-02-09T15:19:00.000Z","key":1486653540000,"doc_count":14},{"key_as_string":"2017-02-09T15:20:00.000Z","key":1486653600000,"doc_count":14},{"key_as_string":"2017-02-09T15:21:00.000Z","key":1486653660000,"doc_count":11},{"key_as_string":"2017-02-09T15:22:00.000Z","key":1486653720000,"doc_count":13},{"key_as_string":"2017-02-09T15:23:00.000Z","key":1486653780000,"doc_count":11},{"key_as_string":"2017-02-09T15:24:00.000Z","key":1486653840000,"doc_count":14},{"key_as_string":"2017-02-09T15:25:00.000Z","key":1486653900000,"doc_count":15},{"key_as_string":"2017-02-09T15:26:00.000Z","key":1486653960000,"doc_count":12},{"key_as_string":"2017-02-09T15:27:00.000Z","key":1486654020000,"doc_count":9},{"key_as_string":"2017-02-09T15:28:00.000Z","key":1486654080000,"doc_count":17},{"key_as_string":"2017-02-09T15:29:00.000Z","key":1486654140000,"doc_count":10},{"key_as_string":"2017-02-09T15:30:00.000Z","key":1486654200000,"doc_count":15},{"key_as_string":"2017-02-09T15:31:00.000Z","key":1486654260000,"doc_count":13},{"key_as_string":"2017-02-09T15:32:00.000Z","key":1486654320000,"doc_count":10},{"key_as_string":"2017-02-09T15:33:00.000Z","key":1486654380000,"doc_count":19},{"key_as_string":"2017-02-09T15:34:00.000Z","key":1486654440000,"doc_count":13},{"key_as_string":"2017-02-09T15:35:00.000Z","key":1486654500000,"doc_count":13},{"key_as_string":"2017-02-09T15:36:00.000Z","key":1486654560000,"doc_count":11},{"key_as_string":"2017-02-09T15:37:00.000Z","key":1486654620000,"doc_count":10},{"key_as_string":"2017-02-09T15:38:00.000Z","key":1486654680000,"doc_count":14},{"key_as_string":"2017-02-09T15:39:00.000Z","key":1486654740000,"doc_count":19},{"key_as_string":"2017-02-09T15:40:00.000Z","key":1486654800000,"doc_count":14},{"key_as_string":"2017-02-09T15:41:00.000Z","key":1486654860000,"doc_count":14},{"key_as_string":"2017-02-09T15:42:00.000Z","key":1486654920000,"doc_count":11},{"key_as_string":"2017-02-09T15:43:00.000Z","key":1486654980000,"doc_count":12},{"key_as_string":"2017-02-09T15:44:00.000Z","key":1486655040000,"doc_count":10},{"key_as_string":"2017-02-09T15:45:00.000Z","key":1486655100000,"doc_count":14},{"key_as_string":"2017-02-09T15:46:00.000Z","key":1486655160000,"doc_count":13},{"key_as_string":"2017-02-09T15:47:00.000Z","key":1486655220000,"doc_count":10},{"key_as_string":"2017-02-09T15:48:00.000Z","key":1486655280000,"doc_count":12},{"key_as_string":"2017-02-09T15:49:00.000Z","key":1486655340000,"doc_count":18},{"key_as_string":"2017-02-09T15:50:00.000Z","key":1486655400000,"doc_count":18},{"key_as_string":"2017-02-09T15:51:00.000Z","key":1486655460000,"doc_count":12},{"key_as_string":"2017-02-09T15:52:00.000Z","key":1486655520000,"doc_count":12},{"key_as_string":"2017-02-09T15:53:00.000Z","key":1486655580000,"doc_count":18},{"key_as_string":"2017-02-09T15:54:00.000Z","key":1486655640000,"doc_count":9},{"key_as_string":"2017-02-09T15:55:00.000Z","key":1486655700000,"doc_count":11},{"key_as_string":"2017-02-09T15:56:00.000Z","key":1486655760000,"doc_count":14},{"key_as_string":"2017-02-09T15:57:00.000Z","key":1486655820000,"doc_count":14},{"key_as_string":"2017-02-09T15:58:00.000Z","key":1486655880000,"doc_count":15},{"key_as_string":"2017-02-09T15:59:00.000Z","key":1486655940000,"doc_count":13},{"key_as_string":"2017-02-09T16:00:00.000Z","key":1486656000000,"doc_count":13},{"key_as_string":"2017-02-09T16:01:00.000Z","key":1486656060000,"doc_count":11},{"key_as_string":"2017-02-09T16:02:00.000Z","key":1486656120000,"doc_count":10},{"key_as_string":"2017-02-09T16:03:00.000Z","key":1486656180000,"doc_count":18},{"key_as_string":"2017-02-09T16:04:00.000Z","key":1486656240000,"doc_count":6},{"key_as_string":"2017-02-09T16:05:00.000Z","key":1486656300000,"doc_count":14},{"key_as_string":"2017-02-09T16:06:00.000Z","key":1486656360000,"doc_count":16},{"key_as_string":"2017-02-09T16:07:00.000Z","key":1486656420000,"doc_count":12},{"key_as_string":"2017-02-09T16:08:00.000Z","key":1486656480000,"doc_count":15},{"key_as_string":"2017-02-09T16:09:00.000Z","key":1486656540000,"doc_count":13},{"key_as_string":"2017-02-09T16:10:00.000Z","key":1486656600000,"doc_count":13},{"key_as_string":"2017-02-09T16:11:00.000Z","key":1486656660000,"doc_count":7},{"key_as_string":"2017-02-09T16:12:00.000Z","key":1486656720000,"doc_count":16},{"key_as_string":"2017-02-09T16:13:00.000Z","key":1486656780000,"doc_count":10},{"key_as_string":"2017-02-09T16:14:00.000Z","key":1486656840000,"doc_count":52},{"key_as_string":"2017-02-09T16:15:00.000Z","key":1486656900000,"doc_count":130},{"key_as_string":"2017-02-09T16:16:00.000Z","key":1486656960000,"doc_count":17},{"key_as_string":"2017-02-09T16:17:00.000Z","key":1486657020000,"doc_count":13},{"key_as_string":"2017-02-09T16:18:00.000Z","key":1486657080000,"doc_count":10},{"key_as_string":"2017-02-09T16:19:00.000Z","key":1486657140000,"doc_count":9},{"key_as_string":"2017-02-09T16:20:00.000Z","key":1486657200000,"doc_count":9},{"key_as_string":"2017-02-09T16:21:00.000Z","key":1486657260000,"doc_count":17},{"key_as_string":"2017-02-09T16:22:00.000Z","key":1486657320000,"doc_count":13},{"key_as_string":"2017-02-09T16:23:00.000Z","key":1486657380000,"doc_count":10},{"key_as_string":"2017-02-09T16:24:00.000Z","key":1486657440000,"doc_count":11},{"key_as_string":"2017-02-09T16:25:00.000Z","key":1486657500000,"doc_count":9},{"key_as_string":"2017-02-09T16:26:00.000Z","key":1486657560000,"doc_count":12},{"key_as_string":"2017-02-09T16:27:00.000Z","key":1486657620000,"doc_count":15},{"key_as_string":"2017-02-09T16:28:00.000Z","key":1486657680000,"doc_count":8},{"key_as_string":"2017-02-09T16:29:00.000Z","key":1486657740000,"doc_count":12},{"key_as_string":"2017-02-09T16:30:00.000Z","key":1486657800000,"doc_count":12},{"key_as_string":"2017-02-09T16:31:00.000Z","key":1486657860000,"doc_count":15},{"key_as_string":"2017-02-09T16:32:00.000Z","key":1486657920000,"doc_count":10},{"key_as_string":"2017-02-09T16:33:00.000Z","key":1486657980000,"doc_count":13},{"key_as_string":"2017-02-09T16:34:00.000Z","key":1486658040000,"doc_count":13},{"key_as_string":"2017-02-09T16:35:00.000Z","key":1486658100000,"doc_count":14},{"key_as_string":"2017-02-09T16:36:00.000Z","key":1486658160000,"doc_count":14},{"key_as_string":"2017-02-09T16:37:00.000Z","key":1486658220000,"doc_count":11},{"key_as_string":"2017-02-09T16:38:00.000Z","key":1486658280000,"doc_count":12},{"key_as_string":"2017-02-09T16:39:00.000Z","key":1486658340000,"doc_count":11},{"key_as_string":"2017-02-09T16:40:00.000Z","key":1486658400000,"doc_count":10},{"key_as_string":"2017-02-09T16:41:00.000Z","key":1486658460000,"doc_count":10},{"key_as_string":"2017-02-09T16:42:00.000Z","key":1486658520000,"doc_count":13},{"key_as_string":"2017-02-09T16:43:00.000Z","key":1486658580000,"doc_count":16},{"key_as_string":"2017-02-09T16:44:00.000Z","key":1486658640000,"doc_count":14},{"key_as_string":"2017-02-09T16:45:00.000Z","key":1486658700000,"doc_count":15},{"key_as_string":"2017-02-09T16:46:00.000Z","key":1486658760000,"doc_count":13},{"key_as_string":"2017-02-09T16:47:00.000Z","key":1486658820000,"doc_count":14},{"key_as_string":"2017-02-09T16:48:00.000Z","key":1486658880000,"doc_count":9},{"key_as_string":"2017-02-09T16:49:00.000Z","key":1486658940000,"doc_count":15},{"key_as_string":"2017-02-09T16:50:00.000Z","key":1486659000000,"doc_count":13},{"key_as_string":"2017-02-09T16:51:00.000Z","key":1486659060000,"doc_count":15},{"key_as_string":"2017-02-09T16:52:00.000Z","key":1486659120000,"doc_count":13},{"key_as_string":"2017-02-09T16:53:00.000Z","key":1486659180000,"doc_count":16},{"key_as_string":"2017-02-09T16:54:00.000Z","key":1486659240000,"doc_count":11},{"key_as_string":"2017-02-09T16:55:00.000Z","key":1486659300000,"doc_count":18},{"key_as_string":"2017-02-09T16:56:00.000Z","key":1486659360000,"doc_count":9},{"key_as_string":"2017-02-09T16:57:00.000Z","key":1486659420000,"doc_count":19},{"key_as_string":"2017-02-09T16:58:00.000Z","key":1486659480000,"doc_count":8},{"key_as_string":"2017-02-09T16:59:00.000Z","key":1486659540000,"doc_count":12},{"key_as_string":"2017-02-09T17:00:00.000Z","key":1486659600000,"doc_count":17},{"key_as_string":"2017-02-09T17:01:00.000Z","key":1486659660000,"doc_count":14},{"key_as_string":"2017-02-09T17:02:00.000Z","key":1486659720000,"doc_count":13},{"key_as_string":"2017-02-09T17:03:00.000Z","key":1486659780000,"doc_count":9},{"key_as_string":"2017-02-09T17:04:00.000Z","key":1486659840000,"doc_count":14},{"key_as_string":"2017-02-09T17:05:00.000Z","key":1486659900000,"doc_count":15},{"key_as_string":"2017-02-09T17:06:00.000Z","key":1486659960000,"doc_count":13},{"key_as_string":"2017-02-09T17:07:00.000Z","key":1486660020000,"doc_count":9},{"key_as_string":"2017-02-09T17:08:00.000Z","key":1486660080000,"doc_count":8},{"key_as_string":"2017-02-09T17:09:00.000Z","key":1486660140000,"doc_count":11},{"key_as_string":"2017-02-09T17:10:00.000Z","key":1486660200000,"doc_count":11},{"key_as_string":"2017-02-09T17:11:00.000Z","key":1486660260000,"doc_count":12},{"key_as_string":"2017-02-09T17:12:00.000Z","key":1486660320000,"doc_count":12},{"key_as_string":"2017-02-09T17:13:00.000Z","key":1486660380000,"doc_count":9},{"key_as_string":"2017-02-09T17:14:00.000Z","key":1486660440000,"doc_count":15},{"key_as_string":"2017-02-09T17:15:00.000Z","key":1486660500000,"doc_count":11},{"key_as_string":"2017-02-09T17:16:00.000Z","key":1486660560000,"doc_count":11},{"key_as_string":"2017-02-09T17:17:00.000Z","key":1486660620000,"doc_count":11},{"key_as_string":"2017-02-09T17:18:00.000Z","key":1486660680000,"doc_count":11},{"key_as_string":"2017-02-09T17:19:00.000Z","key":1486660740000,"doc_count":15},{"key_as_string":"2017-02-09T17:20:00.000Z","key":1486660800000,"doc_count":7},{"key_as_string":"2017-02-09T17:21:00.000Z","key":1486660860000,"doc_count":15},{"key_as_string":"2017-02-09T17:22:00.000Z","key":1486660920000,"doc_count":13},{"key_as_string":"2017-02-09T17:23:00.000Z","key":1486660980000,"doc_count":10},{"key_as_string":"2017-02-09T17:24:00.000Z","key":1486661040000,"doc_count":18},{"key_as_string":"2017-02-09T17:25:00.000Z","key":1486661100000,"doc_count":9},{"key_as_string":"2017-02-09T17:26:00.000Z","key":1486661160000,"doc_count":12},{"key_as_string":"2017-02-09T17:27:00.000Z","key":1486661220000,"doc_count":8},{"key_as_string":"2017-02-09T17:28:00.000Z","key":1486661280000,"doc_count":11},{"key_as_string":"2017-02-09T17:29:00.000Z","key":1486661340000,"doc_count":10},{"key_as_string":"2017-02-09T17:30:00.000Z","key":1486661400000,"doc_count":19},{"key_as_string":"2017-02-09T17:31:00.000Z","key":1486661460000,"doc_count":10},{"key_as_string":"2017-02-09T17:32:00.000Z","key":1486661520000,"doc_count":11},{"key_as_string":"2017-02-09T17:33:00.000Z","key":1486661580000,"doc_count":12},{"key_as_string":"2017-02-09T17:34:00.000Z","key":1486661640000,"doc_count":12},{"key_as_string":"2017-02-09T17:35:00.000Z","key":1486661700000,"doc_count":15},{"key_as_string":"2017-02-09T17:36:00.000Z","key":1486661760000,"doc_count":11},{"key_as_string":"2017-02-09T17:37:00.000Z","key":1486661820000,"doc_count":12},{"key_as_string":"2017-02-09T17:38:00.000Z","key":1486661880000,"doc_count":12},{"key_as_string":"2017-02-09T17:39:00.000Z","key":1486661940000,"doc_count":14},{"key_as_string":"2017-02-09T17:40:00.000Z","key":1486662000000,"doc_count":10},{"key_as_string":"2017-02-09T17:41:00.000Z","key":1486662060000,"doc_count":13},{"key_as_string":"2017-02-09T17:42:00.000Z","key":1486662120000,"doc_count":11},{"key_as_string":"2017-02-09T17:43:00.000Z","key":1486662180000,"doc_count":16},{"key_as_string":"2017-02-09T17:44:00.000Z","key":1486662240000,"doc_count":13},{"key_as_string":"2017-02-09T17:45:00.000Z","key":1486662300000,"doc_count":7},{"key_as_string":"2017-02-09T17:46:00.000Z","key":1486662360000,"doc_count":15},{"key_as_string":"2017-02-09T17:47:00.000Z","key":1486662420000,"doc_count":11},{"key_as_string":"2017-02-09T17:48:00.000Z","key":1486662480000,"doc_count":10},{"key_as_string":"2017-02-09T17:49:00.000Z","key":1486662540000,"doc_count":13},{"key_as_string":"2017-02-09T17:50:00.000Z","key":1486662600000,"doc_count":11},{"key_as_string":"2017-02-09T17:51:00.000Z","key":1486662660000,"doc_count":19},{"key_as_string":"2017-02-09T17:52:00.000Z","key":1486662720000,"doc_count":8},{"key_as_string":"2017-02-09T17:53:00.000Z","key":1486662780000,"doc_count":12},{"key_as_string":"2017-02-09T17:54:00.000Z","key":1486662840000,"doc_count":15},{"key_as_string":"2017-02-09T17:55:00.000Z","key":1486662900000,"doc_count":9},{"key_as_string":"2017-02-09T17:56:00.000Z","key":1486662960000,"doc_count":11},{"key_as_string":"2017-02-09T17:57:00.000Z","key":1486663020000,"doc_count":14},{"key_as_string":"2017-02-09T17:58:00.000Z","key":1486663080000,"doc_count":11},{"key_as_string":"2017-02-09T17:59:00.000Z","key":1486663140000,"doc_count":18},{"key_as_string":"2017-02-09T18:00:00.000Z","key":1486663200000,"doc_count":14},{"key_as_string":"2017-02-09T18:01:00.000Z","key":1486663260000,"doc_count":11},{"key_as_string":"2017-02-09T18:02:00.000Z","key":1486663320000,"doc_count":11},{"key_as_string":"2017-02-09T18:03:00.000Z","key":1486663380000,"doc_count":13},{"key_as_string":"2017-02-09T18:04:00.000Z","key":1486663440000,"doc_count":15},{"key_as_string":"2017-02-09T18:05:00.000Z","key":1486663500000,"doc_count":10},{"key_as_string":"2017-02-09T18:06:00.000Z","key":1486663560000,"doc_count":17},{"key_as_string":"2017-02-09T18:07:00.000Z","key":1486663620000,"doc_count":14},{"key_as_string":"2017-02-09T18:08:00.000Z","key":1486663680000,"doc_count":11},{"key_as_string":"2017-02-09T18:09:00.000Z","key":1486663740000,"doc_count":15},{"key_as_string":"2017-02-09T18:10:00.000Z","key":1486663800000,"doc_count":12},{"key_as_string":"2017-02-09T18:11:00.000Z","key":1486663860000,"doc_count":7},{"key_as_string":"2017-02-09T18:12:00.000Z","key":1486663920000,"doc_count":17},{"key_as_string":"2017-02-09T18:13:00.000Z","key":1486663980000,"doc_count":14},{"key_as_string":"2017-02-09T18:14:00.000Z","key":1486664040000,"doc_count":10},{"key_as_string":"2017-02-09T18:15:00.000Z","key":1486664100000,"doc_count":13},{"key_as_string":"2017-02-09T18:16:00.000Z","key":1486664160000,"doc_count":18},{"key_as_string":"2017-02-09T18:17:00.000Z","key":1486664220000,"doc_count":7},{"key_as_string":"2017-02-09T18:18:00.000Z","key":1486664280000,"doc_count":17},{"key_as_string":"2017-02-09T18:19:00.000Z","key":1486664340000,"doc_count":10},{"key_as_string":"2017-02-09T18:20:00.000Z","key":1486664400000,"doc_count":7},{"key_as_string":"2017-02-09T18:21:00.000Z","key":1486664460000,"doc_count":12},{"key_as_string":"2017-02-09T18:22:00.000Z","key":1486664520000,"doc_count":14},{"key_as_string":"2017-02-09T18:23:00.000Z","key":1486664580000,"doc_count":14},{"key_as_string":"2017-02-09T18:24:00.000Z","key":1486664640000,"doc_count":11},{"key_as_string":"2017-02-09T18:25:00.000Z","key":1486664700000,"doc_count":13},{"key_as_string":"2017-02-09T18:26:00.000Z","key":1486664760000,"doc_count":15},{"key_as_string":"2017-02-09T18:27:00.000Z","key":1486664820000,"doc_count":6},{"key_as_string":"2017-02-09T18:28:00.000Z","key":1486664880000,"doc_count":12},{"key_as_string":"2017-02-09T18:29:00.000Z","key":1486664940000,"doc_count":15},{"key_as_string":"2017-02-09T18:30:00.000Z","key":1486665000000,"doc_count":9},{"key_as_string":"2017-02-09T18:31:00.000Z","key":1486665060000,"doc_count":13},{"key_as_string":"2017-02-09T18:32:00.000Z","key":1486665120000,"doc_count":13},{"key_as_string":"2017-02-09T18:33:00.000Z","key":1486665180000,"doc_count":14},{"key_as_string":"2017-02-09T18:34:00.000Z","key":1486665240000,"doc_count":8},{"key_as_string":"2017-02-09T18:35:00.000Z","key":1486665300000,"doc_count":9},{"key_as_string":"2017-02-09T18:36:00.000Z","key":1486665360000,"doc_count":11},{"key_as_string":"2017-02-09T18:37:00.000Z","key":1486665420000,"doc_count":12},{"key_as_string":"2017-02-09T18:38:00.000Z","key":1486665480000,"doc_count":11},{"key_as_string":"2017-02-09T18:39:00.000Z","key":1486665540000,"doc_count":12},{"key_as_string":"2017-02-09T18:40:00.000Z","key":1486665600000,"doc_count":16},{"key_as_string":"2017-02-09T18:41:00.000Z","key":1486665660000,"doc_count":7},{"key_as_string":"2017-02-09T18:42:00.000Z","key":1486665720000,"doc_count":13},{"key_as_string":"2017-02-09T18:43:00.000Z","key":1486665780000,"doc_count":13},{"key_as_string":"2017-02-09T18:44:00.000Z","key":1486665840000,"doc_count":14},{"key_as_string":"2017-02-09T18:45:00.000Z","key":1486665900000,"doc_count":7},{"key_as_string":"2017-02-09T18:46:00.000Z","key":1486665960000,"doc_count":9},{"key_as_string":"2017-02-09T18:47:00.000Z","key":1486666020000,"doc_count":11},{"key_as_string":"2017-02-09T18:48:00.000Z","key":1486666080000,"doc_count":11},{"key_as_string":"2017-02-09T18:49:00.000Z","key":1486666140000,"doc_count":11},{"key_as_string":"2017-02-09T18:50:00.000Z","key":1486666200000,"doc_count":8},{"key_as_string":"2017-02-09T18:51:00.000Z","key":1486666260000,"doc_count":15},{"key_as_string":"2017-02-09T18:52:00.000Z","key":1486666320000,"doc_count":8},{"key_as_string":"2017-02-09T18:53:00.000Z","key":1486666380000,"doc_count":13},{"key_as_string":"2017-02-09T18:54:00.000Z","key":1486666440000,"doc_count":13},{"key_as_string":"2017-02-09T18:55:00.000Z","key":1486666500000,"doc_count":11},{"key_as_string":"2017-02-09T18:56:00.000Z","key":1486666560000,"doc_count":16},{"key_as_string":"2017-02-09T18:57:00.000Z","key":1486666620000,"doc_count":6},{"key_as_string":"2017-02-09T18:58:00.000Z","key":1486666680000,"doc_count":12},{"key_as_string":"2017-02-09T18:59:00.000Z","key":1486666740000,"doc_count":12},{"key_as_string":"2017-02-09T19:00:00.000Z","key":1486666800000,"doc_count":9},{"key_as_string":"2017-02-09T19:01:00.000Z","key":1486666860000,"doc_count":12},{"key_as_string":"2017-02-09T19:02:00.000Z","key":1486666920000,"doc_count":11},{"key_as_string":"2017-02-09T19:03:00.000Z","key":1486666980000,"doc_count":14},{"key_as_string":"2017-02-09T19:04:00.000Z","key":1486667040000,"doc_count":10},{"key_as_string":"2017-02-09T19:05:00.000Z","key":1486667100000,"doc_count":9},{"key_as_string":"2017-02-09T19:06:00.000Z","key":1486667160000,"doc_count":8},{"key_as_string":"2017-02-09T19:07:00.000Z","key":1486667220000,"doc_count":19},{"key_as_string":"2017-02-09T19:08:00.000Z","key":1486667280000,"doc_count":8},{"key_as_string":"2017-02-09T19:09:00.000Z","key":1486667340000,"doc_count":12},{"key_as_string":"2017-02-09T19:10:00.000Z","key":1486667400000,"doc_count":10},{"key_as_string":"2017-02-09T19:11:00.000Z","key":1486667460000,"doc_count":9},{"key_as_string":"2017-02-09T19:12:00.000Z","key":1486667520000,"doc_count":10},{"key_as_string":"2017-02-09T19:13:00.000Z","key":1486667580000,"doc_count":7},{"key_as_string":"2017-02-09T19:14:00.000Z","key":1486667640000,"doc_count":7},{"key_as_string":"2017-02-09T19:15:00.000Z","key":1486667700000,"doc_count":15},{"key_as_string":"2017-02-09T19:16:00.000Z","key":1486667760000,"doc_count":8},{"key_as_string":"2017-02-09T19:17:00.000Z","key":1486667820000,"doc_count":9},{"key_as_string":"2017-02-09T19:18:00.000Z","key":1486667880000,"doc_count":14},{"key_as_string":"2017-02-09T19:19:00.000Z","key":1486667940000,"doc_count":10},{"key_as_string":"2017-02-09T19:20:00.000Z","key":1486668000000,"doc_count":8},{"key_as_string":"2017-02-09T19:21:00.000Z","key":1486668060000,"doc_count":19},{"key_as_string":"2017-02-09T19:22:00.000Z","key":1486668120000,"doc_count":7},{"key_as_string":"2017-02-09T19:23:00.000Z","key":1486668180000,"doc_count":9},{"key_as_string":"2017-02-09T19:24:00.000Z","key":1486668240000,"doc_count":9},{"key_as_string":"2017-02-09T19:25:00.000Z","key":1486668300000,"doc_count":14},{"key_as_string":"2017-02-09T19:26:00.000Z","key":1486668360000,"doc_count":15},{"key_as_string":"2017-02-09T19:27:00.000Z","key":1486668420000,"doc_count":13},{"key_as_string":"2017-02-09T19:28:00.000Z","key":1486668480000,"doc_count":15},{"key_as_string":"2017-02-09T19:29:00.000Z","key":1486668540000,"doc_count":9},{"key_as_string":"2017-02-09T19:30:00.000Z","key":1486668600000,"doc_count":7},{"key_as_string":"2017-02-09T19:31:00.000Z","key":1486668660000,"doc_count":9},{"key_as_string":"2017-02-09T19:32:00.000Z","key":1486668720000,"doc_count":6},{"key_as_string":"2017-02-09T19:33:00.000Z","key":1486668780000,"doc_count":16},{"key_as_string":"2017-02-09T19:34:00.000Z","key":1486668840000,"doc_count":14},{"key_as_string":"2017-02-09T19:35:00.000Z","key":1486668900000,"doc_count":12},{"key_as_string":"2017-02-09T19:36:00.000Z","key":1486668960000,"doc_count":12},{"key_as_string":"2017-02-09T19:37:00.000Z","key":1486669020000,"doc_count":11},{"key_as_string":"2017-02-09T19:38:00.000Z","key":1486669080000,"doc_count":12},{"key_as_string":"2017-02-09T19:39:00.000Z","key":1486669140000,"doc_count":13},{"key_as_string":"2017-02-09T19:40:00.000Z","key":1486669200000,"doc_count":6},{"key_as_string":"2017-02-09T19:41:00.000Z","key":1486669260000,"doc_count":14},{"key_as_string":"2017-02-09T19:42:00.000Z","key":1486669320000,"doc_count":15},{"key_as_string":"2017-02-09T19:43:00.000Z","key":1486669380000,"doc_count":9},{"key_as_string":"2017-02-09T19:44:00.000Z","key":1486669440000,"doc_count":7},{"key_as_string":"2017-02-09T19:45:00.000Z","key":1486669500000,"doc_count":15},{"key_as_string":"2017-02-09T19:46:00.000Z","key":1486669560000,"doc_count":10},{"key_as_string":"2017-02-09T19:47:00.000Z","key":1486669620000,"doc_count":9},{"key_as_string":"2017-02-09T19:48:00.000Z","key":1486669680000,"doc_count":9},{"key_as_string":"2017-02-09T19:49:00.000Z","key":1486669740000,"doc_count":14},{"key_as_string":"2017-02-09T19:50:00.000Z","key":1486669800000,"doc_count":8},{"key_as_string":"2017-02-09T19:51:00.000Z","key":1486669860000,"doc_count":12},{"key_as_string":"2017-02-09T19:52:00.000Z","key":1486669920000,"doc_count":8},{"key_as_string":"2017-02-09T19:53:00.000Z","key":1486669980000,"doc_count":6},{"key_as_string":"2017-02-09T19:54:00.000Z","key":1486670040000,"doc_count":13},{"key_as_string":"2017-02-09T19:55:00.000Z","key":1486670100000,"doc_count":14},{"key_as_string":"2017-02-09T19:56:00.000Z","key":1486670160000,"doc_count":10},{"key_as_string":"2017-02-09T19:57:00.000Z","key":1486670220000,"doc_count":15},{"key_as_string":"2017-02-09T19:58:00.000Z","key":1486670280000,"doc_count":11},{"key_as_string":"2017-02-09T19:59:00.000Z","key":1486670340000,"doc_count":11},{"key_as_string":"2017-02-09T20:00:00.000Z","key":1486670400000,"doc_count":14},{"key_as_string":"2017-02-09T20:01:00.000Z","key":1486670460000,"doc_count":16},{"key_as_string":"2017-02-09T20:02:00.000Z","key":1486670520000,"doc_count":11},{"key_as_string":"2017-02-09T20:03:00.000Z","key":1486670580000,"doc_count":11},{"key_as_string":"2017-02-09T20:04:00.000Z","key":1486670640000,"doc_count":14},{"key_as_string":"2017-02-09T20:05:00.000Z","key":1486670700000,"doc_count":6},{"key_as_string":"2017-02-09T20:06:00.000Z","key":1486670760000,"doc_count":12},{"key_as_string":"2017-02-09T20:07:00.000Z","key":1486670820000,"doc_count":14},{"key_as_string":"2017-02-09T20:08:00.000Z","key":1486670880000,"doc_count":11},{"key_as_string":"2017-02-09T20:09:00.000Z","key":1486670940000,"doc_count":15},{"key_as_string":"2017-02-09T20:10:00.000Z","key":1486671000000,"doc_count":14},{"key_as_string":"2017-02-09T20:11:00.000Z","key":1486671060000,"doc_count":13},{"key_as_string":"2017-02-09T20:12:00.000Z","key":1486671120000,"doc_count":10},{"key_as_string":"2017-02-09T20:13:00.000Z","key":1486671180000,"doc_count":12},{"key_as_string":"2017-02-09T20:14:00.000Z","key":1486671240000,"doc_count":10},{"key_as_string":"2017-02-09T20:15:00.000Z","key":1486671300000,"doc_count":9},{"key_as_string":"2017-02-09T20:16:00.000Z","key":1486671360000,"doc_count":12},{"key_as_string":"2017-02-09T20:17:00.000Z","key":1486671420000,"doc_count":9},{"key_as_string":"2017-02-09T20:18:00.000Z","key":1486671480000,"doc_count":14},{"key_as_string":"2017-02-09T20:19:00.000Z","key":1486671540000,"doc_count":12},{"key_as_string":"2017-02-09T20:20:00.000Z","key":1486671600000,"doc_count":11},{"key_as_string":"2017-02-09T20:21:00.000Z","key":1486671660000,"doc_count":10},{"key_as_string":"2017-02-09T20:22:00.000Z","key":1486671720000,"doc_count":14},{"key_as_string":"2017-02-09T20:23:00.000Z","key":1486671780000,"doc_count":10},{"key_as_string":"2017-02-09T20:24:00.000Z","key":1486671840000,"doc_count":12},{"key_as_string":"2017-02-09T20:25:00.000Z","key":1486671900000,"doc_count":8},{"key_as_string":"2017-02-09T20:26:00.000Z","key":1486671960000,"doc_count":14},{"key_as_string":"2017-02-09T20:27:00.000Z","key":1486672020000,"doc_count":7},{"key_as_string":"2017-02-09T20:28:00.000Z","key":1486672080000,"doc_count":12},{"key_as_string":"2017-02-09T20:29:00.000Z","key":1486672140000,"doc_count":11},{"key_as_string":"2017-02-09T20:30:00.000Z","key":1486672200000,"doc_count":15},{"key_as_string":"2017-02-09T20:31:00.000Z","key":1486672260000,"doc_count":11},{"key_as_string":"2017-02-09T20:32:00.000Z","key":1486672320000,"doc_count":11},{"key_as_string":"2017-02-09T20:33:00.000Z","key":1486672380000,"doc_count":7},{"key_as_string":"2017-02-09T20:34:00.000Z","key":1486672440000,"doc_count":10},{"key_as_string":"2017-02-09T20:35:00.000Z","key":1486672500000,"doc_count":13},{"key_as_string":"2017-02-09T20:36:00.000Z","key":1486672560000,"doc_count":6},{"key_as_string":"2017-02-09T20:37:00.000Z","key":1486672620000,"doc_count":9},{"key_as_string":"2017-02-09T20:38:00.000Z","key":1486672680000,"doc_count":7},{"key_as_string":"2017-02-09T20:39:00.000Z","key":1486672740000,"doc_count":10},{"key_as_string":"2017-02-09T20:40:00.000Z","key":1486672800000,"doc_count":8},{"key_as_string":"2017-02-09T20:41:00.000Z","key":1486672860000,"doc_count":12},{"key_as_string":"2017-02-09T20:42:00.000Z","key":1486672920000,"doc_count":6},{"key_as_string":"2017-02-09T20:43:00.000Z","key":1486672980000,"doc_count":14},{"key_as_string":"2017-02-09T20:44:00.000Z","key":1486673040000,"doc_count":6},{"key_as_string":"2017-02-09T20:45:00.000Z","key":1486673100000,"doc_count":8},{"key_as_string":"2017-02-09T20:46:00.000Z","key":1486673160000,"doc_count":14},{"key_as_string":"2017-02-09T20:47:00.000Z","key":1486673220000,"doc_count":10},{"key_as_string":"2017-02-09T20:48:00.000Z","key":1486673280000,"doc_count":9},{"key_as_string":"2017-02-09T20:49:00.000Z","key":1486673340000,"doc_count":11},{"key_as_string":"2017-02-09T20:50:00.000Z","key":1486673400000,"doc_count":14},{"key_as_string":"2017-02-09T20:51:00.000Z","key":1486673460000,"doc_count":6},{"key_as_string":"2017-02-09T20:52:00.000Z","key":1486673520000,"doc_count":9},{"key_as_string":"2017-02-09T20:53:00.000Z","key":1486673580000,"doc_count":10},{"key_as_string":"2017-02-09T20:54:00.000Z","key":1486673640000,"doc_count":13},{"key_as_string":"2017-02-09T20:55:00.000Z","key":1486673700000,"doc_count":11},{"key_as_string":"2017-02-09T20:56:00.000Z","key":1486673760000,"doc_count":6},{"key_as_string":"2017-02-09T20:57:00.000Z","key":1486673820000,"doc_count":10},{"key_as_string":"2017-02-09T20:58:00.000Z","key":1486673880000,"doc_count":10},{"key_as_string":"2017-02-09T20:59:00.000Z","key":1486673940000,"doc_count":9},{"key_as_string":"2017-02-09T21:00:00.000Z","key":1486674000000,"doc_count":17},{"key_as_string":"2017-02-09T21:01:00.000Z","key":1486674060000,"doc_count":11},{"key_as_string":"2017-02-09T21:02:00.000Z","key":1486674120000,"doc_count":10},{"key_as_string":"2017-02-09T21:03:00.000Z","key":1486674180000,"doc_count":9},{"key_as_string":"2017-02-09T21:04:00.000Z","key":1486674240000,"doc_count":14},{"key_as_string":"2017-02-09T21:05:00.000Z","key":1486674300000,"doc_count":10},{"key_as_string":"2017-02-09T21:06:00.000Z","key":1486674360000,"doc_count":12},{"key_as_string":"2017-02-09T21:07:00.000Z","key":1486674420000,"doc_count":9},{"key_as_string":"2017-02-09T21:08:00.000Z","key":1486674480000,"doc_count":11},{"key_as_string":"2017-02-09T21:09:00.000Z","key":1486674540000,"doc_count":11},{"key_as_string":"2017-02-09T21:10:00.000Z","key":1486674600000,"doc_count":11},{"key_as_string":"2017-02-09T21:11:00.000Z","key":1486674660000,"doc_count":10},{"key_as_string":"2017-02-09T21:12:00.000Z","key":1486674720000,"doc_count":9},{"key_as_string":"2017-02-09T21:13:00.000Z","key":1486674780000,"doc_count":13},{"key_as_string":"2017-02-09T21:14:00.000Z","key":1486674840000,"doc_count":9},{"key_as_string":"2017-02-09T21:15:00.000Z","key":1486674900000,"doc_count":8},{"key_as_string":"2017-02-09T21:16:00.000Z","key":1486674960000,"doc_count":11},{"key_as_string":"2017-02-09T21:17:00.000Z","key":1486675020000,"doc_count":12},{"key_as_string":"2017-02-09T21:18:00.000Z","key":1486675080000,"doc_count":7},{"key_as_string":"2017-02-09T21:19:00.000Z","key":1486675140000,"doc_count":14},{"key_as_string":"2017-02-09T21:20:00.000Z","key":1486675200000,"doc_count":15},{"key_as_string":"2017-02-09T21:21:00.000Z","key":1486675260000,"doc_count":5},{"key_as_string":"2017-02-09T21:22:00.000Z","key":1486675320000,"doc_count":8},{"key_as_string":"2017-02-09T21:23:00.000Z","key":1486675380000,"doc_count":15},{"key_as_string":"2017-02-09T21:24:00.000Z","key":1486675440000,"doc_count":9},{"key_as_string":"2017-02-09T21:25:00.000Z","key":1486675500000,"doc_count":14},{"key_as_string":"2017-02-09T21:26:00.000Z","key":1486675560000,"doc_count":12},{"key_as_string":"2017-02-09T21:27:00.000Z","key":1486675620000,"doc_count":8},{"key_as_string":"2017-02-09T21:28:00.000Z","key":1486675680000,"doc_count":12},{"key_as_string":"2017-02-09T21:29:00.000Z","key":1486675740000,"doc_count":10},{"key_as_string":"2017-02-09T21:30:00.000Z","key":1486675800000,"doc_count":10},{"key_as_string":"2017-02-09T21:31:00.000Z","key":1486675860000,"doc_count":11},{"key_as_string":"2017-02-09T21:32:00.000Z","key":1486675920000,"doc_count":10},{"key_as_string":"2017-02-09T21:33:00.000Z","key":1486675980000,"doc_count":9},{"key_as_string":"2017-02-09T21:34:00.000Z","key":1486676040000,"doc_count":10},{"key_as_string":"2017-02-09T21:35:00.000Z","key":1486676100000,"doc_count":11},{"key_as_string":"2017-02-09T21:36:00.000Z","key":1486676160000,"doc_count":11},{"key_as_string":"2017-02-09T21:37:00.000Z","key":1486676220000,"doc_count":8},{"key_as_string":"2017-02-09T21:38:00.000Z","key":1486676280000,"doc_count":12},{"key_as_string":"2017-02-09T21:39:00.000Z","key":1486676340000,"doc_count":9},{"key_as_string":"2017-02-09T21:40:00.000Z","key":1486676400000,"doc_count":8},{"key_as_string":"2017-02-09T21:41:00.000Z","key":1486676460000,"doc_count":10},{"key_as_string":"2017-02-09T21:42:00.000Z","key":1486676520000,"doc_count":8},{"key_as_string":"2017-02-09T21:43:00.000Z","key":1486676580000,"doc_count":12},{"key_as_string":"2017-02-09T21:44:00.000Z","key":1486676640000,"doc_count":10},{"key_as_string":"2017-02-09T21:45:00.000Z","key":1486676700000,"doc_count":14},{"key_as_string":"2017-02-09T21:46:00.000Z","key":1486676760000,"doc_count":11},{"key_as_string":"2017-02-09T21:47:00.000Z","key":1486676820000,"doc_count":8},{"key_as_string":"2017-02-09T21:48:00.000Z","key":1486676880000,"doc_count":12},{"key_as_string":"2017-02-09T21:49:00.000Z","key":1486676940000,"doc_count":12},{"key_as_string":"2017-02-09T21:50:00.000Z","key":1486677000000,"doc_count":9},{"key_as_string":"2017-02-09T21:51:00.000Z","key":1486677060000,"doc_count":11},{"key_as_string":"2017-02-09T21:52:00.000Z","key":1486677120000,"doc_count":10},{"key_as_string":"2017-02-09T21:53:00.000Z","key":1486677180000,"doc_count":11},{"key_as_string":"2017-02-09T21:54:00.000Z","key":1486677240000,"doc_count":14},{"key_as_string":"2017-02-09T21:55:00.000Z","key":1486677300000,"doc_count":9},{"key_as_string":"2017-02-09T21:56:00.000Z","key":1486677360000,"doc_count":8},{"key_as_string":"2017-02-09T21:57:00.000Z","key":1486677420000,"doc_count":10},{"key_as_string":"2017-02-09T21:58:00.000Z","key":1486677480000,"doc_count":8},{"key_as_string":"2017-02-09T21:59:00.000Z","key":1486677540000,"doc_count":16},{"key_as_string":"2017-02-09T22:00:00.000Z","key":1486677600000,"doc_count":11},{"key_as_string":"2017-02-09T22:01:00.000Z","key":1486677660000,"doc_count":7},{"key_as_string":"2017-02-09T22:02:00.000Z","key":1486677720000,"doc_count":13},{"key_as_string":"2017-02-09T22:03:00.000Z","key":1486677780000,"doc_count":12},{"key_as_string":"2017-02-09T22:04:00.000Z","key":1486677840000,"doc_count":9},{"key_as_string":"2017-02-09T22:05:00.000Z","key":1486677900000,"doc_count":14},{"key_as_string":"2017-02-09T22:06:00.000Z","key":1486677960000,"doc_count":8},{"key_as_string":"2017-02-09T22:07:00.000Z","key":1486678020000,"doc_count":9},{"key_as_string":"2017-02-09T22:08:00.000Z","key":1486678080000,"doc_count":15},{"key_as_string":"2017-02-09T22:09:00.000Z","key":1486678140000,"doc_count":10},{"key_as_string":"2017-02-09T22:10:00.000Z","key":1486678200000,"doc_count":7},{"key_as_string":"2017-02-09T22:11:00.000Z","key":1486678260000,"doc_count":11},{"key_as_string":"2017-02-09T22:12:00.000Z","key":1486678320000,"doc_count":8},{"key_as_string":"2017-02-09T22:13:00.000Z","key":1486678380000,"doc_count":13},{"key_as_string":"2017-02-09T22:14:00.000Z","key":1486678440000,"doc_count":12},{"key_as_string":"2017-02-09T22:15:00.000Z","key":1486678500000,"doc_count":6},{"key_as_string":"2017-02-09T22:16:00.000Z","key":1486678560000,"doc_count":9},{"key_as_string":"2017-02-09T22:17:00.000Z","key":1486678620000,"doc_count":13},{"key_as_string":"2017-02-09T22:18:00.000Z","key":1486678680000,"doc_count":12},{"key_as_string":"2017-02-09T22:19:00.000Z","key":1486678740000,"doc_count":9},{"key_as_string":"2017-02-09T22:20:00.000Z","key":1486678800000,"doc_count":7},{"key_as_string":"2017-02-09T22:21:00.000Z","key":1486678860000,"doc_count":8},{"key_as_string":"2017-02-09T22:22:00.000Z","key":1486678920000,"doc_count":12},{"key_as_string":"2017-02-09T22:23:00.000Z","key":1486678980000,"doc_count":7},{"key_as_string":"2017-02-09T22:24:00.000Z","key":1486679040000,"doc_count":15},{"key_as_string":"2017-02-09T22:25:00.000Z","key":1486679100000,"doc_count":12},{"key_as_string":"2017-02-09T22:26:00.000Z","key":1486679160000,"doc_count":12},{"key_as_string":"2017-02-09T22:27:00.000Z","key":1486679220000,"doc_count":12},{"key_as_string":"2017-02-09T22:28:00.000Z","key":1486679280000,"doc_count":11},{"key_as_string":"2017-02-09T22:29:00.000Z","key":1486679340000,"doc_count":7},{"key_as_string":"2017-02-09T22:30:00.000Z","key":1486679400000,"doc_count":9},{"key_as_string":"2017-02-09T22:31:00.000Z","key":1486679460000,"doc_count":10},{"key_as_string":"2017-02-09T22:32:00.000Z","key":1486679520000,"doc_count":14},{"key_as_string":"2017-02-09T22:33:00.000Z","key":1486679580000,"doc_count":10},{"key_as_string":"2017-02-09T22:34:00.000Z","key":1486679640000,"doc_count":14},{"key_as_string":"2017-02-09T22:35:00.000Z","key":1486679700000,"doc_count":13},{"key_as_string":"2017-02-09T22:36:00.000Z","key":1486679760000,"doc_count":9},{"key_as_string":"2017-02-09T22:37:00.000Z","key":1486679820000,"doc_count":7},{"key_as_string":"2017-02-09T22:38:00.000Z","key":1486679880000,"doc_count":11},{"key_as_string":"2017-02-09T22:39:00.000Z","key":1486679940000,"doc_count":8},{"key_as_string":"2017-02-09T22:40:00.000Z","key":1486680000000,"doc_count":9},{"key_as_string":"2017-02-09T22:41:00.000Z","key":1486680060000,"doc_count":9},{"key_as_string":"2017-02-09T22:42:00.000Z","key":1486680120000,"doc_count":15},{"key_as_string":"2017-02-09T22:43:00.000Z","key":1486680180000,"doc_count":8},{"key_as_string":"2017-02-09T22:44:00.000Z","key":1486680240000,"doc_count":7},{"key_as_string":"2017-02-09T22:45:00.000Z","key":1486680300000,"doc_count":10},{"key_as_string":"2017-02-09T22:46:00.000Z","key":1486680360000,"doc_count":13},{"key_as_string":"2017-02-09T22:47:00.000Z","key":1486680420000,"doc_count":14},{"key_as_string":"2017-02-09T22:48:00.000Z","key":1486680480000,"doc_count":7},{"key_as_string":"2017-02-09T22:49:00.000Z","key":1486680540000,"doc_count":8},{"key_as_string":"2017-02-09T22:50:00.000Z","key":1486680600000,"doc_count":12},{"key_as_string":"2017-02-09T22:51:00.000Z","key":1486680660000,"doc_count":9},{"key_as_string":"2017-02-09T22:52:00.000Z","key":1486680720000,"doc_count":9},{"key_as_string":"2017-02-09T22:53:00.000Z","key":1486680780000,"doc_count":6},{"key_as_string":"2017-02-09T22:54:00.000Z","key":1486680840000,"doc_count":17},{"key_as_string":"2017-02-09T22:55:00.000Z","key":1486680900000,"doc_count":10},{"key_as_string":"2017-02-09T22:56:00.000Z","key":1486680960000,"doc_count":9},{"key_as_string":"2017-02-09T22:57:00.000Z","key":1486681020000,"doc_count":12},{"key_as_string":"2017-02-09T22:58:00.000Z","key":1486681080000,"doc_count":10},{"key_as_string":"2017-02-09T22:59:00.000Z","key":1486681140000,"doc_count":11},{"key_as_string":"2017-02-09T23:00:00.000Z","key":1486681200000,"doc_count":6},{"key_as_string":"2017-02-09T23:01:00.000Z","key":1486681260000,"doc_count":11},{"key_as_string":"2017-02-09T23:02:00.000Z","key":1486681320000,"doc_count":11},{"key_as_string":"2017-02-09T23:03:00.000Z","key":1486681380000,"doc_count":13},{"key_as_string":"2017-02-09T23:04:00.000Z","key":1486681440000,"doc_count":16},{"key_as_string":"2017-02-09T23:05:00.000Z","key":1486681500000,"doc_count":10},{"key_as_string":"2017-02-09T23:06:00.000Z","key":1486681560000,"doc_count":9},{"key_as_string":"2017-02-09T23:07:00.000Z","key":1486681620000,"doc_count":6},{"key_as_string":"2017-02-09T23:08:00.000Z","key":1486681680000,"doc_count":11},{"key_as_string":"2017-02-09T23:09:00.000Z","key":1486681740000,"doc_count":12},{"key_as_string":"2017-02-09T23:10:00.000Z","key":1486681800000,"doc_count":4},{"key_as_string":"2017-02-09T23:11:00.000Z","key":1486681860000,"doc_count":12},{"key_as_string":"2017-02-09T23:12:00.000Z","key":1486681920000,"doc_count":12},{"key_as_string":"2017-02-09T23:13:00.000Z","key":1486681980000,"doc_count":8},{"key_as_string":"2017-02-09T23:14:00.000Z","key":1486682040000,"doc_count":12},{"key_as_string":"2017-02-09T23:15:00.000Z","key":1486682100000,"doc_count":8},{"key_as_string":"2017-02-09T23:16:00.000Z","key":1486682160000,"doc_count":11},{"key_as_string":"2017-02-09T23:17:00.000Z","key":1486682220000,"doc_count":12},{"key_as_string":"2017-02-09T23:18:00.000Z","key":1486682280000,"doc_count":6},{"key_as_string":"2017-02-09T23:19:00.000Z","key":1486682340000,"doc_count":13},{"key_as_string":"2017-02-09T23:20:00.000Z","key":1486682400000,"doc_count":9},{"key_as_string":"2017-02-09T23:21:00.000Z","key":1486682460000,"doc_count":7},{"key_as_string":"2017-02-09T23:22:00.000Z","key":1486682520000,"doc_count":18},{"key_as_string":"2017-02-09T23:23:00.000Z","key":1486682580000,"doc_count":6},{"key_as_string":"2017-02-09T23:24:00.000Z","key":1486682640000,"doc_count":10},{"key_as_string":"2017-02-09T23:25:00.000Z","key":1486682700000,"doc_count":10},{"key_as_string":"2017-02-09T23:26:00.000Z","key":1486682760000,"doc_count":13},{"key_as_string":"2017-02-09T23:27:00.000Z","key":1486682820000,"doc_count":12},{"key_as_string":"2017-02-09T23:28:00.000Z","key":1486682880000,"doc_count":14},{"key_as_string":"2017-02-09T23:29:00.000Z","key":1486682940000,"doc_count":7},{"key_as_string":"2017-02-09T23:30:00.000Z","key":1486683000000,"doc_count":8},{"key_as_string":"2017-02-09T23:31:00.000Z","key":1486683060000,"doc_count":13},{"key_as_string":"2017-02-09T23:32:00.000Z","key":1486683120000,"doc_count":7},{"key_as_string":"2017-02-09T23:33:00.000Z","key":1486683180000,"doc_count":10},{"key_as_string":"2017-02-09T23:34:00.000Z","key":1486683240000,"doc_count":9},{"key_as_string":"2017-02-09T23:35:00.000Z","key":1486683300000,"doc_count":8},{"key_as_string":"2017-02-09T23:36:00.000Z","key":1486683360000,"doc_count":11},{"key_as_string":"2017-02-09T23:37:00.000Z","key":1486683420000,"doc_count":14},{"key_as_string":"2017-02-09T23:38:00.000Z","key":1486683480000,"doc_count":11},{"key_as_string":"2017-02-09T23:39:00.000Z","key":1486683540000,"doc_count":8},{"key_as_string":"2017-02-09T23:40:00.000Z","key":1486683600000,"doc_count":12},{"key_as_string":"2017-02-09T23:41:00.000Z","key":1486683660000,"doc_count":12},{"key_as_string":"2017-02-09T23:42:00.000Z","key":1486683720000,"doc_count":9},{"key_as_string":"2017-02-09T23:43:00.000Z","key":1486683780000,"doc_count":16},{"key_as_string":"2017-02-09T23:44:00.000Z","key":1486683840000,"doc_count":11},{"key_as_string":"2017-02-09T23:45:00.000Z","key":1486683900000,"doc_count":7},{"key_as_string":"2017-02-09T23:46:00.000Z","key":1486683960000,"doc_count":12},{"key_as_string":"2017-02-09T23:47:00.000Z","key":1486684020000,"doc_count":15},{"key_as_string":"2017-02-09T23:48:00.000Z","key":1486684080000,"doc_count":7},{"key_as_string":"2017-02-09T23:49:00.000Z","key":1486684140000,"doc_count":10},{"key_as_string":"2017-02-09T23:50:00.000Z","key":1486684200000,"doc_count":15},{"key_as_string":"2017-02-09T23:51:00.000Z","key":1486684260000,"doc_count":12},{"key_as_string":"2017-02-09T23:52:00.000Z","key":1486684320000,"doc_count":9},{"key_as_string":"2017-02-09T23:53:00.000Z","key":1486684380000,"doc_count":7},{"key_as_string":"2017-02-09T23:54:00.000Z","key":1486684440000,"doc_count":8},{"key_as_string":"2017-02-09T23:55:00.000Z","key":1486684500000,"doc_count":8},{"key_as_string":"2017-02-09T23:56:00.000Z","key":1486684560000,"doc_count":13},{"key_as_string":"2017-02-09T23:57:00.000Z","key":1486684620000,"doc_count":12},{"key_as_string":"2017-02-09T23:58:00.000Z","key":1486684680000,"doc_count":12},{"key_as_string":"2017-02-09T23:59:00.000Z","key":1486684740000,"doc_count":9},{"key_as_string":"2017-02-10T00:00:00.000Z","key":1486684800000,"doc_count":8},{"key_as_string":"2017-02-10T00:01:00.000Z","key":1486684860000,"doc_count":10},{"key_as_string":"2017-02-10T00:02:00.000Z","key":1486684920000,"doc_count":12},{"key_as_string":"2017-02-10T00:03:00.000Z","key":1486684980000,"doc_count":11},{"key_as_string":"2017-02-10T00:04:00.000Z","key":1486685040000,"doc_count":11},{"key_as_string":"2017-02-10T00:05:00.000Z","key":1486685100000,"doc_count":12},{"key_as_string":"2017-02-10T00:06:00.000Z","key":1486685160000,"doc_count":9},{"key_as_string":"2017-02-10T00:07:00.000Z","key":1486685220000,"doc_count":11},{"key_as_string":"2017-02-10T00:08:00.000Z","key":1486685280000,"doc_count":8},{"key_as_string":"2017-02-10T00:09:00.000Z","key":1486685340000,"doc_count":11},{"key_as_string":"2017-02-10T00:10:00.000Z","key":1486685400000,"doc_count":10},{"key_as_string":"2017-02-10T00:11:00.000Z","key":1486685460000,"doc_count":14},{"key_as_string":"2017-02-10T00:12:00.000Z","key":1486685520000,"doc_count":5},{"key_as_string":"2017-02-10T00:13:00.000Z","key":1486685580000,"doc_count":6},{"key_as_string":"2017-02-10T00:14:00.000Z","key":1486685640000,"doc_count":8},{"key_as_string":"2017-02-10T00:15:00.000Z","key":1486685700000,"doc_count":11},{"key_as_string":"2017-02-10T00:16:00.000Z","key":1486685760000,"doc_count":15},{"key_as_string":"2017-02-10T00:17:00.000Z","key":1486685820000,"doc_count":8},{"key_as_string":"2017-02-10T00:18:00.000Z","key":1486685880000,"doc_count":12},{"key_as_string":"2017-02-10T00:19:00.000Z","key":1486685940000,"doc_count":7},{"key_as_string":"2017-02-10T00:20:00.000Z","key":1486686000000,"doc_count":11},{"key_as_string":"2017-02-10T00:21:00.000Z","key":1486686060000,"doc_count":20},{"key_as_string":"2017-02-10T00:22:00.000Z","key":1486686120000,"doc_count":7},{"key_as_string":"2017-02-10T00:23:00.000Z","key":1486686180000,"doc_count":11},{"key_as_string":"2017-02-10T00:24:00.000Z","key":1486686240000,"doc_count":8},{"key_as_string":"2017-02-10T00:25:00.000Z","key":1486686300000,"doc_count":9},{"key_as_string":"2017-02-10T00:26:00.000Z","key":1486686360000,"doc_count":15},{"key_as_string":"2017-02-10T00:27:00.000Z","key":1486686420000,"doc_count":12},{"key_as_string":"2017-02-10T00:28:00.000Z","key":1486686480000,"doc_count":13},{"key_as_string":"2017-02-10T00:29:00.000Z","key":1486686540000,"doc_count":10},{"key_as_string":"2017-02-10T00:30:00.000Z","key":1486686600000,"doc_count":14},{"key_as_string":"2017-02-10T00:31:00.000Z","key":1486686660000,"doc_count":9},{"key_as_string":"2017-02-10T00:32:00.000Z","key":1486686720000,"doc_count":6},{"key_as_string":"2017-02-10T00:33:00.000Z","key":1486686780000,"doc_count":13},{"key_as_string":"2017-02-10T00:34:00.000Z","key":1486686840000,"doc_count":8},{"key_as_string":"2017-02-10T00:35:00.000Z","key":1486686900000,"doc_count":12},{"key_as_string":"2017-02-10T00:36:00.000Z","key":1486686960000,"doc_count":10},{"key_as_string":"2017-02-10T00:37:00.000Z","key":1486687020000,"doc_count":11},{"key_as_string":"2017-02-10T00:38:00.000Z","key":1486687080000,"doc_count":12},{"key_as_string":"2017-02-10T00:39:00.000Z","key":1486687140000,"doc_count":11},{"key_as_string":"2017-02-10T00:40:00.000Z","key":1486687200000,"doc_count":9},{"key_as_string":"2017-02-10T00:41:00.000Z","key":1486687260000,"doc_count":15},{"key_as_string":"2017-02-10T00:42:00.000Z","key":1486687320000,"doc_count":11},{"key_as_string":"2017-02-10T00:43:00.000Z","key":1486687380000,"doc_count":10},{"key_as_string":"2017-02-10T00:44:00.000Z","key":1486687440000,"doc_count":6},{"key_as_string":"2017-02-10T00:45:00.000Z","key":1486687500000,"doc_count":9},{"key_as_string":"2017-02-10T00:46:00.000Z","key":1486687560000,"doc_count":6},{"key_as_string":"2017-02-10T00:47:00.000Z","key":1486687620000,"doc_count":15},{"key_as_string":"2017-02-10T00:48:00.000Z","key":1486687680000,"doc_count":5},{"key_as_string":"2017-02-10T00:49:00.000Z","key":1486687740000,"doc_count":8},{"key_as_string":"2017-02-10T00:50:00.000Z","key":1486687800000,"doc_count":14},{"key_as_string":"2017-02-10T00:51:00.000Z","key":1486687860000,"doc_count":8},{"key_as_string":"2017-02-10T00:52:00.000Z","key":1486687920000,"doc_count":10},{"key_as_string":"2017-02-10T00:53:00.000Z","key":1486687980000,"doc_count":11},{"key_as_string":"2017-02-10T00:54:00.000Z","key":1486688040000,"doc_count":11},{"key_as_string":"2017-02-10T00:55:00.000Z","key":1486688100000,"doc_count":14},{"key_as_string":"2017-02-10T00:56:00.000Z","key":1486688160000,"doc_count":11},{"key_as_string":"2017-02-10T00:57:00.000Z","key":1486688220000,"doc_count":9},{"key_as_string":"2017-02-10T00:58:00.000Z","key":1486688280000,"doc_count":10},{"key_as_string":"2017-02-10T00:59:00.000Z","key":1486688340000,"doc_count":12},{"key_as_string":"2017-02-10T01:00:00.000Z","key":1486688400000,"doc_count":8},{"key_as_string":"2017-02-10T01:01:00.000Z","key":1486688460000,"doc_count":14},{"key_as_string":"2017-02-10T01:02:00.000Z","key":1486688520000,"doc_count":10},{"key_as_string":"2017-02-10T01:03:00.000Z","key":1486688580000,"doc_count":7},{"key_as_string":"2017-02-10T01:04:00.000Z","key":1486688640000,"doc_count":14},{"key_as_string":"2017-02-10T01:05:00.000Z","key":1486688700000,"doc_count":5},{"key_as_string":"2017-02-10T01:06:00.000Z","key":1486688760000,"doc_count":19},{"key_as_string":"2017-02-10T01:07:00.000Z","key":1486688820000,"doc_count":7},{"key_as_string":"2017-02-10T01:08:00.000Z","key":1486688880000,"doc_count":14},{"key_as_string":"2017-02-10T01:09:00.000Z","key":1486688940000,"doc_count":6},{"key_as_string":"2017-02-10T01:10:00.000Z","key":1486689000000,"doc_count":11},{"key_as_string":"2017-02-10T01:11:00.000Z","key":1486689060000,"doc_count":16},{"key_as_string":"2017-02-10T01:12:00.000Z","key":1486689120000,"doc_count":11},{"key_as_string":"2017-02-10T01:13:00.000Z","key":1486689180000,"doc_count":6},{"key_as_string":"2017-02-10T01:14:00.000Z","key":1486689240000,"doc_count":10},{"key_as_string":"2017-02-10T01:15:00.000Z","key":1486689300000,"doc_count":10},{"key_as_string":"2017-02-10T01:16:00.000Z","key":1486689360000,"doc_count":10},{"key_as_string":"2017-02-10T01:17:00.000Z","key":1486689420000,"doc_count":11},{"key_as_string":"2017-02-10T01:18:00.000Z","key":1486689480000,"doc_count":7},{"key_as_string":"2017-02-10T01:19:00.000Z","key":1486689540000,"doc_count":8},{"key_as_string":"2017-02-10T01:20:00.000Z","key":1486689600000,"doc_count":17},{"key_as_string":"2017-02-10T01:21:00.000Z","key":1486689660000,"doc_count":12},{"key_as_string":"2017-02-10T01:22:00.000Z","key":1486689720000,"doc_count":12},{"key_as_string":"2017-02-10T01:23:00.000Z","key":1486689780000,"doc_count":12},{"key_as_string":"2017-02-10T01:24:00.000Z","key":1486689840000,"doc_count":13},{"key_as_string":"2017-02-10T01:25:00.000Z","key":1486689900000,"doc_count":9},{"key_as_string":"2017-02-10T01:26:00.000Z","key":1486689960000,"doc_count":8},{"key_as_string":"2017-02-10T01:27:00.000Z","key":1486690020000,"doc_count":9},{"key_as_string":"2017-02-10T01:28:00.000Z","key":1486690080000,"doc_count":10},{"key_as_string":"2017-02-10T01:29:00.000Z","key":1486690140000,"doc_count":11},{"key_as_string":"2017-02-10T01:30:00.000Z","key":1486690200000,"doc_count":5},{"key_as_string":"2017-02-10T01:31:00.000Z","key":1486690260000,"doc_count":12},{"key_as_string":"2017-02-10T01:32:00.000Z","key":1486690320000,"doc_count":8},{"key_as_string":"2017-02-10T01:33:00.000Z","key":1486690380000,"doc_count":8},{"key_as_string":"2017-02-10T01:34:00.000Z","key":1486690440000,"doc_count":11},{"key_as_string":"2017-02-10T01:35:00.000Z","key":1486690500000,"doc_count":7},{"key_as_string":"2017-02-10T01:36:00.000Z","key":1486690560000,"doc_count":16},{"key_as_string":"2017-02-10T01:37:00.000Z","key":1486690620000,"doc_count":9},{"key_as_string":"2017-02-10T01:38:00.000Z","key":1486690680000,"doc_count":3},{"key_as_string":"2017-02-10T01:39:00.000Z","key":1486690740000,"doc_count":14},{"key_as_string":"2017-02-10T01:40:00.000Z","key":1486690800000,"doc_count":3},{"key_as_string":"2017-02-10T01:41:00.000Z","key":1486690860000,"doc_count":14},{"key_as_string":"2017-02-10T01:42:00.000Z","key":1486690920000,"doc_count":11},{"key_as_string":"2017-02-10T01:43:00.000Z","key":1486690980000,"doc_count":8},{"key_as_string":"2017-02-10T01:44:00.000Z","key":1486691040000,"doc_count":13},{"key_as_string":"2017-02-10T01:45:00.000Z","key":1486691100000,"doc_count":6},{"key_as_string":"2017-02-10T01:46:00.000Z","key":1486691160000,"doc_count":16},{"key_as_string":"2017-02-10T01:47:00.000Z","key":1486691220000,"doc_count":12},{"key_as_string":"2017-02-10T01:48:00.000Z","key":1486691280000,"doc_count":8},{"key_as_string":"2017-02-10T01:49:00.000Z","key":1486691340000,"doc_count":17},{"key_as_string":"2017-02-10T01:50:00.000Z","key":1486691400000,"doc_count":9},{"key_as_string":"2017-02-10T01:51:00.000Z","key":1486691460000,"doc_count":11},{"key_as_string":"2017-02-10T01:52:00.000Z","key":1486691520000,"doc_count":10},{"key_as_string":"2017-02-10T01:53:00.000Z","key":1486691580000,"doc_count":13},{"key_as_string":"2017-02-10T01:54:00.000Z","key":1486691640000,"doc_count":11},{"key_as_string":"2017-02-10T01:55:00.000Z","key":1486691700000,"doc_count":9},{"key_as_string":"2017-02-10T01:56:00.000Z","key":1486691760000,"doc_count":11},{"key_as_string":"2017-02-10T01:57:00.000Z","key":1486691820000,"doc_count":8},{"key_as_string":"2017-02-10T01:58:00.000Z","key":1486691880000,"doc_count":14},{"key_as_string":"2017-02-10T01:59:00.000Z","key":1486691940000,"doc_count":8},{"key_as_string":"2017-02-10T02:00:00.000Z","key":1486692000000,"doc_count":4},{"key_as_string":"2017-02-10T02:01:00.000Z","key":1486692060000,"doc_count":13},{"key_as_string":"2017-02-10T02:02:00.000Z","key":1486692120000,"doc_count":8},{"key_as_string":"2017-02-10T02:03:00.000Z","key":1486692180000,"doc_count":9},{"key_as_string":"2017-02-10T02:04:00.000Z","key":1486692240000,"doc_count":9},{"key_as_string":"2017-02-10T02:05:00.000Z","key":1486692300000,"doc_count":14},{"key_as_string":"2017-02-10T02:06:00.000Z","key":1486692360000,"doc_count":7},{"key_as_string":"2017-02-10T02:07:00.000Z","key":1486692420000,"doc_count":9},{"key_as_string":"2017-02-10T02:08:00.000Z","key":1486692480000,"doc_count":16},{"key_as_string":"2017-02-10T02:09:00.000Z","key":1486692540000,"doc_count":10},{"key_as_string":"2017-02-10T02:10:00.000Z","key":1486692600000,"doc_count":11},{"key_as_string":"2017-02-10T02:11:00.000Z","key":1486692660000,"doc_count":7},{"key_as_string":"2017-02-10T02:12:00.000Z","key":1486692720000,"doc_count":12},{"key_as_string":"2017-02-10T02:13:00.000Z","key":1486692780000,"doc_count":11},{"key_as_string":"2017-02-10T02:14:00.000Z","key":1486692840000,"doc_count":5},{"key_as_string":"2017-02-10T02:15:00.000Z","key":1486692900000,"doc_count":14},{"key_as_string":"2017-02-10T02:16:00.000Z","key":1486692960000,"doc_count":13},{"key_as_string":"2017-02-10T02:17:00.000Z","key":1486693020000,"doc_count":7},{"key_as_string":"2017-02-10T02:18:00.000Z","key":1486693080000,"doc_count":11},{"key_as_string":"2017-02-10T02:19:00.000Z","key":1486693140000,"doc_count":10},{"key_as_string":"2017-02-10T02:20:00.000Z","key":1486693200000,"doc_count":8},{"key_as_string":"2017-02-10T02:21:00.000Z","key":1486693260000,"doc_count":9},{"key_as_string":"2017-02-10T02:22:00.000Z","key":1486693320000,"doc_count":12},{"key_as_string":"2017-02-10T02:23:00.000Z","key":1486693380000,"doc_count":14},{"key_as_string":"2017-02-10T02:24:00.000Z","key":1486693440000,"doc_count":8},{"key_as_string":"2017-02-10T02:25:00.000Z","key":1486693500000,"doc_count":10},{"key_as_string":"2017-02-10T02:26:00.000Z","key":1486693560000,"doc_count":10},{"key_as_string":"2017-02-10T02:27:00.000Z","key":1486693620000,"doc_count":8},{"key_as_string":"2017-02-10T02:28:00.000Z","key":1486693680000,"doc_count":7},{"key_as_string":"2017-02-10T02:29:00.000Z","key":1486693740000,"doc_count":7},{"key_as_string":"2017-02-10T02:30:00.000Z","key":1486693800000,"doc_count":13},{"key_as_string":"2017-02-10T02:31:00.000Z","key":1486693860000,"doc_count":7},{"key_as_string":"2017-02-10T02:32:00.000Z","key":1486693920000,"doc_count":14},{"key_as_string":"2017-02-10T02:33:00.000Z","key":1486693980000,"doc_count":8},{"key_as_string":"2017-02-10T02:34:00.000Z","key":1486694040000,"doc_count":10},{"key_as_string":"2017-02-10T02:35:00.000Z","key":1486694100000,"doc_count":10},{"key_as_string":"2017-02-10T02:36:00.000Z","key":1486694160000,"doc_count":10},{"key_as_string":"2017-02-10T02:37:00.000Z","key":1486694220000,"doc_count":13},{"key_as_string":"2017-02-10T02:38:00.000Z","key":1486694280000,"doc_count":7},{"key_as_string":"2017-02-10T02:39:00.000Z","key":1486694340000,"doc_count":13},{"key_as_string":"2017-02-10T02:40:00.000Z","key":1486694400000,"doc_count":14},{"key_as_string":"2017-02-10T02:41:00.000Z","key":1486694460000,"doc_count":12},{"key_as_string":"2017-02-10T02:42:00.000Z","key":1486694520000,"doc_count":9},{"key_as_string":"2017-02-10T02:43:00.000Z","key":1486694580000,"doc_count":9},{"key_as_string":"2017-02-10T02:44:00.000Z","key":1486694640000,"doc_count":10},{"key_as_string":"2017-02-10T02:45:00.000Z","key":1486694700000,"doc_count":15},{"key_as_string":"2017-02-10T02:46:00.000Z","key":1486694760000,"doc_count":8},{"key_as_string":"2017-02-10T02:47:00.000Z","key":1486694820000,"doc_count":11},{"key_as_string":"2017-02-10T02:48:00.000Z","key":1486694880000,"doc_count":12},{"key_as_string":"2017-02-10T02:49:00.000Z","key":1486694940000,"doc_count":10},{"key_as_string":"2017-02-10T02:50:00.000Z","key":1486695000000,"doc_count":9},{"key_as_string":"2017-02-10T02:51:00.000Z","key":1486695060000,"doc_count":16},{"key_as_string":"2017-02-10T02:52:00.000Z","key":1486695120000,"doc_count":8},{"key_as_string":"2017-02-10T02:53:00.000Z","key":1486695180000,"doc_count":9},{"key_as_string":"2017-02-10T02:54:00.000Z","key":1486695240000,"doc_count":15},{"key_as_string":"2017-02-10T02:55:00.000Z","key":1486695300000,"doc_count":9},{"key_as_string":"2017-02-10T02:56:00.000Z","key":1486695360000,"doc_count":9},{"key_as_string":"2017-02-10T02:57:00.000Z","key":1486695420000,"doc_count":9},{"key_as_string":"2017-02-10T02:58:00.000Z","key":1486695480000,"doc_count":10},{"key_as_string":"2017-02-10T02:59:00.000Z","key":1486695540000,"doc_count":10},{"key_as_string":"2017-02-10T03:00:00.000Z","key":1486695600000,"doc_count":16},{"key_as_string":"2017-02-10T03:01:00.000Z","key":1486695660000,"doc_count":7},{"key_as_string":"2017-02-10T03:02:00.000Z","key":1486695720000,"doc_count":11},{"key_as_string":"2017-02-10T03:03:00.000Z","key":1486695780000,"doc_count":15},{"key_as_string":"2017-02-10T03:04:00.000Z","key":1486695840000,"doc_count":7},{"key_as_string":"2017-02-10T03:05:00.000Z","key":1486695900000,"doc_count":9},{"key_as_string":"2017-02-10T03:06:00.000Z","key":1486695960000,"doc_count":9},{"key_as_string":"2017-02-10T03:07:00.000Z","key":1486696020000,"doc_count":10},{"key_as_string":"2017-02-10T03:08:00.000Z","key":1486696080000,"doc_count":10},{"key_as_string":"2017-02-10T03:09:00.000Z","key":1486696140000,"doc_count":18},{"key_as_string":"2017-02-10T03:10:00.000Z","key":1486696200000,"doc_count":13},{"key_as_string":"2017-02-10T03:11:00.000Z","key":1486696260000,"doc_count":8},{"key_as_string":"2017-02-10T03:12:00.000Z","key":1486696320000,"doc_count":11},{"key_as_string":"2017-02-10T03:13:00.000Z","key":1486696380000,"doc_count":9},{"key_as_string":"2017-02-10T03:14:00.000Z","key":1486696440000,"doc_count":10},{"key_as_string":"2017-02-10T03:15:00.000Z","key":1486696500000,"doc_count":16},{"key_as_string":"2017-02-10T03:16:00.000Z","key":1486696560000,"doc_count":10},{"key_as_string":"2017-02-10T03:17:00.000Z","key":1486696620000,"doc_count":13},{"key_as_string":"2017-02-10T03:18:00.000Z","key":1486696680000,"doc_count":7},{"key_as_string":"2017-02-10T03:19:00.000Z","key":1486696740000,"doc_count":13},{"key_as_string":"2017-02-10T03:20:00.000Z","key":1486696800000,"doc_count":9},{"key_as_string":"2017-02-10T03:21:00.000Z","key":1486696860000,"doc_count":8},{"key_as_string":"2017-02-10T03:22:00.000Z","key":1486696920000,"doc_count":16},{"key_as_string":"2017-02-10T03:23:00.000Z","key":1486696980000,"doc_count":9},{"key_as_string":"2017-02-10T03:24:00.000Z","key":1486697040000,"doc_count":14},{"key_as_string":"2017-02-10T03:25:00.000Z","key":1486697100000,"doc_count":11},{"key_as_string":"2017-02-10T03:26:00.000Z","key":1486697160000,"doc_count":11},{"key_as_string":"2017-02-10T03:27:00.000Z","key":1486697220000,"doc_count":9},{"key_as_string":"2017-02-10T03:28:00.000Z","key":1486697280000,"doc_count":9},{"key_as_string":"2017-02-10T03:29:00.000Z","key":1486697340000,"doc_count":11},{"key_as_string":"2017-02-10T03:30:00.000Z","key":1486697400000,"doc_count":7},{"key_as_string":"2017-02-10T03:31:00.000Z","key":1486697460000,"doc_count":14},{"key_as_string":"2017-02-10T03:32:00.000Z","key":1486697520000,"doc_count":7},{"key_as_string":"2017-02-10T03:33:00.000Z","key":1486697580000,"doc_count":14},{"key_as_string":"2017-02-10T03:34:00.000Z","key":1486697640000,"doc_count":8},{"key_as_string":"2017-02-10T03:35:00.000Z","key":1486697700000,"doc_count":8},{"key_as_string":"2017-02-10T03:36:00.000Z","key":1486697760000,"doc_count":15},{"key_as_string":"2017-02-10T03:37:00.000Z","key":1486697820000,"doc_count":9},{"key_as_string":"2017-02-10T03:38:00.000Z","key":1486697880000,"doc_count":12},{"key_as_string":"2017-02-10T03:39:00.000Z","key":1486697940000,"doc_count":15},{"key_as_string":"2017-02-10T03:40:00.000Z","key":1486698000000,"doc_count":12},{"key_as_string":"2017-02-10T03:41:00.000Z","key":1486698060000,"doc_count":12},{"key_as_string":"2017-02-10T03:42:00.000Z","key":1486698120000,"doc_count":10},{"key_as_string":"2017-02-10T03:43:00.000Z","key":1486698180000,"doc_count":11},{"key_as_string":"2017-02-10T03:44:00.000Z","key":1486698240000,"doc_count":12},{"key_as_string":"2017-02-10T03:45:00.000Z","key":1486698300000,"doc_count":9},{"key_as_string":"2017-02-10T03:46:00.000Z","key":1486698360000,"doc_count":13},{"key_as_string":"2017-02-10T03:47:00.000Z","key":1486698420000,"doc_count":8},{"key_as_string":"2017-02-10T03:48:00.000Z","key":1486698480000,"doc_count":15},{"key_as_string":"2017-02-10T03:49:00.000Z","key":1486698540000,"doc_count":8},{"key_as_string":"2017-02-10T03:50:00.000Z","key":1486698600000,"doc_count":12},{"key_as_string":"2017-02-10T03:51:00.000Z","key":1486698660000,"doc_count":16},{"key_as_string":"2017-02-10T03:52:00.000Z","key":1486698720000,"doc_count":7},{"key_as_string":"2017-02-10T03:53:00.000Z","key":1486698780000,"doc_count":12},{"key_as_string":"2017-02-10T03:54:00.000Z","key":1486698840000,"doc_count":8},{"key_as_string":"2017-02-10T03:55:00.000Z","key":1486698900000,"doc_count":7},{"key_as_string":"2017-02-10T03:56:00.000Z","key":1486698960000,"doc_count":13},{"key_as_string":"2017-02-10T03:57:00.000Z","key":1486699020000,"doc_count":8},{"key_as_string":"2017-02-10T03:58:00.000Z","key":1486699080000,"doc_count":10},{"key_as_string":"2017-02-10T03:59:00.000Z","key":1486699140000,"doc_count":13},{"key_as_string":"2017-02-10T04:00:00.000Z","key":1486699200000,"doc_count":11},{"key_as_string":"2017-02-10T04:01:00.000Z","key":1486699260000,"doc_count":10},{"key_as_string":"2017-02-10T04:02:00.000Z","key":1486699320000,"doc_count":12},{"key_as_string":"2017-02-10T04:03:00.000Z","key":1486699380000,"doc_count":9},{"key_as_string":"2017-02-10T04:04:00.000Z","key":1486699440000,"doc_count":13},{"key_as_string":"2017-02-10T04:05:00.000Z","key":1486699500000,"doc_count":8},{"key_as_string":"2017-02-10T04:06:00.000Z","key":1486699560000,"doc_count":15},{"key_as_string":"2017-02-10T04:07:00.000Z","key":1486699620000,"doc_count":11},{"key_as_string":"2017-02-10T04:08:00.000Z","key":1486699680000,"doc_count":11},{"key_as_string":"2017-02-10T04:09:00.000Z","key":1486699740000,"doc_count":16},{"key_as_string":"2017-02-10T04:10:00.000Z","key":1486699800000,"doc_count":8},{"key_as_string":"2017-02-10T04:11:00.000Z","key":1486699860000,"doc_count":15},{"key_as_string":"2017-02-10T04:12:00.000Z","key":1486699920000,"doc_count":8},{"key_as_string":"2017-02-10T04:13:00.000Z","key":1486699980000,"doc_count":11},{"key_as_string":"2017-02-10T04:14:00.000Z","key":1486700040000,"doc_count":11},{"key_as_string":"2017-02-10T04:15:00.000Z","key":1486700100000,"doc_count":13},{"key_as_string":"2017-02-10T04:16:00.000Z","key":1486700160000,"doc_count":6},{"key_as_string":"2017-02-10T04:17:00.000Z","key":1486700220000,"doc_count":11},{"key_as_string":"2017-02-10T04:18:00.000Z","key":1486700280000,"doc_count":11},{"key_as_string":"2017-02-10T04:19:00.000Z","key":1486700340000,"doc_count":9},{"key_as_string":"2017-02-10T04:20:00.000Z","key":1486700400000,"doc_count":17},{"key_as_string":"2017-02-10T04:21:00.000Z","key":1486700460000,"doc_count":7},{"key_as_string":"2017-02-10T04:22:00.000Z","key":1486700520000,"doc_count":14},{"key_as_string":"2017-02-10T04:23:00.000Z","key":1486700580000,"doc_count":13},{"key_as_string":"2017-02-10T04:24:00.000Z","key":1486700640000,"doc_count":7},{"key_as_string":"2017-02-10T04:25:00.000Z","key":1486700700000,"doc_count":11},{"key_as_string":"2017-02-10T04:26:00.000Z","key":1486700760000,"doc_count":12},{"key_as_string":"2017-02-10T04:27:00.000Z","key":1486700820000,"doc_count":11},{"key_as_string":"2017-02-10T04:28:00.000Z","key":1486700880000,"doc_count":9},{"key_as_string":"2017-02-10T04:29:00.000Z","key":1486700940000,"doc_count":9},{"key_as_string":"2017-02-10T04:30:00.000Z","key":1486701000000,"doc_count":10},{"key_as_string":"2017-02-10T04:31:00.000Z","key":1486701060000,"doc_count":10},{"key_as_string":"2017-02-10T04:32:00.000Z","key":1486701120000,"doc_count":10},{"key_as_string":"2017-02-10T04:33:00.000Z","key":1486701180000,"doc_count":11},{"key_as_string":"2017-02-10T04:34:00.000Z","key":1486701240000,"doc_count":13},{"key_as_string":"2017-02-10T04:35:00.000Z","key":1486701300000,"doc_count":6},{"key_as_string":"2017-02-10T04:36:00.000Z","key":1486701360000,"doc_count":8},{"key_as_string":"2017-02-10T04:37:00.000Z","key":1486701420000,"doc_count":14},{"key_as_string":"2017-02-10T04:38:00.000Z","key":1486701480000,"doc_count":9},{"key_as_string":"2017-02-10T04:39:00.000Z","key":1486701540000,"doc_count":12},{"key_as_string":"2017-02-10T04:40:00.000Z","key":1486701600000,"doc_count":10},{"key_as_string":"2017-02-10T04:41:00.000Z","key":1486701660000,"doc_count":9},{"key_as_string":"2017-02-10T04:42:00.000Z","key":1486701720000,"doc_count":10},{"key_as_string":"2017-02-10T04:43:00.000Z","key":1486701780000,"doc_count":9},{"key_as_string":"2017-02-10T04:44:00.000Z","key":1486701840000,"doc_count":11},{"key_as_string":"2017-02-10T04:45:00.000Z","key":1486701900000,"doc_count":10},{"key_as_string":"2017-02-10T04:46:00.000Z","key":1486701960000,"doc_count":19},{"key_as_string":"2017-02-10T04:47:00.000Z","key":1486702020000,"doc_count":11},{"key_as_string":"2017-02-10T04:48:00.000Z","key":1486702080000,"doc_count":10},{"key_as_string":"2017-02-10T04:49:00.000Z","key":1486702140000,"doc_count":10},{"key_as_string":"2017-02-10T04:50:00.000Z","key":1486702200000,"doc_count":10},{"key_as_string":"2017-02-10T04:51:00.000Z","key":1486702260000,"doc_count":11},{"key_as_string":"2017-02-10T04:52:00.000Z","key":1486702320000,"doc_count":17},{"key_as_string":"2017-02-10T04:53:00.000Z","key":1486702380000,"doc_count":6},{"key_as_string":"2017-02-10T04:54:00.000Z","key":1486702440000,"doc_count":7},{"key_as_string":"2017-02-10T04:55:00.000Z","key":1486702500000,"doc_count":10},{"key_as_string":"2017-02-10T04:56:00.000Z","key":1486702560000,"doc_count":10},{"key_as_string":"2017-02-10T04:57:00.000Z","key":1486702620000,"doc_count":10},{"key_as_string":"2017-02-10T04:58:00.000Z","key":1486702680000,"doc_count":11},{"key_as_string":"2017-02-10T04:59:00.000Z","key":1486702740000,"doc_count":10},{"key_as_string":"2017-02-10T05:00:00.000Z","key":1486702800000,"doc_count":8},{"key_as_string":"2017-02-10T05:01:00.000Z","key":1486702860000,"doc_count":13},{"key_as_string":"2017-02-10T05:02:00.000Z","key":1486702920000,"doc_count":11},{"key_as_string":"2017-02-10T05:03:00.000Z","key":1486702980000,"doc_count":7},{"key_as_string":"2017-02-10T05:04:00.000Z","key":1486703040000,"doc_count":10},{"key_as_string":"2017-02-10T05:05:00.000Z","key":1486703100000,"doc_count":10},{"key_as_string":"2017-02-10T05:06:00.000Z","key":1486703160000,"doc_count":10},{"key_as_string":"2017-02-10T05:07:00.000Z","key":1486703220000,"doc_count":9},{"key_as_string":"2017-02-10T05:08:00.000Z","key":1486703280000,"doc_count":9},{"key_as_string":"2017-02-10T05:09:00.000Z","key":1486703340000,"doc_count":15},{"key_as_string":"2017-02-10T05:10:00.000Z","key":1486703400000,"doc_count":12},{"key_as_string":"2017-02-10T05:11:00.000Z","key":1486703460000,"doc_count":11},{"key_as_string":"2017-02-10T05:12:00.000Z","key":1486703520000,"doc_count":11},{"key_as_string":"2017-02-10T05:13:00.000Z","key":1486703580000,"doc_count":10},{"key_as_string":"2017-02-10T05:14:00.000Z","key":1486703640000,"doc_count":14},{"key_as_string":"2017-02-10T05:15:00.000Z","key":1486703700000,"doc_count":9},{"key_as_string":"2017-02-10T05:16:00.000Z","key":1486703760000,"doc_count":11},{"key_as_string":"2017-02-10T05:17:00.000Z","key":1486703820000,"doc_count":8},{"key_as_string":"2017-02-10T05:18:00.000Z","key":1486703880000,"doc_count":11},{"key_as_string":"2017-02-10T05:19:00.000Z","key":1486703940000,"doc_count":7},{"key_as_string":"2017-02-10T05:20:00.000Z","key":1486704000000,"doc_count":13},{"key_as_string":"2017-02-10T05:21:00.000Z","key":1486704060000,"doc_count":10},{"key_as_string":"2017-02-10T05:22:00.000Z","key":1486704120000,"doc_count":13},{"key_as_string":"2017-02-10T05:23:00.000Z","key":1486704180000,"doc_count":11},{"key_as_string":"2017-02-10T05:24:00.000Z","key":1486704240000,"doc_count":10},{"key_as_string":"2017-02-10T05:25:00.000Z","key":1486704300000,"doc_count":16},{"key_as_string":"2017-02-10T05:26:00.000Z","key":1486704360000,"doc_count":10},{"key_as_string":"2017-02-10T05:27:00.000Z","key":1486704420000,"doc_count":12},{"key_as_string":"2017-02-10T05:28:00.000Z","key":1486704480000,"doc_count":15},{"key_as_string":"2017-02-10T05:29:00.000Z","key":1486704540000,"doc_count":9},{"key_as_string":"2017-02-10T05:30:00.000Z","key":1486704600000,"doc_count":11},{"key_as_string":"2017-02-10T05:31:00.000Z","key":1486704660000,"doc_count":8},{"key_as_string":"2017-02-10T05:32:00.000Z","key":1486704720000,"doc_count":10},{"key_as_string":"2017-02-10T05:33:00.000Z","key":1486704780000,"doc_count":12},{"key_as_string":"2017-02-10T05:34:00.000Z","key":1486704840000,"doc_count":11},{"key_as_string":"2017-02-10T05:35:00.000Z","key":1486704900000,"doc_count":8},{"key_as_string":"2017-02-10T05:36:00.000Z","key":1486704960000,"doc_count":12},{"key_as_string":"2017-02-10T05:37:00.000Z","key":1486705020000,"doc_count":8},{"key_as_string":"2017-02-10T05:38:00.000Z","key":1486705080000,"doc_count":8},{"key_as_string":"2017-02-10T05:39:00.000Z","key":1486705140000,"doc_count":12},{"key_as_string":"2017-02-10T05:40:00.000Z","key":1486705200000,"doc_count":14},{"key_as_string":"2017-02-10T05:41:00.000Z","key":1486705260000,"doc_count":15},{"key_as_string":"2017-02-10T05:42:00.000Z","key":1486705320000,"doc_count":5},{"key_as_string":"2017-02-10T05:43:00.000Z","key":1486705380000,"doc_count":11},{"key_as_string":"2017-02-10T05:44:00.000Z","key":1486705440000,"doc_count":12},{"key_as_string":"2017-02-10T05:45:00.000Z","key":1486705500000,"doc_count":6},{"key_as_string":"2017-02-10T05:46:00.000Z","key":1486705560000,"doc_count":12},{"key_as_string":"2017-02-10T05:47:00.000Z","key":1486705620000,"doc_count":10},{"key_as_string":"2017-02-10T05:48:00.000Z","key":1486705680000,"doc_count":12},{"key_as_string":"2017-02-10T05:49:00.000Z","key":1486705740000,"doc_count":17},{"key_as_string":"2017-02-10T05:50:00.000Z","key":1486705800000,"doc_count":10},{"key_as_string":"2017-02-10T05:51:00.000Z","key":1486705860000,"doc_count":13},{"key_as_string":"2017-02-10T05:52:00.000Z","key":1486705920000,"doc_count":13},{"key_as_string":"2017-02-10T05:53:00.000Z","key":1486705980000,"doc_count":10},{"key_as_string":"2017-02-10T05:54:00.000Z","key":1486706040000,"doc_count":10},{"key_as_string":"2017-02-10T05:55:00.000Z","key":1486706100000,"doc_count":15},{"key_as_string":"2017-02-10T05:56:00.000Z","key":1486706160000,"doc_count":8},{"key_as_string":"2017-02-10T05:57:00.000Z","key":1486706220000,"doc_count":10},{"key_as_string":"2017-02-10T05:58:00.000Z","key":1486706280000,"doc_count":11},{"key_as_string":"2017-02-10T05:59:00.000Z","key":1486706340000,"doc_count":10},{"key_as_string":"2017-02-10T06:00:00.000Z","key":1486706400000,"doc_count":19},{"key_as_string":"2017-02-10T06:01:00.000Z","key":1486706460000,"doc_count":13},{"key_as_string":"2017-02-10T06:02:00.000Z","key":1486706520000,"doc_count":14},{"key_as_string":"2017-02-10T06:03:00.000Z","key":1486706580000,"doc_count":11},{"key_as_string":"2017-02-10T06:04:00.000Z","key":1486706640000,"doc_count":13},{"key_as_string":"2017-02-10T06:05:00.000Z","key":1486706700000,"doc_count":6},{"key_as_string":"2017-02-10T06:06:00.000Z","key":1486706760000,"doc_count":12},{"key_as_string":"2017-02-10T06:07:00.000Z","key":1486706820000,"doc_count":14},{"key_as_string":"2017-02-10T06:08:00.000Z","key":1486706880000,"doc_count":12},{"key_as_string":"2017-02-10T06:09:00.000Z","key":1486706940000,"doc_count":14},{"key_as_string":"2017-02-10T06:10:00.000Z","key":1486707000000,"doc_count":8},{"key_as_string":"2017-02-10T06:11:00.000Z","key":1486707060000,"doc_count":6},{"key_as_string":"2017-02-10T06:12:00.000Z","key":1486707120000,"doc_count":17},{"key_as_string":"2017-02-10T06:13:00.000Z","key":1486707180000,"doc_count":14},{"key_as_string":"2017-02-10T06:14:00.000Z","key":1486707240000,"doc_count":5},{"key_as_string":"2017-02-10T06:15:00.000Z","key":1486707300000,"doc_count":17},{"key_as_string":"2017-02-10T06:16:00.000Z","key":1486707360000,"doc_count":9},{"key_as_string":"2017-02-10T06:17:00.000Z","key":1486707420000,"doc_count":13},{"key_as_string":"2017-02-10T06:18:00.000Z","key":1486707480000,"doc_count":8},{"key_as_string":"2017-02-10T06:19:00.000Z","key":1486707540000,"doc_count":14},{"key_as_string":"2017-02-10T06:20:00.000Z","key":1486707600000,"doc_count":8},{"key_as_string":"2017-02-10T06:21:00.000Z","key":1486707660000,"doc_count":11},{"key_as_string":"2017-02-10T06:22:00.000Z","key":1486707720000,"doc_count":15},{"key_as_string":"2017-02-10T06:23:00.000Z","key":1486707780000,"doc_count":16},{"key_as_string":"2017-02-10T06:24:00.000Z","key":1486707840000,"doc_count":11},{"key_as_string":"2017-02-10T06:25:00.000Z","key":1486707900000,"doc_count":10},{"key_as_string":"2017-02-10T06:26:00.000Z","key":1486707960000,"doc_count":8},{"key_as_string":"2017-02-10T06:27:00.000Z","key":1486708020000,"doc_count":18},{"key_as_string":"2017-02-10T06:28:00.000Z","key":1486708080000,"doc_count":11},{"key_as_string":"2017-02-10T06:29:00.000Z","key":1486708140000,"doc_count":10},{"key_as_string":"2017-02-10T06:30:00.000Z","key":1486708200000,"doc_count":9},{"key_as_string":"2017-02-10T06:31:00.000Z","key":1486708260000,"doc_count":13},{"key_as_string":"2017-02-10T06:32:00.000Z","key":1486708320000,"doc_count":10},{"key_as_string":"2017-02-10T06:33:00.000Z","key":1486708380000,"doc_count":12},{"key_as_string":"2017-02-10T06:34:00.000Z","key":1486708440000,"doc_count":10},{"key_as_string":"2017-02-10T06:35:00.000Z","key":1486708500000,"doc_count":9},{"key_as_string":"2017-02-10T06:36:00.000Z","key":1486708560000,"doc_count":17},{"key_as_string":"2017-02-10T06:37:00.000Z","key":1486708620000,"doc_count":15},{"key_as_string":"2017-02-10T06:38:00.000Z","key":1486708680000,"doc_count":11},{"key_as_string":"2017-02-10T06:39:00.000Z","key":1486708740000,"doc_count":12},{"key_as_string":"2017-02-10T06:40:00.000Z","key":1486708800000,"doc_count":11},{"key_as_string":"2017-02-10T06:41:00.000Z","key":1486708860000,"doc_count":13},{"key_as_string":"2017-02-10T06:42:00.000Z","key":1486708920000,"doc_count":10},{"key_as_string":"2017-02-10T06:43:00.000Z","key":1486708980000,"doc_count":12},{"key_as_string":"2017-02-10T06:44:00.000Z","key":1486709040000,"doc_count":14},{"key_as_string":"2017-02-10T06:45:00.000Z","key":1486709100000,"doc_count":7},{"key_as_string":"2017-02-10T06:46:00.000Z","key":1486709160000,"doc_count":17},{"key_as_string":"2017-02-10T06:47:00.000Z","key":1486709220000,"doc_count":9},{"key_as_string":"2017-02-10T06:48:00.000Z","key":1486709280000,"doc_count":12},{"key_as_string":"2017-02-10T06:49:00.000Z","key":1486709340000,"doc_count":14},{"key_as_string":"2017-02-10T06:50:00.000Z","key":1486709400000,"doc_count":15},{"key_as_string":"2017-02-10T06:51:00.000Z","key":1486709460000,"doc_count":12},{"key_as_string":"2017-02-10T06:52:00.000Z","key":1486709520000,"doc_count":8},{"key_as_string":"2017-02-10T06:53:00.000Z","key":1486709580000,"doc_count":13},{"key_as_string":"2017-02-10T06:54:00.000Z","key":1486709640000,"doc_count":15},{"key_as_string":"2017-02-10T06:55:00.000Z","key":1486709700000,"doc_count":8},{"key_as_string":"2017-02-10T06:56:00.000Z","key":1486709760000,"doc_count":7},{"key_as_string":"2017-02-10T06:57:00.000Z","key":1486709820000,"doc_count":18},{"key_as_string":"2017-02-10T06:58:00.000Z","key":1486709880000,"doc_count":11},{"key_as_string":"2017-02-10T06:59:00.000Z","key":1486709940000,"doc_count":14},{"key_as_string":"2017-02-10T07:00:00.000Z","key":1486710000000,"doc_count":8},{"key_as_string":"2017-02-10T07:01:00.000Z","key":1486710060000,"doc_count":12},{"key_as_string":"2017-02-10T07:02:00.000Z","key":1486710120000,"doc_count":14},{"key_as_string":"2017-02-10T07:03:00.000Z","key":1486710180000,"doc_count":9},{"key_as_string":"2017-02-10T07:04:00.000Z","key":1486710240000,"doc_count":13},{"key_as_string":"2017-02-10T07:05:00.000Z","key":1486710300000,"doc_count":12},{"key_as_string":"2017-02-10T07:06:00.000Z","key":1486710360000,"doc_count":15},{"key_as_string":"2017-02-10T07:07:00.000Z","key":1486710420000,"doc_count":19},{"key_as_string":"2017-02-10T07:08:00.000Z","key":1486710480000,"doc_count":11},{"key_as_string":"2017-02-10T07:09:00.000Z","key":1486710540000,"doc_count":16},{"key_as_string":"2017-02-10T07:10:00.000Z","key":1486710600000,"doc_count":11},{"key_as_string":"2017-02-10T07:11:00.000Z","key":1486710660000,"doc_count":13},{"key_as_string":"2017-02-10T07:12:00.000Z","key":1486710720000,"doc_count":12},{"key_as_string":"2017-02-10T07:13:00.000Z","key":1486710780000,"doc_count":9},{"key_as_string":"2017-02-10T07:14:00.000Z","key":1486710840000,"doc_count":21},{"key_as_string":"2017-02-10T07:15:00.000Z","key":1486710900000,"doc_count":11},{"key_as_string":"2017-02-10T07:16:00.000Z","key":1486710960000,"doc_count":6},{"key_as_string":"2017-02-10T07:17:00.000Z","key":1486711020000,"doc_count":16},{"key_as_string":"2017-02-10T07:18:00.000Z","key":1486711080000,"doc_count":15},{"key_as_string":"2017-02-10T07:19:00.000Z","key":1486711140000,"doc_count":13},{"key_as_string":"2017-02-10T07:20:00.000Z","key":1486711200000,"doc_count":15},{"key_as_string":"2017-02-10T07:21:00.000Z","key":1486711260000,"doc_count":14},{"key_as_string":"2017-02-10T07:22:00.000Z","key":1486711320000,"doc_count":14},{"key_as_string":"2017-02-10T07:23:00.000Z","key":1486711380000,"doc_count":13},{"key_as_string":"2017-02-10T07:24:00.000Z","key":1486711440000,"doc_count":10},{"key_as_string":"2017-02-10T07:25:00.000Z","key":1486711500000,"doc_count":11},{"key_as_string":"2017-02-10T07:26:00.000Z","key":1486711560000,"doc_count":12},{"key_as_string":"2017-02-10T07:27:00.000Z","key":1486711620000,"doc_count":15},{"key_as_string":"2017-02-10T07:28:00.000Z","key":1486711680000,"doc_count":7},{"key_as_string":"2017-02-10T07:29:00.000Z","key":1486711740000,"doc_count":18},{"key_as_string":"2017-02-10T07:30:00.000Z","key":1486711800000,"doc_count":14},{"key_as_string":"2017-02-10T07:31:00.000Z","key":1486711860000,"doc_count":12},{"key_as_string":"2017-02-10T07:32:00.000Z","key":1486711920000,"doc_count":16},{"key_as_string":"2017-02-10T07:33:00.000Z","key":1486711980000,"doc_count":12},{"key_as_string":"2017-02-10T07:34:00.000Z","key":1486712040000,"doc_count":15},{"key_as_string":"2017-02-10T07:35:00.000Z","key":1486712100000,"doc_count":12},{"key_as_string":"2017-02-10T07:36:00.000Z","key":1486712160000,"doc_count":10},{"key_as_string":"2017-02-10T07:37:00.000Z","key":1486712220000,"doc_count":12},{"key_as_string":"2017-02-10T07:38:00.000Z","key":1486712280000,"doc_count":13},{"key_as_string":"2017-02-10T07:39:00.000Z","key":1486712340000,"doc_count":8},{"key_as_string":"2017-02-10T07:40:00.000Z","key":1486712400000,"doc_count":11},{"key_as_string":"2017-02-10T07:41:00.000Z","key":1486712460000,"doc_count":13},{"key_as_string":"2017-02-10T07:42:00.000Z","key":1486712520000,"doc_count":19},{"key_as_string":"2017-02-10T07:43:00.000Z","key":1486712580000,"doc_count":10},{"key_as_string":"2017-02-10T07:44:00.000Z","key":1486712640000,"doc_count":19},{"key_as_string":"2017-02-10T07:45:00.000Z","key":1486712700000,"doc_count":8},{"key_as_string":"2017-02-10T07:46:00.000Z","key":1486712760000,"doc_count":13},{"key_as_string":"2017-02-10T07:47:00.000Z","key":1486712820000,"doc_count":17},{"key_as_string":"2017-02-10T07:48:00.000Z","key":1486712880000,"doc_count":14},{"key_as_string":"2017-02-10T07:49:00.000Z","key":1486712940000,"doc_count":13},{"key_as_string":"2017-02-10T07:50:00.000Z","key":1486713000000,"doc_count":14},{"key_as_string":"2017-02-10T07:51:00.000Z","key":1486713060000,"doc_count":11},{"key_as_string":"2017-02-10T07:52:00.000Z","key":1486713120000,"doc_count":16},{"key_as_string":"2017-02-10T07:53:00.000Z","key":1486713180000,"doc_count":13},{"key_as_string":"2017-02-10T07:54:00.000Z","key":1486713240000,"doc_count":12},{"key_as_string":"2017-02-10T07:55:00.000Z","key":1486713300000,"doc_count":13},{"key_as_string":"2017-02-10T07:56:00.000Z","key":1486713360000,"doc_count":11},{"key_as_string":"2017-02-10T07:57:00.000Z","key":1486713420000,"doc_count":9},{"key_as_string":"2017-02-10T07:58:00.000Z","key":1486713480000,"doc_count":11},{"key_as_string":"2017-02-10T07:59:00.000Z","key":1486713540000,"doc_count":14},{"key_as_string":"2017-02-10T08:00:00.000Z","key":1486713600000,"doc_count":9},{"key_as_string":"2017-02-10T08:01:00.000Z","key":1486713660000,"doc_count":13},{"key_as_string":"2017-02-10T08:02:00.000Z","key":1486713720000,"doc_count":13},{"key_as_string":"2017-02-10T08:03:00.000Z","key":1486713780000,"doc_count":12},{"key_as_string":"2017-02-10T08:04:00.000Z","key":1486713840000,"doc_count":19},{"key_as_string":"2017-02-10T08:05:00.000Z","key":1486713900000,"doc_count":9},{"key_as_string":"2017-02-10T08:06:00.000Z","key":1486713960000,"doc_count":15},{"key_as_string":"2017-02-10T08:07:00.000Z","key":1486714020000,"doc_count":9},{"key_as_string":"2017-02-10T08:08:00.000Z","key":1486714080000,"doc_count":15},{"key_as_string":"2017-02-10T08:09:00.000Z","key":1486714140000,"doc_count":11},{"key_as_string":"2017-02-10T08:10:00.000Z","key":1486714200000,"doc_count":10},{"key_as_string":"2017-02-10T08:11:00.000Z","key":1486714260000,"doc_count":13},{"key_as_string":"2017-02-10T08:12:00.000Z","key":1486714320000,"doc_count":8},{"key_as_string":"2017-02-10T08:13:00.000Z","key":1486714380000,"doc_count":13},{"key_as_string":"2017-02-10T08:14:00.000Z","key":1486714440000,"doc_count":15},{"key_as_string":"2017-02-10T08:15:00.000Z","key":1486714500000,"doc_count":17},{"key_as_string":"2017-02-10T08:16:00.000Z","key":1486714560000,"doc_count":13},{"key_as_string":"2017-02-10T08:17:00.000Z","key":1486714620000,"doc_count":17},{"key_as_string":"2017-02-10T08:18:00.000Z","key":1486714680000,"doc_count":12},{"key_as_string":"2017-02-10T08:19:00.000Z","key":1486714740000,"doc_count":17},{"key_as_string":"2017-02-10T08:20:00.000Z","key":1486714800000,"doc_count":15},{"key_as_string":"2017-02-10T08:21:00.000Z","key":1486714860000,"doc_count":12},{"key_as_string":"2017-02-10T08:22:00.000Z","key":1486714920000,"doc_count":12},{"key_as_string":"2017-02-10T08:23:00.000Z","key":1486714980000,"doc_count":14},{"key_as_string":"2017-02-10T08:24:00.000Z","key":1486715040000,"doc_count":15},{"key_as_string":"2017-02-10T08:25:00.000Z","key":1486715100000,"doc_count":13},{"key_as_string":"2017-02-10T08:26:00.000Z","key":1486715160000,"doc_count":11},{"key_as_string":"2017-02-10T08:27:00.000Z","key":1486715220000,"doc_count":15},{"key_as_string":"2017-02-10T08:28:00.000Z","key":1486715280000,"doc_count":11},{"key_as_string":"2017-02-10T08:29:00.000Z","key":1486715340000,"doc_count":13},{"key_as_string":"2017-02-10T08:30:00.000Z","key":1486715400000,"doc_count":12},{"key_as_string":"2017-02-10T08:31:00.000Z","key":1486715460000,"doc_count":12},{"key_as_string":"2017-02-10T08:32:00.000Z","key":1486715520000,"doc_count":16},{"key_as_string":"2017-02-10T08:33:00.000Z","key":1486715580000,"doc_count":12},{"key_as_string":"2017-02-10T08:34:00.000Z","key":1486715640000,"doc_count":12},{"key_as_string":"2017-02-10T08:35:00.000Z","key":1486715700000,"doc_count":13},{"key_as_string":"2017-02-10T08:36:00.000Z","key":1486715760000,"doc_count":11},{"key_as_string":"2017-02-10T08:37:00.000Z","key":1486715820000,"doc_count":17},{"key_as_string":"2017-02-10T08:38:00.000Z","key":1486715880000,"doc_count":14},{"key_as_string":"2017-02-10T08:39:00.000Z","key":1486715940000,"doc_count":7},{"key_as_string":"2017-02-10T08:40:00.000Z","key":1486716000000,"doc_count":22},{"key_as_string":"2017-02-10T08:41:00.000Z","key":1486716060000,"doc_count":12},{"key_as_string":"2017-02-10T08:42:00.000Z","key":1486716120000,"doc_count":17},{"key_as_string":"2017-02-10T08:43:00.000Z","key":1486716180000,"doc_count":13},{"key_as_string":"2017-02-10T08:44:00.000Z","key":1486716240000,"doc_count":17},{"key_as_string":"2017-02-10T08:45:00.000Z","key":1486716300000,"doc_count":14},{"key_as_string":"2017-02-10T08:46:00.000Z","key":1486716360000,"doc_count":11},{"key_as_string":"2017-02-10T08:47:00.000Z","key":1486716420000,"doc_count":18},{"key_as_string":"2017-02-10T08:48:00.000Z","key":1486716480000,"doc_count":11},{"key_as_string":"2017-02-10T08:49:00.000Z","key":1486716540000,"doc_count":18},{"key_as_string":"2017-02-10T08:50:00.000Z","key":1486716600000,"doc_count":13},{"key_as_string":"2017-02-10T08:51:00.000Z","key":1486716660000,"doc_count":12},{"key_as_string":"2017-02-10T08:52:00.000Z","key":1486716720000,"doc_count":13},{"key_as_string":"2017-02-10T08:53:00.000Z","key":1486716780000,"doc_count":14},{"key_as_string":"2017-02-10T08:54:00.000Z","key":1486716840000,"doc_count":18},{"key_as_string":"2017-02-10T08:55:00.000Z","key":1486716900000,"doc_count":10},{"key_as_string":"2017-02-10T08:56:00.000Z","key":1486716960000,"doc_count":17},{"key_as_string":"2017-02-10T08:57:00.000Z","key":1486717020000,"doc_count":13},{"key_as_string":"2017-02-10T08:58:00.000Z","key":1486717080000,"doc_count":14},{"key_as_string":"2017-02-10T08:59:00.000Z","key":1486717140000,"doc_count":11},{"key_as_string":"2017-02-10T09:00:00.000Z","key":1486717200000,"doc_count":11},{"key_as_string":"2017-02-10T09:01:00.000Z","key":1486717260000,"doc_count":12},{"key_as_string":"2017-02-10T09:02:00.000Z","key":1486717320000,"doc_count":10},{"key_as_string":"2017-02-10T09:03:00.000Z","key":1486717380000,"doc_count":16},{"key_as_string":"2017-02-10T09:04:00.000Z","key":1486717440000,"doc_count":9},{"key_as_string":"2017-02-10T09:05:00.000Z","key":1486717500000,"doc_count":15},{"key_as_string":"2017-02-10T09:06:00.000Z","key":1486717560000,"doc_count":15},{"key_as_string":"2017-02-10T09:07:00.000Z","key":1486717620000,"doc_count":17},{"key_as_string":"2017-02-10T09:08:00.000Z","key":1486717680000,"doc_count":10},{"key_as_string":"2017-02-10T09:09:00.000Z","key":1486717740000,"doc_count":14},{"key_as_string":"2017-02-10T09:10:00.000Z","key":1486717800000,"doc_count":12},{"key_as_string":"2017-02-10T09:11:00.000Z","key":1486717860000,"doc_count":16},{"key_as_string":"2017-02-10T09:12:00.000Z","key":1486717920000,"doc_count":9},{"key_as_string":"2017-02-10T09:13:00.000Z","key":1486717980000,"doc_count":14},{"key_as_string":"2017-02-10T09:14:00.000Z","key":1486718040000,"doc_count":14},{"key_as_string":"2017-02-10T09:15:00.000Z","key":1486718100000,"doc_count":18},{"key_as_string":"2017-02-10T09:16:00.000Z","key":1486718160000,"doc_count":16},{"key_as_string":"2017-02-10T09:17:00.000Z","key":1486718220000,"doc_count":16},{"key_as_string":"2017-02-10T09:18:00.000Z","key":1486718280000,"doc_count":13},{"key_as_string":"2017-02-10T09:19:00.000Z","key":1486718340000,"doc_count":11},{"key_as_string":"2017-02-10T09:20:00.000Z","key":1486718400000,"doc_count":14},{"key_as_string":"2017-02-10T09:21:00.000Z","key":1486718460000,"doc_count":12},{"key_as_string":"2017-02-10T09:22:00.000Z","key":1486718520000,"doc_count":10},{"key_as_string":"2017-02-10T09:23:00.000Z","key":1486718580000,"doc_count":12},{"key_as_string":"2017-02-10T09:24:00.000Z","key":1486718640000,"doc_count":15},{"key_as_string":"2017-02-10T09:25:00.000Z","key":1486718700000,"doc_count":9},{"key_as_string":"2017-02-10T09:26:00.000Z","key":1486718760000,"doc_count":16},{"key_as_string":"2017-02-10T09:27:00.000Z","key":1486718820000,"doc_count":17},{"key_as_string":"2017-02-10T09:28:00.000Z","key":1486718880000,"doc_count":12},{"key_as_string":"2017-02-10T09:29:00.000Z","key":1486718940000,"doc_count":10},{"key_as_string":"2017-02-10T09:30:00.000Z","key":1486719000000,"doc_count":12},{"key_as_string":"2017-02-10T09:31:00.000Z","key":1486719060000,"doc_count":13},{"key_as_string":"2017-02-10T09:32:00.000Z","key":1486719120000,"doc_count":13},{"key_as_string":"2017-02-10T09:33:00.000Z","key":1486719180000,"doc_count":11},{"key_as_string":"2017-02-10T09:34:00.000Z","key":1486719240000,"doc_count":11},{"key_as_string":"2017-02-10T09:35:00.000Z","key":1486719300000,"doc_count":15},{"key_as_string":"2017-02-10T09:36:00.000Z","key":1486719360000,"doc_count":10},{"key_as_string":"2017-02-10T09:37:00.000Z","key":1486719420000,"doc_count":12},{"key_as_string":"2017-02-10T09:38:00.000Z","key":1486719480000,"doc_count":19},{"key_as_string":"2017-02-10T09:39:00.000Z","key":1486719540000,"doc_count":12},{"key_as_string":"2017-02-10T09:40:00.000Z","key":1486719600000,"doc_count":19},{"key_as_string":"2017-02-10T09:41:00.000Z","key":1486719660000,"doc_count":16},{"key_as_string":"2017-02-10T09:42:00.000Z","key":1486719720000,"doc_count":19},{"key_as_string":"2017-02-10T09:43:00.000Z","key":1486719780000,"doc_count":7},{"key_as_string":"2017-02-10T09:44:00.000Z","key":1486719840000,"doc_count":18},{"key_as_string":"2017-02-10T09:45:00.000Z","key":1486719900000,"doc_count":12},{"key_as_string":"2017-02-10T09:46:00.000Z","key":1486719960000,"doc_count":14},{"key_as_string":"2017-02-10T09:47:00.000Z","key":1486720020000,"doc_count":14},{"key_as_string":"2017-02-10T09:48:00.000Z","key":1486720080000,"doc_count":11},{"key_as_string":"2017-02-10T09:49:00.000Z","key":1486720140000,"doc_count":14},{"key_as_string":"2017-02-10T09:50:00.000Z","key":1486720200000,"doc_count":9},{"key_as_string":"2017-02-10T09:51:00.000Z","key":1486720260000,"doc_count":17},{"key_as_string":"2017-02-10T09:52:00.000Z","key":1486720320000,"doc_count":20},{"key_as_string":"2017-02-10T09:53:00.000Z","key":1486720380000,"doc_count":13},{"key_as_string":"2017-02-10T09:54:00.000Z","key":1486720440000,"doc_count":7},{"key_as_string":"2017-02-10T09:55:00.000Z","key":1486720500000,"doc_count":16},{"key_as_string":"2017-02-10T09:56:00.000Z","key":1486720560000,"doc_count":13},{"key_as_string":"2017-02-10T09:57:00.000Z","key":1486720620000,"doc_count":12},{"key_as_string":"2017-02-10T09:58:00.000Z","key":1486720680000,"doc_count":13},{"key_as_string":"2017-02-10T09:59:00.000Z","key":1486720740000,"doc_count":10},{"key_as_string":"2017-02-10T10:00:00.000Z","key":1486720800000,"doc_count":15},{"key_as_string":"2017-02-10T10:01:00.000Z","key":1486720860000,"doc_count":13},{"key_as_string":"2017-02-10T10:02:00.000Z","key":1486720920000,"doc_count":23},{"key_as_string":"2017-02-10T10:03:00.000Z","key":1486720980000,"doc_count":11},{"key_as_string":"2017-02-10T10:04:00.000Z","key":1486721040000,"doc_count":11},{"key_as_string":"2017-02-10T10:05:00.000Z","key":1486721100000,"doc_count":17},{"key_as_string":"2017-02-10T10:06:00.000Z","key":1486721160000,"doc_count":10},{"key_as_string":"2017-02-10T10:07:00.000Z","key":1486721220000,"doc_count":15},{"key_as_string":"2017-02-10T10:08:00.000Z","key":1486721280000,"doc_count":13},{"key_as_string":"2017-02-10T10:09:00.000Z","key":1486721340000,"doc_count":15},{"key_as_string":"2017-02-10T10:10:00.000Z","key":1486721400000,"doc_count":17},{"key_as_string":"2017-02-10T10:11:00.000Z","key":1486721460000,"doc_count":12},{"key_as_string":"2017-02-10T10:12:00.000Z","key":1486721520000,"doc_count":11},{"key_as_string":"2017-02-10T10:13:00.000Z","key":1486721580000,"doc_count":19},{"key_as_string":"2017-02-10T10:14:00.000Z","key":1486721640000,"doc_count":12},{"key_as_string":"2017-02-10T10:15:00.000Z","key":1486721700000,"doc_count":17},{"key_as_string":"2017-02-10T10:16:00.000Z","key":1486721760000,"doc_count":13},{"key_as_string":"2017-02-10T10:17:00.000Z","key":1486721820000,"doc_count":15},{"key_as_string":"2017-02-10T10:18:00.000Z","key":1486721880000,"doc_count":13},{"key_as_string":"2017-02-10T10:19:00.000Z","key":1486721940000,"doc_count":15},{"key_as_string":"2017-02-10T10:20:00.000Z","key":1486722000000,"doc_count":15},{"key_as_string":"2017-02-10T10:21:00.000Z","key":1486722060000,"doc_count":15},{"key_as_string":"2017-02-10T10:22:00.000Z","key":1486722120000,"doc_count":14},{"key_as_string":"2017-02-10T10:23:00.000Z","key":1486722180000,"doc_count":18},{"key_as_string":"2017-02-10T10:24:00.000Z","key":1486722240000,"doc_count":16},{"key_as_string":"2017-02-10T10:25:00.000Z","key":1486722300000,"doc_count":11},{"key_as_string":"2017-02-10T10:26:00.000Z","key":1486722360000,"doc_count":12},{"key_as_string":"2017-02-10T10:27:00.000Z","key":1486722420000,"doc_count":21},{"key_as_string":"2017-02-10T10:28:00.000Z","key":1486722480000,"doc_count":12},{"key_as_string":"2017-02-10T10:29:00.000Z","key":1486722540000,"doc_count":10},{"key_as_string":"2017-02-10T10:30:00.000Z","key":1486722600000,"doc_count":13},{"key_as_string":"2017-02-10T10:31:00.000Z","key":1486722660000,"doc_count":12},{"key_as_string":"2017-02-10T10:32:00.000Z","key":1486722720000,"doc_count":14},{"key_as_string":"2017-02-10T10:33:00.000Z","key":1486722780000,"doc_count":10},{"key_as_string":"2017-02-10T10:34:00.000Z","key":1486722840000,"doc_count":16},{"key_as_string":"2017-02-10T10:35:00.000Z","key":1486722900000,"doc_count":10},{"key_as_string":"2017-02-10T10:36:00.000Z","key":1486722960000,"doc_count":19},{"key_as_string":"2017-02-10T10:37:00.000Z","key":1486723020000,"doc_count":6},{"key_as_string":"2017-02-10T10:38:00.000Z","key":1486723080000,"doc_count":21},{"key_as_string":"2017-02-10T10:39:00.000Z","key":1486723140000,"doc_count":13},{"key_as_string":"2017-02-10T10:40:00.000Z","key":1486723200000,"doc_count":18},{"key_as_string":"2017-02-10T10:41:00.000Z","key":1486723260000,"doc_count":12},{"key_as_string":"2017-02-10T10:42:00.000Z","key":1486723320000,"doc_count":16},{"key_as_string":"2017-02-10T10:43:00.000Z","key":1486723380000,"doc_count":6},{"key_as_string":"2017-02-10T10:44:00.000Z","key":1486723440000,"doc_count":16},{"key_as_string":"2017-02-10T10:45:00.000Z","key":1486723500000,"doc_count":10},{"key_as_string":"2017-02-10T10:46:00.000Z","key":1486723560000,"doc_count":17},{"key_as_string":"2017-02-10T10:47:00.000Z","key":1486723620000,"doc_count":11},{"key_as_string":"2017-02-10T10:48:00.000Z","key":1486723680000,"doc_count":17},{"key_as_string":"2017-02-10T10:49:00.000Z","key":1486723740000,"doc_count":11},{"key_as_string":"2017-02-10T10:50:00.000Z","key":1486723800000,"doc_count":12},{"key_as_string":"2017-02-10T10:51:00.000Z","key":1486723860000,"doc_count":12},{"key_as_string":"2017-02-10T10:52:00.000Z","key":1486723920000,"doc_count":18},{"key_as_string":"2017-02-10T10:53:00.000Z","key":1486723980000,"doc_count":15},{"key_as_string":"2017-02-10T10:54:00.000Z","key":1486724040000,"doc_count":15},{"key_as_string":"2017-02-10T10:55:00.000Z","key":1486724100000,"doc_count":16},{"key_as_string":"2017-02-10T10:56:00.000Z","key":1486724160000,"doc_count":8},{"key_as_string":"2017-02-10T10:57:00.000Z","key":1486724220000,"doc_count":19},{"key_as_string":"2017-02-10T10:58:00.000Z","key":1486724280000,"doc_count":12},{"key_as_string":"2017-02-10T10:59:00.000Z","key":1486724340000,"doc_count":16},{"key_as_string":"2017-02-10T11:00:00.000Z","key":1486724400000,"doc_count":16},{"key_as_string":"2017-02-10T11:01:00.000Z","key":1486724460000,"doc_count":11},{"key_as_string":"2017-02-10T11:02:00.000Z","key":1486724520000,"doc_count":11},{"key_as_string":"2017-02-10T11:03:00.000Z","key":1486724580000,"doc_count":16},{"key_as_string":"2017-02-10T11:04:00.000Z","key":1486724640000,"doc_count":15},{"key_as_string":"2017-02-10T11:05:00.000Z","key":1486724700000,"doc_count":12},{"key_as_string":"2017-02-10T11:06:00.000Z","key":1486724760000,"doc_count":20},{"key_as_string":"2017-02-10T11:07:00.000Z","key":1486724820000,"doc_count":14},{"key_as_string":"2017-02-10T11:08:00.000Z","key":1486724880000,"doc_count":11},{"key_as_string":"2017-02-10T11:09:00.000Z","key":1486724940000,"doc_count":11},{"key_as_string":"2017-02-10T11:10:00.000Z","key":1486725000000,"doc_count":11},{"key_as_string":"2017-02-10T11:11:00.000Z","key":1486725060000,"doc_count":16},{"key_as_string":"2017-02-10T11:12:00.000Z","key":1486725120000,"doc_count":12},{"key_as_string":"2017-02-10T11:13:00.000Z","key":1486725180000,"doc_count":15},{"key_as_string":"2017-02-10T11:14:00.000Z","key":1486725240000,"doc_count":12},{"key_as_string":"2017-02-10T11:15:00.000Z","key":1486725300000,"doc_count":12},{"key_as_string":"2017-02-10T11:16:00.000Z","key":1486725360000,"doc_count":17},{"key_as_string":"2017-02-10T11:17:00.000Z","key":1486725420000,"doc_count":15},{"key_as_string":"2017-02-10T11:18:00.000Z","key":1486725480000,"doc_count":12},{"key_as_string":"2017-02-10T11:19:00.000Z","key":1486725540000,"doc_count":13},{"key_as_string":"2017-02-10T11:20:00.000Z","key":1486725600000,"doc_count":12},{"key_as_string":"2017-02-10T11:21:00.000Z","key":1486725660000,"doc_count":12},{"key_as_string":"2017-02-10T11:22:00.000Z","key":1486725720000,"doc_count":9},{"key_as_string":"2017-02-10T11:23:00.000Z","key":1486725780000,"doc_count":15},{"key_as_string":"2017-02-10T11:24:00.000Z","key":1486725840000,"doc_count":21},{"key_as_string":"2017-02-10T11:25:00.000Z","key":1486725900000,"doc_count":13},{"key_as_string":"2017-02-10T11:26:00.000Z","key":1486725960000,"doc_count":15},{"key_as_string":"2017-02-10T11:27:00.000Z","key":1486726020000,"doc_count":14},{"key_as_string":"2017-02-10T11:28:00.000Z","key":1486726080000,"doc_count":10},{"key_as_string":"2017-02-10T11:29:00.000Z","key":1486726140000,"doc_count":16},{"key_as_string":"2017-02-10T11:30:00.000Z","key":1486726200000,"doc_count":12},{"key_as_string":"2017-02-10T11:31:00.000Z","key":1486726260000,"doc_count":18},{"key_as_string":"2017-02-10T11:32:00.000Z","key":1486726320000,"doc_count":11},{"key_as_string":"2017-02-10T11:33:00.000Z","key":1486726380000,"doc_count":15},{"key_as_string":"2017-02-10T11:34:00.000Z","key":1486726440000,"doc_count":16},{"key_as_string":"2017-02-10T11:35:00.000Z","key":1486726500000,"doc_count":19},{"key_as_string":"2017-02-10T11:36:00.000Z","key":1486726560000,"doc_count":9},{"key_as_string":"2017-02-10T11:37:00.000Z","key":1486726620000,"doc_count":14},{"key_as_string":"2017-02-10T11:38:00.000Z","key":1486726680000,"doc_count":12},{"key_as_string":"2017-02-10T11:39:00.000Z","key":1486726740000,"doc_count":15},{"key_as_string":"2017-02-10T11:40:00.000Z","key":1486726800000,"doc_count":13},{"key_as_string":"2017-02-10T11:41:00.000Z","key":1486726860000,"doc_count":14},{"key_as_string":"2017-02-10T11:42:00.000Z","key":1486726920000,"doc_count":11},{"key_as_string":"2017-02-10T11:43:00.000Z","key":1486726980000,"doc_count":16},{"key_as_string":"2017-02-10T11:44:00.000Z","key":1486727040000,"doc_count":10},{"key_as_string":"2017-02-10T11:45:00.000Z","key":1486727100000,"doc_count":12},{"key_as_string":"2017-02-10T11:46:00.000Z","key":1486727160000,"doc_count":9},{"key_as_string":"2017-02-10T11:47:00.000Z","key":1486727220000,"doc_count":16},{"key_as_string":"2017-02-10T11:48:00.000Z","key":1486727280000,"doc_count":8},{"key_as_string":"2017-02-10T11:49:00.000Z","key":1486727340000,"doc_count":13},{"key_as_string":"2017-02-10T11:50:00.000Z","key":1486727400000,"doc_count":16},{"key_as_string":"2017-02-10T11:51:00.000Z","key":1486727460000,"doc_count":13},{"key_as_string":"2017-02-10T11:52:00.000Z","key":1486727520000,"doc_count":12},{"key_as_string":"2017-02-10T11:53:00.000Z","key":1486727580000,"doc_count":23},{"key_as_string":"2017-02-10T11:54:00.000Z","key":1486727640000,"doc_count":11},{"key_as_string":"2017-02-10T11:55:00.000Z","key":1486727700000,"doc_count":12},{"key_as_string":"2017-02-10T11:56:00.000Z","key":1486727760000,"doc_count":14},{"key_as_string":"2017-02-10T11:57:00.000Z","key":1486727820000,"doc_count":15},{"key_as_string":"2017-02-10T11:58:00.000Z","key":1486727880000,"doc_count":14},{"key_as_string":"2017-02-10T11:59:00.000Z","key":1486727940000,"doc_count":14},{"key_as_string":"2017-02-10T12:00:00.000Z","key":1486728000000,"doc_count":13},{"key_as_string":"2017-02-10T12:01:00.000Z","key":1486728060000,"doc_count":15},{"key_as_string":"2017-02-10T12:02:00.000Z","key":1486728120000,"doc_count":10},{"key_as_string":"2017-02-10T12:03:00.000Z","key":1486728180000,"doc_count":14},{"key_as_string":"2017-02-10T12:04:00.000Z","key":1486728240000,"doc_count":14},{"key_as_string":"2017-02-10T12:05:00.000Z","key":1486728300000,"doc_count":15},{"key_as_string":"2017-02-10T12:06:00.000Z","key":1486728360000,"doc_count":10},{"key_as_string":"2017-02-10T12:07:00.000Z","key":1486728420000,"doc_count":16},{"key_as_string":"2017-02-10T12:08:00.000Z","key":1486728480000,"doc_count":17},{"key_as_string":"2017-02-10T12:09:00.000Z","key":1486728540000,"doc_count":11},{"key_as_string":"2017-02-10T12:10:00.000Z","key":1486728600000,"doc_count":16},{"key_as_string":"2017-02-10T12:11:00.000Z","key":1486728660000,"doc_count":16},{"key_as_string":"2017-02-10T12:12:00.000Z","key":1486728720000,"doc_count":8},{"key_as_string":"2017-02-10T12:13:00.000Z","key":1486728780000,"doc_count":19},{"key_as_string":"2017-02-10T12:14:00.000Z","key":1486728840000,"doc_count":21},{"key_as_string":"2017-02-10T12:15:00.000Z","key":1486728900000,"doc_count":15},{"key_as_string":"2017-02-10T12:16:00.000Z","key":1486728960000,"doc_count":12},{"key_as_string":"2017-02-10T12:17:00.000Z","key":1486729020000,"doc_count":16},{"key_as_string":"2017-02-10T12:18:00.000Z","key":1486729080000,"doc_count":14},{"key_as_string":"2017-02-10T12:19:00.000Z","key":1486729140000,"doc_count":17},{"key_as_string":"2017-02-10T12:20:00.000Z","key":1486729200000,"doc_count":16},{"key_as_string":"2017-02-10T12:21:00.000Z","key":1486729260000,"doc_count":13},{"key_as_string":"2017-02-10T12:22:00.000Z","key":1486729320000,"doc_count":9},{"key_as_string":"2017-02-10T12:23:00.000Z","key":1486729380000,"doc_count":14},{"key_as_string":"2017-02-10T12:24:00.000Z","key":1486729440000,"doc_count":14},{"key_as_string":"2017-02-10T12:25:00.000Z","key":1486729500000,"doc_count":12},{"key_as_string":"2017-02-10T12:26:00.000Z","key":1486729560000,"doc_count":15},{"key_as_string":"2017-02-10T12:27:00.000Z","key":1486729620000,"doc_count":11},{"key_as_string":"2017-02-10T12:28:00.000Z","key":1486729680000,"doc_count":11},{"key_as_string":"2017-02-10T12:29:00.000Z","key":1486729740000,"doc_count":13},{"key_as_string":"2017-02-10T12:30:00.000Z","key":1486729800000,"doc_count":9},{"key_as_string":"2017-02-10T12:31:00.000Z","key":1486729860000,"doc_count":16},{"key_as_string":"2017-02-10T12:32:00.000Z","key":1486729920000,"doc_count":7},{"key_as_string":"2017-02-10T12:33:00.000Z","key":1486729980000,"doc_count":15},{"key_as_string":"2017-02-10T12:34:00.000Z","key":1486730040000,"doc_count":10},{"key_as_string":"2017-02-10T12:35:00.000Z","key":1486730100000,"doc_count":15},{"key_as_string":"2017-02-10T12:36:00.000Z","key":1486730160000,"doc_count":15},{"key_as_string":"2017-02-10T12:37:00.000Z","key":1486730220000,"doc_count":17},{"key_as_string":"2017-02-10T12:38:00.000Z","key":1486730280000,"doc_count":15},{"key_as_string":"2017-02-10T12:39:00.000Z","key":1486730340000,"doc_count":13},{"key_as_string":"2017-02-10T12:40:00.000Z","key":1486730400000,"doc_count":12},{"key_as_string":"2017-02-10T12:41:00.000Z","key":1486730460000,"doc_count":10},{"key_as_string":"2017-02-10T12:42:00.000Z","key":1486730520000,"doc_count":11},{"key_as_string":"2017-02-10T12:43:00.000Z","key":1486730580000,"doc_count":15},{"key_as_string":"2017-02-10T12:44:00.000Z","key":1486730640000,"doc_count":14},{"key_as_string":"2017-02-10T12:45:00.000Z","key":1486730700000,"doc_count":15},{"key_as_string":"2017-02-10T12:46:00.000Z","key":1486730760000,"doc_count":12},{"key_as_string":"2017-02-10T12:47:00.000Z","key":1486730820000,"doc_count":14},{"key_as_string":"2017-02-10T12:48:00.000Z","key":1486730880000,"doc_count":15},{"key_as_string":"2017-02-10T12:49:00.000Z","key":1486730940000,"doc_count":14},{"key_as_string":"2017-02-10T12:50:00.000Z","key":1486731000000,"doc_count":14},{"key_as_string":"2017-02-10T12:51:00.000Z","key":1486731060000,"doc_count":13},{"key_as_string":"2017-02-10T12:52:00.000Z","key":1486731120000,"doc_count":17},{"key_as_string":"2017-02-10T12:53:00.000Z","key":1486731180000,"doc_count":10},{"key_as_string":"2017-02-10T12:54:00.000Z","key":1486731240000,"doc_count":12},{"key_as_string":"2017-02-10T12:55:00.000Z","key":1486731300000,"doc_count":16},{"key_as_string":"2017-02-10T12:56:00.000Z","key":1486731360000,"doc_count":8},{"key_as_string":"2017-02-10T12:57:00.000Z","key":1486731420000,"doc_count":12},{"key_as_string":"2017-02-10T12:58:00.000Z","key":1486731480000,"doc_count":22},{"key_as_string":"2017-02-10T12:59:00.000Z","key":1486731540000,"doc_count":13},{"key_as_string":"2017-02-10T13:00:00.000Z","key":1486731600000,"doc_count":15},{"key_as_string":"2017-02-10T13:01:00.000Z","key":1486731660000,"doc_count":8},{"key_as_string":"2017-02-10T13:02:00.000Z","key":1486731720000,"doc_count":19},{"key_as_string":"2017-02-10T13:03:00.000Z","key":1486731780000,"doc_count":9},{"key_as_string":"2017-02-10T13:04:00.000Z","key":1486731840000,"doc_count":12},{"key_as_string":"2017-02-10T13:05:00.000Z","key":1486731900000,"doc_count":15},{"key_as_string":"2017-02-10T13:06:00.000Z","key":1486731960000,"doc_count":15},{"key_as_string":"2017-02-10T13:07:00.000Z","key":1486732020000,"doc_count":16},{"key_as_string":"2017-02-10T13:08:00.000Z","key":1486732080000,"doc_count":14},{"key_as_string":"2017-02-10T13:09:00.000Z","key":1486732140000,"doc_count":15},{"key_as_string":"2017-02-10T13:10:00.000Z","key":1486732200000,"doc_count":9},{"key_as_string":"2017-02-10T13:11:00.000Z","key":1486732260000,"doc_count":14},{"key_as_string":"2017-02-10T13:12:00.000Z","key":1486732320000,"doc_count":15},{"key_as_string":"2017-02-10T13:13:00.000Z","key":1486732380000,"doc_count":12},{"key_as_string":"2017-02-10T13:14:00.000Z","key":1486732440000,"doc_count":13},{"key_as_string":"2017-02-10T13:15:00.000Z","key":1486732500000,"doc_count":22},{"key_as_string":"2017-02-10T13:16:00.000Z","key":1486732560000,"doc_count":9},{"key_as_string":"2017-02-10T13:17:00.000Z","key":1486732620000,"doc_count":13},{"key_as_string":"2017-02-10T13:18:00.000Z","key":1486732680000,"doc_count":14},{"key_as_string":"2017-02-10T13:19:00.000Z","key":1486732740000,"doc_count":9},{"key_as_string":"2017-02-10T13:20:00.000Z","key":1486732800000,"doc_count":11},{"key_as_string":"2017-02-10T13:21:00.000Z","key":1486732860000,"doc_count":12},{"key_as_string":"2017-02-10T13:22:00.000Z","key":1486732920000,"doc_count":16},{"key_as_string":"2017-02-10T13:23:00.000Z","key":1486732980000,"doc_count":15},{"key_as_string":"2017-02-10T13:24:00.000Z","key":1486733040000,"doc_count":9},{"key_as_string":"2017-02-10T13:25:00.000Z","key":1486733100000,"doc_count":12},{"key_as_string":"2017-02-10T13:26:00.000Z","key":1486733160000,"doc_count":14},{"key_as_string":"2017-02-10T13:27:00.000Z","key":1486733220000,"doc_count":17},{"key_as_string":"2017-02-10T13:28:00.000Z","key":1486733280000,"doc_count":5},{"key_as_string":"2017-02-10T13:29:00.000Z","key":1486733340000,"doc_count":16},{"key_as_string":"2017-02-10T13:30:00.000Z","key":1486733400000,"doc_count":9},{"key_as_string":"2017-02-10T13:31:00.000Z","key":1486733460000,"doc_count":17},{"key_as_string":"2017-02-10T13:32:00.000Z","key":1486733520000,"doc_count":12},{"key_as_string":"2017-02-10T13:33:00.000Z","key":1486733580000,"doc_count":10},{"key_as_string":"2017-02-10T13:34:00.000Z","key":1486733640000,"doc_count":18},{"key_as_string":"2017-02-10T13:35:00.000Z","key":1486733700000,"doc_count":5},{"key_as_string":"2017-02-10T13:36:00.000Z","key":1486733760000,"doc_count":13},{"key_as_string":"2017-02-10T13:37:00.000Z","key":1486733820000,"doc_count":18},{"key_as_string":"2017-02-10T13:38:00.000Z","key":1486733880000,"doc_count":17},{"key_as_string":"2017-02-10T13:39:00.000Z","key":1486733940000,"doc_count":15},{"key_as_string":"2017-02-10T13:40:00.000Z","key":1486734000000,"doc_count":16},{"key_as_string":"2017-02-10T13:41:00.000Z","key":1486734060000,"doc_count":8},{"key_as_string":"2017-02-10T13:42:00.000Z","key":1486734120000,"doc_count":17},{"key_as_string":"2017-02-10T13:43:00.000Z","key":1486734180000,"doc_count":14},{"key_as_string":"2017-02-10T13:44:00.000Z","key":1486734240000,"doc_count":14},{"key_as_string":"2017-02-10T13:45:00.000Z","key":1486734300000,"doc_count":17},{"key_as_string":"2017-02-10T13:46:00.000Z","key":1486734360000,"doc_count":14},{"key_as_string":"2017-02-10T13:47:00.000Z","key":1486734420000,"doc_count":16},{"key_as_string":"2017-02-10T13:48:00.000Z","key":1486734480000,"doc_count":16},{"key_as_string":"2017-02-10T13:49:00.000Z","key":1486734540000,"doc_count":21},{"key_as_string":"2017-02-10T13:50:00.000Z","key":1486734600000,"doc_count":12},{"key_as_string":"2017-02-10T13:51:00.000Z","key":1486734660000,"doc_count":12},{"key_as_string":"2017-02-10T13:52:00.000Z","key":1486734720000,"doc_count":8},{"key_as_string":"2017-02-10T13:53:00.000Z","key":1486734780000,"doc_count":15},{"key_as_string":"2017-02-10T13:54:00.000Z","key":1486734840000,"doc_count":13},{"key_as_string":"2017-02-10T13:55:00.000Z","key":1486734900000,"doc_count":14},{"key_as_string":"2017-02-10T13:56:00.000Z","key":1486734960000,"doc_count":13},{"key_as_string":"2017-02-10T13:57:00.000Z","key":1486735020000,"doc_count":12},{"key_as_string":"2017-02-10T13:58:00.000Z","key":1486735080000,"doc_count":14},{"key_as_string":"2017-02-10T13:59:00.000Z","key":1486735140000,"doc_count":13},{"key_as_string":"2017-02-10T14:00:00.000Z","key":1486735200000,"doc_count":16},{"key_as_string":"2017-02-10T14:01:00.000Z","key":1486735260000,"doc_count":9},{"key_as_string":"2017-02-10T14:02:00.000Z","key":1486735320000,"doc_count":20},{"key_as_string":"2017-02-10T14:03:00.000Z","key":1486735380000,"doc_count":15},{"key_as_string":"2017-02-10T14:04:00.000Z","key":1486735440000,"doc_count":13},{"key_as_string":"2017-02-10T14:05:00.000Z","key":1486735500000,"doc_count":10},{"key_as_string":"2017-02-10T14:06:00.000Z","key":1486735560000,"doc_count":11},{"key_as_string":"2017-02-10T14:07:00.000Z","key":1486735620000,"doc_count":9},{"key_as_string":"2017-02-10T14:08:00.000Z","key":1486735680000,"doc_count":15},{"key_as_string":"2017-02-10T14:09:00.000Z","key":1486735740000,"doc_count":17},{"key_as_string":"2017-02-10T14:10:00.000Z","key":1486735800000,"doc_count":13},{"key_as_string":"2017-02-10T14:11:00.000Z","key":1486735860000,"doc_count":15},{"key_as_string":"2017-02-10T14:12:00.000Z","key":1486735920000,"doc_count":10},{"key_as_string":"2017-02-10T14:13:00.000Z","key":1486735980000,"doc_count":12},{"key_as_string":"2017-02-10T14:14:00.000Z","key":1486736040000,"doc_count":15},{"key_as_string":"2017-02-10T14:15:00.000Z","key":1486736100000,"doc_count":13},{"key_as_string":"2017-02-10T14:16:00.000Z","key":1486736160000,"doc_count":13},{"key_as_string":"2017-02-10T14:17:00.000Z","key":1486736220000,"doc_count":15},{"key_as_string":"2017-02-10T14:18:00.000Z","key":1486736280000,"doc_count":14},{"key_as_string":"2017-02-10T14:19:00.000Z","key":1486736340000,"doc_count":9},{"key_as_string":"2017-02-10T14:20:00.000Z","key":1486736400000,"doc_count":15},{"key_as_string":"2017-02-10T14:21:00.000Z","key":1486736460000,"doc_count":12},{"key_as_string":"2017-02-10T14:22:00.000Z","key":1486736520000,"doc_count":12},{"key_as_string":"2017-02-10T14:23:00.000Z","key":1486736580000,"doc_count":16},{"key_as_string":"2017-02-10T14:24:00.000Z","key":1486736640000,"doc_count":4},{"key_as_string":"2017-02-10T14:25:00.000Z","key":1486736700000,"doc_count":12},{"key_as_string":"2017-02-10T14:26:00.000Z","key":1486736760000,"doc_count":15},{"key_as_string":"2017-02-10T14:27:00.000Z","key":1486736820000,"doc_count":17},{"key_as_string":"2017-02-10T14:28:00.000Z","key":1486736880000,"doc_count":15},{"key_as_string":"2017-02-10T14:29:00.000Z","key":1486736940000,"doc_count":13},{"key_as_string":"2017-02-10T14:30:00.000Z","key":1486737000000,"doc_count":9},{"key_as_string":"2017-02-10T14:31:00.000Z","key":1486737060000,"doc_count":17},{"key_as_string":"2017-02-10T14:32:00.000Z","key":1486737120000,"doc_count":14},{"key_as_string":"2017-02-10T14:33:00.000Z","key":1486737180000,"doc_count":11},{"key_as_string":"2017-02-10T14:34:00.000Z","key":1486737240000,"doc_count":10},{"key_as_string":"2017-02-10T14:35:00.000Z","key":1486737300000,"doc_count":10},{"key_as_string":"2017-02-10T14:36:00.000Z","key":1486737360000,"doc_count":12},{"key_as_string":"2017-02-10T14:37:00.000Z","key":1486737420000,"doc_count":14},{"key_as_string":"2017-02-10T14:38:00.000Z","key":1486737480000,"doc_count":15},{"key_as_string":"2017-02-10T14:39:00.000Z","key":1486737540000,"doc_count":8},{"key_as_string":"2017-02-10T14:40:00.000Z","key":1486737600000,"doc_count":15},{"key_as_string":"2017-02-10T14:41:00.000Z","key":1486737660000,"doc_count":10},{"key_as_string":"2017-02-10T14:42:00.000Z","key":1486737720000,"doc_count":14},{"key_as_string":"2017-02-10T14:43:00.000Z","key":1486737780000,"doc_count":11},{"key_as_string":"2017-02-10T14:44:00.000Z","key":1486737840000,"doc_count":12},{"key_as_string":"2017-02-10T14:45:00.000Z","key":1486737900000,"doc_count":18},{"key_as_string":"2017-02-10T14:46:00.000Z","key":1486737960000,"doc_count":12},{"key_as_string":"2017-02-10T14:47:00.000Z","key":1486738020000,"doc_count":14},{"key_as_string":"2017-02-10T14:48:00.000Z","key":1486738080000,"doc_count":13},{"key_as_string":"2017-02-10T14:49:00.000Z","key":1486738140000,"doc_count":9},{"key_as_string":"2017-02-10T14:50:00.000Z","key":1486738200000,"doc_count":20},{"key_as_string":"2017-02-10T14:51:00.000Z","key":1486738260000,"doc_count":11},{"key_as_string":"2017-02-10T14:52:00.000Z","key":1486738320000,"doc_count":9},{"key_as_string":"2017-02-10T14:53:00.000Z","key":1486738380000,"doc_count":14},{"key_as_string":"2017-02-10T14:54:00.000Z","key":1486738440000,"doc_count":15},{"key_as_string":"2017-02-10T14:55:00.000Z","key":1486738500000,"doc_count":13},{"key_as_string":"2017-02-10T14:56:00.000Z","key":1486738560000,"doc_count":12},{"key_as_string":"2017-02-10T14:57:00.000Z","key":1486738620000,"doc_count":15},{"key_as_string":"2017-02-10T14:58:00.000Z","key":1486738680000,"doc_count":9},{"key_as_string":"2017-02-10T14:59:00.000Z","key":1486738740000,"doc_count":12},{"key_as_string":"2017-02-10T15:00:00.000Z","key":1486738800000,"doc_count":15},{"key_as_string":"2017-02-10T15:01:00.000Z","key":1486738860000,"doc_count":11},{"key_as_string":"2017-02-10T15:02:00.000Z","key":1486738920000,"doc_count":14},{"key_as_string":"2017-02-10T15:03:00.000Z","key":1486738980000,"doc_count":11},{"key_as_string":"2017-02-10T15:04:00.000Z","key":1486739040000,"doc_count":12},{"key_as_string":"2017-02-10T15:05:00.000Z","key":1486739100000,"doc_count":11},{"key_as_string":"2017-02-10T15:06:00.000Z","key":1486739160000,"doc_count":17},{"key_as_string":"2017-02-10T15:07:00.000Z","key":1486739220000,"doc_count":12},{"key_as_string":"2017-02-10T15:08:00.000Z","key":1486739280000,"doc_count":10},{"key_as_string":"2017-02-10T15:09:00.000Z","key":1486739340000,"doc_count":19},{"key_as_string":"2017-02-10T15:10:00.000Z","key":1486739400000,"doc_count":10},{"key_as_string":"2017-02-10T15:11:00.000Z","key":1486739460000,"doc_count":10},{"key_as_string":"2017-02-10T15:12:00.000Z","key":1486739520000,"doc_count":18},{"key_as_string":"2017-02-10T15:13:00.000Z","key":1486739580000,"doc_count":14},{"key_as_string":"2017-02-10T15:14:00.000Z","key":1486739640000,"doc_count":11},{"key_as_string":"2017-02-10T15:15:00.000Z","key":1486739700000,"doc_count":16},{"key_as_string":"2017-02-10T15:16:00.000Z","key":1486739760000,"doc_count":13},{"key_as_string":"2017-02-10T15:17:00.000Z","key":1486739820000,"doc_count":20},{"key_as_string":"2017-02-10T15:18:00.000Z","key":1486739880000,"doc_count":10},{"key_as_string":"2017-02-10T15:19:00.000Z","key":1486739940000,"doc_count":16},{"key_as_string":"2017-02-10T15:20:00.000Z","key":1486740000000,"doc_count":15},{"key_as_string":"2017-02-10T15:21:00.000Z","key":1486740060000,"doc_count":16},{"key_as_string":"2017-02-10T15:22:00.000Z","key":1486740120000,"doc_count":20},{"key_as_string":"2017-02-10T15:23:00.000Z","key":1486740180000,"doc_count":12},{"key_as_string":"2017-02-10T15:24:00.000Z","key":1486740240000,"doc_count":15},{"key_as_string":"2017-02-10T15:25:00.000Z","key":1486740300000,"doc_count":12},{"key_as_string":"2017-02-10T15:26:00.000Z","key":1486740360000,"doc_count":16},{"key_as_string":"2017-02-10T15:27:00.000Z","key":1486740420000,"doc_count":14},{"key_as_string":"2017-02-10T15:28:00.000Z","key":1486740480000,"doc_count":12},{"key_as_string":"2017-02-10T15:29:00.000Z","key":1486740540000,"doc_count":10},{"key_as_string":"2017-02-10T15:30:00.000Z","key":1486740600000,"doc_count":16},{"key_as_string":"2017-02-10T15:31:00.000Z","key":1486740660000,"doc_count":13},{"key_as_string":"2017-02-10T15:32:00.000Z","key":1486740720000,"doc_count":14},{"key_as_string":"2017-02-10T15:33:00.000Z","key":1486740780000,"doc_count":11},{"key_as_string":"2017-02-10T15:34:00.000Z","key":1486740840000,"doc_count":12},{"key_as_string":"2017-02-10T15:35:00.000Z","key":1486740900000,"doc_count":12},{"key_as_string":"2017-02-10T15:36:00.000Z","key":1486740960000,"doc_count":11},{"key_as_string":"2017-02-10T15:37:00.000Z","key":1486741020000,"doc_count":13},{"key_as_string":"2017-02-10T15:38:00.000Z","key":1486741080000,"doc_count":11},{"key_as_string":"2017-02-10T15:39:00.000Z","key":1486741140000,"doc_count":11},{"key_as_string":"2017-02-10T15:40:00.000Z","key":1486741200000,"doc_count":12},{"key_as_string":"2017-02-10T15:41:00.000Z","key":1486741260000,"doc_count":16},{"key_as_string":"2017-02-10T15:42:00.000Z","key":1486741320000,"doc_count":15},{"key_as_string":"2017-02-10T15:43:00.000Z","key":1486741380000,"doc_count":15},{"key_as_string":"2017-02-10T15:44:00.000Z","key":1486741440000,"doc_count":15},{"key_as_string":"2017-02-10T15:45:00.000Z","key":1486741500000,"doc_count":15},{"key_as_string":"2017-02-10T15:46:00.000Z","key":1486741560000,"doc_count":11},{"key_as_string":"2017-02-10T15:47:00.000Z","key":1486741620000,"doc_count":14},{"key_as_string":"2017-02-10T15:48:00.000Z","key":1486741680000,"doc_count":15},{"key_as_string":"2017-02-10T15:49:00.000Z","key":1486741740000,"doc_count":12},{"key_as_string":"2017-02-10T15:50:00.000Z","key":1486741800000,"doc_count":12},{"key_as_string":"2017-02-10T15:51:00.000Z","key":1486741860000,"doc_count":12},{"key_as_string":"2017-02-10T15:52:00.000Z","key":1486741920000,"doc_count":19},{"key_as_string":"2017-02-10T15:53:00.000Z","key":1486741980000,"doc_count":14},{"key_as_string":"2017-02-10T15:54:00.000Z","key":1486742040000,"doc_count":18},{"key_as_string":"2017-02-10T15:55:00.000Z","key":1486742100000,"doc_count":11},{"key_as_string":"2017-02-10T15:56:00.000Z","key":1486742160000,"doc_count":16},{"key_as_string":"2017-02-10T15:57:00.000Z","key":1486742220000,"doc_count":11},{"key_as_string":"2017-02-10T15:58:00.000Z","key":1486742280000,"doc_count":10},{"key_as_string":"2017-02-10T15:59:00.000Z","key":1486742340000,"doc_count":12},{"key_as_string":"2017-02-10T16:00:00.000Z","key":1486742400000,"doc_count":16},{"key_as_string":"2017-02-10T16:01:00.000Z","key":1486742460000,"doc_count":12},{"key_as_string":"2017-02-10T16:02:00.000Z","key":1486742520000,"doc_count":16},{"key_as_string":"2017-02-10T16:03:00.000Z","key":1486742580000,"doc_count":11},{"key_as_string":"2017-02-10T16:04:00.000Z","key":1486742640000,"doc_count":13},{"key_as_string":"2017-02-10T16:05:00.000Z","key":1486742700000,"doc_count":15},{"key_as_string":"2017-02-10T16:06:00.000Z","key":1486742760000,"doc_count":13},{"key_as_string":"2017-02-10T16:07:00.000Z","key":1486742820000,"doc_count":14},{"key_as_string":"2017-02-10T16:08:00.000Z","key":1486742880000,"doc_count":16},{"key_as_string":"2017-02-10T16:09:00.000Z","key":1486742940000,"doc_count":8},{"key_as_string":"2017-02-10T16:10:00.000Z","key":1486743000000,"doc_count":13},{"key_as_string":"2017-02-10T16:11:00.000Z","key":1486743060000,"doc_count":13},{"key_as_string":"2017-02-10T16:12:00.000Z","key":1486743120000,"doc_count":15},{"key_as_string":"2017-02-10T16:13:00.000Z","key":1486743180000,"doc_count":20},{"key_as_string":"2017-02-10T16:14:00.000Z","key":1486743240000,"doc_count":12},{"key_as_string":"2017-02-10T16:15:00.000Z","key":1486743300000,"doc_count":10},{"key_as_string":"2017-02-10T16:16:00.000Z","key":1486743360000,"doc_count":12},{"key_as_string":"2017-02-10T16:17:00.000Z","key":1486743420000,"doc_count":12},{"key_as_string":"2017-02-10T16:18:00.000Z","key":1486743480000,"doc_count":15},{"key_as_string":"2017-02-10T16:19:00.000Z","key":1486743540000,"doc_count":11},{"key_as_string":"2017-02-10T16:20:00.000Z","key":1486743600000,"doc_count":10},{"key_as_string":"2017-02-10T16:21:00.000Z","key":1486743660000,"doc_count":13},{"key_as_string":"2017-02-10T16:22:00.000Z","key":1486743720000,"doc_count":12},{"key_as_string":"2017-02-10T16:23:00.000Z","key":1486743780000,"doc_count":15},{"key_as_string":"2017-02-10T16:24:00.000Z","key":1486743840000,"doc_count":17},{"key_as_string":"2017-02-10T16:25:00.000Z","key":1486743900000,"doc_count":12},{"key_as_string":"2017-02-10T16:26:00.000Z","key":1486743960000,"doc_count":13},{"key_as_string":"2017-02-10T16:27:00.000Z","key":1486744020000,"doc_count":11},{"key_as_string":"2017-02-10T16:28:00.000Z","key":1486744080000,"doc_count":8},{"key_as_string":"2017-02-10T16:29:00.000Z","key":1486744140000,"doc_count":14},{"key_as_string":"2017-02-10T16:30:00.000Z","key":1486744200000,"doc_count":12},{"key_as_string":"2017-02-10T16:31:00.000Z","key":1486744260000,"doc_count":12},{"key_as_string":"2017-02-10T16:32:00.000Z","key":1486744320000,"doc_count":12},{"key_as_string":"2017-02-10T16:33:00.000Z","key":1486744380000,"doc_count":8},{"key_as_string":"2017-02-10T16:34:00.000Z","key":1486744440000,"doc_count":18},{"key_as_string":"2017-02-10T16:35:00.000Z","key":1486744500000,"doc_count":14},{"key_as_string":"2017-02-10T16:36:00.000Z","key":1486744560000,"doc_count":12},{"key_as_string":"2017-02-10T16:37:00.000Z","key":1486744620000,"doc_count":10},{"key_as_string":"2017-02-10T16:38:00.000Z","key":1486744680000,"doc_count":19},{"key_as_string":"2017-02-10T16:39:00.000Z","key":1486744740000,"doc_count":8},{"key_as_string":"2017-02-10T16:40:00.000Z","key":1486744800000,"doc_count":12},{"key_as_string":"2017-02-10T16:41:00.000Z","key":1486744860000,"doc_count":16},{"key_as_string":"2017-02-10T16:42:00.000Z","key":1486744920000,"doc_count":11},{"key_as_string":"2017-02-10T16:43:00.000Z","key":1486744980000,"doc_count":15},{"key_as_string":"2017-02-10T16:44:00.000Z","key":1486745040000,"doc_count":9},{"key_as_string":"2017-02-10T16:45:00.000Z","key":1486745100000,"doc_count":15},{"key_as_string":"2017-02-10T16:46:00.000Z","key":1486745160000,"doc_count":11},{"key_as_string":"2017-02-10T16:47:00.000Z","key":1486745220000,"doc_count":16},{"key_as_string":"2017-02-10T16:48:00.000Z","key":1486745280000,"doc_count":17},{"key_as_string":"2017-02-10T16:49:00.000Z","key":1486745340000,"doc_count":10},{"key_as_string":"2017-02-10T16:50:00.000Z","key":1486745400000,"doc_count":11},{"key_as_string":"2017-02-10T16:51:00.000Z","key":1486745460000,"doc_count":13},{"key_as_string":"2017-02-10T16:52:00.000Z","key":1486745520000,"doc_count":7},{"key_as_string":"2017-02-10T16:53:00.000Z","key":1486745580000,"doc_count":13},{"key_as_string":"2017-02-10T16:54:00.000Z","key":1486745640000,"doc_count":12},{"key_as_string":"2017-02-10T16:55:00.000Z","key":1486745700000,"doc_count":18},{"key_as_string":"2017-02-10T16:56:00.000Z","key":1486745760000,"doc_count":6},{"key_as_string":"2017-02-10T16:57:00.000Z","key":1486745820000,"doc_count":11},{"key_as_string":"2017-02-10T16:58:00.000Z","key":1486745880000,"doc_count":10},{"key_as_string":"2017-02-10T16:59:00.000Z","key":1486745940000,"doc_count":12},{"key_as_string":"2017-02-10T17:00:00.000Z","key":1486746000000,"doc_count":13},{"key_as_string":"2017-02-10T17:01:00.000Z","key":1486746060000,"doc_count":9},{"key_as_string":"2017-02-10T17:02:00.000Z","key":1486746120000,"doc_count":14},{"key_as_string":"2017-02-10T17:03:00.000Z","key":1486746180000,"doc_count":13},{"key_as_string":"2017-02-10T17:04:00.000Z","key":1486746240000,"doc_count":12},{"key_as_string":"2017-02-10T17:05:00.000Z","key":1486746300000,"doc_count":9},{"key_as_string":"2017-02-10T17:06:00.000Z","key":1486746360000,"doc_count":14},{"key_as_string":"2017-02-10T17:07:00.000Z","key":1486746420000,"doc_count":15},{"key_as_string":"2017-02-10T17:08:00.000Z","key":1486746480000,"doc_count":11},{"key_as_string":"2017-02-10T17:09:00.000Z","key":1486746540000,"doc_count":8},{"key_as_string":"2017-02-10T17:10:00.000Z","key":1486746600000,"doc_count":9},{"key_as_string":"2017-02-10T17:11:00.000Z","key":1486746660000,"doc_count":12},{"key_as_string":"2017-02-10T17:12:00.000Z","key":1486746720000,"doc_count":15},{"key_as_string":"2017-02-10T17:13:00.000Z","key":1486746780000,"doc_count":13},{"key_as_string":"2017-02-10T17:14:00.000Z","key":1486746840000,"doc_count":14},{"key_as_string":"2017-02-10T17:15:00.000Z","key":1486746900000,"doc_count":10},{"key_as_string":"2017-02-10T17:16:00.000Z","key":1486746960000,"doc_count":12},{"key_as_string":"2017-02-10T17:17:00.000Z","key":1486747020000,"doc_count":10},{"key_as_string":"2017-02-10T17:18:00.000Z","key":1486747080000,"doc_count":14},{"key_as_string":"2017-02-10T17:19:00.000Z","key":1486747140000,"doc_count":7},{"key_as_string":"2017-02-10T17:20:00.000Z","key":1486747200000,"doc_count":9},{"key_as_string":"2017-02-10T17:21:00.000Z","key":1486747260000,"doc_count":10},{"key_as_string":"2017-02-10T17:22:00.000Z","key":1486747320000,"doc_count":13},{"key_as_string":"2017-02-10T17:23:00.000Z","key":1486747380000,"doc_count":16},{"key_as_string":"2017-02-10T17:24:00.000Z","key":1486747440000,"doc_count":11},{"key_as_string":"2017-02-10T17:25:00.000Z","key":1486747500000,"doc_count":14},{"key_as_string":"2017-02-10T17:26:00.000Z","key":1486747560000,"doc_count":12},{"key_as_string":"2017-02-10T17:27:00.000Z","key":1486747620000,"doc_count":12},{"key_as_string":"2017-02-10T17:28:00.000Z","key":1486747680000,"doc_count":9},{"key_as_string":"2017-02-10T17:29:00.000Z","key":1486747740000,"doc_count":16},{"key_as_string":"2017-02-10T17:30:00.000Z","key":1486747800000,"doc_count":14},{"key_as_string":"2017-02-10T17:31:00.000Z","key":1486747860000,"doc_count":10},{"key_as_string":"2017-02-10T17:32:00.000Z","key":1486747920000,"doc_count":8},{"key_as_string":"2017-02-10T17:33:00.000Z","key":1486747980000,"doc_count":9},{"key_as_string":"2017-02-10T17:34:00.000Z","key":1486748040000,"doc_count":15},{"key_as_string":"2017-02-10T17:35:00.000Z","key":1486748100000,"doc_count":9},{"key_as_string":"2017-02-10T17:36:00.000Z","key":1486748160000,"doc_count":13},{"key_as_string":"2017-02-10T17:37:00.000Z","key":1486748220000,"doc_count":9},{"key_as_string":"2017-02-10T17:38:00.000Z","key":1486748280000,"doc_count":7},{"key_as_string":"2017-02-10T17:39:00.000Z","key":1486748340000,"doc_count":18},{"key_as_string":"2017-02-10T17:40:00.000Z","key":1486748400000,"doc_count":14},{"key_as_string":"2017-02-10T17:41:00.000Z","key":1486748460000,"doc_count":9},{"key_as_string":"2017-02-10T17:42:00.000Z","key":1486748520000,"doc_count":12},{"key_as_string":"2017-02-10T17:43:00.000Z","key":1486748580000,"doc_count":9},{"key_as_string":"2017-02-10T17:44:00.000Z","key":1486748640000,"doc_count":14},{"key_as_string":"2017-02-10T17:45:00.000Z","key":1486748700000,"doc_count":11},{"key_as_string":"2017-02-10T17:46:00.000Z","key":1486748760000,"doc_count":11},{"key_as_string":"2017-02-10T17:47:00.000Z","key":1486748820000,"doc_count":12},{"key_as_string":"2017-02-10T17:48:00.000Z","key":1486748880000,"doc_count":16},{"key_as_string":"2017-02-10T17:49:00.000Z","key":1486748940000,"doc_count":10},{"key_as_string":"2017-02-10T17:50:00.000Z","key":1486749000000,"doc_count":14},{"key_as_string":"2017-02-10T17:51:00.000Z","key":1486749060000,"doc_count":8},{"key_as_string":"2017-02-10T17:52:00.000Z","key":1486749120000,"doc_count":16},{"key_as_string":"2017-02-10T17:53:00.000Z","key":1486749180000,"doc_count":9},{"key_as_string":"2017-02-10T17:54:00.000Z","key":1486749240000,"doc_count":11},{"key_as_string":"2017-02-10T17:55:00.000Z","key":1486749300000,"doc_count":9},{"key_as_string":"2017-02-10T17:56:00.000Z","key":1486749360000,"doc_count":12},{"key_as_string":"2017-02-10T17:57:00.000Z","key":1486749420000,"doc_count":13},{"key_as_string":"2017-02-10T17:58:00.000Z","key":1486749480000,"doc_count":12},{"key_as_string":"2017-02-10T17:59:00.000Z","key":1486749540000,"doc_count":15},{"key_as_string":"2017-02-10T18:00:00.000Z","key":1486749600000,"doc_count":10},{"key_as_string":"2017-02-10T18:01:00.000Z","key":1486749660000,"doc_count":10},{"key_as_string":"2017-02-10T18:02:00.000Z","key":1486749720000,"doc_count":10},{"key_as_string":"2017-02-10T18:03:00.000Z","key":1486749780000,"doc_count":9},{"key_as_string":"2017-02-10T18:04:00.000Z","key":1486749840000,"doc_count":12},{"key_as_string":"2017-02-10T18:05:00.000Z","key":1486749900000,"doc_count":14},{"key_as_string":"2017-02-10T18:06:00.000Z","key":1486749960000,"doc_count":16},{"key_as_string":"2017-02-10T18:07:00.000Z","key":1486750020000,"doc_count":12},{"key_as_string":"2017-02-10T18:08:00.000Z","key":1486750080000,"doc_count":10},{"key_as_string":"2017-02-10T18:09:00.000Z","key":1486750140000,"doc_count":11},{"key_as_string":"2017-02-10T18:10:00.000Z","key":1486750200000,"doc_count":12},{"key_as_string":"2017-02-10T18:11:00.000Z","key":1486750260000,"doc_count":10},{"key_as_string":"2017-02-10T18:12:00.000Z","key":1486750320000,"doc_count":13},{"key_as_string":"2017-02-10T18:13:00.000Z","key":1486750380000,"doc_count":12},{"key_as_string":"2017-02-10T18:14:00.000Z","key":1486750440000,"doc_count":14},{"key_as_string":"2017-02-10T18:15:00.000Z","key":1486750500000,"doc_count":11},{"key_as_string":"2017-02-10T18:16:00.000Z","key":1486750560000,"doc_count":12},{"key_as_string":"2017-02-10T18:17:00.000Z","key":1486750620000,"doc_count":10},{"key_as_string":"2017-02-10T18:18:00.000Z","key":1486750680000,"doc_count":9},{"key_as_string":"2017-02-10T18:19:00.000Z","key":1486750740000,"doc_count":14},{"key_as_string":"2017-02-10T18:20:00.000Z","key":1486750800000,"doc_count":6},{"key_as_string":"2017-02-10T18:21:00.000Z","key":1486750860000,"doc_count":13},{"key_as_string":"2017-02-10T18:22:00.000Z","key":1486750920000,"doc_count":14},{"key_as_string":"2017-02-10T18:23:00.000Z","key":1486750980000,"doc_count":9},{"key_as_string":"2017-02-10T18:24:00.000Z","key":1486751040000,"doc_count":9},{"key_as_string":"2017-02-10T18:25:00.000Z","key":1486751100000,"doc_count":10},{"key_as_string":"2017-02-10T18:26:00.000Z","key":1486751160000,"doc_count":9},{"key_as_string":"2017-02-10T18:27:00.000Z","key":1486751220000,"doc_count":12},{"key_as_string":"2017-02-10T18:28:00.000Z","key":1486751280000,"doc_count":7},{"key_as_string":"2017-02-10T18:29:00.000Z","key":1486751340000,"doc_count":12},{"key_as_string":"2017-02-10T18:30:00.000Z","key":1486751400000,"doc_count":13},{"key_as_string":"2017-02-10T18:31:00.000Z","key":1486751460000,"doc_count":11},{"key_as_string":"2017-02-10T18:32:00.000Z","key":1486751520000,"doc_count":13},{"key_as_string":"2017-02-10T18:33:00.000Z","key":1486751580000,"doc_count":4},{"key_as_string":"2017-02-10T18:34:00.000Z","key":1486751640000,"doc_count":12},{"key_as_string":"2017-02-10T18:35:00.000Z","key":1486751700000,"doc_count":12},{"key_as_string":"2017-02-10T18:36:00.000Z","key":1486751760000,"doc_count":9},{"key_as_string":"2017-02-10T18:37:00.000Z","key":1486751820000,"doc_count":14},{"key_as_string":"2017-02-10T18:38:00.000Z","key":1486751880000,"doc_count":9},{"key_as_string":"2017-02-10T18:39:00.000Z","key":1486751940000,"doc_count":12},{"key_as_string":"2017-02-10T18:40:00.000Z","key":1486752000000,"doc_count":10},{"key_as_string":"2017-02-10T18:41:00.000Z","key":1486752060000,"doc_count":15},{"key_as_string":"2017-02-10T18:42:00.000Z","key":1486752120000,"doc_count":13},{"key_as_string":"2017-02-10T18:43:00.000Z","key":1486752180000,"doc_count":16},{"key_as_string":"2017-02-10T18:44:00.000Z","key":1486752240000,"doc_count":12},{"key_as_string":"2017-02-10T18:45:00.000Z","key":1486752300000,"doc_count":11},{"key_as_string":"2017-02-10T18:46:00.000Z","key":1486752360000,"doc_count":13},{"key_as_string":"2017-02-10T18:47:00.000Z","key":1486752420000,"doc_count":15},{"key_as_string":"2017-02-10T18:48:00.000Z","key":1486752480000,"doc_count":6},{"key_as_string":"2017-02-10T18:49:00.000Z","key":1486752540000,"doc_count":9},{"key_as_string":"2017-02-10T18:50:00.000Z","key":1486752600000,"doc_count":19},{"key_as_string":"2017-02-10T18:51:00.000Z","key":1486752660000,"doc_count":11},{"key_as_string":"2017-02-10T18:52:00.000Z","key":1486752720000,"doc_count":11},{"key_as_string":"2017-02-10T18:53:00.000Z","key":1486752780000,"doc_count":11},{"key_as_string":"2017-02-10T18:54:00.000Z","key":1486752840000,"doc_count":12},{"key_as_string":"2017-02-10T18:55:00.000Z","key":1486752900000,"doc_count":11},{"key_as_string":"2017-02-10T18:56:00.000Z","key":1486752960000,"doc_count":12},{"key_as_string":"2017-02-10T18:57:00.000Z","key":1486753020000,"doc_count":11},{"key_as_string":"2017-02-10T18:58:00.000Z","key":1486753080000,"doc_count":13},{"key_as_string":"2017-02-10T18:59:00.000Z","key":1486753140000,"doc_count":12},{"key_as_string":"2017-02-10T19:00:00.000Z","key":1486753200000,"doc_count":10},{"key_as_string":"2017-02-10T19:01:00.000Z","key":1486753260000,"doc_count":7},{"key_as_string":"2017-02-10T19:02:00.000Z","key":1486753320000,"doc_count":15},{"key_as_string":"2017-02-10T19:03:00.000Z","key":1486753380000,"doc_count":10},{"key_as_string":"2017-02-10T19:04:00.000Z","key":1486753440000,"doc_count":11},{"key_as_string":"2017-02-10T19:05:00.000Z","key":1486753500000,"doc_count":10},{"key_as_string":"2017-02-10T19:06:00.000Z","key":1486753560000,"doc_count":15},{"key_as_string":"2017-02-10T19:07:00.000Z","key":1486753620000,"doc_count":12},{"key_as_string":"2017-02-10T19:08:00.000Z","key":1486753680000,"doc_count":7},{"key_as_string":"2017-02-10T19:09:00.000Z","key":1486753740000,"doc_count":11},{"key_as_string":"2017-02-10T19:10:00.000Z","key":1486753800000,"doc_count":9},{"key_as_string":"2017-02-10T19:11:00.000Z","key":1486753860000,"doc_count":11},{"key_as_string":"2017-02-10T19:12:00.000Z","key":1486753920000,"doc_count":10},{"key_as_string":"2017-02-10T19:13:00.000Z","key":1486753980000,"doc_count":11},{"key_as_string":"2017-02-10T19:14:00.000Z","key":1486754040000,"doc_count":14},{"key_as_string":"2017-02-10T19:15:00.000Z","key":1486754100000,"doc_count":10},{"key_as_string":"2017-02-10T19:16:00.000Z","key":1486754160000,"doc_count":12},{"key_as_string":"2017-02-10T19:17:00.000Z","key":1486754220000,"doc_count":12},{"key_as_string":"2017-02-10T19:18:00.000Z","key":1486754280000,"doc_count":11},{"key_as_string":"2017-02-10T19:19:00.000Z","key":1486754340000,"doc_count":11},{"key_as_string":"2017-02-10T19:20:00.000Z","key":1486754400000,"doc_count":10},{"key_as_string":"2017-02-10T19:21:00.000Z","key":1486754460000,"doc_count":15},{"key_as_string":"2017-02-10T19:22:00.000Z","key":1486754520000,"doc_count":8},{"key_as_string":"2017-02-10T19:23:00.000Z","key":1486754580000,"doc_count":7},{"key_as_string":"2017-02-10T19:24:00.000Z","key":1486754640000,"doc_count":20},{"key_as_string":"2017-02-10T19:25:00.000Z","key":1486754700000,"doc_count":10},{"key_as_string":"2017-02-10T19:26:00.000Z","key":1486754760000,"doc_count":9},{"key_as_string":"2017-02-10T19:27:00.000Z","key":1486754820000,"doc_count":13},{"key_as_string":"2017-02-10T19:28:00.000Z","key":1486754880000,"doc_count":12},{"key_as_string":"2017-02-10T19:29:00.000Z","key":1486754940000,"doc_count":10},{"key_as_string":"2017-02-10T19:30:00.000Z","key":1486755000000,"doc_count":11},{"key_as_string":"2017-02-10T19:31:00.000Z","key":1486755060000,"doc_count":10},{"key_as_string":"2017-02-10T19:32:00.000Z","key":1486755120000,"doc_count":10},{"key_as_string":"2017-02-10T19:33:00.000Z","key":1486755180000,"doc_count":11},{"key_as_string":"2017-02-10T19:34:00.000Z","key":1486755240000,"doc_count":12},{"key_as_string":"2017-02-10T19:35:00.000Z","key":1486755300000,"doc_count":8},{"key_as_string":"2017-02-10T19:36:00.000Z","key":1486755360000,"doc_count":10},{"key_as_string":"2017-02-10T19:37:00.000Z","key":1486755420000,"doc_count":13},{"key_as_string":"2017-02-10T19:38:00.000Z","key":1486755480000,"doc_count":11},{"key_as_string":"2017-02-10T19:39:00.000Z","key":1486755540000,"doc_count":7},{"key_as_string":"2017-02-10T19:40:00.000Z","key":1486755600000,"doc_count":17},{"key_as_string":"2017-02-10T19:41:00.000Z","key":1486755660000,"doc_count":8},{"key_as_string":"2017-02-10T19:42:00.000Z","key":1486755720000,"doc_count":15},{"key_as_string":"2017-02-10T19:43:00.000Z","key":1486755780000,"doc_count":11},{"key_as_string":"2017-02-10T19:44:00.000Z","key":1486755840000,"doc_count":11},{"key_as_string":"2017-02-10T19:45:00.000Z","key":1486755900000,"doc_count":8},{"key_as_string":"2017-02-10T19:46:00.000Z","key":1486755960000,"doc_count":8},{"key_as_string":"2017-02-10T19:47:00.000Z","key":1486756020000,"doc_count":15},{"key_as_string":"2017-02-10T19:48:00.000Z","key":1486756080000,"doc_count":15},{"key_as_string":"2017-02-10T19:49:00.000Z","key":1486756140000,"doc_count":11},{"key_as_string":"2017-02-10T19:50:00.000Z","key":1486756200000,"doc_count":15},{"key_as_string":"2017-02-10T19:51:00.000Z","key":1486756260000,"doc_count":9},{"key_as_string":"2017-02-10T19:52:00.000Z","key":1486756320000,"doc_count":10},{"key_as_string":"2017-02-10T19:53:00.000Z","key":1486756380000,"doc_count":9},{"key_as_string":"2017-02-10T19:54:00.000Z","key":1486756440000,"doc_count":12},{"key_as_string":"2017-02-10T19:55:00.000Z","key":1486756500000,"doc_count":9},{"key_as_string":"2017-02-10T19:56:00.000Z","key":1486756560000,"doc_count":13},{"key_as_string":"2017-02-10T19:57:00.000Z","key":1486756620000,"doc_count":12},{"key_as_string":"2017-02-10T19:58:00.000Z","key":1486756680000,"doc_count":10},{"key_as_string":"2017-02-10T19:59:00.000Z","key":1486756740000,"doc_count":7},{"key_as_string":"2017-02-10T20:00:00.000Z","key":1486756800000,"doc_count":12},{"key_as_string":"2017-02-10T20:01:00.000Z","key":1486756860000,"doc_count":12},{"key_as_string":"2017-02-10T20:02:00.000Z","key":1486756920000,"doc_count":12},{"key_as_string":"2017-02-10T20:03:00.000Z","key":1486756980000,"doc_count":8},{"key_as_string":"2017-02-10T20:04:00.000Z","key":1486757040000,"doc_count":20},{"key_as_string":"2017-02-10T20:05:00.000Z","key":1486757100000,"doc_count":7},{"key_as_string":"2017-02-10T20:06:00.000Z","key":1486757160000,"doc_count":16},{"key_as_string":"2017-02-10T20:07:00.000Z","key":1486757220000,"doc_count":13},{"key_as_string":"2017-02-10T20:08:00.000Z","key":1486757280000,"doc_count":9},{"key_as_string":"2017-02-10T20:09:00.000Z","key":1486757340000,"doc_count":12},{"key_as_string":"2017-02-10T20:10:00.000Z","key":1486757400000,"doc_count":7},{"key_as_string":"2017-02-10T20:11:00.000Z","key":1486757460000,"doc_count":8},{"key_as_string":"2017-02-10T20:12:00.000Z","key":1486757520000,"doc_count":10},{"key_as_string":"2017-02-10T20:13:00.000Z","key":1486757580000,"doc_count":8},{"key_as_string":"2017-02-10T20:14:00.000Z","key":1486757640000,"doc_count":17},{"key_as_string":"2017-02-10T20:15:00.000Z","key":1486757700000,"doc_count":11},{"key_as_string":"2017-02-10T20:16:00.000Z","key":1486757760000,"doc_count":12},{"key_as_string":"2017-02-10T20:17:00.000Z","key":1486757820000,"doc_count":12},{"key_as_string":"2017-02-10T20:18:00.000Z","key":1486757880000,"doc_count":12},{"key_as_string":"2017-02-10T20:19:00.000Z","key":1486757940000,"doc_count":15},{"key_as_string":"2017-02-10T20:20:00.000Z","key":1486758000000,"doc_count":7},{"key_as_string":"2017-02-10T20:21:00.000Z","key":1486758060000,"doc_count":11},{"key_as_string":"2017-02-10T20:22:00.000Z","key":1486758120000,"doc_count":10},{"key_as_string":"2017-02-10T20:23:00.000Z","key":1486758180000,"doc_count":14},{"key_as_string":"2017-02-10T20:24:00.000Z","key":1486758240000,"doc_count":11},{"key_as_string":"2017-02-10T20:25:00.000Z","key":1486758300000,"doc_count":9},{"key_as_string":"2017-02-10T20:26:00.000Z","key":1486758360000,"doc_count":7},{"key_as_string":"2017-02-10T20:27:00.000Z","key":1486758420000,"doc_count":10},{"key_as_string":"2017-02-10T20:28:00.000Z","key":1486758480000,"doc_count":14},{"key_as_string":"2017-02-10T20:29:00.000Z","key":1486758540000,"doc_count":12},{"key_as_string":"2017-02-10T20:30:00.000Z","key":1486758600000,"doc_count":10},{"key_as_string":"2017-02-10T20:31:00.000Z","key":1486758660000,"doc_count":11},{"key_as_string":"2017-02-10T20:32:00.000Z","key":1486758720000,"doc_count":12},{"key_as_string":"2017-02-10T20:33:00.000Z","key":1486758780000,"doc_count":15},{"key_as_string":"2017-02-10T20:34:00.000Z","key":1486758840000,"doc_count":12},{"key_as_string":"2017-02-10T20:35:00.000Z","key":1486758900000,"doc_count":14},{"key_as_string":"2017-02-10T20:36:00.000Z","key":1486758960000,"doc_count":6},{"key_as_string":"2017-02-10T20:37:00.000Z","key":1486759020000,"doc_count":11},{"key_as_string":"2017-02-10T20:38:00.000Z","key":1486759080000,"doc_count":15},{"key_as_string":"2017-02-10T20:39:00.000Z","key":1486759140000,"doc_count":11},{"key_as_string":"2017-02-10T20:40:00.000Z","key":1486759200000,"doc_count":10},{"key_as_string":"2017-02-10T20:41:00.000Z","key":1486759260000,"doc_count":10},{"key_as_string":"2017-02-10T20:42:00.000Z","key":1486759320000,"doc_count":8},{"key_as_string":"2017-02-10T20:43:00.000Z","key":1486759380000,"doc_count":10},{"key_as_string":"2017-02-10T20:44:00.000Z","key":1486759440000,"doc_count":10},{"key_as_string":"2017-02-10T20:45:00.000Z","key":1486759500000,"doc_count":9},{"key_as_string":"2017-02-10T20:46:00.000Z","key":1486759560000,"doc_count":12},{"key_as_string":"2017-02-10T20:47:00.000Z","key":1486759620000,"doc_count":11},{"key_as_string":"2017-02-10T20:48:00.000Z","key":1486759680000,"doc_count":13},{"key_as_string":"2017-02-10T20:49:00.000Z","key":1486759740000,"doc_count":8},{"key_as_string":"2017-02-10T20:50:00.000Z","key":1486759800000,"doc_count":10},{"key_as_string":"2017-02-10T20:51:00.000Z","key":1486759860000,"doc_count":10},{"key_as_string":"2017-02-10T20:52:00.000Z","key":1486759920000,"doc_count":14},{"key_as_string":"2017-02-10T20:53:00.000Z","key":1486759980000,"doc_count":10},{"key_as_string":"2017-02-10T20:54:00.000Z","key":1486760040000,"doc_count":17},{"key_as_string":"2017-02-10T20:55:00.000Z","key":1486760100000,"doc_count":8},{"key_as_string":"2017-02-10T20:56:00.000Z","key":1486760160000,"doc_count":10},{"key_as_string":"2017-02-10T20:57:00.000Z","key":1486760220000,"doc_count":11},{"key_as_string":"2017-02-10T20:58:00.000Z","key":1486760280000,"doc_count":9},{"key_as_string":"2017-02-10T20:59:00.000Z","key":1486760340000,"doc_count":14},{"key_as_string":"2017-02-10T21:00:00.000Z","key":1486760400000,"doc_count":11},{"key_as_string":"2017-02-10T21:01:00.000Z","key":1486760460000,"doc_count":13},{"key_as_string":"2017-02-10T21:02:00.000Z","key":1486760520000,"doc_count":8},{"key_as_string":"2017-02-10T21:03:00.000Z","key":1486760580000,"doc_count":13},{"key_as_string":"2017-02-10T21:04:00.000Z","key":1486760640000,"doc_count":10},{"key_as_string":"2017-02-10T21:05:00.000Z","key":1486760700000,"doc_count":11},{"key_as_string":"2017-02-10T21:06:00.000Z","key":1486760760000,"doc_count":5},{"key_as_string":"2017-02-10T21:07:00.000Z","key":1486760820000,"doc_count":11},{"key_as_string":"2017-02-10T21:08:00.000Z","key":1486760880000,"doc_count":12},{"key_as_string":"2017-02-10T21:09:00.000Z","key":1486760940000,"doc_count":7},{"key_as_string":"2017-02-10T21:10:00.000Z","key":1486761000000,"doc_count":13},{"key_as_string":"2017-02-10T21:11:00.000Z","key":1486761060000,"doc_count":10},{"key_as_string":"2017-02-10T21:12:00.000Z","key":1486761120000,"doc_count":13},{"key_as_string":"2017-02-10T21:13:00.000Z","key":1486761180000,"doc_count":11},{"key_as_string":"2017-02-10T21:14:00.000Z","key":1486761240000,"doc_count":11},{"key_as_string":"2017-02-10T21:15:00.000Z","key":1486761300000,"doc_count":9},{"key_as_string":"2017-02-10T21:16:00.000Z","key":1486761360000,"doc_count":13},{"key_as_string":"2017-02-10T21:17:00.000Z","key":1486761420000,"doc_count":10},{"key_as_string":"2017-02-10T21:18:00.000Z","key":1486761480000,"doc_count":12},{"key_as_string":"2017-02-10T21:19:00.000Z","key":1486761540000,"doc_count":8},{"key_as_string":"2017-02-10T21:20:00.000Z","key":1486761600000,"doc_count":11},{"key_as_string":"2017-02-10T21:21:00.000Z","key":1486761660000,"doc_count":13},{"key_as_string":"2017-02-10T21:22:00.000Z","key":1486761720000,"doc_count":9},{"key_as_string":"2017-02-10T21:23:00.000Z","key":1486761780000,"doc_count":13},{"key_as_string":"2017-02-10T21:24:00.000Z","key":1486761840000,"doc_count":8},{"key_as_string":"2017-02-10T21:25:00.000Z","key":1486761900000,"doc_count":8},{"key_as_string":"2017-02-10T21:26:00.000Z","key":1486761960000,"doc_count":12},{"key_as_string":"2017-02-10T21:27:00.000Z","key":1486762020000,"doc_count":10},{"key_as_string":"2017-02-10T21:28:00.000Z","key":1486762080000,"doc_count":16},{"key_as_string":"2017-02-10T21:29:00.000Z","key":1486762140000,"doc_count":7},{"key_as_string":"2017-02-10T21:30:00.000Z","key":1486762200000,"doc_count":10},{"key_as_string":"2017-02-10T21:31:00.000Z","key":1486762260000,"doc_count":16},{"key_as_string":"2017-02-10T21:32:00.000Z","key":1486762320000,"doc_count":14},{"key_as_string":"2017-02-10T21:33:00.000Z","key":1486762380000,"doc_count":6},{"key_as_string":"2017-02-10T21:34:00.000Z","key":1486762440000,"doc_count":9},{"key_as_string":"2017-02-10T21:35:00.000Z","key":1486762500000,"doc_count":11},{"key_as_string":"2017-02-10T21:36:00.000Z","key":1486762560000,"doc_count":12},{"key_as_string":"2017-02-10T21:37:00.000Z","key":1486762620000,"doc_count":16},{"key_as_string":"2017-02-10T21:38:00.000Z","key":1486762680000,"doc_count":11},{"key_as_string":"2017-02-10T21:39:00.000Z","key":1486762740000,"doc_count":10},{"key_as_string":"2017-02-10T21:40:00.000Z","key":1486762800000,"doc_count":11},{"key_as_string":"2017-02-10T21:41:00.000Z","key":1486762860000,"doc_count":11},{"key_as_string":"2017-02-10T21:42:00.000Z","key":1486762920000,"doc_count":13},{"key_as_string":"2017-02-10T21:43:00.000Z","key":1486762980000,"doc_count":11},{"key_as_string":"2017-02-10T21:44:00.000Z","key":1486763040000,"doc_count":14},{"key_as_string":"2017-02-10T21:45:00.000Z","key":1486763100000,"doc_count":9},{"key_as_string":"2017-02-10T21:46:00.000Z","key":1486763160000,"doc_count":9},{"key_as_string":"2017-02-10T21:47:00.000Z","key":1486763220000,"doc_count":16},{"key_as_string":"2017-02-10T21:48:00.000Z","key":1486763280000,"doc_count":6},{"key_as_string":"2017-02-10T21:49:00.000Z","key":1486763340000,"doc_count":12},{"key_as_string":"2017-02-10T21:50:00.000Z","key":1486763400000,"doc_count":10},{"key_as_string":"2017-02-10T21:51:00.000Z","key":1486763460000,"doc_count":11},{"key_as_string":"2017-02-10T21:52:00.000Z","key":1486763520000,"doc_count":11},{"key_as_string":"2017-02-10T21:53:00.000Z","key":1486763580000,"doc_count":12},{"key_as_string":"2017-02-10T21:54:00.000Z","key":1486763640000,"doc_count":15},{"key_as_string":"2017-02-10T21:55:00.000Z","key":1486763700000,"doc_count":12},{"key_as_string":"2017-02-10T21:56:00.000Z","key":1486763760000,"doc_count":9},{"key_as_string":"2017-02-10T21:57:00.000Z","key":1486763820000,"doc_count":13},{"key_as_string":"2017-02-10T21:58:00.000Z","key":1486763880000,"doc_count":8},{"key_as_string":"2017-02-10T21:59:00.000Z","key":1486763940000,"doc_count":9},{"key_as_string":"2017-02-10T22:00:00.000Z","key":1486764000000,"doc_count":20},{"key_as_string":"2017-02-10T22:01:00.000Z","key":1486764060000,"doc_count":11},{"key_as_string":"2017-02-10T22:02:00.000Z","key":1486764120000,"doc_count":14},{"key_as_string":"2017-02-10T22:03:00.000Z","key":1486764180000,"doc_count":8},{"key_as_string":"2017-02-10T22:04:00.000Z","key":1486764240000,"doc_count":13},{"key_as_string":"2017-02-10T22:05:00.000Z","key":1486764300000,"doc_count":8},{"key_as_string":"2017-02-10T22:06:00.000Z","key":1486764360000,"doc_count":14},{"key_as_string":"2017-02-10T22:07:00.000Z","key":1486764420000,"doc_count":9},{"key_as_string":"2017-02-10T22:08:00.000Z","key":1486764480000,"doc_count":8},{"key_as_string":"2017-02-10T22:09:00.000Z","key":1486764540000,"doc_count":10},{"key_as_string":"2017-02-10T22:10:00.000Z","key":1486764600000,"doc_count":18},{"key_as_string":"2017-02-10T22:11:00.000Z","key":1486764660000,"doc_count":8},{"key_as_string":"2017-02-10T22:12:00.000Z","key":1486764720000,"doc_count":9},{"key_as_string":"2017-02-10T22:13:00.000Z","key":1486764780000,"doc_count":13},{"key_as_string":"2017-02-10T22:14:00.000Z","key":1486764840000,"doc_count":9},{"key_as_string":"2017-02-10T22:15:00.000Z","key":1486764900000,"doc_count":12},{"key_as_string":"2017-02-10T22:16:00.000Z","key":1486764960000,"doc_count":7},{"key_as_string":"2017-02-10T22:17:00.000Z","key":1486765020000,"doc_count":11},{"key_as_string":"2017-02-10T22:18:00.000Z","key":1486765080000,"doc_count":9},{"key_as_string":"2017-02-10T22:19:00.000Z","key":1486765140000,"doc_count":6},{"key_as_string":"2017-02-10T22:20:00.000Z","key":1486765200000,"doc_count":10},{"key_as_string":"2017-02-10T22:21:00.000Z","key":1486765260000,"doc_count":9},{"key_as_string":"2017-02-10T22:22:00.000Z","key":1486765320000,"doc_count":12},{"key_as_string":"2017-02-10T22:23:00.000Z","key":1486765380000,"doc_count":13},{"key_as_string":"2017-02-10T22:24:00.000Z","key":1486765440000,"doc_count":12},{"key_as_string":"2017-02-10T22:25:00.000Z","key":1486765500000,"doc_count":9},{"key_as_string":"2017-02-10T22:26:00.000Z","key":1486765560000,"doc_count":17},{"key_as_string":"2017-02-10T22:27:00.000Z","key":1486765620000,"doc_count":8},{"key_as_string":"2017-02-10T22:28:00.000Z","key":1486765680000,"doc_count":15},{"key_as_string":"2017-02-10T22:29:00.000Z","key":1486765740000,"doc_count":10},{"key_as_string":"2017-02-10T22:30:00.000Z","key":1486765800000,"doc_count":7},{"key_as_string":"2017-02-10T22:31:00.000Z","key":1486765860000,"doc_count":15},{"key_as_string":"2017-02-10T22:32:00.000Z","key":1486765920000,"doc_count":8},{"key_as_string":"2017-02-10T22:33:00.000Z","key":1486765980000,"doc_count":10},{"key_as_string":"2017-02-10T22:34:00.000Z","key":1486766040000,"doc_count":13},{"key_as_string":"2017-02-10T22:35:00.000Z","key":1486766100000,"doc_count":12},{"key_as_string":"2017-02-10T22:36:00.000Z","key":1486766160000,"doc_count":10},{"key_as_string":"2017-02-10T22:37:00.000Z","key":1486766220000,"doc_count":13},{"key_as_string":"2017-02-10T22:38:00.000Z","key":1486766280000,"doc_count":8},{"key_as_string":"2017-02-10T22:39:00.000Z","key":1486766340000,"doc_count":14},{"key_as_string":"2017-02-10T22:40:00.000Z","key":1486766400000,"doc_count":14},{"key_as_string":"2017-02-10T22:41:00.000Z","key":1486766460000,"doc_count":13},{"key_as_string":"2017-02-10T22:42:00.000Z","key":1486766520000,"doc_count":9},{"key_as_string":"2017-02-10T22:43:00.000Z","key":1486766580000,"doc_count":11},{"key_as_string":"2017-02-10T22:44:00.000Z","key":1486766640000,"doc_count":12},{"key_as_string":"2017-02-10T22:45:00.000Z","key":1486766700000,"doc_count":11},{"key_as_string":"2017-02-10T22:46:00.000Z","key":1486766760000,"doc_count":5},{"key_as_string":"2017-02-10T22:47:00.000Z","key":1486766820000,"doc_count":12},{"key_as_string":"2017-02-10T22:48:00.000Z","key":1486766880000,"doc_count":8},{"key_as_string":"2017-02-10T22:49:00.000Z","key":1486766940000,"doc_count":13},{"key_as_string":"2017-02-10T22:50:00.000Z","key":1486767000000,"doc_count":9},{"key_as_string":"2017-02-10T22:51:00.000Z","key":1486767060000,"doc_count":14},{"key_as_string":"2017-02-10T22:52:00.000Z","key":1486767120000,"doc_count":8},{"key_as_string":"2017-02-10T22:53:00.000Z","key":1486767180000,"doc_count":14},{"key_as_string":"2017-02-10T22:54:00.000Z","key":1486767240000,"doc_count":5},{"key_as_string":"2017-02-10T22:55:00.000Z","key":1486767300000,"doc_count":15},{"key_as_string":"2017-02-10T22:56:00.000Z","key":1486767360000,"doc_count":10},{"key_as_string":"2017-02-10T22:57:00.000Z","key":1486767420000,"doc_count":17},{"key_as_string":"2017-02-10T22:58:00.000Z","key":1486767480000,"doc_count":10},{"key_as_string":"2017-02-10T22:59:00.000Z","key":1486767540000,"doc_count":14},{"key_as_string":"2017-02-10T23:00:00.000Z","key":1486767600000,"doc_count":5},{"key_as_string":"2017-02-10T23:01:00.000Z","key":1486767660000,"doc_count":12},{"key_as_string":"2017-02-10T23:02:00.000Z","key":1486767720000,"doc_count":12},{"key_as_string":"2017-02-10T23:03:00.000Z","key":1486767780000,"doc_count":9},{"key_as_string":"2017-02-10T23:04:00.000Z","key":1486767840000,"doc_count":7},{"key_as_string":"2017-02-10T23:05:00.000Z","key":1486767900000,"doc_count":12},{"key_as_string":"2017-02-10T23:06:00.000Z","key":1486767960000,"doc_count":7},{"key_as_string":"2017-02-10T23:07:00.000Z","key":1486768020000,"doc_count":14},{"key_as_string":"2017-02-10T23:08:00.000Z","key":1486768080000,"doc_count":10},{"key_as_string":"2017-02-10T23:09:00.000Z","key":1486768140000,"doc_count":9},{"key_as_string":"2017-02-10T23:10:00.000Z","key":1486768200000,"doc_count":15},{"key_as_string":"2017-02-10T23:11:00.000Z","key":1486768260000,"doc_count":13},{"key_as_string":"2017-02-10T23:12:00.000Z","key":1486768320000,"doc_count":10},{"key_as_string":"2017-02-10T23:13:00.000Z","key":1486768380000,"doc_count":8},{"key_as_string":"2017-02-10T23:14:00.000Z","key":1486768440000,"doc_count":10},{"key_as_string":"2017-02-10T23:15:00.000Z","key":1486768500000,"doc_count":13},{"key_as_string":"2017-02-10T23:16:00.000Z","key":1486768560000,"doc_count":9},{"key_as_string":"2017-02-10T23:17:00.000Z","key":1486768620000,"doc_count":8},{"key_as_string":"2017-02-10T23:18:00.000Z","key":1486768680000,"doc_count":7},{"key_as_string":"2017-02-10T23:19:00.000Z","key":1486768740000,"doc_count":12},{"key_as_string":"2017-02-10T23:20:00.000Z","key":1486768800000,"doc_count":9},{"key_as_string":"2017-02-10T23:21:00.000Z","key":1486768860000,"doc_count":11},{"key_as_string":"2017-02-10T23:22:00.000Z","key":1486768920000,"doc_count":8},{"key_as_string":"2017-02-10T23:23:00.000Z","key":1486768980000,"doc_count":9},{"key_as_string":"2017-02-10T23:24:00.000Z","key":1486769040000,"doc_count":14},{"key_as_string":"2017-02-10T23:25:00.000Z","key":1486769100000,"doc_count":9},{"key_as_string":"2017-02-10T23:26:00.000Z","key":1486769160000,"doc_count":8},{"key_as_string":"2017-02-10T23:27:00.000Z","key":1486769220000,"doc_count":7},{"key_as_string":"2017-02-10T23:28:00.000Z","key":1486769280000,"doc_count":17},{"key_as_string":"2017-02-10T23:29:00.000Z","key":1486769340000,"doc_count":5},{"key_as_string":"2017-02-10T23:30:00.000Z","key":1486769400000,"doc_count":16},{"key_as_string":"2017-02-10T23:31:00.000Z","key":1486769460000,"doc_count":14},{"key_as_string":"2017-02-10T23:32:00.000Z","key":1486769520000,"doc_count":6},{"key_as_string":"2017-02-10T23:33:00.000Z","key":1486769580000,"doc_count":8},{"key_as_string":"2017-02-10T23:34:00.000Z","key":1486769640000,"doc_count":15},{"key_as_string":"2017-02-10T23:35:00.000Z","key":1486769700000,"doc_count":9},{"key_as_string":"2017-02-10T23:36:00.000Z","key":1486769760000,"doc_count":11},{"key_as_string":"2017-02-10T23:37:00.000Z","key":1486769820000,"doc_count":13},{"key_as_string":"2017-02-10T23:38:00.000Z","key":1486769880000,"doc_count":12},{"key_as_string":"2017-02-10T23:39:00.000Z","key":1486769940000,"doc_count":12},{"key_as_string":"2017-02-10T23:40:00.000Z","key":1486770000000,"doc_count":9},{"key_as_string":"2017-02-10T23:41:00.000Z","key":1486770060000,"doc_count":11},{"key_as_string":"2017-02-10T23:42:00.000Z","key":1486770120000,"doc_count":10},{"key_as_string":"2017-02-10T23:43:00.000Z","key":1486770180000,"doc_count":16},{"key_as_string":"2017-02-10T23:44:00.000Z","key":1486770240000,"doc_count":8},{"key_as_string":"2017-02-10T23:45:00.000Z","key":1486770300000,"doc_count":8},{"key_as_string":"2017-02-10T23:46:00.000Z","key":1486770360000,"doc_count":8},{"key_as_string":"2017-02-10T23:47:00.000Z","key":1486770420000,"doc_count":11},{"key_as_string":"2017-02-10T23:48:00.000Z","key":1486770480000,"doc_count":10},{"key_as_string":"2017-02-10T23:49:00.000Z","key":1486770540000,"doc_count":10},{"key_as_string":"2017-02-10T23:50:00.000Z","key":1486770600000,"doc_count":13},{"key_as_string":"2017-02-10T23:51:00.000Z","key":1486770660000,"doc_count":6},{"key_as_string":"2017-02-10T23:52:00.000Z","key":1486770720000,"doc_count":16},{"key_as_string":"2017-02-10T23:53:00.000Z","key":1486770780000,"doc_count":10},{"key_as_string":"2017-02-10T23:54:00.000Z","key":1486770840000,"doc_count":11},{"key_as_string":"2017-02-10T23:55:00.000Z","key":1486770900000,"doc_count":14},{"key_as_string":"2017-02-10T23:56:00.000Z","key":1486770960000,"doc_count":9},{"key_as_string":"2017-02-10T23:57:00.000Z","key":1486771020000,"doc_count":9},{"key_as_string":"2017-02-10T23:58:00.000Z","key":1486771080000,"doc_count":11},{"key_as_string":"2017-02-10T23:59:00.000Z","key":1486771140000,"doc_count":6},{"key_as_string":"2017-02-11T00:00:00.000Z","key":1486771200000,"doc_count":12},{"key_as_string":"2017-02-11T00:01:00.000Z","key":1486771260000,"doc_count":14},{"key_as_string":"2017-02-11T00:02:00.000Z","key":1486771320000,"doc_count":9},{"key_as_string":"2017-02-11T00:03:00.000Z","key":1486771380000,"doc_count":3},{"key_as_string":"2017-02-11T00:04:00.000Z","key":1486771440000,"doc_count":15},{"key_as_string":"2017-02-11T00:05:00.000Z","key":1486771500000,"doc_count":10},{"key_as_string":"2017-02-11T00:06:00.000Z","key":1486771560000,"doc_count":11},{"key_as_string":"2017-02-11T00:07:00.000Z","key":1486771620000,"doc_count":6},{"key_as_string":"2017-02-11T00:08:00.000Z","key":1486771680000,"doc_count":11},{"key_as_string":"2017-02-11T00:09:00.000Z","key":1486771740000,"doc_count":10},{"key_as_string":"2017-02-11T00:10:00.000Z","key":1486771800000,"doc_count":7},{"key_as_string":"2017-02-11T00:11:00.000Z","key":1486771860000,"doc_count":13},{"key_as_string":"2017-02-11T00:12:00.000Z","key":1486771920000,"doc_count":9},{"key_as_string":"2017-02-11T00:13:00.000Z","key":1486771980000,"doc_count":10},{"key_as_string":"2017-02-11T00:14:00.000Z","key":1486772040000,"doc_count":17},{"key_as_string":"2017-02-11T00:15:00.000Z","key":1486772100000,"doc_count":7},{"key_as_string":"2017-02-11T00:16:00.000Z","key":1486772160000,"doc_count":12},{"key_as_string":"2017-02-11T00:17:00.000Z","key":1486772220000,"doc_count":13},{"key_as_string":"2017-02-11T00:18:00.000Z","key":1486772280000,"doc_count":4},{"key_as_string":"2017-02-11T00:19:00.000Z","key":1486772340000,"doc_count":15},{"key_as_string":"2017-02-11T00:20:00.000Z","key":1486772400000,"doc_count":13},{"key_as_string":"2017-02-11T00:21:00.000Z","key":1486772460000,"doc_count":8},{"key_as_string":"2017-02-11T00:22:00.000Z","key":1486772520000,"doc_count":8},{"key_as_string":"2017-02-11T00:23:00.000Z","key":1486772580000,"doc_count":12},{"key_as_string":"2017-02-11T00:24:00.000Z","key":1486772640000,"doc_count":9},{"key_as_string":"2017-02-11T00:25:00.000Z","key":1486772700000,"doc_count":8},{"key_as_string":"2017-02-11T00:26:00.000Z","key":1486772760000,"doc_count":13},{"key_as_string":"2017-02-11T00:27:00.000Z","key":1486772820000,"doc_count":10},{"key_as_string":"2017-02-11T00:28:00.000Z","key":1486772880000,"doc_count":11},{"key_as_string":"2017-02-11T00:29:00.000Z","key":1486772940000,"doc_count":7},{"key_as_string":"2017-02-11T00:30:00.000Z","key":1486773000000,"doc_count":14},{"key_as_string":"2017-02-11T00:31:00.000Z","key":1486773060000,"doc_count":8},{"key_as_string":"2017-02-11T00:32:00.000Z","key":1486773120000,"doc_count":9},{"key_as_string":"2017-02-11T00:33:00.000Z","key":1486773180000,"doc_count":14},{"key_as_string":"2017-02-11T00:34:00.000Z","key":1486773240000,"doc_count":7},{"key_as_string":"2017-02-11T00:35:00.000Z","key":1486773300000,"doc_count":10},{"key_as_string":"2017-02-11T00:36:00.000Z","key":1486773360000,"doc_count":11},{"key_as_string":"2017-02-11T00:37:00.000Z","key":1486773420000,"doc_count":15},{"key_as_string":"2017-02-11T00:38:00.000Z","key":1486773480000,"doc_count":9},{"key_as_string":"2017-02-11T00:39:00.000Z","key":1486773540000,"doc_count":11},{"key_as_string":"2017-02-11T00:40:00.000Z","key":1486773600000,"doc_count":8},{"key_as_string":"2017-02-11T00:41:00.000Z","key":1486773660000,"doc_count":9},{"key_as_string":"2017-02-11T00:42:00.000Z","key":1486773720000,"doc_count":10},{"key_as_string":"2017-02-11T00:43:00.000Z","key":1486773780000,"doc_count":14},{"key_as_string":"2017-02-11T00:44:00.000Z","key":1486773840000,"doc_count":7},{"key_as_string":"2017-02-11T00:45:00.000Z","key":1486773900000,"doc_count":12},{"key_as_string":"2017-02-11T00:46:00.000Z","key":1486773960000,"doc_count":12},{"key_as_string":"2017-02-11T00:47:00.000Z","key":1486774020000,"doc_count":9},{"key_as_string":"2017-02-11T00:48:00.000Z","key":1486774080000,"doc_count":11},{"key_as_string":"2017-02-11T00:49:00.000Z","key":1486774140000,"doc_count":6},{"key_as_string":"2017-02-11T00:50:00.000Z","key":1486774200000,"doc_count":11},{"key_as_string":"2017-02-11T00:51:00.000Z","key":1486774260000,"doc_count":14},{"key_as_string":"2017-02-11T00:52:00.000Z","key":1486774320000,"doc_count":6},{"key_as_string":"2017-02-11T00:53:00.000Z","key":1486774380000,"doc_count":14},{"key_as_string":"2017-02-11T00:54:00.000Z","key":1486774440000,"doc_count":9},{"key_as_string":"2017-02-11T00:55:00.000Z","key":1486774500000,"doc_count":7},{"key_as_string":"2017-02-11T00:56:00.000Z","key":1486774560000,"doc_count":9},{"key_as_string":"2017-02-11T00:57:00.000Z","key":1486774620000,"doc_count":11},{"key_as_string":"2017-02-11T00:58:00.000Z","key":1486774680000,"doc_count":11},{"key_as_string":"2017-02-11T00:59:00.000Z","key":1486774740000,"doc_count":9},{"key_as_string":"2017-02-11T01:00:00.000Z","key":1486774800000,"doc_count":9},{"key_as_string":"2017-02-11T01:01:00.000Z","key":1486774860000,"doc_count":9},{"key_as_string":"2017-02-11T01:02:00.000Z","key":1486774920000,"doc_count":9},{"key_as_string":"2017-02-11T01:03:00.000Z","key":1486774980000,"doc_count":13},{"key_as_string":"2017-02-11T01:04:00.000Z","key":1486775040000,"doc_count":8},{"key_as_string":"2017-02-11T01:05:00.000Z","key":1486775100000,"doc_count":14},{"key_as_string":"2017-02-11T01:06:00.000Z","key":1486775160000,"doc_count":7},{"key_as_string":"2017-02-11T01:07:00.000Z","key":1486775220000,"doc_count":13},{"key_as_string":"2017-02-11T01:08:00.000Z","key":1486775280000,"doc_count":9},{"key_as_string":"2017-02-11T01:09:00.000Z","key":1486775340000,"doc_count":11},{"key_as_string":"2017-02-11T01:10:00.000Z","key":1486775400000,"doc_count":11},{"key_as_string":"2017-02-11T01:11:00.000Z","key":1486775460000,"doc_count":15},{"key_as_string":"2017-02-11T01:12:00.000Z","key":1486775520000,"doc_count":8},{"key_as_string":"2017-02-11T01:13:00.000Z","key":1486775580000,"doc_count":7},{"key_as_string":"2017-02-11T01:14:00.000Z","key":1486775640000,"doc_count":16},{"key_as_string":"2017-02-11T01:15:00.000Z","key":1486775700000,"doc_count":6},{"key_as_string":"2017-02-11T01:16:00.000Z","key":1486775760000,"doc_count":13},{"key_as_string":"2017-02-11T01:17:00.000Z","key":1486775820000,"doc_count":9},{"key_as_string":"2017-02-11T01:18:00.000Z","key":1486775880000,"doc_count":7},{"key_as_string":"2017-02-11T01:19:00.000Z","key":1486775940000,"doc_count":12},{"key_as_string":"2017-02-11T01:20:00.000Z","key":1486776000000,"doc_count":8},{"key_as_string":"2017-02-11T01:21:00.000Z","key":1486776060000,"doc_count":12},{"key_as_string":"2017-02-11T01:22:00.000Z","key":1486776120000,"doc_count":16},{"key_as_string":"2017-02-11T01:23:00.000Z","key":1486776180000,"doc_count":9},{"key_as_string":"2017-02-11T01:24:00.000Z","key":1486776240000,"doc_count":6},{"key_as_string":"2017-02-11T01:25:00.000Z","key":1486776300000,"doc_count":13},{"key_as_string":"2017-02-11T01:26:00.000Z","key":1486776360000,"doc_count":12},{"key_as_string":"2017-02-11T01:27:00.000Z","key":1486776420000,"doc_count":10},{"key_as_string":"2017-02-11T01:28:00.000Z","key":1486776480000,"doc_count":6},{"key_as_string":"2017-02-11T01:29:00.000Z","key":1486776540000,"doc_count":13},{"key_as_string":"2017-02-11T01:30:00.000Z","key":1486776600000,"doc_count":8},{"key_as_string":"2017-02-11T01:31:00.000Z","key":1486776660000,"doc_count":16},{"key_as_string":"2017-02-11T01:32:00.000Z","key":1486776720000,"doc_count":8},{"key_as_string":"2017-02-11T01:33:00.000Z","key":1486776780000,"doc_count":4},{"key_as_string":"2017-02-11T01:34:00.000Z","key":1486776840000,"doc_count":9},{"key_as_string":"2017-02-11T01:35:00.000Z","key":1486776900000,"doc_count":11},{"key_as_string":"2017-02-11T01:36:00.000Z","key":1486776960000,"doc_count":10},{"key_as_string":"2017-02-11T01:37:00.000Z","key":1486777020000,"doc_count":17},{"key_as_string":"2017-02-11T01:38:00.000Z","key":1486777080000,"doc_count":11},{"key_as_string":"2017-02-11T01:39:00.000Z","key":1486777140000,"doc_count":10},{"key_as_string":"2017-02-11T01:40:00.000Z","key":1486777200000,"doc_count":12},{"key_as_string":"2017-02-11T01:41:00.000Z","key":1486777260000,"doc_count":11},{"key_as_string":"2017-02-11T01:42:00.000Z","key":1486777320000,"doc_count":11},{"key_as_string":"2017-02-11T01:43:00.000Z","key":1486777380000,"doc_count":6},{"key_as_string":"2017-02-11T01:44:00.000Z","key":1486777440000,"doc_count":13},{"key_as_string":"2017-02-11T01:45:00.000Z","key":1486777500000,"doc_count":12},{"key_as_string":"2017-02-11T01:46:00.000Z","key":1486777560000,"doc_count":12},{"key_as_string":"2017-02-11T01:47:00.000Z","key":1486777620000,"doc_count":7},{"key_as_string":"2017-02-11T01:48:00.000Z","key":1486777680000,"doc_count":12},{"key_as_string":"2017-02-11T01:49:00.000Z","key":1486777740000,"doc_count":11},{"key_as_string":"2017-02-11T01:50:00.000Z","key":1486777800000,"doc_count":13},{"key_as_string":"2017-02-11T01:51:00.000Z","key":1486777860000,"doc_count":13},{"key_as_string":"2017-02-11T01:52:00.000Z","key":1486777920000,"doc_count":11},{"key_as_string":"2017-02-11T01:53:00.000Z","key":1486777980000,"doc_count":11},{"key_as_string":"2017-02-11T01:54:00.000Z","key":1486778040000,"doc_count":7},{"key_as_string":"2017-02-11T01:55:00.000Z","key":1486778100000,"doc_count":13},{"key_as_string":"2017-02-11T01:56:00.000Z","key":1486778160000,"doc_count":12},{"key_as_string":"2017-02-11T01:57:00.000Z","key":1486778220000,"doc_count":12},{"key_as_string":"2017-02-11T01:58:00.000Z","key":1486778280000,"doc_count":10},{"key_as_string":"2017-02-11T01:59:00.000Z","key":1486778340000,"doc_count":13},{"key_as_string":"2017-02-11T02:00:00.000Z","key":1486778400000,"doc_count":10},{"key_as_string":"2017-02-11T02:01:00.000Z","key":1486778460000,"doc_count":8},{"key_as_string":"2017-02-11T02:02:00.000Z","key":1486778520000,"doc_count":8},{"key_as_string":"2017-02-11T02:03:00.000Z","key":1486778580000,"doc_count":10},{"key_as_string":"2017-02-11T02:04:00.000Z","key":1486778640000,"doc_count":10},{"key_as_string":"2017-02-11T02:05:00.000Z","key":1486778700000,"doc_count":6},{"key_as_string":"2017-02-11T02:06:00.000Z","key":1486778760000,"doc_count":12},{"key_as_string":"2017-02-11T02:07:00.000Z","key":1486778820000,"doc_count":11},{"key_as_string":"2017-02-11T02:08:00.000Z","key":1486778880000,"doc_count":7},{"key_as_string":"2017-02-11T02:09:00.000Z","key":1486778940000,"doc_count":13},{"key_as_string":"2017-02-11T02:10:00.000Z","key":1486779000000,"doc_count":9},{"key_as_string":"2017-02-11T02:11:00.000Z","key":1486779060000,"doc_count":14},{"key_as_string":"2017-02-11T02:12:00.000Z","key":1486779120000,"doc_count":9},{"key_as_string":"2017-02-11T02:13:00.000Z","key":1486779180000,"doc_count":10},{"key_as_string":"2017-02-11T02:14:00.000Z","key":1486779240000,"doc_count":12},{"key_as_string":"2017-02-11T02:15:00.000Z","key":1486779300000,"doc_count":5},{"key_as_string":"2017-02-11T02:16:00.000Z","key":1486779360000,"doc_count":9},{"key_as_string":"2017-02-11T02:17:00.000Z","key":1486779420000,"doc_count":14},{"key_as_string":"2017-02-11T02:18:00.000Z","key":1486779480000,"doc_count":5},{"key_as_string":"2017-02-11T02:19:00.000Z","key":1486779540000,"doc_count":18},{"key_as_string":"2017-02-11T02:20:00.000Z","key":1486779600000,"doc_count":9},{"key_as_string":"2017-02-11T02:21:00.000Z","key":1486779660000,"doc_count":7},{"key_as_string":"2017-02-11T02:22:00.000Z","key":1486779720000,"doc_count":14},{"key_as_string":"2017-02-11T02:23:00.000Z","key":1486779780000,"doc_count":8},{"key_as_string":"2017-02-11T02:24:00.000Z","key":1486779840000,"doc_count":9},{"key_as_string":"2017-02-11T02:25:00.000Z","key":1486779900000,"doc_count":10},{"key_as_string":"2017-02-11T02:26:00.000Z","key":1486779960000,"doc_count":15},{"key_as_string":"2017-02-11T02:27:00.000Z","key":1486780020000,"doc_count":12},{"key_as_string":"2017-02-11T02:28:00.000Z","key":1486780080000,"doc_count":8},{"key_as_string":"2017-02-11T02:29:00.000Z","key":1486780140000,"doc_count":7},{"key_as_string":"2017-02-11T02:30:00.000Z","key":1486780200000,"doc_count":13},{"key_as_string":"2017-02-11T02:31:00.000Z","key":1486780260000,"doc_count":9},{"key_as_string":"2017-02-11T02:32:00.000Z","key":1486780320000,"doc_count":11},{"key_as_string":"2017-02-11T02:33:00.000Z","key":1486780380000,"doc_count":9},{"key_as_string":"2017-02-11T02:34:00.000Z","key":1486780440000,"doc_count":12},{"key_as_string":"2017-02-11T02:35:00.000Z","key":1486780500000,"doc_count":11},{"key_as_string":"2017-02-11T02:36:00.000Z","key":1486780560000,"doc_count":4},{"key_as_string":"2017-02-11T02:37:00.000Z","key":1486780620000,"doc_count":12},{"key_as_string":"2017-02-11T02:38:00.000Z","key":1486780680000,"doc_count":6},{"key_as_string":"2017-02-11T02:39:00.000Z","key":1486780740000,"doc_count":12},{"key_as_string":"2017-02-11T02:40:00.000Z","key":1486780800000,"doc_count":12},{"key_as_string":"2017-02-11T02:41:00.000Z","key":1486780860000,"doc_count":12},{"key_as_string":"2017-02-11T02:42:00.000Z","key":1486780920000,"doc_count":13},{"key_as_string":"2017-02-11T02:43:00.000Z","key":1486780980000,"doc_count":12},{"key_as_string":"2017-02-11T02:44:00.000Z","key":1486781040000,"doc_count":13},{"key_as_string":"2017-02-11T02:45:00.000Z","key":1486781100000,"doc_count":11},{"key_as_string":"2017-02-11T02:46:00.000Z","key":1486781160000,"doc_count":5},{"key_as_string":"2017-02-11T02:47:00.000Z","key":1486781220000,"doc_count":14},{"key_as_string":"2017-02-11T02:48:00.000Z","key":1486781280000,"doc_count":8},{"key_as_string":"2017-02-11T02:49:00.000Z","key":1486781340000,"doc_count":14},{"key_as_string":"2017-02-11T02:50:00.000Z","key":1486781400000,"doc_count":16},{"key_as_string":"2017-02-11T02:51:00.000Z","key":1486781460000,"doc_count":7},{"key_as_string":"2017-02-11T02:52:00.000Z","key":1486781520000,"doc_count":7},{"key_as_string":"2017-02-11T02:53:00.000Z","key":1486781580000,"doc_count":15},{"key_as_string":"2017-02-11T02:54:00.000Z","key":1486781640000,"doc_count":13},{"key_as_string":"2017-02-11T02:55:00.000Z","key":1486781700000,"doc_count":5},{"key_as_string":"2017-02-11T02:56:00.000Z","key":1486781760000,"doc_count":8},{"key_as_string":"2017-02-11T02:57:00.000Z","key":1486781820000,"doc_count":8},{"key_as_string":"2017-02-11T02:58:00.000Z","key":1486781880000,"doc_count":16},{"key_as_string":"2017-02-11T02:59:00.000Z","key":1486781940000,"doc_count":9},{"key_as_string":"2017-02-11T03:00:00.000Z","key":1486782000000,"doc_count":9},{"key_as_string":"2017-02-11T03:01:00.000Z","key":1486782060000,"doc_count":13},{"key_as_string":"2017-02-11T03:02:00.000Z","key":1486782120000,"doc_count":14},{"key_as_string":"2017-02-11T03:03:00.000Z","key":1486782180000,"doc_count":10},{"key_as_string":"2017-02-11T03:04:00.000Z","key":1486782240000,"doc_count":8},{"key_as_string":"2017-02-11T03:05:00.000Z","key":1486782300000,"doc_count":14},{"key_as_string":"2017-02-11T03:06:00.000Z","key":1486782360000,"doc_count":11},{"key_as_string":"2017-02-11T03:07:00.000Z","key":1486782420000,"doc_count":11},{"key_as_string":"2017-02-11T03:08:00.000Z","key":1486782480000,"doc_count":8},{"key_as_string":"2017-02-11T03:09:00.000Z","key":1486782540000,"doc_count":13},{"key_as_string":"2017-02-11T03:10:00.000Z","key":1486782600000,"doc_count":12},{"key_as_string":"2017-02-11T03:11:00.000Z","key":1486782660000,"doc_count":9},{"key_as_string":"2017-02-11T03:12:00.000Z","key":1486782720000,"doc_count":9},{"key_as_string":"2017-02-11T03:13:00.000Z","key":1486782780000,"doc_count":9},{"key_as_string":"2017-02-11T03:14:00.000Z","key":1486782840000,"doc_count":11},{"key_as_string":"2017-02-11T03:15:00.000Z","key":1486782900000,"doc_count":9},{"key_as_string":"2017-02-11T03:16:00.000Z","key":1486782960000,"doc_count":20},{"key_as_string":"2017-02-11T03:17:00.000Z","key":1486783020000,"doc_count":7},{"key_as_string":"2017-02-11T03:18:00.000Z","key":1486783080000,"doc_count":11},{"key_as_string":"2017-02-11T03:19:00.000Z","key":1486783140000,"doc_count":10},{"key_as_string":"2017-02-11T03:20:00.000Z","key":1486783200000,"doc_count":8},{"key_as_string":"2017-02-11T03:21:00.000Z","key":1486783260000,"doc_count":16},{"key_as_string":"2017-02-11T03:22:00.000Z","key":1486783320000,"doc_count":5},{"key_as_string":"2017-02-11T03:23:00.000Z","key":1486783380000,"doc_count":12},{"key_as_string":"2017-02-11T03:24:00.000Z","key":1486783440000,"doc_count":8},{"key_as_string":"2017-02-11T03:25:00.000Z","key":1486783500000,"doc_count":17},{"key_as_string":"2017-02-11T03:26:00.000Z","key":1486783560000,"doc_count":8},{"key_as_string":"2017-02-11T03:27:00.000Z","key":1486783620000,"doc_count":14},{"key_as_string":"2017-02-11T03:28:00.000Z","key":1486783680000,"doc_count":7},{"key_as_string":"2017-02-11T03:29:00.000Z","key":1486783740000,"doc_count":12},{"key_as_string":"2017-02-11T03:30:00.000Z","key":1486783800000,"doc_count":13},{"key_as_string":"2017-02-11T03:31:00.000Z","key":1486783860000,"doc_count":9},{"key_as_string":"2017-02-11T03:32:00.000Z","key":1486783920000,"doc_count":5},{"key_as_string":"2017-02-11T03:33:00.000Z","key":1486783980000,"doc_count":10},{"key_as_string":"2017-02-11T03:34:00.000Z","key":1486784040000,"doc_count":14},{"key_as_string":"2017-02-11T03:35:00.000Z","key":1486784100000,"doc_count":13},{"key_as_string":"2017-02-11T03:36:00.000Z","key":1486784160000,"doc_count":9},{"key_as_string":"2017-02-11T03:37:00.000Z","key":1486784220000,"doc_count":10},{"key_as_string":"2017-02-11T03:38:00.000Z","key":1486784280000,"doc_count":10},{"key_as_string":"2017-02-11T03:39:00.000Z","key":1486784340000,"doc_count":12},{"key_as_string":"2017-02-11T03:40:00.000Z","key":1486784400000,"doc_count":11},{"key_as_string":"2017-02-11T03:41:00.000Z","key":1486784460000,"doc_count":11},{"key_as_string":"2017-02-11T03:42:00.000Z","key":1486784520000,"doc_count":7},{"key_as_string":"2017-02-11T03:43:00.000Z","key":1486784580000,"doc_count":18},{"key_as_string":"2017-02-11T03:44:00.000Z","key":1486784640000,"doc_count":6},{"key_as_string":"2017-02-11T03:45:00.000Z","key":1486784700000,"doc_count":12},{"key_as_string":"2017-02-11T03:46:00.000Z","key":1486784760000,"doc_count":13},{"key_as_string":"2017-02-11T03:47:00.000Z","key":1486784820000,"doc_count":13},{"key_as_string":"2017-02-11T03:48:00.000Z","key":1486784880000,"doc_count":15},{"key_as_string":"2017-02-11T03:49:00.000Z","key":1486784940000,"doc_count":11},{"key_as_string":"2017-02-11T03:50:00.000Z","key":1486785000000,"doc_count":9},{"key_as_string":"2017-02-11T03:51:00.000Z","key":1486785060000,"doc_count":14},{"key_as_string":"2017-02-11T03:52:00.000Z","key":1486785120000,"doc_count":7},{"key_as_string":"2017-02-11T03:53:00.000Z","key":1486785180000,"doc_count":11},{"key_as_string":"2017-02-11T03:54:00.000Z","key":1486785240000,"doc_count":8},{"key_as_string":"2017-02-11T03:55:00.000Z","key":1486785300000,"doc_count":7},{"key_as_string":"2017-02-11T03:56:00.000Z","key":1486785360000,"doc_count":10},{"key_as_string":"2017-02-11T03:57:00.000Z","key":1486785420000,"doc_count":13},{"key_as_string":"2017-02-11T03:58:00.000Z","key":1486785480000,"doc_count":11},{"key_as_string":"2017-02-11T03:59:00.000Z","key":1486785540000,"doc_count":8},{"key_as_string":"2017-02-11T04:00:00.000Z","key":1486785600000,"doc_count":11},{"key_as_string":"2017-02-11T04:01:00.000Z","key":1486785660000,"doc_count":9},{"key_as_string":"2017-02-11T04:02:00.000Z","key":1486785720000,"doc_count":13},{"key_as_string":"2017-02-11T04:03:00.000Z","key":1486785780000,"doc_count":14},{"key_as_string":"2017-02-11T04:04:00.000Z","key":1486785840000,"doc_count":13},{"key_as_string":"2017-02-11T04:05:00.000Z","key":1486785900000,"doc_count":9},{"key_as_string":"2017-02-11T04:06:00.000Z","key":1486785960000,"doc_count":8},{"key_as_string":"2017-02-11T04:07:00.000Z","key":1486786020000,"doc_count":8},{"key_as_string":"2017-02-11T04:08:00.000Z","key":1486786080000,"doc_count":14},{"key_as_string":"2017-02-11T04:09:00.000Z","key":1486786140000,"doc_count":10},{"key_as_string":"2017-02-11T04:10:00.000Z","key":1486786200000,"doc_count":12},{"key_as_string":"2017-02-11T04:11:00.000Z","key":1486786260000,"doc_count":9},{"key_as_string":"2017-02-11T04:12:00.000Z","key":1486786320000,"doc_count":11},{"key_as_string":"2017-02-11T04:13:00.000Z","key":1486786380000,"doc_count":19},{"key_as_string":"2017-02-11T04:14:00.000Z","key":1486786440000,"doc_count":9},{"key_as_string":"2017-02-11T04:15:00.000Z","key":1486786500000,"doc_count":9},{"key_as_string":"2017-02-11T04:16:00.000Z","key":1486786560000,"doc_count":15},{"key_as_string":"2017-02-11T04:17:00.000Z","key":1486786620000,"doc_count":17},{"key_as_string":"2017-02-11T04:18:00.000Z","key":1486786680000,"doc_count":15},{"key_as_string":"2017-02-11T04:19:00.000Z","key":1486786740000,"doc_count":8},{"key_as_string":"2017-02-11T04:20:00.000Z","key":1486786800000,"doc_count":11},{"key_as_string":"2017-02-11T04:21:00.000Z","key":1486786860000,"doc_count":13},{"key_as_string":"2017-02-11T04:22:00.000Z","key":1486786920000,"doc_count":11},{"key_as_string":"2017-02-11T04:23:00.000Z","key":1486786980000,"doc_count":7},{"key_as_string":"2017-02-11T04:24:00.000Z","key":1486787040000,"doc_count":14},{"key_as_string":"2017-02-11T04:25:00.000Z","key":1486787100000,"doc_count":11},{"key_as_string":"2017-02-11T04:26:00.000Z","key":1486787160000,"doc_count":9},{"key_as_string":"2017-02-11T04:27:00.000Z","key":1486787220000,"doc_count":6},{"key_as_string":"2017-02-11T04:28:00.000Z","key":1486787280000,"doc_count":17},{"key_as_string":"2017-02-11T04:29:00.000Z","key":1486787340000,"doc_count":9},{"key_as_string":"2017-02-11T04:30:00.000Z","key":1486787400000,"doc_count":9},{"key_as_string":"2017-02-11T04:31:00.000Z","key":1486787460000,"doc_count":8},{"key_as_string":"2017-02-11T04:32:00.000Z","key":1486787520000,"doc_count":12},{"key_as_string":"2017-02-11T04:33:00.000Z","key":1486787580000,"doc_count":11},{"key_as_string":"2017-02-11T04:34:00.000Z","key":1486787640000,"doc_count":10},{"key_as_string":"2017-02-11T04:35:00.000Z","key":1486787700000,"doc_count":11},{"key_as_string":"2017-02-11T04:36:00.000Z","key":1486787760000,"doc_count":11},{"key_as_string":"2017-02-11T04:37:00.000Z","key":1486787820000,"doc_count":15},{"key_as_string":"2017-02-11T04:38:00.000Z","key":1486787880000,"doc_count":11},{"key_as_string":"2017-02-11T04:39:00.000Z","key":1486787940000,"doc_count":10},{"key_as_string":"2017-02-11T04:40:00.000Z","key":1486788000000,"doc_count":10},{"key_as_string":"2017-02-11T04:41:00.000Z","key":1486788060000,"doc_count":10},{"key_as_string":"2017-02-11T04:42:00.000Z","key":1486788120000,"doc_count":8},{"key_as_string":"2017-02-11T04:43:00.000Z","key":1486788180000,"doc_count":9},{"key_as_string":"2017-02-11T04:44:00.000Z","key":1486788240000,"doc_count":8},{"key_as_string":"2017-02-11T04:45:00.000Z","key":1486788300000,"doc_count":19},{"key_as_string":"2017-02-11T04:46:00.000Z","key":1486788360000,"doc_count":11},{"key_as_string":"2017-02-11T04:47:00.000Z","key":1486788420000,"doc_count":11},{"key_as_string":"2017-02-11T04:48:00.000Z","key":1486788480000,"doc_count":10},{"key_as_string":"2017-02-11T04:49:00.000Z","key":1486788540000,"doc_count":9},{"key_as_string":"2017-02-11T04:50:00.000Z","key":1486788600000,"doc_count":9},{"key_as_string":"2017-02-11T04:51:00.000Z","key":1486788660000,"doc_count":15},{"key_as_string":"2017-02-11T04:52:00.000Z","key":1486788720000,"doc_count":11},{"key_as_string":"2017-02-11T04:53:00.000Z","key":1486788780000,"doc_count":11},{"key_as_string":"2017-02-11T04:54:00.000Z","key":1486788840000,"doc_count":12},{"key_as_string":"2017-02-11T04:55:00.000Z","key":1486788900000,"doc_count":12},{"key_as_string":"2017-02-11T04:56:00.000Z","key":1486788960000,"doc_count":9},{"key_as_string":"2017-02-11T04:57:00.000Z","key":1486789020000,"doc_count":16},{"key_as_string":"2017-02-11T04:58:00.000Z","key":1486789080000,"doc_count":11},{"key_as_string":"2017-02-11T04:59:00.000Z","key":1486789140000,"doc_count":10},{"key_as_string":"2017-02-11T05:00:00.000Z","key":1486789200000,"doc_count":9},{"key_as_string":"2017-02-11T05:01:00.000Z","key":1486789260000,"doc_count":14},{"key_as_string":"2017-02-11T05:02:00.000Z","key":1486789320000,"doc_count":10},{"key_as_string":"2017-02-11T05:03:00.000Z","key":1486789380000,"doc_count":11},{"key_as_string":"2017-02-11T05:04:00.000Z","key":1486789440000,"doc_count":11},{"key_as_string":"2017-02-11T05:05:00.000Z","key":1486789500000,"doc_count":6},{"key_as_string":"2017-02-11T05:06:00.000Z","key":1486789560000,"doc_count":19},{"key_as_string":"2017-02-11T05:07:00.000Z","key":1486789620000,"doc_count":11},{"key_as_string":"2017-02-11T05:08:00.000Z","key":1486789680000,"doc_count":15},{"key_as_string":"2017-02-11T05:09:00.000Z","key":1486789740000,"doc_count":10},{"key_as_string":"2017-02-11T05:10:00.000Z","key":1486789800000,"doc_count":13},{"key_as_string":"2017-02-11T05:11:00.000Z","key":1486789860000,"doc_count":12},{"key_as_string":"2017-02-11T05:12:00.000Z","key":1486789920000,"doc_count":14},{"key_as_string":"2017-02-11T05:13:00.000Z","key":1486789980000,"doc_count":12},{"key_as_string":"2017-02-11T05:14:00.000Z","key":1486790040000,"doc_count":13},{"key_as_string":"2017-02-11T05:15:00.000Z","key":1486790100000,"doc_count":7},{"key_as_string":"2017-02-11T05:16:00.000Z","key":1486790160000,"doc_count":10},{"key_as_string":"2017-02-11T05:17:00.000Z","key":1486790220000,"doc_count":12},{"key_as_string":"2017-02-11T05:18:00.000Z","key":1486790280000,"doc_count":15},{"key_as_string":"2017-02-11T05:19:00.000Z","key":1486790340000,"doc_count":10},{"key_as_string":"2017-02-11T05:20:00.000Z","key":1486790400000,"doc_count":9},{"key_as_string":"2017-02-11T05:21:00.000Z","key":1486790460000,"doc_count":10},{"key_as_string":"2017-02-11T05:22:00.000Z","key":1486790520000,"doc_count":15},{"key_as_string":"2017-02-11T05:23:00.000Z","key":1486790580000,"doc_count":9},{"key_as_string":"2017-02-11T05:24:00.000Z","key":1486790640000,"doc_count":13},{"key_as_string":"2017-02-11T05:25:00.000Z","key":1486790700000,"doc_count":12},{"key_as_string":"2017-02-11T05:26:00.000Z","key":1486790760000,"doc_count":9},{"key_as_string":"2017-02-11T05:27:00.000Z","key":1486790820000,"doc_count":15},{"key_as_string":"2017-02-11T05:28:00.000Z","key":1486790880000,"doc_count":11},{"key_as_string":"2017-02-11T05:29:00.000Z","key":1486790940000,"doc_count":14},{"key_as_string":"2017-02-11T05:30:00.000Z","key":1486791000000,"doc_count":14},{"key_as_string":"2017-02-11T05:31:00.000Z","key":1486791060000,"doc_count":15},{"key_as_string":"2017-02-11T05:32:00.000Z","key":1486791120000,"doc_count":7},{"key_as_string":"2017-02-11T05:33:00.000Z","key":1486791180000,"doc_count":7},{"key_as_string":"2017-02-11T05:34:00.000Z","key":1486791240000,"doc_count":9},{"key_as_string":"2017-02-11T05:35:00.000Z","key":1486791300000,"doc_count":13},{"key_as_string":"2017-02-11T05:36:00.000Z","key":1486791360000,"doc_count":11},{"key_as_string":"2017-02-11T05:37:00.000Z","key":1486791420000,"doc_count":11},{"key_as_string":"2017-02-11T05:38:00.000Z","key":1486791480000,"doc_count":10},{"key_as_string":"2017-02-11T05:39:00.000Z","key":1486791540000,"doc_count":7},{"key_as_string":"2017-02-11T05:40:00.000Z","key":1486791600000,"doc_count":12},{"key_as_string":"2017-02-11T05:41:00.000Z","key":1486791660000,"doc_count":11},{"key_as_string":"2017-02-11T05:42:00.000Z","key":1486791720000,"doc_count":16},{"key_as_string":"2017-02-11T05:43:00.000Z","key":1486791780000,"doc_count":12},{"key_as_string":"2017-02-11T05:44:00.000Z","key":1486791840000,"doc_count":8},{"key_as_string":"2017-02-11T05:45:00.000Z","key":1486791900000,"doc_count":13},{"key_as_string":"2017-02-11T05:46:00.000Z","key":1486791960000,"doc_count":17},{"key_as_string":"2017-02-11T05:47:00.000Z","key":1486792020000,"doc_count":8},{"key_as_string":"2017-02-11T05:48:00.000Z","key":1486792080000,"doc_count":9},{"key_as_string":"2017-02-11T05:49:00.000Z","key":1486792140000,"doc_count":9},{"key_as_string":"2017-02-11T05:50:00.000Z","key":1486792200000,"doc_count":13},{"key_as_string":"2017-02-11T05:51:00.000Z","key":1486792260000,"doc_count":7},{"key_as_string":"2017-02-11T05:52:00.000Z","key":1486792320000,"doc_count":13},{"key_as_string":"2017-02-11T05:53:00.000Z","key":1486792380000,"doc_count":8},{"key_as_string":"2017-02-11T05:54:00.000Z","key":1486792440000,"doc_count":12},{"key_as_string":"2017-02-11T05:55:00.000Z","key":1486792500000,"doc_count":9},{"key_as_string":"2017-02-11T05:56:00.000Z","key":1486792560000,"doc_count":15},{"key_as_string":"2017-02-11T05:57:00.000Z","key":1486792620000,"doc_count":11},{"key_as_string":"2017-02-11T05:58:00.000Z","key":1486792680000,"doc_count":14},{"key_as_string":"2017-02-11T05:59:00.000Z","key":1486792740000,"doc_count":10},{"key_as_string":"2017-02-11T06:00:00.000Z","key":1486792800000,"doc_count":15},{"key_as_string":"2017-02-11T06:01:00.000Z","key":1486792860000,"doc_count":10},{"key_as_string":"2017-02-11T06:02:00.000Z","key":1486792920000,"doc_count":9},{"key_as_string":"2017-02-11T06:03:00.000Z","key":1486792980000,"doc_count":16},{"key_as_string":"2017-02-11T06:04:00.000Z","key":1486793040000,"doc_count":12},{"key_as_string":"2017-02-11T06:05:00.000Z","key":1486793100000,"doc_count":13},{"key_as_string":"2017-02-11T06:06:00.000Z","key":1486793160000,"doc_count":14},{"key_as_string":"2017-02-11T06:07:00.000Z","key":1486793220000,"doc_count":11},{"key_as_string":"2017-02-11T06:08:00.000Z","key":1486793280000,"doc_count":16},{"key_as_string":"2017-02-11T06:09:00.000Z","key":1486793340000,"doc_count":9},{"key_as_string":"2017-02-11T06:10:00.000Z","key":1486793400000,"doc_count":15},{"key_as_string":"2017-02-11T06:11:00.000Z","key":1486793460000,"doc_count":9},{"key_as_string":"2017-02-11T06:12:00.000Z","key":1486793520000,"doc_count":9},{"key_as_string":"2017-02-11T06:13:00.000Z","key":1486793580000,"doc_count":13},{"key_as_string":"2017-02-11T06:14:00.000Z","key":1486793640000,"doc_count":12},{"key_as_string":"2017-02-11T06:15:00.000Z","key":1486793700000,"doc_count":11},{"key_as_string":"2017-02-11T06:16:00.000Z","key":1486793760000,"doc_count":14},{"key_as_string":"2017-02-11T06:17:00.000Z","key":1486793820000,"doc_count":16},{"key_as_string":"2017-02-11T06:18:00.000Z","key":1486793880000,"doc_count":7},{"key_as_string":"2017-02-11T06:19:00.000Z","key":1486793940000,"doc_count":18},{"key_as_string":"2017-02-11T06:20:00.000Z","key":1486794000000,"doc_count":15},{"key_as_string":"2017-02-11T06:21:00.000Z","key":1486794060000,"doc_count":10},{"key_as_string":"2017-02-11T06:22:00.000Z","key":1486794120000,"doc_count":10},{"key_as_string":"2017-02-11T06:23:00.000Z","key":1486794180000,"doc_count":11},{"key_as_string":"2017-02-11T06:24:00.000Z","key":1486794240000,"doc_count":7},{"key_as_string":"2017-02-11T06:25:00.000Z","key":1486794300000,"doc_count":12},{"key_as_string":"2017-02-11T06:26:00.000Z","key":1486794360000,"doc_count":10},{"key_as_string":"2017-02-11T06:27:00.000Z","key":1486794420000,"doc_count":11},{"key_as_string":"2017-02-11T06:28:00.000Z","key":1486794480000,"doc_count":13},{"key_as_string":"2017-02-11T06:29:00.000Z","key":1486794540000,"doc_count":11},{"key_as_string":"2017-02-11T06:30:00.000Z","key":1486794600000,"doc_count":13},{"key_as_string":"2017-02-11T06:31:00.000Z","key":1486794660000,"doc_count":10},{"key_as_string":"2017-02-11T06:32:00.000Z","key":1486794720000,"doc_count":13},{"key_as_string":"2017-02-11T06:33:00.000Z","key":1486794780000,"doc_count":14},{"key_as_string":"2017-02-11T06:34:00.000Z","key":1486794840000,"doc_count":15},{"key_as_string":"2017-02-11T06:35:00.000Z","key":1486794900000,"doc_count":11},{"key_as_string":"2017-02-11T06:36:00.000Z","key":1486794960000,"doc_count":14},{"key_as_string":"2017-02-11T06:37:00.000Z","key":1486795020000,"doc_count":10},{"key_as_string":"2017-02-11T06:38:00.000Z","key":1486795080000,"doc_count":13},{"key_as_string":"2017-02-11T06:39:00.000Z","key":1486795140000,"doc_count":7},{"key_as_string":"2017-02-11T06:40:00.000Z","key":1486795200000,"doc_count":12},{"key_as_string":"2017-02-11T06:41:00.000Z","key":1486795260000,"doc_count":12},{"key_as_string":"2017-02-11T06:42:00.000Z","key":1486795320000,"doc_count":10},{"key_as_string":"2017-02-11T06:43:00.000Z","key":1486795380000,"doc_count":14},{"key_as_string":"2017-02-11T06:44:00.000Z","key":1486795440000,"doc_count":15},{"key_as_string":"2017-02-11T06:45:00.000Z","key":1486795500000,"doc_count":10},{"key_as_string":"2017-02-11T06:46:00.000Z","key":1486795560000,"doc_count":12},{"key_as_string":"2017-02-11T06:47:00.000Z","key":1486795620000,"doc_count":14},{"key_as_string":"2017-02-11T06:48:00.000Z","key":1486795680000,"doc_count":15},{"key_as_string":"2017-02-11T06:49:00.000Z","key":1486795740000,"doc_count":11},{"key_as_string":"2017-02-11T06:50:00.000Z","key":1486795800000,"doc_count":14},{"key_as_string":"2017-02-11T06:51:00.000Z","key":1486795860000,"doc_count":9},{"key_as_string":"2017-02-11T06:52:00.000Z","key":1486795920000,"doc_count":15},{"key_as_string":"2017-02-11T06:53:00.000Z","key":1486795980000,"doc_count":6},{"key_as_string":"2017-02-11T06:54:00.000Z","key":1486796040000,"doc_count":15},{"key_as_string":"2017-02-11T06:55:00.000Z","key":1486796100000,"doc_count":12},{"key_as_string":"2017-02-11T06:56:00.000Z","key":1486796160000,"doc_count":11},{"key_as_string":"2017-02-11T06:57:00.000Z","key":1486796220000,"doc_count":15},{"key_as_string":"2017-02-11T06:58:00.000Z","key":1486796280000,"doc_count":12},{"key_as_string":"2017-02-11T06:59:00.000Z","key":1486796340000,"doc_count":9},{"key_as_string":"2017-02-11T07:00:00.000Z","key":1486796400000,"doc_count":17},{"key_as_string":"2017-02-11T07:01:00.000Z","key":1486796460000,"doc_count":11},{"key_as_string":"2017-02-11T07:02:00.000Z","key":1486796520000,"doc_count":12},{"key_as_string":"2017-02-11T07:03:00.000Z","key":1486796580000,"doc_count":15},{"key_as_string":"2017-02-11T07:04:00.000Z","key":1486796640000,"doc_count":16},{"key_as_string":"2017-02-11T07:05:00.000Z","key":1486796700000,"doc_count":13},{"key_as_string":"2017-02-11T07:06:00.000Z","key":1486796760000,"doc_count":12},{"key_as_string":"2017-02-11T07:07:00.000Z","key":1486796820000,"doc_count":10},{"key_as_string":"2017-02-11T07:08:00.000Z","key":1486796880000,"doc_count":18},{"key_as_string":"2017-02-11T07:09:00.000Z","key":1486796940000,"doc_count":10},{"key_as_string":"2017-02-11T07:10:00.000Z","key":1486797000000,"doc_count":12},{"key_as_string":"2017-02-11T07:11:00.000Z","key":1486797060000,"doc_count":16},{"key_as_string":"2017-02-11T07:12:00.000Z","key":1486797120000,"doc_count":13},{"key_as_string":"2017-02-11T07:13:00.000Z","key":1486797180000,"doc_count":9},{"key_as_string":"2017-02-11T07:14:00.000Z","key":1486797240000,"doc_count":12},{"key_as_string":"2017-02-11T07:15:00.000Z","key":1486797300000,"doc_count":9},{"key_as_string":"2017-02-11T07:16:00.000Z","key":1486797360000,"doc_count":11},{"key_as_string":"2017-02-11T07:17:00.000Z","key":1486797420000,"doc_count":12},{"key_as_string":"2017-02-11T07:18:00.000Z","key":1486797480000,"doc_count":13},{"key_as_string":"2017-02-11T07:19:00.000Z","key":1486797540000,"doc_count":14},{"key_as_string":"2017-02-11T07:20:00.000Z","key":1486797600000,"doc_count":11},{"key_as_string":"2017-02-11T07:21:00.000Z","key":1486797660000,"doc_count":16},{"key_as_string":"2017-02-11T07:22:00.000Z","key":1486797720000,"doc_count":9},{"key_as_string":"2017-02-11T07:23:00.000Z","key":1486797780000,"doc_count":14},{"key_as_string":"2017-02-11T07:24:00.000Z","key":1486797840000,"doc_count":11},{"key_as_string":"2017-02-11T07:25:00.000Z","key":1486797900000,"doc_count":14},{"key_as_string":"2017-02-11T07:26:00.000Z","key":1486797960000,"doc_count":12},{"key_as_string":"2017-02-11T07:27:00.000Z","key":1486798020000,"doc_count":15},{"key_as_string":"2017-02-11T07:28:00.000Z","key":1486798080000,"doc_count":8},{"key_as_string":"2017-02-11T07:29:00.000Z","key":1486798140000,"doc_count":12},{"key_as_string":"2017-02-11T07:30:00.000Z","key":1486798200000,"doc_count":13},{"key_as_string":"2017-02-11T07:31:00.000Z","key":1486798260000,"doc_count":11},{"key_as_string":"2017-02-11T07:32:00.000Z","key":1486798320000,"doc_count":12},{"key_as_string":"2017-02-11T07:33:00.000Z","key":1486798380000,"doc_count":12},{"key_as_string":"2017-02-11T07:34:00.000Z","key":1486798440000,"doc_count":12},{"key_as_string":"2017-02-11T07:35:00.000Z","key":1486798500000,"doc_count":12},{"key_as_string":"2017-02-11T07:36:00.000Z","key":1486798560000,"doc_count":13},{"key_as_string":"2017-02-11T07:37:00.000Z","key":1486798620000,"doc_count":9},{"key_as_string":"2017-02-11T07:38:00.000Z","key":1486798680000,"doc_count":13},{"key_as_string":"2017-02-11T07:39:00.000Z","key":1486798740000,"doc_count":9},{"key_as_string":"2017-02-11T07:40:00.000Z","key":1486798800000,"doc_count":12},{"key_as_string":"2017-02-11T07:41:00.000Z","key":1486798860000,"doc_count":12},{"key_as_string":"2017-02-11T07:42:00.000Z","key":1486798920000,"doc_count":17},{"key_as_string":"2017-02-11T07:43:00.000Z","key":1486798980000,"doc_count":12},{"key_as_string":"2017-02-11T07:44:00.000Z","key":1486799040000,"doc_count":11},{"key_as_string":"2017-02-11T07:45:00.000Z","key":1486799100000,"doc_count":14},{"key_as_string":"2017-02-11T07:46:00.000Z","key":1486799160000,"doc_count":14},{"key_as_string":"2017-02-11T07:47:00.000Z","key":1486799220000,"doc_count":9},{"key_as_string":"2017-02-11T07:48:00.000Z","key":1486799280000,"doc_count":11},{"key_as_string":"2017-02-11T07:49:00.000Z","key":1486799340000,"doc_count":11},{"key_as_string":"2017-02-11T07:50:00.000Z","key":1486799400000,"doc_count":9},{"key_as_string":"2017-02-11T07:51:00.000Z","key":1486799460000,"doc_count":12},{"key_as_string":"2017-02-11T07:52:00.000Z","key":1486799520000,"doc_count":12},{"key_as_string":"2017-02-11T07:53:00.000Z","key":1486799580000,"doc_count":7},{"key_as_string":"2017-02-11T07:54:00.000Z","key":1486799640000,"doc_count":17},{"key_as_string":"2017-02-11T07:55:00.000Z","key":1486799700000,"doc_count":13},{"key_as_string":"2017-02-11T07:56:00.000Z","key":1486799760000,"doc_count":12},{"key_as_string":"2017-02-11T07:57:00.000Z","key":1486799820000,"doc_count":11},{"key_as_string":"2017-02-11T07:58:00.000Z","key":1486799880000,"doc_count":13},{"key_as_string":"2017-02-11T07:59:00.000Z","key":1486799940000,"doc_count":11},{"key_as_string":"2017-02-11T08:00:00.000Z","key":1486800000000,"doc_count":16},{"key_as_string":"2017-02-11T08:01:00.000Z","key":1486800060000,"doc_count":15},{"key_as_string":"2017-02-11T08:02:00.000Z","key":1486800120000,"doc_count":14},{"key_as_string":"2017-02-11T08:03:00.000Z","key":1486800180000,"doc_count":16},{"key_as_string":"2017-02-11T08:04:00.000Z","key":1486800240000,"doc_count":12},{"key_as_string":"2017-02-11T08:05:00.000Z","key":1486800300000,"doc_count":14},{"key_as_string":"2017-02-11T08:06:00.000Z","key":1486800360000,"doc_count":13},{"key_as_string":"2017-02-11T08:07:00.000Z","key":1486800420000,"doc_count":16},{"key_as_string":"2017-02-11T08:08:00.000Z","key":1486800480000,"doc_count":17},{"key_as_string":"2017-02-11T08:09:00.000Z","key":1486800540000,"doc_count":20},{"key_as_string":"2017-02-11T08:10:00.000Z","key":1486800600000,"doc_count":13},{"key_as_string":"2017-02-11T08:11:00.000Z","key":1486800660000,"doc_count":15},{"key_as_string":"2017-02-11T08:12:00.000Z","key":1486800720000,"doc_count":10},{"key_as_string":"2017-02-11T08:13:00.000Z","key":1486800780000,"doc_count":16},{"key_as_string":"2017-02-11T08:14:00.000Z","key":1486800840000,"doc_count":5},{"key_as_string":"2017-02-11T08:15:00.000Z","key":1486800900000,"doc_count":14},{"key_as_string":"2017-02-11T08:16:00.000Z","key":1486800960000,"doc_count":18},{"key_as_string":"2017-02-11T08:17:00.000Z","key":1486801020000,"doc_count":11},{"key_as_string":"2017-02-11T08:18:00.000Z","key":1486801080000,"doc_count":16},{"key_as_string":"2017-02-11T08:19:00.000Z","key":1486801140000,"doc_count":10},{"key_as_string":"2017-02-11T08:20:00.000Z","key":1486801200000,"doc_count":15},{"key_as_string":"2017-02-11T08:21:00.000Z","key":1486801260000,"doc_count":10},{"key_as_string":"2017-02-11T08:22:00.000Z","key":1486801320000,"doc_count":14},{"key_as_string":"2017-02-11T08:23:00.000Z","key":1486801380000,"doc_count":10},{"key_as_string":"2017-02-11T08:24:00.000Z","key":1486801440000,"doc_count":19},{"key_as_string":"2017-02-11T08:25:00.000Z","key":1486801500000,"doc_count":14},{"key_as_string":"2017-02-11T08:26:00.000Z","key":1486801560000,"doc_count":13},{"key_as_string":"2017-02-11T08:27:00.000Z","key":1486801620000,"doc_count":10},{"key_as_string":"2017-02-11T08:28:00.000Z","key":1486801680000,"doc_count":15},{"key_as_string":"2017-02-11T08:29:00.000Z","key":1486801740000,"doc_count":10},{"key_as_string":"2017-02-11T08:30:00.000Z","key":1486801800000,"doc_count":11},{"key_as_string":"2017-02-11T08:31:00.000Z","key":1486801860000,"doc_count":9},{"key_as_string":"2017-02-11T08:32:00.000Z","key":1486801920000,"doc_count":14},{"key_as_string":"2017-02-11T08:33:00.000Z","key":1486801980000,"doc_count":10},{"key_as_string":"2017-02-11T08:34:00.000Z","key":1486802040000,"doc_count":12},{"key_as_string":"2017-02-11T08:35:00.000Z","key":1486802100000,"doc_count":16},{"key_as_string":"2017-02-11T08:36:00.000Z","key":1486802160000,"doc_count":19},{"key_as_string":"2017-02-11T08:37:00.000Z","key":1486802220000,"doc_count":13},{"key_as_string":"2017-02-11T08:38:00.000Z","key":1486802280000,"doc_count":11},{"key_as_string":"2017-02-11T08:39:00.000Z","key":1486802340000,"doc_count":16},{"key_as_string":"2017-02-11T08:40:00.000Z","key":1486802400000,"doc_count":13},{"key_as_string":"2017-02-11T08:41:00.000Z","key":1486802460000,"doc_count":10},{"key_as_string":"2017-02-11T08:42:00.000Z","key":1486802520000,"doc_count":12},{"key_as_string":"2017-02-11T08:43:00.000Z","key":1486802580000,"doc_count":11},{"key_as_string":"2017-02-11T08:44:00.000Z","key":1486802640000,"doc_count":9},{"key_as_string":"2017-02-11T08:45:00.000Z","key":1486802700000,"doc_count":12},{"key_as_string":"2017-02-11T08:46:00.000Z","key":1486802760000,"doc_count":11},{"key_as_string":"2017-02-11T08:47:00.000Z","key":1486802820000,"doc_count":15},{"key_as_string":"2017-02-11T08:48:00.000Z","key":1486802880000,"doc_count":9},{"key_as_string":"2017-02-11T08:49:00.000Z","key":1486802940000,"doc_count":17},{"key_as_string":"2017-02-11T08:50:00.000Z","key":1486803000000,"doc_count":14},{"key_as_string":"2017-02-11T08:51:00.000Z","key":1486803060000,"doc_count":14},{"key_as_string":"2017-02-11T08:52:00.000Z","key":1486803120000,"doc_count":11},{"key_as_string":"2017-02-11T08:53:00.000Z","key":1486803180000,"doc_count":13},{"key_as_string":"2017-02-11T08:54:00.000Z","key":1486803240000,"doc_count":17},{"key_as_string":"2017-02-11T08:55:00.000Z","key":1486803300000,"doc_count":13},{"key_as_string":"2017-02-11T08:56:00.000Z","key":1486803360000,"doc_count":15},{"key_as_string":"2017-02-11T08:57:00.000Z","key":1486803420000,"doc_count":15},{"key_as_string":"2017-02-11T08:58:00.000Z","key":1486803480000,"doc_count":14},{"key_as_string":"2017-02-11T08:59:00.000Z","key":1486803540000,"doc_count":6},{"key_as_string":"2017-02-11T09:00:00.000Z","key":1486803600000,"doc_count":15},{"key_as_string":"2017-02-11T09:01:00.000Z","key":1486803660000,"doc_count":9},{"key_as_string":"2017-02-11T09:02:00.000Z","key":1486803720000,"doc_count":15},{"key_as_string":"2017-02-11T09:03:00.000Z","key":1486803780000,"doc_count":10},{"key_as_string":"2017-02-11T09:04:00.000Z","key":1486803840000,"doc_count":11},{"key_as_string":"2017-02-11T09:05:00.000Z","key":1486803900000,"doc_count":17},{"key_as_string":"2017-02-11T09:06:00.000Z","key":1486803960000,"doc_count":10},{"key_as_string":"2017-02-11T09:07:00.000Z","key":1486804020000,"doc_count":13},{"key_as_string":"2017-02-11T09:08:00.000Z","key":1486804080000,"doc_count":15},{"key_as_string":"2017-02-11T09:09:00.000Z","key":1486804140000,"doc_count":10},{"key_as_string":"2017-02-11T09:10:00.000Z","key":1486804200000,"doc_count":16},{"key_as_string":"2017-02-11T09:11:00.000Z","key":1486804260000,"doc_count":18},{"key_as_string":"2017-02-11T09:12:00.000Z","key":1486804320000,"doc_count":10},{"key_as_string":"2017-02-11T09:13:00.000Z","key":1486804380000,"doc_count":14},{"key_as_string":"2017-02-11T09:14:00.000Z","key":1486804440000,"doc_count":9},{"key_as_string":"2017-02-11T09:15:00.000Z","key":1486804500000,"doc_count":17},{"key_as_string":"2017-02-11T09:16:00.000Z","key":1486804560000,"doc_count":18},{"key_as_string":"2017-02-11T09:17:00.000Z","key":1486804620000,"doc_count":12},{"key_as_string":"2017-02-11T09:18:00.000Z","key":1486804680000,"doc_count":15},{"key_as_string":"2017-02-11T09:19:00.000Z","key":1486804740000,"doc_count":10},{"key_as_string":"2017-02-11T09:20:00.000Z","key":1486804800000,"doc_count":14},{"key_as_string":"2017-02-11T09:21:00.000Z","key":1486804860000,"doc_count":15},{"key_as_string":"2017-02-11T09:22:00.000Z","key":1486804920000,"doc_count":12},{"key_as_string":"2017-02-11T09:23:00.000Z","key":1486804980000,"doc_count":17},{"key_as_string":"2017-02-11T09:24:00.000Z","key":1486805040000,"doc_count":13},{"key_as_string":"2017-02-11T09:25:00.000Z","key":1486805100000,"doc_count":17},{"key_as_string":"2017-02-11T09:26:00.000Z","key":1486805160000,"doc_count":11},{"key_as_string":"2017-02-11T09:27:00.000Z","key":1486805220000,"doc_count":11},{"key_as_string":"2017-02-11T09:28:00.000Z","key":1486805280000,"doc_count":13},{"key_as_string":"2017-02-11T09:29:00.000Z","key":1486805340000,"doc_count":9},{"key_as_string":"2017-02-11T09:30:00.000Z","key":1486805400000,"doc_count":20},{"key_as_string":"2017-02-11T09:31:00.000Z","key":1486805460000,"doc_count":13},{"key_as_string":"2017-02-11T09:32:00.000Z","key":1486805520000,"doc_count":17},{"key_as_string":"2017-02-11T09:33:00.000Z","key":1486805580000,"doc_count":16},{"key_as_string":"2017-02-11T09:34:00.000Z","key":1486805640000,"doc_count":11},{"key_as_string":"2017-02-11T09:35:00.000Z","key":1486805700000,"doc_count":18},{"key_as_string":"2017-02-11T09:36:00.000Z","key":1486805760000,"doc_count":14},{"key_as_string":"2017-02-11T09:37:00.000Z","key":1486805820000,"doc_count":17},{"key_as_string":"2017-02-11T09:38:00.000Z","key":1486805880000,"doc_count":12},{"key_as_string":"2017-02-11T09:39:00.000Z","key":1486805940000,"doc_count":12},{"key_as_string":"2017-02-11T09:40:00.000Z","key":1486806000000,"doc_count":14},{"key_as_string":"2017-02-11T09:41:00.000Z","key":1486806060000,"doc_count":11},{"key_as_string":"2017-02-11T09:42:00.000Z","key":1486806120000,"doc_count":12},{"key_as_string":"2017-02-11T09:43:00.000Z","key":1486806180000,"doc_count":14},{"key_as_string":"2017-02-11T09:44:00.000Z","key":1486806240000,"doc_count":16},{"key_as_string":"2017-02-11T09:45:00.000Z","key":1486806300000,"doc_count":17},{"key_as_string":"2017-02-11T09:46:00.000Z","key":1486806360000,"doc_count":12},{"key_as_string":"2017-02-11T09:47:00.000Z","key":1486806420000,"doc_count":15},{"key_as_string":"2017-02-11T09:48:00.000Z","key":1486806480000,"doc_count":13},{"key_as_string":"2017-02-11T09:49:00.000Z","key":1486806540000,"doc_count":14},{"key_as_string":"2017-02-11T09:50:00.000Z","key":1486806600000,"doc_count":17},{"key_as_string":"2017-02-11T09:51:00.000Z","key":1486806660000,"doc_count":15},{"key_as_string":"2017-02-11T09:52:00.000Z","key":1486806720000,"doc_count":9},{"key_as_string":"2017-02-11T09:53:00.000Z","key":1486806780000,"doc_count":20},{"key_as_string":"2017-02-11T09:54:00.000Z","key":1486806840000,"doc_count":15},{"key_as_string":"2017-02-11T09:55:00.000Z","key":1486806900000,"doc_count":19},{"key_as_string":"2017-02-11T09:56:00.000Z","key":1486806960000,"doc_count":10},{"key_as_string":"2017-02-11T09:57:00.000Z","key":1486807020000,"doc_count":14},{"key_as_string":"2017-02-11T09:58:00.000Z","key":1486807080000,"doc_count":15},{"key_as_string":"2017-02-11T09:59:00.000Z","key":1486807140000,"doc_count":20},{"key_as_string":"2017-02-11T10:00:00.000Z","key":1486807200000,"doc_count":14},{"key_as_string":"2017-02-11T10:01:00.000Z","key":1486807260000,"doc_count":14},{"key_as_string":"2017-02-11T10:02:00.000Z","key":1486807320000,"doc_count":13},{"key_as_string":"2017-02-11T10:03:00.000Z","key":1486807380000,"doc_count":13},{"key_as_string":"2017-02-11T10:04:00.000Z","key":1486807440000,"doc_count":17},{"key_as_string":"2017-02-11T10:05:00.000Z","key":1486807500000,"doc_count":10},{"key_as_string":"2017-02-11T10:06:00.000Z","key":1486807560000,"doc_count":20},{"key_as_string":"2017-02-11T10:07:00.000Z","key":1486807620000,"doc_count":14},{"key_as_string":"2017-02-11T10:08:00.000Z","key":1486807680000,"doc_count":12},{"key_as_string":"2017-02-11T10:09:00.000Z","key":1486807740000,"doc_count":22},{"key_as_string":"2017-02-11T10:10:00.000Z","key":1486807800000,"doc_count":18},{"key_as_string":"2017-02-11T10:11:00.000Z","key":1486807860000,"doc_count":9},{"key_as_string":"2017-02-11T10:12:00.000Z","key":1486807920000,"doc_count":16},{"key_as_string":"2017-02-11T10:13:00.000Z","key":1486807980000,"doc_count":13},{"key_as_string":"2017-02-11T10:14:00.000Z","key":1486808040000,"doc_count":14},{"key_as_string":"2017-02-11T10:15:00.000Z","key":1486808100000,"doc_count":13},{"key_as_string":"2017-02-11T10:16:00.000Z","key":1486808160000,"doc_count":15},{"key_as_string":"2017-02-11T10:17:00.000Z","key":1486808220000,"doc_count":15},{"key_as_string":"2017-02-11T10:18:00.000Z","key":1486808280000,"doc_count":13},{"key_as_string":"2017-02-11T10:19:00.000Z","key":1486808340000,"doc_count":12},{"key_as_string":"2017-02-11T10:20:00.000Z","key":1486808400000,"doc_count":8},{"key_as_string":"2017-02-11T10:21:00.000Z","key":1486808460000,"doc_count":18},{"key_as_string":"2017-02-11T10:22:00.000Z","key":1486808520000,"doc_count":14},{"key_as_string":"2017-02-11T10:23:00.000Z","key":1486808580000,"doc_count":17},{"key_as_string":"2017-02-11T10:24:00.000Z","key":1486808640000,"doc_count":22},{"key_as_string":"2017-02-11T10:25:00.000Z","key":1486808700000,"doc_count":12},{"key_as_string":"2017-02-11T10:26:00.000Z","key":1486808760000,"doc_count":13},{"key_as_string":"2017-02-11T10:27:00.000Z","key":1486808820000,"doc_count":17},{"key_as_string":"2017-02-11T10:28:00.000Z","key":1486808880000,"doc_count":14},{"key_as_string":"2017-02-11T10:29:00.000Z","key":1486808940000,"doc_count":13},{"key_as_string":"2017-02-11T10:30:00.000Z","key":1486809000000,"doc_count":11},{"key_as_string":"2017-02-11T10:31:00.000Z","key":1486809060000,"doc_count":15},{"key_as_string":"2017-02-11T10:32:00.000Z","key":1486809120000,"doc_count":17},{"key_as_string":"2017-02-11T10:33:00.000Z","key":1486809180000,"doc_count":14},{"key_as_string":"2017-02-11T10:34:00.000Z","key":1486809240000,"doc_count":12},{"key_as_string":"2017-02-11T10:35:00.000Z","key":1486809300000,"doc_count":10},{"key_as_string":"2017-02-11T10:36:00.000Z","key":1486809360000,"doc_count":12},{"key_as_string":"2017-02-11T10:37:00.000Z","key":1486809420000,"doc_count":16},{"key_as_string":"2017-02-11T10:38:00.000Z","key":1486809480000,"doc_count":18},{"key_as_string":"2017-02-11T10:39:00.000Z","key":1486809540000,"doc_count":15},{"key_as_string":"2017-02-11T10:40:00.000Z","key":1486809600000,"doc_count":16},{"key_as_string":"2017-02-11T10:41:00.000Z","key":1486809660000,"doc_count":15},{"key_as_string":"2017-02-11T10:42:00.000Z","key":1486809720000,"doc_count":15},{"key_as_string":"2017-02-11T10:43:00.000Z","key":1486809780000,"doc_count":11},{"key_as_string":"2017-02-11T10:44:00.000Z","key":1486809840000,"doc_count":11},{"key_as_string":"2017-02-11T10:45:00.000Z","key":1486809900000,"doc_count":19},{"key_as_string":"2017-02-11T10:46:00.000Z","key":1486809960000,"doc_count":12},{"key_as_string":"2017-02-11T10:47:00.000Z","key":1486810020000,"doc_count":12},{"key_as_string":"2017-02-11T10:48:00.000Z","key":1486810080000,"doc_count":12},{"key_as_string":"2017-02-11T10:49:00.000Z","key":1486810140000,"doc_count":12},{"key_as_string":"2017-02-11T10:50:00.000Z","key":1486810200000,"doc_count":21},{"key_as_string":"2017-02-11T10:51:00.000Z","key":1486810260000,"doc_count":13},{"key_as_string":"2017-02-11T10:52:00.000Z","key":1486810320000,"doc_count":13},{"key_as_string":"2017-02-11T10:53:00.000Z","key":1486810380000,"doc_count":14},{"key_as_string":"2017-02-11T10:54:00.000Z","key":1486810440000,"doc_count":14},{"key_as_string":"2017-02-11T10:55:00.000Z","key":1486810500000,"doc_count":10},{"key_as_string":"2017-02-11T10:56:00.000Z","key":1486810560000,"doc_count":12},{"key_as_string":"2017-02-11T10:57:00.000Z","key":1486810620000,"doc_count":15},{"key_as_string":"2017-02-11T10:58:00.000Z","key":1486810680000,"doc_count":13},{"key_as_string":"2017-02-11T10:59:00.000Z","key":1486810740000,"doc_count":11},{"key_as_string":"2017-02-11T11:00:00.000Z","key":1486810800000,"doc_count":18},{"key_as_string":"2017-02-11T11:01:00.000Z","key":1486810860000,"doc_count":14},{"key_as_string":"2017-02-11T11:02:00.000Z","key":1486810920000,"doc_count":18},{"key_as_string":"2017-02-11T11:03:00.000Z","key":1486810980000,"doc_count":18},{"key_as_string":"2017-02-11T11:04:00.000Z","key":1486811040000,"doc_count":14},{"key_as_string":"2017-02-11T11:05:00.000Z","key":1486811100000,"doc_count":21},{"key_as_string":"2017-02-11T11:06:00.000Z","key":1486811160000,"doc_count":8},{"key_as_string":"2017-02-11T11:07:00.000Z","key":1486811220000,"doc_count":14},{"key_as_string":"2017-02-11T11:08:00.000Z","key":1486811280000,"doc_count":9},{"key_as_string":"2017-02-11T11:09:00.000Z","key":1486811340000,"doc_count":13},{"key_as_string":"2017-02-11T11:10:00.000Z","key":1486811400000,"doc_count":19},{"key_as_string":"2017-02-11T11:11:00.000Z","key":1486811460000,"doc_count":12},{"key_as_string":"2017-02-11T11:12:00.000Z","key":1486811520000,"doc_count":15},{"key_as_string":"2017-02-11T11:13:00.000Z","key":1486811580000,"doc_count":16},{"key_as_string":"2017-02-11T11:14:00.000Z","key":1486811640000,"doc_count":11},{"key_as_string":"2017-02-11T11:15:00.000Z","key":1486811700000,"doc_count":12},{"key_as_string":"2017-02-11T11:16:00.000Z","key":1486811760000,"doc_count":16},{"key_as_string":"2017-02-11T11:17:00.000Z","key":1486811820000,"doc_count":14},{"key_as_string":"2017-02-11T11:18:00.000Z","key":1486811880000,"doc_count":13},{"key_as_string":"2017-02-11T11:19:00.000Z","key":1486811940000,"doc_count":14},{"key_as_string":"2017-02-11T11:20:00.000Z","key":1486812000000,"doc_count":14},{"key_as_string":"2017-02-11T11:21:00.000Z","key":1486812060000,"doc_count":11},{"key_as_string":"2017-02-11T11:22:00.000Z","key":1486812120000,"doc_count":14},{"key_as_string":"2017-02-11T11:23:00.000Z","key":1486812180000,"doc_count":13},{"key_as_string":"2017-02-11T11:24:00.000Z","key":1486812240000,"doc_count":13},{"key_as_string":"2017-02-11T11:25:00.000Z","key":1486812300000,"doc_count":13},{"key_as_string":"2017-02-11T11:26:00.000Z","key":1486812360000,"doc_count":6},{"key_as_string":"2017-02-11T11:27:00.000Z","key":1486812420000,"doc_count":21},{"key_as_string":"2017-02-11T11:28:00.000Z","key":1486812480000,"doc_count":10},{"key_as_string":"2017-02-11T11:29:00.000Z","key":1486812540000,"doc_count":19},{"key_as_string":"2017-02-11T11:30:00.000Z","key":1486812600000,"doc_count":10},{"key_as_string":"2017-02-11T11:31:00.000Z","key":1486812660000,"doc_count":10},{"key_as_string":"2017-02-11T11:32:00.000Z","key":1486812720000,"doc_count":14},{"key_as_string":"2017-02-11T11:33:00.000Z","key":1486812780000,"doc_count":13},{"key_as_string":"2017-02-11T11:34:00.000Z","key":1486812840000,"doc_count":9},{"key_as_string":"2017-02-11T11:35:00.000Z","key":1486812900000,"doc_count":16},{"key_as_string":"2017-02-11T11:36:00.000Z","key":1486812960000,"doc_count":9},{"key_as_string":"2017-02-11T11:37:00.000Z","key":1486813020000,"doc_count":14},{"key_as_string":"2017-02-11T11:38:00.000Z","key":1486813080000,"doc_count":8},{"key_as_string":"2017-02-11T11:39:00.000Z","key":1486813140000,"doc_count":16},{"key_as_string":"2017-02-11T11:40:00.000Z","key":1486813200000,"doc_count":17},{"key_as_string":"2017-02-11T11:41:00.000Z","key":1486813260000,"doc_count":11},{"key_as_string":"2017-02-11T11:42:00.000Z","key":1486813320000,"doc_count":13},{"key_as_string":"2017-02-11T11:43:00.000Z","key":1486813380000,"doc_count":14},{"key_as_string":"2017-02-11T11:44:00.000Z","key":1486813440000,"doc_count":17},{"key_as_string":"2017-02-11T11:45:00.000Z","key":1486813500000,"doc_count":11},{"key_as_string":"2017-02-11T11:46:00.000Z","key":1486813560000,"doc_count":16},{"key_as_string":"2017-02-11T11:47:00.000Z","key":1486813620000,"doc_count":12},{"key_as_string":"2017-02-11T11:48:00.000Z","key":1486813680000,"doc_count":13},{"key_as_string":"2017-02-11T11:49:00.000Z","key":1486813740000,"doc_count":19},{"key_as_string":"2017-02-11T11:50:00.000Z","key":1486813800000,"doc_count":12},{"key_as_string":"2017-02-11T11:51:00.000Z","key":1486813860000,"doc_count":15},{"key_as_string":"2017-02-11T11:52:00.000Z","key":1486813920000,"doc_count":12},{"key_as_string":"2017-02-11T11:53:00.000Z","key":1486813980000,"doc_count":8},{"key_as_string":"2017-02-11T11:54:00.000Z","key":1486814040000,"doc_count":15},{"key_as_string":"2017-02-11T11:55:00.000Z","key":1486814100000,"doc_count":16},{"key_as_string":"2017-02-11T11:56:00.000Z","key":1486814160000,"doc_count":10},{"key_as_string":"2017-02-11T11:57:00.000Z","key":1486814220000,"doc_count":12},{"key_as_string":"2017-02-11T11:58:00.000Z","key":1486814280000,"doc_count":17},{"key_as_string":"2017-02-11T11:59:00.000Z","key":1486814340000,"doc_count":18},{"key_as_string":"2017-02-11T12:00:00.000Z","key":1486814400000,"doc_count":13},{"key_as_string":"2017-02-11T12:01:00.000Z","key":1486814460000,"doc_count":13},{"key_as_string":"2017-02-11T12:02:00.000Z","key":1486814520000,"doc_count":9},{"key_as_string":"2017-02-11T12:03:00.000Z","key":1486814580000,"doc_count":14},{"key_as_string":"2017-02-11T12:04:00.000Z","key":1486814640000,"doc_count":11},{"key_as_string":"2017-02-11T12:05:00.000Z","key":1486814700000,"doc_count":9},{"key_as_string":"2017-02-11T12:06:00.000Z","key":1486814760000,"doc_count":18},{"key_as_string":"2017-02-11T12:07:00.000Z","key":1486814820000,"doc_count":14},{"key_as_string":"2017-02-11T12:08:00.000Z","key":1486814880000,"doc_count":9},{"key_as_string":"2017-02-11T12:09:00.000Z","key":1486814940000,"doc_count":15},{"key_as_string":"2017-02-11T12:10:00.000Z","key":1486815000000,"doc_count":18},{"key_as_string":"2017-02-11T12:11:00.000Z","key":1486815060000,"doc_count":14},{"key_as_string":"2017-02-11T12:12:00.000Z","key":1486815120000,"doc_count":16},{"key_as_string":"2017-02-11T12:13:00.000Z","key":1486815180000,"doc_count":14},{"key_as_string":"2017-02-11T12:14:00.000Z","key":1486815240000,"doc_count":12},{"key_as_string":"2017-02-11T12:15:00.000Z","key":1486815300000,"doc_count":15},{"key_as_string":"2017-02-11T12:16:00.000Z","key":1486815360000,"doc_count":12},{"key_as_string":"2017-02-11T12:17:00.000Z","key":1486815420000,"doc_count":12},{"key_as_string":"2017-02-11T12:18:00.000Z","key":1486815480000,"doc_count":16},{"key_as_string":"2017-02-11T12:19:00.000Z","key":1486815540000,"doc_count":9},{"key_as_string":"2017-02-11T12:20:00.000Z","key":1486815600000,"doc_count":14},{"key_as_string":"2017-02-11T12:21:00.000Z","key":1486815660000,"doc_count":11},{"key_as_string":"2017-02-11T12:22:00.000Z","key":1486815720000,"doc_count":16},{"key_as_string":"2017-02-11T12:23:00.000Z","key":1486815780000,"doc_count":14},{"key_as_string":"2017-02-11T12:24:00.000Z","key":1486815840000,"doc_count":10},{"key_as_string":"2017-02-11T12:25:00.000Z","key":1486815900000,"doc_count":16},{"key_as_string":"2017-02-11T12:26:00.000Z","key":1486815960000,"doc_count":18},{"key_as_string":"2017-02-11T12:27:00.000Z","key":1486816020000,"doc_count":15},{"key_as_string":"2017-02-11T12:28:00.000Z","key":1486816080000,"doc_count":10},{"key_as_string":"2017-02-11T12:29:00.000Z","key":1486816140000,"doc_count":12},{"key_as_string":"2017-02-11T12:30:00.000Z","key":1486816200000,"doc_count":11},{"key_as_string":"2017-02-11T12:31:00.000Z","key":1486816260000,"doc_count":16},{"key_as_string":"2017-02-11T12:32:00.000Z","key":1486816320000,"doc_count":11},{"key_as_string":"2017-02-11T12:33:00.000Z","key":1486816380000,"doc_count":11},{"key_as_string":"2017-02-11T12:34:00.000Z","key":1486816440000,"doc_count":19},{"key_as_string":"2017-02-11T12:35:00.000Z","key":1486816500000,"doc_count":17},{"key_as_string":"2017-02-11T12:36:00.000Z","key":1486816560000,"doc_count":19},{"key_as_string":"2017-02-11T12:37:00.000Z","key":1486816620000,"doc_count":11},{"key_as_string":"2017-02-11T12:38:00.000Z","key":1486816680000,"doc_count":18},{"key_as_string":"2017-02-11T12:39:00.000Z","key":1486816740000,"doc_count":11},{"key_as_string":"2017-02-11T12:40:00.000Z","key":1486816800000,"doc_count":12},{"key_as_string":"2017-02-11T12:41:00.000Z","key":1486816860000,"doc_count":15},{"key_as_string":"2017-02-11T12:42:00.000Z","key":1486816920000,"doc_count":15},{"key_as_string":"2017-02-11T12:43:00.000Z","key":1486816980000,"doc_count":7},{"key_as_string":"2017-02-11T12:44:00.000Z","key":1486817040000,"doc_count":19},{"key_as_string":"2017-02-11T12:45:00.000Z","key":1486817100000,"doc_count":12},{"key_as_string":"2017-02-11T12:46:00.000Z","key":1486817160000,"doc_count":16},{"key_as_string":"2017-02-11T12:47:00.000Z","key":1486817220000,"doc_count":8},{"key_as_string":"2017-02-11T12:48:00.000Z","key":1486817280000,"doc_count":15},{"key_as_string":"2017-02-11T12:49:00.000Z","key":1486817340000,"doc_count":12},{"key_as_string":"2017-02-11T12:50:00.000Z","key":1486817400000,"doc_count":12},{"key_as_string":"2017-02-11T12:51:00.000Z","key":1486817460000,"doc_count":16},{"key_as_string":"2017-02-11T12:52:00.000Z","key":1486817520000,"doc_count":13},{"key_as_string":"2017-02-11T12:53:00.000Z","key":1486817580000,"doc_count":13},{"key_as_string":"2017-02-11T12:54:00.000Z","key":1486817640000,"doc_count":15},{"key_as_string":"2017-02-11T12:55:00.000Z","key":1486817700000,"doc_count":16},{"key_as_string":"2017-02-11T12:56:00.000Z","key":1486817760000,"doc_count":17},{"key_as_string":"2017-02-11T12:57:00.000Z","key":1486817820000,"doc_count":13},{"key_as_string":"2017-02-11T12:58:00.000Z","key":1486817880000,"doc_count":12},{"key_as_string":"2017-02-11T12:59:00.000Z","key":1486817940000,"doc_count":17},{"key_as_string":"2017-02-11T13:00:00.000Z","key":1486818000000,"doc_count":16},{"key_as_string":"2017-02-11T13:01:00.000Z","key":1486818060000,"doc_count":14},{"key_as_string":"2017-02-11T13:02:00.000Z","key":1486818120000,"doc_count":8},{"key_as_string":"2017-02-11T13:03:00.000Z","key":1486818180000,"doc_count":15},{"key_as_string":"2017-02-11T13:04:00.000Z","key":1486818240000,"doc_count":14},{"key_as_string":"2017-02-11T13:05:00.000Z","key":1486818300000,"doc_count":16},{"key_as_string":"2017-02-11T13:06:00.000Z","key":1486818360000,"doc_count":20},{"key_as_string":"2017-02-11T13:07:00.000Z","key":1486818420000,"doc_count":10},{"key_as_string":"2017-02-11T13:08:00.000Z","key":1486818480000,"doc_count":15},{"key_as_string":"2017-02-11T13:09:00.000Z","key":1486818540000,"doc_count":12},{"key_as_string":"2017-02-11T13:10:00.000Z","key":1486818600000,"doc_count":12},{"key_as_string":"2017-02-11T13:11:00.000Z","key":1486818660000,"doc_count":8},{"key_as_string":"2017-02-11T13:12:00.000Z","key":1486818720000,"doc_count":17},{"key_as_string":"2017-02-11T13:13:00.000Z","key":1486818780000,"doc_count":8},{"key_as_string":"2017-02-11T13:14:00.000Z","key":1486818840000,"doc_count":15},{"key_as_string":"2017-02-11T13:15:00.000Z","key":1486818900000,"doc_count":13},{"key_as_string":"2017-02-11T13:16:00.000Z","key":1486818960000,"doc_count":15},{"key_as_string":"2017-02-11T13:17:00.000Z","key":1486819020000,"doc_count":15},{"key_as_string":"2017-02-11T13:18:00.000Z","key":1486819080000,"doc_count":11},{"key_as_string":"2017-02-11T13:19:00.000Z","key":1486819140000,"doc_count":17},{"key_as_string":"2017-02-11T13:20:00.000Z","key":1486819200000,"doc_count":11},{"key_as_string":"2017-02-11T13:21:00.000Z","key":1486819260000,"doc_count":14},{"key_as_string":"2017-02-11T13:22:00.000Z","key":1486819320000,"doc_count":10},{"key_as_string":"2017-02-11T13:23:00.000Z","key":1486819380000,"doc_count":15},{"key_as_string":"2017-02-11T13:24:00.000Z","key":1486819440000,"doc_count":14},{"key_as_string":"2017-02-11T13:25:00.000Z","key":1486819500000,"doc_count":11},{"key_as_string":"2017-02-11T13:26:00.000Z","key":1486819560000,"doc_count":12},{"key_as_string":"2017-02-11T13:27:00.000Z","key":1486819620000,"doc_count":13},{"key_as_string":"2017-02-11T13:28:00.000Z","key":1486819680000,"doc_count":16},{"key_as_string":"2017-02-11T13:29:00.000Z","key":1486819740000,"doc_count":8},{"key_as_string":"2017-02-11T13:30:00.000Z","key":1486819800000,"doc_count":12},{"key_as_string":"2017-02-11T13:31:00.000Z","key":1486819860000,"doc_count":10},{"key_as_string":"2017-02-11T13:32:00.000Z","key":1486819920000,"doc_count":15},{"key_as_string":"2017-02-11T13:33:00.000Z","key":1486819980000,"doc_count":13},{"key_as_string":"2017-02-11T13:34:00.000Z","key":1486820040000,"doc_count":15},{"key_as_string":"2017-02-11T13:35:00.000Z","key":1486820100000,"doc_count":13},{"key_as_string":"2017-02-11T13:36:00.000Z","key":1486820160000,"doc_count":15},{"key_as_string":"2017-02-11T13:37:00.000Z","key":1486820220000,"doc_count":19},{"key_as_string":"2017-02-11T13:38:00.000Z","key":1486820280000,"doc_count":13},{"key_as_string":"2017-02-11T13:39:00.000Z","key":1486820340000,"doc_count":15},{"key_as_string":"2017-02-11T13:40:00.000Z","key":1486820400000,"doc_count":16},{"key_as_string":"2017-02-11T13:41:00.000Z","key":1486820460000,"doc_count":14},{"key_as_string":"2017-02-11T13:42:00.000Z","key":1486820520000,"doc_count":18},{"key_as_string":"2017-02-11T13:43:00.000Z","key":1486820580000,"doc_count":11},{"key_as_string":"2017-02-11T13:44:00.000Z","key":1486820640000,"doc_count":14},{"key_as_string":"2017-02-11T13:45:00.000Z","key":1486820700000,"doc_count":14},{"key_as_string":"2017-02-11T13:46:00.000Z","key":1486820760000,"doc_count":13},{"key_as_string":"2017-02-11T13:47:00.000Z","key":1486820820000,"doc_count":9},{"key_as_string":"2017-02-11T13:48:00.000Z","key":1486820880000,"doc_count":11},{"key_as_string":"2017-02-11T13:49:00.000Z","key":1486820940000,"doc_count":20},{"key_as_string":"2017-02-11T13:50:00.000Z","key":1486821000000,"doc_count":9},{"key_as_string":"2017-02-11T13:51:00.000Z","key":1486821060000,"doc_count":8},{"key_as_string":"2017-02-11T13:52:00.000Z","key":1486821120000,"doc_count":20},{"key_as_string":"2017-02-11T13:53:00.000Z","key":1486821180000,"doc_count":11},{"key_as_string":"2017-02-11T13:54:00.000Z","key":1486821240000,"doc_count":16},{"key_as_string":"2017-02-11T13:55:00.000Z","key":1486821300000,"doc_count":15},{"key_as_string":"2017-02-11T13:56:00.000Z","key":1486821360000,"doc_count":14},{"key_as_string":"2017-02-11T13:57:00.000Z","key":1486821420000,"doc_count":15},{"key_as_string":"2017-02-11T13:58:00.000Z","key":1486821480000,"doc_count":15},{"key_as_string":"2017-02-11T13:59:00.000Z","key":1486821540000,"doc_count":9},{"key_as_string":"2017-02-11T14:00:00.000Z","key":1486821600000,"doc_count":12},{"key_as_string":"2017-02-11T14:01:00.000Z","key":1486821660000,"doc_count":13},{"key_as_string":"2017-02-11T14:02:00.000Z","key":1486821720000,"doc_count":15},{"key_as_string":"2017-02-11T14:03:00.000Z","key":1486821780000,"doc_count":12},{"key_as_string":"2017-02-11T14:04:00.000Z","key":1486821840000,"doc_count":16},{"key_as_string":"2017-02-11T14:05:00.000Z","key":1486821900000,"doc_count":10},{"key_as_string":"2017-02-11T14:06:00.000Z","key":1486821960000,"doc_count":12},{"key_as_string":"2017-02-11T14:07:00.000Z","key":1486822020000,"doc_count":13},{"key_as_string":"2017-02-11T14:08:00.000Z","key":1486822080000,"doc_count":9},{"key_as_string":"2017-02-11T14:09:00.000Z","key":1486822140000,"doc_count":16},{"key_as_string":"2017-02-11T14:10:00.000Z","key":1486822200000,"doc_count":15},{"key_as_string":"2017-02-11T14:11:00.000Z","key":1486822260000,"doc_count":14},{"key_as_string":"2017-02-11T14:12:00.000Z","key":1486822320000,"doc_count":10},{"key_as_string":"2017-02-11T14:13:00.000Z","key":1486822380000,"doc_count":10},{"key_as_string":"2017-02-11T14:14:00.000Z","key":1486822440000,"doc_count":15},{"key_as_string":"2017-02-11T14:15:00.000Z","key":1486822500000,"doc_count":10},{"key_as_string":"2017-02-11T14:16:00.000Z","key":1486822560000,"doc_count":13},{"key_as_string":"2017-02-11T14:17:00.000Z","key":1486822620000,"doc_count":14},{"key_as_string":"2017-02-11T14:18:00.000Z","key":1486822680000,"doc_count":14},{"key_as_string":"2017-02-11T14:19:00.000Z","key":1486822740000,"doc_count":17},{"key_as_string":"2017-02-11T14:20:00.000Z","key":1486822800000,"doc_count":13},{"key_as_string":"2017-02-11T14:21:00.000Z","key":1486822860000,"doc_count":14},{"key_as_string":"2017-02-11T14:22:00.000Z","key":1486822920000,"doc_count":12},{"key_as_string":"2017-02-11T14:23:00.000Z","key":1486822980000,"doc_count":21},{"key_as_string":"2017-02-11T14:24:00.000Z","key":1486823040000,"doc_count":14},{"key_as_string":"2017-02-11T14:25:00.000Z","key":1486823100000,"doc_count":9},{"key_as_string":"2017-02-11T14:26:00.000Z","key":1486823160000,"doc_count":8},{"key_as_string":"2017-02-11T14:27:00.000Z","key":1486823220000,"doc_count":14},{"key_as_string":"2017-02-11T14:28:00.000Z","key":1486823280000,"doc_count":10},{"key_as_string":"2017-02-11T14:29:00.000Z","key":1486823340000,"doc_count":12},{"key_as_string":"2017-02-11T14:30:00.000Z","key":1486823400000,"doc_count":12},{"key_as_string":"2017-02-11T14:31:00.000Z","key":1486823460000,"doc_count":14},{"key_as_string":"2017-02-11T14:32:00.000Z","key":1486823520000,"doc_count":15},{"key_as_string":"2017-02-11T14:33:00.000Z","key":1486823580000,"doc_count":14},{"key_as_string":"2017-02-11T14:34:00.000Z","key":1486823640000,"doc_count":9},{"key_as_string":"2017-02-11T14:35:00.000Z","key":1486823700000,"doc_count":14},{"key_as_string":"2017-02-11T14:36:00.000Z","key":1486823760000,"doc_count":12},{"key_as_string":"2017-02-11T14:37:00.000Z","key":1486823820000,"doc_count":17},{"key_as_string":"2017-02-11T14:38:00.000Z","key":1486823880000,"doc_count":11},{"key_as_string":"2017-02-11T14:39:00.000Z","key":1486823940000,"doc_count":12},{"key_as_string":"2017-02-11T14:40:00.000Z","key":1486824000000,"doc_count":15},{"key_as_string":"2017-02-11T14:41:00.000Z","key":1486824060000,"doc_count":11},{"key_as_string":"2017-02-11T14:42:00.000Z","key":1486824120000,"doc_count":13},{"key_as_string":"2017-02-11T14:43:00.000Z","key":1486824180000,"doc_count":18},{"key_as_string":"2017-02-11T14:44:00.000Z","key":1486824240000,"doc_count":10},{"key_as_string":"2017-02-11T14:45:00.000Z","key":1486824300000,"doc_count":13},{"key_as_string":"2017-02-11T14:46:00.000Z","key":1486824360000,"doc_count":9},{"key_as_string":"2017-02-11T14:47:00.000Z","key":1486824420000,"doc_count":14},{"key_as_string":"2017-02-11T14:48:00.000Z","key":1486824480000,"doc_count":16},{"key_as_string":"2017-02-11T14:49:00.000Z","key":1486824540000,"doc_count":14},{"key_as_string":"2017-02-11T14:50:00.000Z","key":1486824600000,"doc_count":13},{"key_as_string":"2017-02-11T14:51:00.000Z","key":1486824660000,"doc_count":12},{"key_as_string":"2017-02-11T14:52:00.000Z","key":1486824720000,"doc_count":11},{"key_as_string":"2017-02-11T14:53:00.000Z","key":1486824780000,"doc_count":16},{"key_as_string":"2017-02-11T14:54:00.000Z","key":1486824840000,"doc_count":12},{"key_as_string":"2017-02-11T14:55:00.000Z","key":1486824900000,"doc_count":11},{"key_as_string":"2017-02-11T14:56:00.000Z","key":1486824960000,"doc_count":14},{"key_as_string":"2017-02-11T14:57:00.000Z","key":1486825020000,"doc_count":15},{"key_as_string":"2017-02-11T14:58:00.000Z","key":1486825080000,"doc_count":10},{"key_as_string":"2017-02-11T14:59:00.000Z","key":1486825140000,"doc_count":18},{"key_as_string":"2017-02-11T15:00:00.000Z","key":1486825200000,"doc_count":15},{"key_as_string":"2017-02-11T15:01:00.000Z","key":1486825260000,"doc_count":10},{"key_as_string":"2017-02-11T15:02:00.000Z","key":1486825320000,"doc_count":17},{"key_as_string":"2017-02-11T15:03:00.000Z","key":1486825380000,"doc_count":12},{"key_as_string":"2017-02-11T15:04:00.000Z","key":1486825440000,"doc_count":13},{"key_as_string":"2017-02-11T15:05:00.000Z","key":1486825500000,"doc_count":14},{"key_as_string":"2017-02-11T15:06:00.000Z","key":1486825560000,"doc_count":10},{"key_as_string":"2017-02-11T15:07:00.000Z","key":1486825620000,"doc_count":13},{"key_as_string":"2017-02-11T15:08:00.000Z","key":1486825680000,"doc_count":12},{"key_as_string":"2017-02-11T15:09:00.000Z","key":1486825740000,"doc_count":13},{"key_as_string":"2017-02-11T15:10:00.000Z","key":1486825800000,"doc_count":11},{"key_as_string":"2017-02-11T15:11:00.000Z","key":1486825860000,"doc_count":16},{"key_as_string":"2017-02-11T15:12:00.000Z","key":1486825920000,"doc_count":10},{"key_as_string":"2017-02-11T15:13:00.000Z","key":1486825980000,"doc_count":11},{"key_as_string":"2017-02-11T15:14:00.000Z","key":1486826040000,"doc_count":18},{"key_as_string":"2017-02-11T15:15:00.000Z","key":1486826100000,"doc_count":15},{"key_as_string":"2017-02-11T15:16:00.000Z","key":1486826160000,"doc_count":12},{"key_as_string":"2017-02-11T15:17:00.000Z","key":1486826220000,"doc_count":18},{"key_as_string":"2017-02-11T15:18:00.000Z","key":1486826280000,"doc_count":11},{"key_as_string":"2017-02-11T15:19:00.000Z","key":1486826340000,"doc_count":9},{"key_as_string":"2017-02-11T15:20:00.000Z","key":1486826400000,"doc_count":19},{"key_as_string":"2017-02-11T15:21:00.000Z","key":1486826460000,"doc_count":11},{"key_as_string":"2017-02-11T15:22:00.000Z","key":1486826520000,"doc_count":9},{"key_as_string":"2017-02-11T15:23:00.000Z","key":1486826580000,"doc_count":16},{"key_as_string":"2017-02-11T15:24:00.000Z","key":1486826640000,"doc_count":14},{"key_as_string":"2017-02-11T15:25:00.000Z","key":1486826700000,"doc_count":17},{"key_as_string":"2017-02-11T15:26:00.000Z","key":1486826760000,"doc_count":14},{"key_as_string":"2017-02-11T15:27:00.000Z","key":1486826820000,"doc_count":17},{"key_as_string":"2017-02-11T15:28:00.000Z","key":1486826880000,"doc_count":10},{"key_as_string":"2017-02-11T15:29:00.000Z","key":1486826940000,"doc_count":20},{"key_as_string":"2017-02-11T15:30:00.000Z","key":1486827000000,"doc_count":7},{"key_as_string":"2017-02-11T15:31:00.000Z","key":1486827060000,"doc_count":12},{"key_as_string":"2017-02-11T15:32:00.000Z","key":1486827120000,"doc_count":12},{"key_as_string":"2017-02-11T15:33:00.000Z","key":1486827180000,"doc_count":10},{"key_as_string":"2017-02-11T15:34:00.000Z","key":1486827240000,"doc_count":16},{"key_as_string":"2017-02-11T15:35:00.000Z","key":1486827300000,"doc_count":13},{"key_as_string":"2017-02-11T15:36:00.000Z","key":1486827360000,"doc_count":9},{"key_as_string":"2017-02-11T15:37:00.000Z","key":1486827420000,"doc_count":12},{"key_as_string":"2017-02-11T15:38:00.000Z","key":1486827480000,"doc_count":17},{"key_as_string":"2017-02-11T15:39:00.000Z","key":1486827540000,"doc_count":11},{"key_as_string":"2017-02-11T15:40:00.000Z","key":1486827600000,"doc_count":17},{"key_as_string":"2017-02-11T15:41:00.000Z","key":1486827660000,"doc_count":12},{"key_as_string":"2017-02-11T15:42:00.000Z","key":1486827720000,"doc_count":11},{"key_as_string":"2017-02-11T15:43:00.000Z","key":1486827780000,"doc_count":10},{"key_as_string":"2017-02-11T15:44:00.000Z","key":1486827840000,"doc_count":15},{"key_as_string":"2017-02-11T15:45:00.000Z","key":1486827900000,"doc_count":11},{"key_as_string":"2017-02-11T15:46:00.000Z","key":1486827960000,"doc_count":19},{"key_as_string":"2017-02-11T15:47:00.000Z","key":1486828020000,"doc_count":12},{"key_as_string":"2017-02-11T15:48:00.000Z","key":1486828080000,"doc_count":9},{"key_as_string":"2017-02-11T15:49:00.000Z","key":1486828140000,"doc_count":12},{"key_as_string":"2017-02-11T15:50:00.000Z","key":1486828200000,"doc_count":15},{"key_as_string":"2017-02-11T15:51:00.000Z","key":1486828260000,"doc_count":11},{"key_as_string":"2017-02-11T15:52:00.000Z","key":1486828320000,"doc_count":19},{"key_as_string":"2017-02-11T15:53:00.000Z","key":1486828380000,"doc_count":8},{"key_as_string":"2017-02-11T15:54:00.000Z","key":1486828440000,"doc_count":14},{"key_as_string":"2017-02-11T15:55:00.000Z","key":1486828500000,"doc_count":22},{"key_as_string":"2017-02-11T15:56:00.000Z","key":1486828560000,"doc_count":12},{"key_as_string":"2017-02-11T15:57:00.000Z","key":1486828620000,"doc_count":15},{"key_as_string":"2017-02-11T15:58:00.000Z","key":1486828680000,"doc_count":15},{"key_as_string":"2017-02-11T15:59:00.000Z","key":1486828740000,"doc_count":12},{"key_as_string":"2017-02-11T16:00:00.000Z","key":1486828800000,"doc_count":13},{"key_as_string":"2017-02-11T16:01:00.000Z","key":1486828860000,"doc_count":19},{"key_as_string":"2017-02-11T16:02:00.000Z","key":1486828920000,"doc_count":18},{"key_as_string":"2017-02-11T16:03:00.000Z","key":1486828980000,"doc_count":11},{"key_as_string":"2017-02-11T16:04:00.000Z","key":1486829040000,"doc_count":12},{"key_as_string":"2017-02-11T16:05:00.000Z","key":1486829100000,"doc_count":14},{"key_as_string":"2017-02-11T16:06:00.000Z","key":1486829160000,"doc_count":18},{"key_as_string":"2017-02-11T16:07:00.000Z","key":1486829220000,"doc_count":14},{"key_as_string":"2017-02-11T16:08:00.000Z","key":1486829280000,"doc_count":13},{"key_as_string":"2017-02-11T16:09:00.000Z","key":1486829340000,"doc_count":12},{"key_as_string":"2017-02-11T16:10:00.000Z","key":1486829400000,"doc_count":8},{"key_as_string":"2017-02-11T16:11:00.000Z","key":1486829460000,"doc_count":12},{"key_as_string":"2017-02-11T16:12:00.000Z","key":1486829520000,"doc_count":18},{"key_as_string":"2017-02-11T16:13:00.000Z","key":1486829580000,"doc_count":11},{"key_as_string":"2017-02-11T16:14:00.000Z","key":1486829640000,"doc_count":13},{"key_as_string":"2017-02-11T16:15:00.000Z","key":1486829700000,"doc_count":9},{"key_as_string":"2017-02-11T16:16:00.000Z","key":1486829760000,"doc_count":12},{"key_as_string":"2017-02-11T16:17:00.000Z","key":1486829820000,"doc_count":8},{"key_as_string":"2017-02-11T16:18:00.000Z","key":1486829880000,"doc_count":15},{"key_as_string":"2017-02-11T16:19:00.000Z","key":1486829940000,"doc_count":12},{"key_as_string":"2017-02-11T16:20:00.000Z","key":1486830000000,"doc_count":18},{"key_as_string":"2017-02-11T16:21:00.000Z","key":1486830060000,"doc_count":12},{"key_as_string":"2017-02-11T16:22:00.000Z","key":1486830120000,"doc_count":15},{"key_as_string":"2017-02-11T16:23:00.000Z","key":1486830180000,"doc_count":9},{"key_as_string":"2017-02-11T16:24:00.000Z","key":1486830240000,"doc_count":19},{"key_as_string":"2017-02-11T16:25:00.000Z","key":1486830300000,"doc_count":10},{"key_as_string":"2017-02-11T16:26:00.000Z","key":1486830360000,"doc_count":13},{"key_as_string":"2017-02-11T16:27:00.000Z","key":1486830420000,"doc_count":11},{"key_as_string":"2017-02-11T16:28:00.000Z","key":1486830480000,"doc_count":8},{"key_as_string":"2017-02-11T16:29:00.000Z","key":1486830540000,"doc_count":16},{"key_as_string":"2017-02-11T16:30:00.000Z","key":1486830600000,"doc_count":14},{"key_as_string":"2017-02-11T16:31:00.000Z","key":1486830660000,"doc_count":12},{"key_as_string":"2017-02-11T16:32:00.000Z","key":1486830720000,"doc_count":6},{"key_as_string":"2017-02-11T16:33:00.000Z","key":1486830780000,"doc_count":13},{"key_as_string":"2017-02-11T16:34:00.000Z","key":1486830840000,"doc_count":12},{"key_as_string":"2017-02-11T16:35:00.000Z","key":1486830900000,"doc_count":15},{"key_as_string":"2017-02-11T16:36:00.000Z","key":1486830960000,"doc_count":8},{"key_as_string":"2017-02-11T16:37:00.000Z","key":1486831020000,"doc_count":11},{"key_as_string":"2017-02-11T16:38:00.000Z","key":1486831080000,"doc_count":17},{"key_as_string":"2017-02-11T16:39:00.000Z","key":1486831140000,"doc_count":11},{"key_as_string":"2017-02-11T16:40:00.000Z","key":1486831200000,"doc_count":15},{"key_as_string":"2017-02-11T16:41:00.000Z","key":1486831260000,"doc_count":15},{"key_as_string":"2017-02-11T16:42:00.000Z","key":1486831320000,"doc_count":14},{"key_as_string":"2017-02-11T16:43:00.000Z","key":1486831380000,"doc_count":11},{"key_as_string":"2017-02-11T16:44:00.000Z","key":1486831440000,"doc_count":13},{"key_as_string":"2017-02-11T16:45:00.000Z","key":1486831500000,"doc_count":12},{"key_as_string":"2017-02-11T16:46:00.000Z","key":1486831560000,"doc_count":14},{"key_as_string":"2017-02-11T16:47:00.000Z","key":1486831620000,"doc_count":10},{"key_as_string":"2017-02-11T16:48:00.000Z","key":1486831680000,"doc_count":11},{"key_as_string":"2017-02-11T16:49:00.000Z","key":1486831740000,"doc_count":14},{"key_as_string":"2017-02-11T16:50:00.000Z","key":1486831800000,"doc_count":16},{"key_as_string":"2017-02-11T16:51:00.000Z","key":1486831860000,"doc_count":11},{"key_as_string":"2017-02-11T16:52:00.000Z","key":1486831920000,"doc_count":9},{"key_as_string":"2017-02-11T16:53:00.000Z","key":1486831980000,"doc_count":13},{"key_as_string":"2017-02-11T16:54:00.000Z","key":1486832040000,"doc_count":13},{"key_as_string":"2017-02-11T16:55:00.000Z","key":1486832100000,"doc_count":16},{"key_as_string":"2017-02-11T16:56:00.000Z","key":1486832160000,"doc_count":10},{"key_as_string":"2017-02-11T16:57:00.000Z","key":1486832220000,"doc_count":9},{"key_as_string":"2017-02-11T16:58:00.000Z","key":1486832280000,"doc_count":22},{"key_as_string":"2017-02-11T16:59:00.000Z","key":1486832340000,"doc_count":12},{"key_as_string":"2017-02-11T17:00:00.000Z","key":1486832400000,"doc_count":8},{"key_as_string":"2017-02-11T17:01:00.000Z","key":1486832460000,"doc_count":13},{"key_as_string":"2017-02-11T17:02:00.000Z","key":1486832520000,"doc_count":13},{"key_as_string":"2017-02-11T17:03:00.000Z","key":1486832580000,"doc_count":9},{"key_as_string":"2017-02-11T17:04:00.000Z","key":1486832640000,"doc_count":11},{"key_as_string":"2017-02-11T17:05:00.000Z","key":1486832700000,"doc_count":10},{"key_as_string":"2017-02-11T17:06:00.000Z","key":1486832760000,"doc_count":15},{"key_as_string":"2017-02-11T17:07:00.000Z","key":1486832820000,"doc_count":12},{"key_as_string":"2017-02-11T17:08:00.000Z","key":1486832880000,"doc_count":10},{"key_as_string":"2017-02-11T17:09:00.000Z","key":1486832940000,"doc_count":16},{"key_as_string":"2017-02-11T17:10:00.000Z","key":1486833000000,"doc_count":14},{"key_as_string":"2017-02-11T17:11:00.000Z","key":1486833060000,"doc_count":13},{"key_as_string":"2017-02-11T17:12:00.000Z","key":1486833120000,"doc_count":16},{"key_as_string":"2017-02-11T17:13:00.000Z","key":1486833180000,"doc_count":9},{"key_as_string":"2017-02-11T17:14:00.000Z","key":1486833240000,"doc_count":5},{"key_as_string":"2017-02-11T17:15:00.000Z","key":1486833300000,"doc_count":15},{"key_as_string":"2017-02-11T17:16:00.000Z","key":1486833360000,"doc_count":14},{"key_as_string":"2017-02-11T17:17:00.000Z","key":1486833420000,"doc_count":8},{"key_as_string":"2017-02-11T17:18:00.000Z","key":1486833480000,"doc_count":12},{"key_as_string":"2017-02-11T17:19:00.000Z","key":1486833540000,"doc_count":13},{"key_as_string":"2017-02-11T17:20:00.000Z","key":1486833600000,"doc_count":13},{"key_as_string":"2017-02-11T17:21:00.000Z","key":1486833660000,"doc_count":13},{"key_as_string":"2017-02-11T17:22:00.000Z","key":1486833720000,"doc_count":11},{"key_as_string":"2017-02-11T17:23:00.000Z","key":1486833780000,"doc_count":11},{"key_as_string":"2017-02-11T17:24:00.000Z","key":1486833840000,"doc_count":14},{"key_as_string":"2017-02-11T17:25:00.000Z","key":1486833900000,"doc_count":7},{"key_as_string":"2017-02-11T17:26:00.000Z","key":1486833960000,"doc_count":15},{"key_as_string":"2017-02-11T17:27:00.000Z","key":1486834020000,"doc_count":11},{"key_as_string":"2017-02-11T17:28:00.000Z","key":1486834080000,"doc_count":9},{"key_as_string":"2017-02-11T17:29:00.000Z","key":1486834140000,"doc_count":13},{"key_as_string":"2017-02-11T17:30:00.000Z","key":1486834200000,"doc_count":11},{"key_as_string":"2017-02-11T17:31:00.000Z","key":1486834260000,"doc_count":7},{"key_as_string":"2017-02-11T17:32:00.000Z","key":1486834320000,"doc_count":14},{"key_as_string":"2017-02-11T17:33:00.000Z","key":1486834380000,"doc_count":13},{"key_as_string":"2017-02-11T17:34:00.000Z","key":1486834440000,"doc_count":10},{"key_as_string":"2017-02-11T17:35:00.000Z","key":1486834500000,"doc_count":13},{"key_as_string":"2017-02-11T17:36:00.000Z","key":1486834560000,"doc_count":12},{"key_as_string":"2017-02-11T17:37:00.000Z","key":1486834620000,"doc_count":13},{"key_as_string":"2017-02-11T17:38:00.000Z","key":1486834680000,"doc_count":12},{"key_as_string":"2017-02-11T17:39:00.000Z","key":1486834740000,"doc_count":11},{"key_as_string":"2017-02-11T17:40:00.000Z","key":1486834800000,"doc_count":15},{"key_as_string":"2017-02-11T17:41:00.000Z","key":1486834860000,"doc_count":15},{"key_as_string":"2017-02-11T17:42:00.000Z","key":1486834920000,"doc_count":14},{"key_as_string":"2017-02-11T17:43:00.000Z","key":1486834980000,"doc_count":10},{"key_as_string":"2017-02-11T17:44:00.000Z","key":1486835040000,"doc_count":8},{"key_as_string":"2017-02-11T17:45:00.000Z","key":1486835100000,"doc_count":14},{"key_as_string":"2017-02-11T17:46:00.000Z","key":1486835160000,"doc_count":8},{"key_as_string":"2017-02-11T17:47:00.000Z","key":1486835220000,"doc_count":11},{"key_as_string":"2017-02-11T17:48:00.000Z","key":1486835280000,"doc_count":13},{"key_as_string":"2017-02-11T17:49:00.000Z","key":1486835340000,"doc_count":13},{"key_as_string":"2017-02-11T17:50:00.000Z","key":1486835400000,"doc_count":10},{"key_as_string":"2017-02-11T17:51:00.000Z","key":1486835460000,"doc_count":11},{"key_as_string":"2017-02-11T17:52:00.000Z","key":1486835520000,"doc_count":22},{"key_as_string":"2017-02-11T17:53:00.000Z","key":1486835580000,"doc_count":14},{"key_as_string":"2017-02-11T17:54:00.000Z","key":1486835640000,"doc_count":11},{"key_as_string":"2017-02-11T17:55:00.000Z","key":1486835700000,"doc_count":11},{"key_as_string":"2017-02-11T17:56:00.000Z","key":1486835760000,"doc_count":10},{"key_as_string":"2017-02-11T17:57:00.000Z","key":1486835820000,"doc_count":13},{"key_as_string":"2017-02-11T17:58:00.000Z","key":1486835880000,"doc_count":6},{"key_as_string":"2017-02-11T17:59:00.000Z","key":1486835940000,"doc_count":16},{"key_as_string":"2017-02-11T18:00:00.000Z","key":1486836000000,"doc_count":11},{"key_as_string":"2017-02-11T18:01:00.000Z","key":1486836060000,"doc_count":15},{"key_as_string":"2017-02-11T18:02:00.000Z","key":1486836120000,"doc_count":8},{"key_as_string":"2017-02-11T18:03:00.000Z","key":1486836180000,"doc_count":12},{"key_as_string":"2017-02-11T18:04:00.000Z","key":1486836240000,"doc_count":14},{"key_as_string":"2017-02-11T18:05:00.000Z","key":1486836300000,"doc_count":11},{"key_as_string":"2017-02-11T18:06:00.000Z","key":1486836360000,"doc_count":15},{"key_as_string":"2017-02-11T18:07:00.000Z","key":1486836420000,"doc_count":9},{"key_as_string":"2017-02-11T18:08:00.000Z","key":1486836480000,"doc_count":11},{"key_as_string":"2017-02-11T18:09:00.000Z","key":1486836540000,"doc_count":9},{"key_as_string":"2017-02-11T18:10:00.000Z","key":1486836600000,"doc_count":10},{"key_as_string":"2017-02-11T18:11:00.000Z","key":1486836660000,"doc_count":12},{"key_as_string":"2017-02-11T18:12:00.000Z","key":1486836720000,"doc_count":10},{"key_as_string":"2017-02-11T18:13:00.000Z","key":1486836780000,"doc_count":11},{"key_as_string":"2017-02-11T18:14:00.000Z","key":1486836840000,"doc_count":12},{"key_as_string":"2017-02-11T18:15:00.000Z","key":1486836900000,"doc_count":11},{"key_as_string":"2017-02-11T18:16:00.000Z","key":1486836960000,"doc_count":9},{"key_as_string":"2017-02-11T18:17:00.000Z","key":1486837020000,"doc_count":7},{"key_as_string":"2017-02-11T18:18:00.000Z","key":1486837080000,"doc_count":16},{"key_as_string":"2017-02-11T18:19:00.000Z","key":1486837140000,"doc_count":10},{"key_as_string":"2017-02-11T18:20:00.000Z","key":1486837200000,"doc_count":14},{"key_as_string":"2017-02-11T18:21:00.000Z","key":1486837260000,"doc_count":5},{"key_as_string":"2017-02-11T18:22:00.000Z","key":1486837320000,"doc_count":12},{"key_as_string":"2017-02-11T18:23:00.000Z","key":1486837380000,"doc_count":13},{"key_as_string":"2017-02-11T18:24:00.000Z","key":1486837440000,"doc_count":12},{"key_as_string":"2017-02-11T18:25:00.000Z","key":1486837500000,"doc_count":9},{"key_as_string":"2017-02-11T18:26:00.000Z","key":1486837560000,"doc_count":12},{"key_as_string":"2017-02-11T18:27:00.000Z","key":1486837620000,"doc_count":11},{"key_as_string":"2017-02-11T18:28:00.000Z","key":1486837680000,"doc_count":12},{"key_as_string":"2017-02-11T18:29:00.000Z","key":1486837740000,"doc_count":10},{"key_as_string":"2017-02-11T18:30:00.000Z","key":1486837800000,"doc_count":11},{"key_as_string":"2017-02-11T18:31:00.000Z","key":1486837860000,"doc_count":9},{"key_as_string":"2017-02-11T18:32:00.000Z","key":1486837920000,"doc_count":13},{"key_as_string":"2017-02-11T18:33:00.000Z","key":1486837980000,"doc_count":11},{"key_as_string":"2017-02-11T18:34:00.000Z","key":1486838040000,"doc_count":13},{"key_as_string":"2017-02-11T18:35:00.000Z","key":1486838100000,"doc_count":12},{"key_as_string":"2017-02-11T18:36:00.000Z","key":1486838160000,"doc_count":8},{"key_as_string":"2017-02-11T18:37:00.000Z","key":1486838220000,"doc_count":10},{"key_as_string":"2017-02-11T18:38:00.000Z","key":1486838280000,"doc_count":10},{"key_as_string":"2017-02-11T18:39:00.000Z","key":1486838340000,"doc_count":10},{"key_as_string":"2017-02-11T18:40:00.000Z","key":1486838400000,"doc_count":14},{"key_as_string":"2017-02-11T18:41:00.000Z","key":1486838460000,"doc_count":13},{"key_as_string":"2017-02-11T18:42:00.000Z","key":1486838520000,"doc_count":15},{"key_as_string":"2017-02-11T18:43:00.000Z","key":1486838580000,"doc_count":9},{"key_as_string":"2017-02-11T18:44:00.000Z","key":1486838640000,"doc_count":10},{"key_as_string":"2017-02-11T18:45:00.000Z","key":1486838700000,"doc_count":14},{"key_as_string":"2017-02-11T18:46:00.000Z","key":1486838760000,"doc_count":9},{"key_as_string":"2017-02-11T18:47:00.000Z","key":1486838820000,"doc_count":14},{"key_as_string":"2017-02-11T18:48:00.000Z","key":1486838880000,"doc_count":8},{"key_as_string":"2017-02-11T18:49:00.000Z","key":1486838940000,"doc_count":10},{"key_as_string":"2017-02-11T18:50:00.000Z","key":1486839000000,"doc_count":15},{"key_as_string":"2017-02-11T18:51:00.000Z","key":1486839060000,"doc_count":9},{"key_as_string":"2017-02-11T18:52:00.000Z","key":1486839120000,"doc_count":13},{"key_as_string":"2017-02-11T18:53:00.000Z","key":1486839180000,"doc_count":14},{"key_as_string":"2017-02-11T18:54:00.000Z","key":1486839240000,"doc_count":9},{"key_as_string":"2017-02-11T18:55:00.000Z","key":1486839300000,"doc_count":9},{"key_as_string":"2017-02-11T18:56:00.000Z","key":1486839360000,"doc_count":9},{"key_as_string":"2017-02-11T18:57:00.000Z","key":1486839420000,"doc_count":12},{"key_as_string":"2017-02-11T18:58:00.000Z","key":1486839480000,"doc_count":14},{"key_as_string":"2017-02-11T18:59:00.000Z","key":1486839540000,"doc_count":9},{"key_as_string":"2017-02-11T19:00:00.000Z","key":1486839600000,"doc_count":14},{"key_as_string":"2017-02-11T19:01:00.000Z","key":1486839660000,"doc_count":13},{"key_as_string":"2017-02-11T19:02:00.000Z","key":1486839720000,"doc_count":13},{"key_as_string":"2017-02-11T19:03:00.000Z","key":1486839780000,"doc_count":15},{"key_as_string":"2017-02-11T19:04:00.000Z","key":1486839840000,"doc_count":11},{"key_as_string":"2017-02-11T19:05:00.000Z","key":1486839900000,"doc_count":11},{"key_as_string":"2017-02-11T19:06:00.000Z","key":1486839960000,"doc_count":10},{"key_as_string":"2017-02-11T19:07:00.000Z","key":1486840020000,"doc_count":11},{"key_as_string":"2017-02-11T19:08:00.000Z","key":1486840080000,"doc_count":15},{"key_as_string":"2017-02-11T19:09:00.000Z","key":1486840140000,"doc_count":13},{"key_as_string":"2017-02-11T19:10:00.000Z","key":1486840200000,"doc_count":17},{"key_as_string":"2017-02-11T19:11:00.000Z","key":1486840260000,"doc_count":9},{"key_as_string":"2017-02-11T19:12:00.000Z","key":1486840320000,"doc_count":10},{"key_as_string":"2017-02-11T19:13:00.000Z","key":1486840380000,"doc_count":8},{"key_as_string":"2017-02-11T19:14:00.000Z","key":1486840440000,"doc_count":17},{"key_as_string":"2017-02-11T19:15:00.000Z","key":1486840500000,"doc_count":8},{"key_as_string":"2017-02-11T19:16:00.000Z","key":1486840560000,"doc_count":13},{"key_as_string":"2017-02-11T19:17:00.000Z","key":1486840620000,"doc_count":10},{"key_as_string":"2017-02-11T19:18:00.000Z","key":1486840680000,"doc_count":9},{"key_as_string":"2017-02-11T19:19:00.000Z","key":1486840740000,"doc_count":13},{"key_as_string":"2017-02-11T19:20:00.000Z","key":1486840800000,"doc_count":12},{"key_as_string":"2017-02-11T19:21:00.000Z","key":1486840860000,"doc_count":18},{"key_as_string":"2017-02-11T19:22:00.000Z","key":1486840920000,"doc_count":14},{"key_as_string":"2017-02-11T19:23:00.000Z","key":1486840980000,"doc_count":10},{"key_as_string":"2017-02-11T19:24:00.000Z","key":1486841040000,"doc_count":11},{"key_as_string":"2017-02-11T19:25:00.000Z","key":1486841100000,"doc_count":12},{"key_as_string":"2017-02-11T19:26:00.000Z","key":1486841160000,"doc_count":16},{"key_as_string":"2017-02-11T19:27:00.000Z","key":1486841220000,"doc_count":10},{"key_as_string":"2017-02-11T19:28:00.000Z","key":1486841280000,"doc_count":16},{"key_as_string":"2017-02-11T19:29:00.000Z","key":1486841340000,"doc_count":6},{"key_as_string":"2017-02-11T19:30:00.000Z","key":1486841400000,"doc_count":12},{"key_as_string":"2017-02-11T19:31:00.000Z","key":1486841460000,"doc_count":10},{"key_as_string":"2017-02-11T19:32:00.000Z","key":1486841520000,"doc_count":15},{"key_as_string":"2017-02-11T19:33:00.000Z","key":1486841580000,"doc_count":16},{"key_as_string":"2017-02-11T19:34:00.000Z","key":1486841640000,"doc_count":14},{"key_as_string":"2017-02-11T19:35:00.000Z","key":1486841700000,"doc_count":5},{"key_as_string":"2017-02-11T19:36:00.000Z","key":1486841760000,"doc_count":15},{"key_as_string":"2017-02-11T19:37:00.000Z","key":1486841820000,"doc_count":9},{"key_as_string":"2017-02-11T19:38:00.000Z","key":1486841880000,"doc_count":11},{"key_as_string":"2017-02-11T19:39:00.000Z","key":1486841940000,"doc_count":9},{"key_as_string":"2017-02-11T19:40:00.000Z","key":1486842000000,"doc_count":14},{"key_as_string":"2017-02-11T19:41:00.000Z","key":1486842060000,"doc_count":8},{"key_as_string":"2017-02-11T19:42:00.000Z","key":1486842120000,"doc_count":7},{"key_as_string":"2017-02-11T19:43:00.000Z","key":1486842180000,"doc_count":8},{"key_as_string":"2017-02-11T19:44:00.000Z","key":1486842240000,"doc_count":12},{"key_as_string":"2017-02-11T19:45:00.000Z","key":1486842300000,"doc_count":12},{"key_as_string":"2017-02-11T19:46:00.000Z","key":1486842360000,"doc_count":11},{"key_as_string":"2017-02-11T19:47:00.000Z","key":1486842420000,"doc_count":10},{"key_as_string":"2017-02-11T19:48:00.000Z","key":1486842480000,"doc_count":8},{"key_as_string":"2017-02-11T19:49:00.000Z","key":1486842540000,"doc_count":11},{"key_as_string":"2017-02-11T19:50:00.000Z","key":1486842600000,"doc_count":12},{"key_as_string":"2017-02-11T19:51:00.000Z","key":1486842660000,"doc_count":10},{"key_as_string":"2017-02-11T19:52:00.000Z","key":1486842720000,"doc_count":11},{"key_as_string":"2017-02-11T19:53:00.000Z","key":1486842780000,"doc_count":17},{"key_as_string":"2017-02-11T19:54:00.000Z","key":1486842840000,"doc_count":11},{"key_as_string":"2017-02-11T19:55:00.000Z","key":1486842900000,"doc_count":11},{"key_as_string":"2017-02-11T19:56:00.000Z","key":1486842960000,"doc_count":14},{"key_as_string":"2017-02-11T19:57:00.000Z","key":1486843020000,"doc_count":5},{"key_as_string":"2017-02-11T19:58:00.000Z","key":1486843080000,"doc_count":17},{"key_as_string":"2017-02-11T19:59:00.000Z","key":1486843140000,"doc_count":7},{"key_as_string":"2017-02-11T20:00:00.000Z","key":1486843200000,"doc_count":12},{"key_as_string":"2017-02-11T20:01:00.000Z","key":1486843260000,"doc_count":12},{"key_as_string":"2017-02-11T20:02:00.000Z","key":1486843320000,"doc_count":15},{"key_as_string":"2017-02-11T20:03:00.000Z","key":1486843380000,"doc_count":8},{"key_as_string":"2017-02-11T20:04:00.000Z","key":1486843440000,"doc_count":10},{"key_as_string":"2017-02-11T20:05:00.000Z","key":1486843500000,"doc_count":10},{"key_as_string":"2017-02-11T20:06:00.000Z","key":1486843560000,"doc_count":10},{"key_as_string":"2017-02-11T20:07:00.000Z","key":1486843620000,"doc_count":14},{"key_as_string":"2017-02-11T20:08:00.000Z","key":1486843680000,"doc_count":11},{"key_as_string":"2017-02-11T20:09:00.000Z","key":1486843740000,"doc_count":9},{"key_as_string":"2017-02-11T20:10:00.000Z","key":1486843800000,"doc_count":7},{"key_as_string":"2017-02-11T20:11:00.000Z","key":1486843860000,"doc_count":17},{"key_as_string":"2017-02-11T20:12:00.000Z","key":1486843920000,"doc_count":11},{"key_as_string":"2017-02-11T20:13:00.000Z","key":1486843980000,"doc_count":15},{"key_as_string":"2017-02-11T20:14:00.000Z","key":1486844040000,"doc_count":12},{"key_as_string":"2017-02-11T20:15:00.000Z","key":1486844100000,"doc_count":9},{"key_as_string":"2017-02-11T20:16:00.000Z","key":1486844160000,"doc_count":7},{"key_as_string":"2017-02-11T20:17:00.000Z","key":1486844220000,"doc_count":9},{"key_as_string":"2017-02-11T20:18:00.000Z","key":1486844280000,"doc_count":14},{"key_as_string":"2017-02-11T20:19:00.000Z","key":1486844340000,"doc_count":9},{"key_as_string":"2017-02-11T20:20:00.000Z","key":1486844400000,"doc_count":13},{"key_as_string":"2017-02-11T20:21:00.000Z","key":1486844460000,"doc_count":11},{"key_as_string":"2017-02-11T20:22:00.000Z","key":1486844520000,"doc_count":15},{"key_as_string":"2017-02-11T20:23:00.000Z","key":1486844580000,"doc_count":13},{"key_as_string":"2017-02-11T20:24:00.000Z","key":1486844640000,"doc_count":11},{"key_as_string":"2017-02-11T20:25:00.000Z","key":1486844700000,"doc_count":7},{"key_as_string":"2017-02-11T20:26:00.000Z","key":1486844760000,"doc_count":7},{"key_as_string":"2017-02-11T20:27:00.000Z","key":1486844820000,"doc_count":13},{"key_as_string":"2017-02-11T20:28:00.000Z","key":1486844880000,"doc_count":8},{"key_as_string":"2017-02-11T20:29:00.000Z","key":1486844940000,"doc_count":12},{"key_as_string":"2017-02-11T20:30:00.000Z","key":1486845000000,"doc_count":12},{"key_as_string":"2017-02-11T20:31:00.000Z","key":1486845060000,"doc_count":11},{"key_as_string":"2017-02-11T20:32:00.000Z","key":1486845120000,"doc_count":11},{"key_as_string":"2017-02-11T20:33:00.000Z","key":1486845180000,"doc_count":10},{"key_as_string":"2017-02-11T20:34:00.000Z","key":1486845240000,"doc_count":15},{"key_as_string":"2017-02-11T20:35:00.000Z","key":1486845300000,"doc_count":5},{"key_as_string":"2017-02-11T20:36:00.000Z","key":1486845360000,"doc_count":9},{"key_as_string":"2017-02-11T20:37:00.000Z","key":1486845420000,"doc_count":11},{"key_as_string":"2017-02-11T20:38:00.000Z","key":1486845480000,"doc_count":9},{"key_as_string":"2017-02-11T20:39:00.000Z","key":1486845540000,"doc_count":12},{"key_as_string":"2017-02-11T20:40:00.000Z","key":1486845600000,"doc_count":16},{"key_as_string":"2017-02-11T20:41:00.000Z","key":1486845660000,"doc_count":6},{"key_as_string":"2017-02-11T20:42:00.000Z","key":1486845720000,"doc_count":11},{"key_as_string":"2017-02-11T20:43:00.000Z","key":1486845780000,"doc_count":13},{"key_as_string":"2017-02-11T20:44:00.000Z","key":1486845840000,"doc_count":7},{"key_as_string":"2017-02-11T20:45:00.000Z","key":1486845900000,"doc_count":11},{"key_as_string":"2017-02-11T20:46:00.000Z","key":1486845960000,"doc_count":7},{"key_as_string":"2017-02-11T20:47:00.000Z","key":1486846020000,"doc_count":9},{"key_as_string":"2017-02-11T20:48:00.000Z","key":1486846080000,"doc_count":14},{"key_as_string":"2017-02-11T20:49:00.000Z","key":1486846140000,"doc_count":9},{"key_as_string":"2017-02-11T20:50:00.000Z","key":1486846200000,"doc_count":12},{"key_as_string":"2017-02-11T20:51:00.000Z","key":1486846260000,"doc_count":17},{"key_as_string":"2017-02-11T20:52:00.000Z","key":1486846320000,"doc_count":13},{"key_as_string":"2017-02-11T20:53:00.000Z","key":1486846380000,"doc_count":7},{"key_as_string":"2017-02-11T20:54:00.000Z","key":1486846440000,"doc_count":15},{"key_as_string":"2017-02-11T20:55:00.000Z","key":1486846500000,"doc_count":13},{"key_as_string":"2017-02-11T20:56:00.000Z","key":1486846560000,"doc_count":16},{"key_as_string":"2017-02-11T20:57:00.000Z","key":1486846620000,"doc_count":12},{"key_as_string":"2017-02-11T20:58:00.000Z","key":1486846680000,"doc_count":8},{"key_as_string":"2017-02-11T20:59:00.000Z","key":1486846740000,"doc_count":14},{"key_as_string":"2017-02-11T21:00:00.000Z","key":1486846800000,"doc_count":11},{"key_as_string":"2017-02-11T21:01:00.000Z","key":1486846860000,"doc_count":8},{"key_as_string":"2017-02-11T21:02:00.000Z","key":1486846920000,"doc_count":13},{"key_as_string":"2017-02-11T21:03:00.000Z","key":1486846980000,"doc_count":8},{"key_as_string":"2017-02-11T21:04:00.000Z","key":1486847040000,"doc_count":9},{"key_as_string":"2017-02-11T21:05:00.000Z","key":1486847100000,"doc_count":12},{"key_as_string":"2017-02-11T21:06:00.000Z","key":1486847160000,"doc_count":11},{"key_as_string":"2017-02-11T21:07:00.000Z","key":1486847220000,"doc_count":15},{"key_as_string":"2017-02-11T21:08:00.000Z","key":1486847280000,"doc_count":6},{"key_as_string":"2017-02-11T21:09:00.000Z","key":1486847340000,"doc_count":14},{"key_as_string":"2017-02-11T21:10:00.000Z","key":1486847400000,"doc_count":5},{"key_as_string":"2017-02-11T21:11:00.000Z","key":1486847460000,"doc_count":11},{"key_as_string":"2017-02-11T21:12:00.000Z","key":1486847520000,"doc_count":12},{"key_as_string":"2017-02-11T21:13:00.000Z","key":1486847580000,"doc_count":10},{"key_as_string":"2017-02-11T21:14:00.000Z","key":1486847640000,"doc_count":7},{"key_as_string":"2017-02-11T21:15:00.000Z","key":1486847700000,"doc_count":9},{"key_as_string":"2017-02-11T21:16:00.000Z","key":1486847760000,"doc_count":12},{"key_as_string":"2017-02-11T21:17:00.000Z","key":1486847820000,"doc_count":11},{"key_as_string":"2017-02-11T21:18:00.000Z","key":1486847880000,"doc_count":12},{"key_as_string":"2017-02-11T21:19:00.000Z","key":1486847940000,"doc_count":14},{"key_as_string":"2017-02-11T21:20:00.000Z","key":1486848000000,"doc_count":10},{"key_as_string":"2017-02-11T21:21:00.000Z","key":1486848060000,"doc_count":9},{"key_as_string":"2017-02-11T21:22:00.000Z","key":1486848120000,"doc_count":16},{"key_as_string":"2017-02-11T21:23:00.000Z","key":1486848180000,"doc_count":10},{"key_as_string":"2017-02-11T21:24:00.000Z","key":1486848240000,"doc_count":10},{"key_as_string":"2017-02-11T21:25:00.000Z","key":1486848300000,"doc_count":11},{"key_as_string":"2017-02-11T21:26:00.000Z","key":1486848360000,"doc_count":12},{"key_as_string":"2017-02-11T21:27:00.000Z","key":1486848420000,"doc_count":6},{"key_as_string":"2017-02-11T21:28:00.000Z","key":1486848480000,"doc_count":14},{"key_as_string":"2017-02-11T21:29:00.000Z","key":1486848540000,"doc_count":10},{"key_as_string":"2017-02-11T21:30:00.000Z","key":1486848600000,"doc_count":12},{"key_as_string":"2017-02-11T21:31:00.000Z","key":1486848660000,"doc_count":7},{"key_as_string":"2017-02-11T21:32:00.000Z","key":1486848720000,"doc_count":11},{"key_as_string":"2017-02-11T21:33:00.000Z","key":1486848780000,"doc_count":11},{"key_as_string":"2017-02-11T21:34:00.000Z","key":1486848840000,"doc_count":11},{"key_as_string":"2017-02-11T21:35:00.000Z","key":1486848900000,"doc_count":5},{"key_as_string":"2017-02-11T21:36:00.000Z","key":1486848960000,"doc_count":15},{"key_as_string":"2017-02-11T21:37:00.000Z","key":1486849020000,"doc_count":8},{"key_as_string":"2017-02-11T21:38:00.000Z","key":1486849080000,"doc_count":11},{"key_as_string":"2017-02-11T21:39:00.000Z","key":1486849140000,"doc_count":9},{"key_as_string":"2017-02-11T21:40:00.000Z","key":1486849200000,"doc_count":9},{"key_as_string":"2017-02-11T21:41:00.000Z","key":1486849260000,"doc_count":10},{"key_as_string":"2017-02-11T21:42:00.000Z","key":1486849320000,"doc_count":7},{"key_as_string":"2017-02-11T21:43:00.000Z","key":1486849380000,"doc_count":13},{"key_as_string":"2017-02-11T21:44:00.000Z","key":1486849440000,"doc_count":10},{"key_as_string":"2017-02-11T21:45:00.000Z","key":1486849500000,"doc_count":10},{"key_as_string":"2017-02-11T21:46:00.000Z","key":1486849560000,"doc_count":11},{"key_as_string":"2017-02-11T21:47:00.000Z","key":1486849620000,"doc_count":10},{"key_as_string":"2017-02-11T21:48:00.000Z","key":1486849680000,"doc_count":7},{"key_as_string":"2017-02-11T21:49:00.000Z","key":1486849740000,"doc_count":8},{"key_as_string":"2017-02-11T21:50:00.000Z","key":1486849800000,"doc_count":12},{"key_as_string":"2017-02-11T21:51:00.000Z","key":1486849860000,"doc_count":8},{"key_as_string":"2017-02-11T21:52:00.000Z","key":1486849920000,"doc_count":7},{"key_as_string":"2017-02-11T21:53:00.000Z","key":1486849980000,"doc_count":15},{"key_as_string":"2017-02-11T21:54:00.000Z","key":1486850040000,"doc_count":14},{"key_as_string":"2017-02-11T21:55:00.000Z","key":1486850100000,"doc_count":9},{"key_as_string":"2017-02-11T21:56:00.000Z","key":1486850160000,"doc_count":9},{"key_as_string":"2017-02-11T21:57:00.000Z","key":1486850220000,"doc_count":9},{"key_as_string":"2017-02-11T21:58:00.000Z","key":1486850280000,"doc_count":13},{"key_as_string":"2017-02-11T21:59:00.000Z","key":1486850340000,"doc_count":13},{"key_as_string":"2017-02-11T22:00:00.000Z","key":1486850400000,"doc_count":11},{"key_as_string":"2017-02-11T22:01:00.000Z","key":1486850460000,"doc_count":12},{"key_as_string":"2017-02-11T22:02:00.000Z","key":1486850520000,"doc_count":12},{"key_as_string":"2017-02-11T22:03:00.000Z","key":1486850580000,"doc_count":11},{"key_as_string":"2017-02-11T22:04:00.000Z","key":1486850640000,"doc_count":7},{"key_as_string":"2017-02-11T22:05:00.000Z","key":1486850700000,"doc_count":9},{"key_as_string":"2017-02-11T22:06:00.000Z","key":1486850760000,"doc_count":12},{"key_as_string":"2017-02-11T22:07:00.000Z","key":1486850820000,"doc_count":13},{"key_as_string":"2017-02-11T22:08:00.000Z","key":1486850880000,"doc_count":11},{"key_as_string":"2017-02-11T22:09:00.000Z","key":1486850940000,"doc_count":8},{"key_as_string":"2017-02-11T22:10:00.000Z","key":1486851000000,"doc_count":6},{"key_as_string":"2017-02-11T22:11:00.000Z","key":1486851060000,"doc_count":9},{"key_as_string":"2017-02-11T22:12:00.000Z","key":1486851120000,"doc_count":15},{"key_as_string":"2017-02-11T22:13:00.000Z","key":1486851180000,"doc_count":12},{"key_as_string":"2017-02-11T22:14:00.000Z","key":1486851240000,"doc_count":12},{"key_as_string":"2017-02-11T22:15:00.000Z","key":1486851300000,"doc_count":9},{"key_as_string":"2017-02-11T22:16:00.000Z","key":1486851360000,"doc_count":11},{"key_as_string":"2017-02-11T22:17:00.000Z","key":1486851420000,"doc_count":9},{"key_as_string":"2017-02-11T22:18:00.000Z","key":1486851480000,"doc_count":13},{"key_as_string":"2017-02-11T22:19:00.000Z","key":1486851540000,"doc_count":10},{"key_as_string":"2017-02-11T22:20:00.000Z","key":1486851600000,"doc_count":16},{"key_as_string":"2017-02-11T22:21:00.000Z","key":1486851660000,"doc_count":10},{"key_as_string":"2017-02-11T22:22:00.000Z","key":1486851720000,"doc_count":7},{"key_as_string":"2017-02-11T22:23:00.000Z","key":1486851780000,"doc_count":8},{"key_as_string":"2017-02-11T22:24:00.000Z","key":1486851840000,"doc_count":13},{"key_as_string":"2017-02-11T22:25:00.000Z","key":1486851900000,"doc_count":11},{"key_as_string":"2017-02-11T22:26:00.000Z","key":1486851960000,"doc_count":11},{"key_as_string":"2017-02-11T22:27:00.000Z","key":1486852020000,"doc_count":15},{"key_as_string":"2017-02-11T22:28:00.000Z","key":1486852080000,"doc_count":10},{"key_as_string":"2017-02-11T22:29:00.000Z","key":1486852140000,"doc_count":13},{"key_as_string":"2017-02-11T22:30:00.000Z","key":1486852200000,"doc_count":3},{"key_as_string":"2017-02-11T22:31:00.000Z","key":1486852260000,"doc_count":16},{"key_as_string":"2017-02-11T22:32:00.000Z","key":1486852320000,"doc_count":8},{"key_as_string":"2017-02-11T22:33:00.000Z","key":1486852380000,"doc_count":13},{"key_as_string":"2017-02-11T22:34:00.000Z","key":1486852440000,"doc_count":10},{"key_as_string":"2017-02-11T22:35:00.000Z","key":1486852500000,"doc_count":10},{"key_as_string":"2017-02-11T22:36:00.000Z","key":1486852560000,"doc_count":15},{"key_as_string":"2017-02-11T22:37:00.000Z","key":1486852620000,"doc_count":10},{"key_as_string":"2017-02-11T22:38:00.000Z","key":1486852680000,"doc_count":9},{"key_as_string":"2017-02-11T22:39:00.000Z","key":1486852740000,"doc_count":11},{"key_as_string":"2017-02-11T22:40:00.000Z","key":1486852800000,"doc_count":11},{"key_as_string":"2017-02-11T22:41:00.000Z","key":1486852860000,"doc_count":8},{"key_as_string":"2017-02-11T22:42:00.000Z","key":1486852920000,"doc_count":10},{"key_as_string":"2017-02-11T22:43:00.000Z","key":1486852980000,"doc_count":12},{"key_as_string":"2017-02-11T22:44:00.000Z","key":1486853040000,"doc_count":8},{"key_as_string":"2017-02-11T22:45:00.000Z","key":1486853100000,"doc_count":14},{"key_as_string":"2017-02-11T22:46:00.000Z","key":1486853160000,"doc_count":9},{"key_as_string":"2017-02-11T22:47:00.000Z","key":1486853220000,"doc_count":10},{"key_as_string":"2017-02-11T22:48:00.000Z","key":1486853280000,"doc_count":12},{"key_as_string":"2017-02-11T22:49:00.000Z","key":1486853340000,"doc_count":13},{"key_as_string":"2017-02-11T22:50:00.000Z","key":1486853400000,"doc_count":13},{"key_as_string":"2017-02-11T22:51:00.000Z","key":1486853460000,"doc_count":5},{"key_as_string":"2017-02-11T22:52:00.000Z","key":1486853520000,"doc_count":10},{"key_as_string":"2017-02-11T22:53:00.000Z","key":1486853580000,"doc_count":8},{"key_as_string":"2017-02-11T22:54:00.000Z","key":1486853640000,"doc_count":12},{"key_as_string":"2017-02-11T22:55:00.000Z","key":1486853700000,"doc_count":6},{"key_as_string":"2017-02-11T22:56:00.000Z","key":1486853760000,"doc_count":15},{"key_as_string":"2017-02-11T22:57:00.000Z","key":1486853820000,"doc_count":8},{"key_as_string":"2017-02-11T22:58:00.000Z","key":1486853880000,"doc_count":11},{"key_as_string":"2017-02-11T22:59:00.000Z","key":1486853940000,"doc_count":10},{"key_as_string":"2017-02-11T23:00:00.000Z","key":1486854000000,"doc_count":8},{"key_as_string":"2017-02-11T23:01:00.000Z","key":1486854060000,"doc_count":9},{"key_as_string":"2017-02-11T23:02:00.000Z","key":1486854120000,"doc_count":11},{"key_as_string":"2017-02-11T23:03:00.000Z","key":1486854180000,"doc_count":15},{"key_as_string":"2017-02-11T23:04:00.000Z","key":1486854240000,"doc_count":9},{"key_as_string":"2017-02-11T23:05:00.000Z","key":1486854300000,"doc_count":14},{"key_as_string":"2017-02-11T23:06:00.000Z","key":1486854360000,"doc_count":8},{"key_as_string":"2017-02-11T23:07:00.000Z","key":1486854420000,"doc_count":10},{"key_as_string":"2017-02-11T23:08:00.000Z","key":1486854480000,"doc_count":8},{"key_as_string":"2017-02-11T23:09:00.000Z","key":1486854540000,"doc_count":13},{"key_as_string":"2017-02-11T23:10:00.000Z","key":1486854600000,"doc_count":11},{"key_as_string":"2017-02-11T23:11:00.000Z","key":1486854660000,"doc_count":12},{"key_as_string":"2017-02-11T23:12:00.000Z","key":1486854720000,"doc_count":11},{"key_as_string":"2017-02-11T23:13:00.000Z","key":1486854780000,"doc_count":6},{"key_as_string":"2017-02-11T23:14:00.000Z","key":1486854840000,"doc_count":14},{"key_as_string":"2017-02-11T23:15:00.000Z","key":1486854900000,"doc_count":14},{"key_as_string":"2017-02-11T23:16:00.000Z","key":1486854960000,"doc_count":14},{"key_as_string":"2017-02-11T23:17:00.000Z","key":1486855020000,"doc_count":11},{"key_as_string":"2017-02-11T23:18:00.000Z","key":1486855080000,"doc_count":9},{"key_as_string":"2017-02-11T23:19:00.000Z","key":1486855140000,"doc_count":10},{"key_as_string":"2017-02-11T23:20:00.000Z","key":1486855200000,"doc_count":8},{"key_as_string":"2017-02-11T23:21:00.000Z","key":1486855260000,"doc_count":13},{"key_as_string":"2017-02-11T23:22:00.000Z","key":1486855320000,"doc_count":12},{"key_as_string":"2017-02-11T23:23:00.000Z","key":1486855380000,"doc_count":10},{"key_as_string":"2017-02-11T23:24:00.000Z","key":1486855440000,"doc_count":13},{"key_as_string":"2017-02-11T23:25:00.000Z","key":1486855500000,"doc_count":11},{"key_as_string":"2017-02-11T23:26:00.000Z","key":1486855560000,"doc_count":11},{"key_as_string":"2017-02-11T23:27:00.000Z","key":1486855620000,"doc_count":9},{"key_as_string":"2017-02-11T23:28:00.000Z","key":1486855680000,"doc_count":13},{"key_as_string":"2017-02-11T23:29:00.000Z","key":1486855740000,"doc_count":3},{"key_as_string":"2017-02-11T23:30:00.000Z","key":1486855800000,"doc_count":10},{"key_as_string":"2017-02-11T23:31:00.000Z","key":1486855860000,"doc_count":9},{"key_as_string":"2017-02-11T23:32:00.000Z","key":1486855920000,"doc_count":7},{"key_as_string":"2017-02-11T23:33:00.000Z","key":1486855980000,"doc_count":15},{"key_as_string":"2017-02-11T23:34:00.000Z","key":1486856040000,"doc_count":12},{"key_as_string":"2017-02-11T23:35:00.000Z","key":1486856100000,"doc_count":17},{"key_as_string":"2017-02-11T23:36:00.000Z","key":1486856160000,"doc_count":9},{"key_as_string":"2017-02-11T23:37:00.000Z","key":1486856220000,"doc_count":8},{"key_as_string":"2017-02-11T23:38:00.000Z","key":1486856280000,"doc_count":9},{"key_as_string":"2017-02-11T23:39:00.000Z","key":1486856340000,"doc_count":14},{"key_as_string":"2017-02-11T23:40:00.000Z","key":1486856400000,"doc_count":9},{"key_as_string":"2017-02-11T23:41:00.000Z","key":1486856460000,"doc_count":7},{"key_as_string":"2017-02-11T23:42:00.000Z","key":1486856520000,"doc_count":10},{"key_as_string":"2017-02-11T23:43:00.000Z","key":1486856580000,"doc_count":7},{"key_as_string":"2017-02-11T23:44:00.000Z","key":1486856640000,"doc_count":12},{"key_as_string":"2017-02-11T23:45:00.000Z","key":1486856700000,"doc_count":10},{"key_as_string":"2017-02-11T23:46:00.000Z","key":1486856760000,"doc_count":10},{"key_as_string":"2017-02-11T23:47:00.000Z","key":1486856820000,"doc_count":9},{"key_as_string":"2017-02-11T23:48:00.000Z","key":1486856880000,"doc_count":7},{"key_as_string":"2017-02-11T23:49:00.000Z","key":1486856940000,"doc_count":9},{"key_as_string":"2017-02-11T23:50:00.000Z","key":1486857000000,"doc_count":11},{"key_as_string":"2017-02-11T23:51:00.000Z","key":1486857060000,"doc_count":10},{"key_as_string":"2017-02-11T23:52:00.000Z","key":1486857120000,"doc_count":11},{"key_as_string":"2017-02-11T23:53:00.000Z","key":1486857180000,"doc_count":10},{"key_as_string":"2017-02-11T23:54:00.000Z","key":1486857240000,"doc_count":15},{"key_as_string":"2017-02-11T23:55:00.000Z","key":1486857300000,"doc_count":5},{"key_as_string":"2017-02-11T23:56:00.000Z","key":1486857360000,"doc_count":7},{"key_as_string":"2017-02-11T23:57:00.000Z","key":1486857420000,"doc_count":14},{"key_as_string":"2017-02-11T23:58:00.000Z","key":1486857480000,"doc_count":10},{"key_as_string":"2017-02-11T23:59:00.000Z","key":1486857540000,"doc_count":9}]}}} diff --git a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json index b771fab4dd352..3f3f016cc7ff5 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json +++ b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json @@ -1 +1 @@ -{"took":3,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":325,"max_score":0,"hits":[]},"aggregations":{"non_empty_buckets":{"buckets":[{"key_as_string":"1485984480000","key":1485984480000,"doc_count":1},{"key_as_string":"1485993300000","key":1485993300000,"doc_count":1},{"key_as_string":"1486020960000","key":1486020960000,"doc_count":3},{"key_as_string":"1486022820000","key":1486022820000,"doc_count":1},{"key_as_string":"1486032720000","key":1486032720000,"doc_count":1},{"key_as_string":"1486036440000","key":1486036440000,"doc_count":1},{"key_as_string":"1486046040000","key":1486046040000,"doc_count":1},{"key_as_string":"1486059780000","key":1486059780000,"doc_count":1},{"key_as_string":"1486063560000","key":1486063560000,"doc_count":1},{"key_as_string":"1486063860000","key":1486063860000,"doc_count":1},{"key_as_string":"1486125420000","key":1486125420000,"doc_count":1},{"key_as_string":"1486129800000","key":1486129800000,"doc_count":1},{"key_as_string":"1486131000000","key":1486131000000,"doc_count":1},{"key_as_string":"1486138740000","key":1486138740000,"doc_count":4},{"key_as_string":"1486141560000","key":1486141560000,"doc_count":2},{"key_as_string":"1486147080000","key":1486147080000,"doc_count":4},{"key_as_string":"1486155720000","key":1486155720000,"doc_count":1},{"key_as_string":"1486165740000","key":1486165740000,"doc_count":3},{"key_as_string":"1486165800000","key":1486165800000,"doc_count":1},{"key_as_string":"1486165920000","key":1486165920000,"doc_count":4},{"key_as_string":"1486179960000","key":1486179960000,"doc_count":3},{"key_as_string":"1486181460000","key":1486181460000,"doc_count":1},{"key_as_string":"1486204860000","key":1486204860000,"doc_count":1},{"key_as_string":"1486225440000","key":1486225440000,"doc_count":1},{"key_as_string":"1486225680000","key":1486225680000,"doc_count":1},{"key_as_string":"1486250220000","key":1486250220000,"doc_count":1},{"key_as_string":"1486286340000","key":1486286340000,"doc_count":3},{"key_as_string":"1486288620000","key":1486288620000,"doc_count":1},{"key_as_string":"1486313760000","key":1486313760000,"doc_count":1},{"key_as_string":"1486316160000","key":1486316160000,"doc_count":1},{"key_as_string":"1486322520000","key":1486322520000,"doc_count":1},{"key_as_string":"1486377960000","key":1486377960000,"doc_count":1},{"key_as_string":"1486398720000","key":1486398720000,"doc_count":1},{"key_as_string":"1486551360000","key":1486551360000,"doc_count":1},{"key_as_string":"1486554120000","key":1486554120000,"doc_count":1},{"key_as_string":"1486564680000","key":1486564680000,"doc_count":1},{"key_as_string":"1486566900000","key":1486566900000,"doc_count":5},{"key_as_string":"1486566960000","key":1486566960000,"doc_count":8},{"key_as_string":"1486567020000","key":1486567020000,"doc_count":12},{"key_as_string":"1486567080000","key":1486567080000,"doc_count":16},{"key_as_string":"1486567140000","key":1486567140000,"doc_count":12},{"key_as_string":"1486567200000","key":1486567200000,"doc_count":16},{"key_as_string":"1486567260000","key":1486567260000,"doc_count":16},{"key_as_string":"1486567320000","key":1486567320000,"doc_count":12},{"key_as_string":"1486567380000","key":1486567380000,"doc_count":16},{"key_as_string":"1486567440000","key":1486567440000,"doc_count":16},{"key_as_string":"1486567500000","key":1486567500000,"doc_count":12},{"key_as_string":"1486567560000","key":1486567560000,"doc_count":16},{"key_as_string":"1486567620000","key":1486567620000,"doc_count":16},{"key_as_string":"1486567680000","key":1486567680000,"doc_count":12},{"key_as_string":"1486567740000","key":1486567740000,"doc_count":16},{"key_as_string":"1486567800000","key":1486567800000,"doc_count":16},{"key_as_string":"1486567860000","key":1486567860000,"doc_count":8},{"key_as_string":"1486567920000","key":1486567920000,"doc_count":3},{"key_as_string":"1486567980000","key":1486567980000,"doc_count":1},{"key_as_string":"1486589280000","key":1486589280000,"doc_count":1},{"key_as_string":"1486598100000","key":1486598100000,"doc_count":1},{"key_as_string":"1486625760000","key":1486625760000,"doc_count":3},{"key_as_string":"1486627620000","key":1486627620000,"doc_count":1},{"key_as_string":"1486637520000","key":1486637520000,"doc_count":1},{"key_as_string":"1486641240000","key":1486641240000,"doc_count":1},{"key_as_string":"1486650840000","key":1486650840000,"doc_count":1},{"key_as_string":"1486664580000","key":1486664580000,"doc_count":1},{"key_as_string":"1486668360000","key":1486668360000,"doc_count":1},{"key_as_string":"1486668660000","key":1486668660000,"doc_count":1},{"key_as_string":"1486730220000","key":1486730220000,"doc_count":1},{"key_as_string":"1486734600000","key":1486734600000,"doc_count":1},{"key_as_string":"1486735800000","key":1486735800000,"doc_count":1},{"key_as_string":"1486743540000","key":1486743540000,"doc_count":4},{"key_as_string":"1486746360000","key":1486746360000,"doc_count":2},{"key_as_string":"1486751880000","key":1486751880000,"doc_count":4},{"key_as_string":"1486760520000","key":1486760520000,"doc_count":1},{"key_as_string":"1486770540000","key":1486770540000,"doc_count":3},{"key_as_string":"1486770600000","key":1486770600000,"doc_count":1},{"key_as_string":"1486770720000","key":1486770720000,"doc_count":4},{"key_as_string":"1486784760000","key":1486784760000,"doc_count":3},{"key_as_string":"1486786260000","key":1486786260000,"doc_count":1},{"key_as_string":"1486809660000","key":1486809660000,"doc_count":1},{"key_as_string":"1486830240000","key":1486830240000,"doc_count":1},{"key_as_string":"1486830480000","key":1486830480000,"doc_count":1},{"key_as_string":"1486855020000","key":1486855020000,"doc_count":1}]}}} +{"took":3,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total": { "value": 325, "relation": "eq" },"max_score":0,"hits":[]},"aggregations":{"non_empty_buckets":{"buckets":[{"key_as_string":"1485984480000","key":1485984480000,"doc_count":1},{"key_as_string":"1485993300000","key":1485993300000,"doc_count":1},{"key_as_string":"1486020960000","key":1486020960000,"doc_count":3},{"key_as_string":"1486022820000","key":1486022820000,"doc_count":1},{"key_as_string":"1486032720000","key":1486032720000,"doc_count":1},{"key_as_string":"1486036440000","key":1486036440000,"doc_count":1},{"key_as_string":"1486046040000","key":1486046040000,"doc_count":1},{"key_as_string":"1486059780000","key":1486059780000,"doc_count":1},{"key_as_string":"1486063560000","key":1486063560000,"doc_count":1},{"key_as_string":"1486063860000","key":1486063860000,"doc_count":1},{"key_as_string":"1486125420000","key":1486125420000,"doc_count":1},{"key_as_string":"1486129800000","key":1486129800000,"doc_count":1},{"key_as_string":"1486131000000","key":1486131000000,"doc_count":1},{"key_as_string":"1486138740000","key":1486138740000,"doc_count":4},{"key_as_string":"1486141560000","key":1486141560000,"doc_count":2},{"key_as_string":"1486147080000","key":1486147080000,"doc_count":4},{"key_as_string":"1486155720000","key":1486155720000,"doc_count":1},{"key_as_string":"1486165740000","key":1486165740000,"doc_count":3},{"key_as_string":"1486165800000","key":1486165800000,"doc_count":1},{"key_as_string":"1486165920000","key":1486165920000,"doc_count":4},{"key_as_string":"1486179960000","key":1486179960000,"doc_count":3},{"key_as_string":"1486181460000","key":1486181460000,"doc_count":1},{"key_as_string":"1486204860000","key":1486204860000,"doc_count":1},{"key_as_string":"1486225440000","key":1486225440000,"doc_count":1},{"key_as_string":"1486225680000","key":1486225680000,"doc_count":1},{"key_as_string":"1486250220000","key":1486250220000,"doc_count":1},{"key_as_string":"1486286340000","key":1486286340000,"doc_count":3},{"key_as_string":"1486288620000","key":1486288620000,"doc_count":1},{"key_as_string":"1486313760000","key":1486313760000,"doc_count":1},{"key_as_string":"1486316160000","key":1486316160000,"doc_count":1},{"key_as_string":"1486322520000","key":1486322520000,"doc_count":1},{"key_as_string":"1486377960000","key":1486377960000,"doc_count":1},{"key_as_string":"1486398720000","key":1486398720000,"doc_count":1},{"key_as_string":"1486551360000","key":1486551360000,"doc_count":1},{"key_as_string":"1486554120000","key":1486554120000,"doc_count":1},{"key_as_string":"1486564680000","key":1486564680000,"doc_count":1},{"key_as_string":"1486566900000","key":1486566900000,"doc_count":5},{"key_as_string":"1486566960000","key":1486566960000,"doc_count":8},{"key_as_string":"1486567020000","key":1486567020000,"doc_count":12},{"key_as_string":"1486567080000","key":1486567080000,"doc_count":16},{"key_as_string":"1486567140000","key":1486567140000,"doc_count":12},{"key_as_string":"1486567200000","key":1486567200000,"doc_count":16},{"key_as_string":"1486567260000","key":1486567260000,"doc_count":16},{"key_as_string":"1486567320000","key":1486567320000,"doc_count":12},{"key_as_string":"1486567380000","key":1486567380000,"doc_count":16},{"key_as_string":"1486567440000","key":1486567440000,"doc_count":16},{"key_as_string":"1486567500000","key":1486567500000,"doc_count":12},{"key_as_string":"1486567560000","key":1486567560000,"doc_count":16},{"key_as_string":"1486567620000","key":1486567620000,"doc_count":16},{"key_as_string":"1486567680000","key":1486567680000,"doc_count":12},{"key_as_string":"1486567740000","key":1486567740000,"doc_count":16},{"key_as_string":"1486567800000","key":1486567800000,"doc_count":16},{"key_as_string":"1486567860000","key":1486567860000,"doc_count":8},{"key_as_string":"1486567920000","key":1486567920000,"doc_count":3},{"key_as_string":"1486567980000","key":1486567980000,"doc_count":1},{"key_as_string":"1486589280000","key":1486589280000,"doc_count":1},{"key_as_string":"1486598100000","key":1486598100000,"doc_count":1},{"key_as_string":"1486625760000","key":1486625760000,"doc_count":3},{"key_as_string":"1486627620000","key":1486627620000,"doc_count":1},{"key_as_string":"1486637520000","key":1486637520000,"doc_count":1},{"key_as_string":"1486641240000","key":1486641240000,"doc_count":1},{"key_as_string":"1486650840000","key":1486650840000,"doc_count":1},{"key_as_string":"1486664580000","key":1486664580000,"doc_count":1},{"key_as_string":"1486668360000","key":1486668360000,"doc_count":1},{"key_as_string":"1486668660000","key":1486668660000,"doc_count":1},{"key_as_string":"1486730220000","key":1486730220000,"doc_count":1},{"key_as_string":"1486734600000","key":1486734600000,"doc_count":1},{"key_as_string":"1486735800000","key":1486735800000,"doc_count":1},{"key_as_string":"1486743540000","key":1486743540000,"doc_count":4},{"key_as_string":"1486746360000","key":1486746360000,"doc_count":2},{"key_as_string":"1486751880000","key":1486751880000,"doc_count":4},{"key_as_string":"1486760520000","key":1486760520000,"doc_count":1},{"key_as_string":"1486770540000","key":1486770540000,"doc_count":3},{"key_as_string":"1486770600000","key":1486770600000,"doc_count":1},{"key_as_string":"1486770720000","key":1486770720000,"doc_count":4},{"key_as_string":"1486784760000","key":1486784760000,"doc_count":3},{"key_as_string":"1486786260000","key":1486786260000,"doc_count":1},{"key_as_string":"1486809660000","key":1486809660000,"doc_count":1},{"key_as_string":"1486830240000","key":1486830240000,"doc_count":1},{"key_as_string":"1486830480000","key":1486830480000,"doc_count":1},{"key_as_string":"1486855020000","key":1486855020000,"doc_count":1}]}}} diff --git a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json index 6eb1808ea7d0c..1a22fc869f354 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json +++ b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json @@ -1 +1 @@ -{"took":0,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":32017,"max_score":0,"hits":[]},"aggregations":{"earliest":{"value":-252464400000,"value_as_string":"1961-12-31T23:00:00.000Z"},"latest":{"value":1419894000000,"value_as_string":"2014-12-29T23:00:00.000Z"}}} +{"took":0,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":{"value":32017,"relation":"eq"},"max_score":0,"hits":[]},"aggregations":{"earliest":{"value":-252464400000,"value_as_string":"1961-12-31T23:00:00.000Z"},"latest":{"value":1419894000000,"value_as_string":"2014-12-29T23:00:00.000Z"}}} diff --git a/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts index 810d0ae9dcd87..691b039c0ad37 100644 --- a/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts +++ b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts @@ -22,7 +22,7 @@ const callAs = { }, }), }, - search: () => Promise.resolve({ body: {} }), + search: () => Promise.resolve({ body: { hits: { total: { value: 0, relation: 'eq' } } } }), }; const mlClusterClient = ({ diff --git a/x-pack/plugins/ml/server/models/results_service/results_service.ts b/x-pack/plugins/ml/server/models/results_service/results_service.ts index 4c6f9eb405802..abb42a5a18689 100644 --- a/x-pack/plugins/ml/server/models/results_service/results_service.ts +++ b/x-pack/plugins/ml/server/models/results_service/results_service.ts @@ -142,9 +142,8 @@ export function resultsServiceProvider(client: IScopedClusterClient) { }); } - const { body } = await asInternalUser.search>({ + const { body } = await asInternalUser.search({ index: ML_RESULTS_INDEX_PATTERN, - rest_total_hits_as_int: true, size: maxRecords, body: { query: { @@ -176,9 +175,9 @@ export function resultsServiceProvider(client: IScopedClusterClient) { anomalies: [], interval: 'second', }; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { let records: AnomalyRecordDoc[] = []; - body.hits.hits.forEach((hit) => { + body.hits.hits.forEach((hit: any) => { records.push(hit._source); }); @@ -380,7 +379,6 @@ export function resultsServiceProvider(client: IScopedClusterClient) { async function getCategoryExamples(jobId: string, categoryIds: any, maxExamples: number) { const { body } = await asInternalUser.search({ index: ML_RESULTS_INDEX_PATTERN, - rest_total_hits_as_int: true, size: ANOMALIES_TABLE_DEFAULT_QUERY_SIZE, // Matches size of records in anomaly summary table. body: { query: { @@ -392,7 +390,7 @@ export function resultsServiceProvider(client: IScopedClusterClient) { }); const examplesByCategoryId: { [key: string]: any } = {}; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { body.hits.hits.forEach((hit: any) => { if (maxExamples) { examplesByCategoryId[hit._source.category_id] = slice( @@ -415,7 +413,6 @@ export function resultsServiceProvider(client: IScopedClusterClient) { async function getCategoryDefinition(jobId: string, categoryId: string) { const { body } = await asInternalUser.search({ index: ML_RESULTS_INDEX_PATTERN, - rest_total_hits_as_int: true, size: 1, body: { query: { @@ -427,7 +424,7 @@ export function resultsServiceProvider(client: IScopedClusterClient) { }); const definition = { categoryId, terms: null, regex: null, examples: [] }; - if (body.hits.total !== 0) { + if (body.hits.total.value > 0) { const source = body.hits.hits[0]._source; definition.categoryId = source.category_id; definition.regex = source.regex; diff --git a/x-pack/plugins/transform/server/routes/api/transforms_audit_messages.ts b/x-pack/plugins/transform/server/routes/api/transforms_audit_messages.ts index 20cb6ffb4978b..8c95ab5c786ed 100644 --- a/x-pack/plugins/transform/server/routes/api/transforms_audit_messages.ts +++ b/x-pack/plugins/transform/server/routes/api/transforms_audit_messages.ts @@ -80,7 +80,6 @@ export function registerTransformsAuditMessagesRoutes({ router, license }: Route const resp = await ctx.transform!.dataClient.callAsCurrentUser('search', { index: ML_DF_NOTIFICATION_INDEX_PATTERN, ignore_unavailable: true, - rest_total_hits_as_int: true, size: SIZE, body: { sort: [{ timestamp: { order: 'desc' } }, { transform_id: { order: 'asc' } }], @@ -89,7 +88,7 @@ export function registerTransformsAuditMessagesRoutes({ router, license }: Route }); let messages: TransformMessage[] = []; - if (resp.hits.total !== 0) { + if (resp.hits.total.value > 0) { messages = resp.hits.hits.map((hit: AuditMessage) => hit._source); messages.reverse(); } From a31dd64778f43ebe42e769e847e19c1d31a2785a Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 30 Sep 2020 10:24:38 +0200 Subject: [PATCH 101/119] [UX] Add percentile selector (#78562) --- x-pack/plugins/apm/common/ui_filter.ts | 98 +++++++++++++++++++ .../cypress/integration/csm_dashboard.feature | 4 + .../step_definitions/csm/percentile_select.ts | 29 ++++++ .../step_definitions/csm/url_search_filter.ts | 2 +- .../support/step_definitions/csm/utils.ts | 14 +++ .../app/RumDashboard/ClientMetrics/index.tsx | 16 +-- .../PageLoadDistribution/index.tsx | 4 +- .../app/RumDashboard/PageViewsTrend/index.tsx | 4 +- .../components/app/RumDashboard/RumHome.tsx | 6 +- .../URLFilter/URLSearch/SelectableUrlList.tsx | 7 +- .../URLFilter/URLSearch/index.tsx | 22 +++-- .../app/RumDashboard/URLFilter/index.tsx | 38 ++++--- .../RumDashboard/UXMetrics/KeyUXMetrics.tsx | 15 +-- .../app/RumDashboard/UXMetrics/index.tsx | 18 +--- .../app/RumDashboard/UserPercentile/index.tsx | 97 ++++++++++++++++++ .../RumDashboard/VisitorBreakdown/index.tsx | 4 +- .../VisitorBreakdownMap/EmbeddedMap.tsx | 4 +- .../VisitorBreakdownMap/useMapFilters.ts | 42 +++++--- .../app/RumDashboard/hooks/useUxQuery.ts | 32 ++++++ .../components/app/RumDashboard/index.tsx | 4 +- .../app/RumDashboard/translations.ts | 18 ++++ .../components/shared/Links/url_helpers.ts | 4 +- .../shared/LocalUIFilters/index.tsx | 3 +- .../public/context/UrlParamsContext/index.tsx | 3 +- .../UrlParamsContext/resolveUrlParams.ts | 2 + .../public/context/UrlParamsContext/types.ts | 4 +- .../apm/public/hooks/useLocalUIFilters.ts | 2 +- .../lib/rum_client/get_client_metrics.ts | 12 ++- .../lib/rum_client/get_page_view_trends.ts | 2 + .../server/lib/rum_client/get_url_search.ts | 18 +++- .../lib/rum_client/get_web_core_vitals.ts | 26 +++-- .../lib/ui_filters/local_ui_filters/config.ts | 92 +---------------- .../get_local_filter_query.ts | 3 +- .../lib/ui_filters/local_ui_filters/index.ts | 3 +- .../plugins/apm/server/routes/rum_client.ts | 70 +++++++------ .../plugins/apm/server/routes/ui_filters.ts | 6 +- x-pack/plugins/apm/typings/ui_filters.ts | 3 +- .../typings/fetch_overview_data/index.ts | 2 +- .../plugins/observability/typings/common.ts | 3 +- .../trial/tests/csm/url_search.ts | 6 +- .../trial/tests/csm/web_core_vitals.ts | 4 +- 41 files changed, 504 insertions(+), 242 deletions(-) create mode 100644 x-pack/plugins/apm/common/ui_filter.ts create mode 100644 x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/percentile_select.ts create mode 100644 x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/utils.ts create mode 100644 x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx create mode 100644 x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts diff --git a/x-pack/plugins/apm/common/ui_filter.ts b/x-pack/plugins/apm/common/ui_filter.ts new file mode 100644 index 0000000000000..22463cbdb86d1 --- /dev/null +++ b/x-pack/plugins/apm/common/ui_filter.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { + AGENT_NAME, + CLIENT_GEO_COUNTRY_ISO_CODE, + CONTAINER_ID, + HOST_NAME, + POD_NAME, + SERVICE_NAME, + SERVICE_VERSION, + TRANSACTION_RESULT, + TRANSACTION_URL, + USER_AGENT_DEVICE, + USER_AGENT_NAME, + USER_AGENT_OS, +} from './elasticsearch_fieldnames'; + +export const filtersByName = { + host: { + title: i18n.translate('xpack.apm.localFilters.titles.host', { + defaultMessage: 'Host', + }), + fieldName: HOST_NAME, + }, + agentName: { + title: i18n.translate('xpack.apm.localFilters.titles.agentName', { + defaultMessage: 'Agent name', + }), + fieldName: AGENT_NAME, + }, + containerId: { + title: i18n.translate('xpack.apm.localFilters.titles.containerId', { + defaultMessage: 'Container ID', + }), + fieldName: CONTAINER_ID, + }, + podName: { + title: i18n.translate('xpack.apm.localFilters.titles.podName', { + defaultMessage: 'Kubernetes pod', + }), + fieldName: POD_NAME, + }, + transactionResult: { + title: i18n.translate('xpack.apm.localFilters.titles.transactionResult', { + defaultMessage: 'Transaction result', + }), + fieldName: TRANSACTION_RESULT, + }, + serviceVersion: { + title: i18n.translate('xpack.apm.localFilters.titles.serviceVersion', { + defaultMessage: 'Service version', + }), + fieldName: SERVICE_VERSION, + }, + transactionUrl: { + title: i18n.translate('xpack.apm.localFilters.titles.transactionUrl', { + defaultMessage: 'Url', + }), + fieldName: TRANSACTION_URL, + }, + browser: { + title: i18n.translate('xpack.apm.localFilters.titles.browser', { + defaultMessage: 'Browser', + }), + fieldName: USER_AGENT_NAME, + }, + device: { + title: i18n.translate('xpack.apm.localFilters.titles.device', { + defaultMessage: 'Device', + }), + fieldName: USER_AGENT_DEVICE, + }, + location: { + title: i18n.translate('xpack.apm.localFilters.titles.location', { + defaultMessage: 'Location', + }), + fieldName: CLIENT_GEO_COUNTRY_ISO_CODE, + }, + os: { + title: i18n.translate('xpack.apm.localFilters.titles.os', { + defaultMessage: 'OS', + }), + fieldName: USER_AGENT_OS, + }, + serviceName: { + title: i18n.translate('xpack.apm.localFilters.titles.serviceName', { + defaultMessage: 'Service name', + }), + fieldName: SERVICE_NAME, + }, +}; + +export type LocalUIFilterName = keyof typeof filtersByName; diff --git a/x-pack/plugins/apm/e2e/cypress/integration/csm_dashboard.feature b/x-pack/plugins/apm/e2e/cypress/integration/csm_dashboard.feature index 7b894b6ca7aac..5dc1d5da0b75c 100644 --- a/x-pack/plugins/apm/e2e/cypress/integration/csm_dashboard.feature +++ b/x-pack/plugins/apm/e2e/cypress/integration/csm_dashboard.feature @@ -9,6 +9,10 @@ Feature: CSM Dashboard When a user browses the APM UI application for RUM Data Then should have correct client metrics + Scenario: Percentile select + When the user changes the selected percentile + Then it displays client metric related to that percentile + Scenario Outline: CSM page filters When the user filters by "" Then it filters the client metrics "" diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/percentile_select.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/percentile_select.ts new file mode 100644 index 0000000000000..4d2ba4d01ae6c --- /dev/null +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/percentile_select.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { When, Then } from 'cypress-cucumber-preprocessor/steps'; +import { verifyClientMetrics } from './client_metrics_helper'; +import { getDataTestSubj } from './utils'; + +When('the user changes the selected percentile', () => { + // wait for all loading to finish + cy.get('kbnLoadingIndicator').should('not.be.visible'); + + getDataTestSubj('uxPercentileSelect').click(); + + getDataTestSubj('p95Percentile').click(); +}); + +Then(`it displays client metric related to that percentile`, () => { + const metrics = ['14 ms', '0.13 s', '55 ']; + + verifyClientMetrics(metrics, false); + + // reset to median + getDataTestSubj('uxPercentileSelect').click(); + + getDataTestSubj('p50Percentile').click(); +}); diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/url_search_filter.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/url_search_filter.ts index 3b5dd70065055..b8bfeffb2293c 100644 --- a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/url_search_filter.ts +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/url_search_filter.ts @@ -24,7 +24,7 @@ Then(`it displays top pages in the suggestion popover`, () => { listOfUrls.should('have.length', 5); const actualUrlsText = [ - 'http://opbeans-node:3000/dashboardPage views: 17Page load duration: 109 ms ', + 'http://opbeans-node:3000/dashboardPage views: 17Page load duration: 109 ms', 'http://opbeans-node:3000/ordersPage views: 14Page load duration: 72 ms', ]; diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/utils.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/utils.ts new file mode 100644 index 0000000000000..87b3a1d70d073 --- /dev/null +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/csm/utils.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { DEFAULT_TIMEOUT } from './csm_dashboard'; + +export function getDataTestSubj(dataTestSubj: string) { + // wait for all loading to finish + cy.get('kbnLoadingIndicator').should('not.be.visible'); + + return cy.get(`[data-test-subj=${dataTestSubj}]`, DEFAULT_TIMEOUT); +} diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx index bc1e0a86f17db..03f2f31f35817 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx @@ -9,8 +9,8 @@ import styled from 'styled-components'; import { useContext, useEffect } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiStat, EuiToolTip } from '@elastic/eui'; import { useFetcher } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; import { I18LABELS } from '../translations'; +import { useUxQuery } from '../hooks/useUxQuery'; import { CsmSharedContext } from '../CsmSharedContext'; const ClFlexGroup = styled(EuiFlexGroup)` @@ -22,29 +22,23 @@ const ClFlexGroup = styled(EuiFlexGroup)` `; export function ClientMetrics() { - const { urlParams, uiFilters } = useUrlParams(); - - const { start, end, searchTerm } = urlParams; + const uxQuery = useUxQuery(); const { data, status } = useFetcher( (callApmApi) => { - const { serviceName } = uiFilters; - if (start && end && serviceName) { + if (uxQuery) { return callApmApi({ pathname: '/api/apm/rum/client-metrics', params: { query: { - start, - end, - uiFilters: JSON.stringify(uiFilters), - urlQuery: searchTerm, + ...uxQuery, }, }, }); } return Promise.resolve(null); }, - [start, end, uiFilters, searchTerm] + [uxQuery] ); const { setSharedData } = useContext(CsmSharedContext); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx index c8e45d2b2f672..88d14a0213a96 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx @@ -33,7 +33,9 @@ export function PageLoadDistribution() { const { data, status } = useFetcher( (callApmApi) => { - if (start && end) { + const { serviceName } = uiFilters; + + if (start && end && serviceName) { return callApmApi({ pathname: '/api/apm/rum-client/page-load-distribution', params: { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx index f2da0955412e7..621098b6028cb 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx @@ -22,7 +22,9 @@ export function PageViewsTrend() { const { data, status } = useFetcher( (callApmApi) => { - if (start && end) { + const { serviceName } = uiFilters; + + if (start && end && serviceName) { return callApmApi({ pathname: '/api/apm/rum-client/page-view-trends', params: { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx index 28bb5307b6e8c..71a992ae4df82 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { RumOverview } from '../RumDashboard'; import { RumHeader } from './RumHeader'; +import { UserPercentile } from './UserPercentile'; import { CsmSharedContextProvider } from './CsmSharedContext'; export const UX_LABEL = i18n.translate('xpack.apm.ux.title', { @@ -21,11 +22,14 @@ export function RumHome() { - +

{UX_LABEL}

+ + +
diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx index 298ec15b8480b..ebca1df17038c 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { FormEvent, useRef, useState } from 'react'; +import React, { FormEvent, SetStateAction, useRef, useState } from 'react'; import { EuiButtonEmpty, EuiFlexGroup, @@ -33,6 +33,8 @@ interface Props { onChange: (updatedOptions: UrlOption[]) => void; searchValue: string; onClose: () => void; + popoverIsOpen: boolean; + setPopoverIsOpen: React.Dispatch>; } export function SelectableUrlList({ @@ -43,8 +45,9 @@ export function SelectableUrlList({ onChange, searchValue, onClose, + popoverIsOpen, + setPopoverIsOpen, }: Props) { - const [popoverIsOpen, setPopoverIsOpen] = useState(false); const [popoverRef, setPopoverRef] = useState(null); const [searchRef, setSearchRef] = useState(null); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx index b88cf29740dcd..5ad666cd466bc 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx @@ -15,6 +15,7 @@ import { fromQuery, toQuery } from '../../../../shared/Links/url_helpers'; import { formatToSec } from '../../UXMetrics/KeyUXMetrics'; import { SelectableUrlList } from './SelectableUrlList'; import { UrlOption } from './RenderOption'; +import { useUxQuery } from '../../hooks/useUxQuery'; interface Props { onChange: (value: string[]) => void; @@ -23,9 +24,10 @@ interface Props { export function URLSearch({ onChange: onFilterChange }: Props) { const history = useHistory(); - const { urlParams, uiFilters } = useUrlParams(); + const { uiFilters } = useUrlParams(); + + const [popoverIsOpen, setPopoverIsOpen] = useState(false); - const { start, end, serviceName } = urlParams; const [searchValue, setSearchValue] = useState(''); const [debouncedValue, setDebouncedValue] = useState(''); @@ -54,17 +56,18 @@ export function URLSearch({ onChange: onFilterChange }: Props) { const [checkedUrls, setCheckedUrls] = useState([]); + const uxQuery = useUxQuery(); + const { data, status } = useFetcher( (callApmApi) => { - if (start && end && serviceName) { + if (uxQuery && popoverIsOpen) { const { transactionUrl, ...restFilters } = uiFilters; return callApmApi({ pathname: '/api/apm/rum-client/url-search', params: { query: { - start, - end, + ...uxQuery, uiFilters: JSON.stringify(restFilters), urlQuery: searchValue, }, @@ -73,7 +76,8 @@ export function URLSearch({ onChange: onFilterChange }: Props) { } return Promise.resolve(null); }, - [start, end, serviceName, uiFilters, searchValue] + // eslint-disable-next-line react-hooks/exhaustive-deps + [uxQuery, searchValue, popoverIsOpen] ); useEffect(() => { @@ -110,7 +114,9 @@ export function URLSearch({ onChange: onFilterChange }: Props) { }; const onClose = () => { - onFilterChange(checkedUrls); + if (uiFilters.transactionUrl || checkedUrls.length > 0) { + onFilterChange(checkedUrls); + } }; return ( @@ -126,6 +132,8 @@ export function URLSearch({ onChange: onFilterChange }: Props) { onChange={onChange} onClose={onClose} searchValue={searchValue} + popoverIsOpen={popoverIsOpen} + setPopoverIsOpen={setPopoverIsOpen} /> ); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx index 9d3c8d012871f..6456329bdb456 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx @@ -5,16 +5,16 @@ */ import { i18n } from '@kbn/i18n'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback } from 'react'; import { EuiSpacer, EuiBadge } from '@elastic/eui'; import { useHistory } from 'react-router-dom'; -import { Projection } from '../../../../../common/projections'; -import { useLocalUIFilters } from '../../../../hooks/useLocalUIFilters'; +import { omit } from 'lodash'; import { URLSearch } from './URLSearch'; -import { LocalUIFilters } from '../../../shared/LocalUIFilters'; import { UrlList } from './UrlList'; import { useUrlParams } from '../../../../hooks/useUrlParams'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; +import { removeUndefinedProps } from '../../../../context/UrlParamsContext/helpers'; +import { LocalUIFilterName } from '../../../../../common/ui_filter'; const removeSearchTermLabel = i18n.translate( 'xpack.apm.uiFilter.url.removeSearchTerm', @@ -28,18 +28,19 @@ export function URLFilter() { urlParams: { searchTerm }, } = useUrlParams(); - const localUIFiltersConfig = useMemo(() => { - const config: React.ComponentProps = { - filterNames: ['transactionUrl'], - projection: Projection.rumOverview, - }; + const setFilterValue = (name: LocalUIFilterName, value: string[]) => { + const search = omit(toQuery(history.location.search), name); - return config; - }, []); - - const { filters, setFilterValue } = useLocalUIFilters({ - ...localUIFiltersConfig, - }); + history.push({ + ...history.location, + search: fromQuery( + removeUndefinedProps({ + ...search, + [name]: value.length ? value.join(',') : undefined, + }) + ), + }); + }; const updateSearchTerm = useCallback( (searchTermN?: string) => { @@ -55,7 +56,12 @@ export function URLFilter() { [history] ); - const { name, value: filterValue } = filters[0]; + const name = 'transactionUrl'; + + const { uiFilters } = useUrlParams(); + const { transactionUrl } = uiFilters; + + const filterValue = transactionUrl ?? []; return ( diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx index 1d8360872afba..37836a2c47d64 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx @@ -14,8 +14,8 @@ import { SUM_LONG_TASKS, TBT_LABEL, } from '../CoreVitals/translations'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; import { useFetcher } from '../../../../hooks/useFetcher'; +import { useUxQuery } from '../hooks/useUxQuery'; export function formatToSec( value?: number | string, @@ -36,28 +36,23 @@ interface Props { } export function KeyUXMetrics({ data, loading }: Props) { - const { urlParams, uiFilters } = useUrlParams(); - - const { start, end, serviceName, searchTerm } = urlParams; + const uxQuery = useUxQuery(); const { data: longTaskData, status } = useFetcher( (callApmApi) => { - if (start && end && serviceName) { + if (uxQuery) { return callApmApi({ pathname: '/api/apm/rum-client/long-task-metrics', params: { query: { - start, - end, - uiFilters: JSON.stringify(uiFilters), - urlQuery: searchTerm, + ...uxQuery, }, }, }); } return Promise.resolve(null); }, - [start, end, serviceName, uiFilters, searchTerm] + [uxQuery] ); // Note: FCP value is in ms unit diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx index 1a95ac50587af..910c37c6ccbaa 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx @@ -21,8 +21,8 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { I18LABELS } from '../translations'; import { CoreVitals } from '../CoreVitals'; import { KeyUXMetrics } from './KeyUXMetrics'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; import { useFetcher } from '../../../../hooks/useFetcher'; +import { useUxQuery } from '../hooks/useUxQuery'; export interface UXMetrics { cls: string; @@ -36,29 +36,21 @@ export interface UXMetrics { } export function UXMetrics() { - const { urlParams, uiFilters } = useUrlParams(); - - const { start, end, searchTerm } = urlParams; + const uxQuery = useUxQuery(); const { data, status } = useFetcher( (callApmApi) => { - const { serviceName } = uiFilters; - if (start && end && serviceName) { + if (uxQuery) { return callApmApi({ pathname: '/api/apm/rum-client/web-core-vitals', params: { - query: { - start, - end, - uiFilters: JSON.stringify(uiFilters), - urlQuery: searchTerm, - }, + query: uxQuery, }, }); } return Promise.resolve(null); }, - [start, end, uiFilters, searchTerm] + [uxQuery] ); const [isPopoverOpen, setIsPopoverOpen] = useState(false); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx new file mode 100644 index 0000000000000..2ce724e7fec85 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useCallback, useEffect } from 'react'; + +import { EuiSuperSelect } from '@elastic/eui'; +import { useHistory } from 'react-router-dom'; +import styled from 'styled-components'; +import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; +import { I18LABELS } from '../translations'; + +const DEFAULT_P = 50; + +const StyledSpan = styled.span` + font-weight: 600; +`; + +export function UserPercentile() { + const history = useHistory(); + + const { + urlParams: { percentile }, + } = useUrlParams(); + + const updatePercentile = useCallback( + (percentileN?: number) => { + const newLocation = { + ...history.location, + search: fromQuery({ + ...toQuery(history.location.search), + percentile: percentileN, + }), + }; + history.push(newLocation); + }, + [history] + ); + + useEffect(() => { + if (!percentile) { + updatePercentile(DEFAULT_P); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const options = [ + { + value: '50', + inputDisplay: I18LABELS.percentile50thMedian, + dropdownDisplay: I18LABELS.percentile50thMedian, + 'data-test-subj': 'p50Percentile', + }, + { + value: '75', + inputDisplay: {I18LABELS.percentile75th}, + dropdownDisplay: I18LABELS.percentile75th, + 'data-test-subj': 'p75Percentile', + }, + { + value: '90', + inputDisplay: {I18LABELS.percentile90th}, + dropdownDisplay: I18LABELS.percentile90th, + 'data-test-subj': 'p90Percentile', + }, + { + value: '95', + inputDisplay: {I18LABELS.percentile95th}, + dropdownDisplay: I18LABELS.percentile95th, + 'data-test-subj': 'p95Percentile', + }, + { + value: '99', + inputDisplay: {I18LABELS.percentile99th}, + dropdownDisplay: I18LABELS.percentile99th, + 'data-test-subj': 'p99Percentile', + }, + ]; + + const onChange = (val: string) => { + updatePercentile(Number(val)); + }; + + return ( + onChange(value)} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx index 2db6ef8fa6c06..092c416303bb5 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx @@ -18,7 +18,9 @@ export function VisitorBreakdown() { const { data, status } = useFetcher( (callApmApi) => { - if (start && end) { + const { serviceName } = uiFilters; + + if (start && end && serviceName) { return callApmApi({ pathname: '/api/apm/rum-client/visitor-breakdown', params: { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx index 93608a0ccd826..1198c014f5921 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx @@ -162,10 +162,10 @@ export function EmbeddedMapComponent() { // We can only render after embeddable has already initialized useEffect(() => { - if (embeddableRoot.current && embeddable) { + if (embeddableRoot.current && embeddable && serviceName) { embeddable.render(embeddableRoot.current); } - }, [embeddable, embeddableRoot]); + }, [embeddable, embeddableRoot, serviceName]); return ( diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts index 357e04c538e68..774ac23d23196 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts @@ -4,12 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useEffect, useState } from 'react'; +import { useMemo } from 'react'; import { useUrlParams } from '../../../../hooks/useUrlParams'; import { FieldFilter as Filter } from '../../../../../../../../src/plugins/data/common'; import { CLIENT_GEO_COUNTRY_ISO_CODE, SERVICE_NAME, + TRANSACTION_URL, USER_AGENT_DEVICE, USER_AGENT_NAME, USER_AGENT_OS, @@ -17,6 +18,21 @@ import { import { APM_STATIC_INDEX_PATTERN_ID } from '../../../../../../../../src/plugins/apm_oss/public'; +const getWildcardFilter = (field: string, value: string): Filter => { + return { + meta: { + index: APM_STATIC_INDEX_PATTERN_ID, + alias: null, + negate: false, + disabled: false, + type: 'term', + key: field, + params: { query: value }, + }, + query: { wildcard: { [field]: { value: `*${value}*` } } }, + }; +}; + const getMatchFilter = (field: string, value: string): Filter => { return { meta: { @@ -28,7 +44,7 @@ const getMatchFilter = (field: string, value: string): Filter => { key: field, params: { query: value }, }, - query: { match_phrase: { [field]: value } }, + query: { term: { [field]: value } }, }; }; @@ -52,14 +68,13 @@ const getMultiMatchFilter = (field: string, values: string[]): Filter => { }, }; }; + export const useMapFilters = (): Filter[] => { const { urlParams, uiFilters } = useUrlParams(); - const { serviceName } = urlParams; - - const { browser, device, os, location } = uiFilters; + const { serviceName, searchTerm } = urlParams; - const [mapFilters, setMapFilters] = useState([]); + const { browser, device, os, location, transactionUrl } = uiFilters; const existFilter: Filter = { meta: { @@ -76,7 +91,7 @@ export const useMapFilters = (): Filter[] => { }, }; - useEffect(() => { + return useMemo(() => { const filters = [existFilter]; if (serviceName) { filters.push(getMatchFilter(SERVICE_NAME, serviceName)); @@ -93,10 +108,15 @@ export const useMapFilters = (): Filter[] => { if (location) { filters.push(getMultiMatchFilter(CLIENT_GEO_COUNTRY_ISO_CODE, location)); } + if (transactionUrl) { + filters.push(getMultiMatchFilter(TRANSACTION_URL, transactionUrl)); + } + if (searchTerm) { + filters.push(getWildcardFilter(TRANSACTION_URL, searchTerm)); + } - setMapFilters(filters); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [serviceName, browser, device, os, location]); + return filters; - return mapFilters; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [serviceName, browser, device, os, location, searchTerm]); }; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts new file mode 100644 index 0000000000000..da2ac52602198 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo } from 'react'; +import { useUrlParams } from '../../../../hooks/useUrlParams'; + +export function useUxQuery() { + const { urlParams, uiFilters } = useUrlParams(); + + const { start, end, searchTerm, percentile } = urlParams; + + const queryParams = useMemo(() => { + const { serviceName } = uiFilters; + + if (start && end && serviceName) { + return { + start, + end, + percentile: String(percentile), + urlQuery: searchTerm || undefined, + uiFilters: JSON.stringify(uiFilters), + }; + } + + return null; + }, [start, end, searchTerm, percentile, uiFilters]); + + return queryParams; +} diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx index 33a7a23ab086b..a04d145555b19 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx @@ -23,8 +23,8 @@ import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { ServiceNameFilter } from './URLFilter/ServiceNameFilter'; export function RumOverview() { - useTrackPageview({ app: 'apm', path: 'rum_overview' }); - useTrackPageview({ app: 'apm', path: 'rum_overview', delay: 15000 }); + useTrackPageview({ app: 'ux', path: 'home' }); + useTrackPageview({ app: 'ux', path: 'home', delay: 15000 }); const localUIFiltersConfig = useMemo(() => { const config: React.ComponentProps = { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/translations.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/translations.ts index f92a1d5a5945b..dd7721d9f7129 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/translations.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/translations.ts @@ -132,6 +132,24 @@ export const I18LABELS = { defaultMessage: 'Impacted page loads', } ), + percentile: i18n.translate('xpack.apm.ux.percentile.label', { + defaultMessage: 'Percentile', + }), + percentile50thMedian: i18n.translate('xpack.apm.ux.percentile.50thMedian', { + defaultMessage: '50th (Median)', + }), + percentile75th: i18n.translate('xpack.apm.ux.percentile.75th', { + defaultMessage: '75th', + }), + percentile90th: i18n.translate('xpack.apm.ux.percentile.90th', { + defaultMessage: '90th', + }), + percentile95th: i18n.translate('xpack.apm.ux.percentile.95th', { + defaultMessage: '95th', + }), + percentile99th: i18n.translate('xpack.apm.ux.percentile.99th', { + defaultMessage: '99th', + }), }; export const VisitorBreakdownLabel = i18n.translate( diff --git a/x-pack/plugins/apm/public/components/shared/Links/url_helpers.ts b/x-pack/plugins/apm/public/components/shared/Links/url_helpers.ts index 3f98fc449e8c1..991735a450724 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/url_helpers.ts +++ b/x-pack/plugins/apm/public/components/shared/Links/url_helpers.ts @@ -5,9 +5,8 @@ */ import { parse, stringify } from 'query-string'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { LocalUIFilterName } from '../../../../server/lib/ui_filters/local_ui_filters/config'; import { url } from '../../../../../../../src/plugins/kibana_utils/public'; +import { LocalUIFilterName } from '../../../../common/ui_filter'; export function toQuery(search?: string): APMQueryParamsRaw { return search ? parse(search.slice(1), { sort: false }) : {}; @@ -41,6 +40,7 @@ export type APMQueryParams = { refreshPaused?: string | boolean; refreshInterval?: string | number; searchTerm?: string; + percentile?: 50 | 75 | 90 | 95 | 99; } & { [key in LocalUIFilterName]?: string }; // forces every value of T[K] to be type: string diff --git a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/index.tsx b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/index.tsx index ba700e68b59bc..65164a43bf10e 100644 --- a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/index.tsx @@ -13,11 +13,10 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { LocalUIFilterName } from '../../../../server/lib/ui_filters/local_ui_filters/config'; import { Filter } from './Filter'; import { useLocalUIFilters } from '../../../hooks/useLocalUIFilters'; import { Projection } from '../../../../common/projections'; +import { LocalUIFilterName } from '../../../../common/ui_filter'; interface Props { projection: Projection; diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx b/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx index 6083a216bbf95..9eb4704a2ca29 100644 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx +++ b/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx @@ -19,11 +19,12 @@ import { resolveUrlParams } from './resolveUrlParams'; import { UIFilters } from '../../../typings/ui_filters'; import { localUIFilterNames, - LocalUIFilterName, + // eslint-disable-next-line @kbn/eslint/no-restricted-paths } from '../../../server/lib/ui_filters/local_ui_filters/config'; import { pickKeys } from '../../../common/utils/pick_keys'; import { useDeepObjectIdentity } from '../../hooks/useDeepObjectIdentity'; +import { LocalUIFilterName } from '../../../common/ui_filter'; interface TimeRange { rangeFrom: string; diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts b/x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts index 8feb4ac1858d1..ccc106cc00c9e 100644 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts +++ b/x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts @@ -47,6 +47,7 @@ export function resolveUrlParams(location: Location, state: TimeUrlParams) { rangeTo, environment, searchTerm, + percentile, } = query; const localUIFilters = pickKeys(query, ...localUIFilterNames); @@ -75,6 +76,7 @@ export function resolveUrlParams(location: Location, state: TimeUrlParams) { transactionName, transactionType, searchTerm: toString(searchTerm), + percentile: toNumber(percentile), // ui filters environment, diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/types.ts b/x-pack/plugins/apm/public/context/UrlParamsContext/types.ts index 574eca3b74f70..68ef73e7b7bc6 100644 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/types.ts +++ b/x-pack/plugins/apm/public/context/UrlParamsContext/types.ts @@ -4,8 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { LocalUIFilterName } from '../../../server/lib/ui_filters/local_ui_filters/config'; +import { LocalUIFilterName } from '../../../common/ui_filter'; export type IUrlParams = { detailTab?: string; @@ -28,4 +27,5 @@ export type IUrlParams = { page?: number; pageSize?: number; searchTerm?: string; + percentile?: number; } & Partial>; diff --git a/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts b/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts index 0ed26fe089487..da1797fd712b1 100644 --- a/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts +++ b/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts @@ -11,7 +11,6 @@ import { pickKeys } from '../../common/utils/pick_keys'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { LocalUIFiltersAPIResponse } from '../../server/lib/ui_filters/local_ui_filters'; import { - LocalUIFilterName, localUIFilters, // eslint-disable-next-line @kbn/eslint/no-restricted-paths } from '../../server/lib/ui_filters/local_ui_filters/config'; @@ -20,6 +19,7 @@ import { removeUndefinedProps } from '../context/UrlParamsContext/helpers'; import { useCallApi } from './useCallApi'; import { useFetcher } from './useFetcher'; import { useUrlParams } from './useUrlParams'; +import { LocalUIFilterName } from '../../common/ui_filter'; const getInitialData = ( filterNames: LocalUIFilterName[] diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_client_metrics.ts b/x-pack/plugins/apm/server/lib/rum_client/get_client_metrics.ts index cf4a5538a208d..a210c32ceb44e 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_client_metrics.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_client_metrics.ts @@ -20,9 +20,11 @@ import { export async function getClientMetrics({ setup, urlQuery, + percentile = 50, }: { setup: Setup & SetupTimeRange & SetupUIFilters; urlQuery?: string; + percentile?: number; }) { const projection = getRumPageLoadTransactionsProjection({ setup, @@ -41,7 +43,7 @@ export async function getClientMetrics({ backEnd: { percentiles: { field: TRANSACTION_TIME_TO_FIRST_BYTE, - percents: [50], + percents: [percentile], hdr: { number_of_significant_value_digits: 3, }, @@ -50,7 +52,7 @@ export async function getClientMetrics({ domInteractive: { percentiles: { field: TRANSACTION_DOM_INTERACTIVE, - percents: [50], + percents: [percentile], hdr: { number_of_significant_value_digits: 3, }, @@ -65,13 +67,15 @@ export async function getClientMetrics({ const response = await apmEventClient.search(params); const { backEnd, domInteractive, pageViews } = response.aggregations!; + const pkey = percentile.toFixed(1); + // Divide by 1000 to convert ms into seconds return { pageViews, - backEnd: { value: (backEnd.values['50.0'] || 0) / 1000 }, + backEnd: { value: (backEnd.values[pkey] || 0) / 1000 }, frontEnd: { value: - ((domInteractive.values['50.0'] || 0) - (backEnd.values['50.0'] || 0)) / + ((domInteractive.values[pkey] || 0) - (backEnd.values[pkey] || 0)) / 1000, }, }; diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_page_view_trends.ts b/x-pack/plugins/apm/server/lib/rum_client/get_page_view_trends.ts index 352a3ecdc3f12..40f8a8bc58a54 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_page_view_trends.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_page_view_trends.ts @@ -15,6 +15,7 @@ import { BreakdownItem } from '../../../typings/ui_filters'; export async function getPageViewTrends({ setup, breakdowns, + urlQuery, }: { setup: Setup & SetupTimeRange & SetupUIFilters; breakdowns?: string; @@ -22,6 +23,7 @@ export async function getPageViewTrends({ }) { const projection = getRumPageLoadTransactionsProjection({ setup, + urlQuery, }); let breakdownItem: BreakdownItem | null = null; if (breakdowns) { diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_url_search.ts b/x-pack/plugins/apm/server/lib/rum_client/get_url_search.ts index a7117f275c17b..6aa39c7ef961f 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_url_search.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_url_search.ts @@ -11,13 +11,19 @@ import { SetupUIFilters, } from '../helpers/setup_request'; import { getRumPageLoadTransactionsProjection } from '../../projections/rum_page_load_transactions'; +import { + TRANSACTION_DURATION, + TRANSACTION_URL, +} from '../../../common/elasticsearch_fieldnames'; export async function getUrlSearch({ setup, urlQuery, + percentile, }: { setup: Setup & SetupTimeRange & SetupUIFilters; urlQuery?: string; + percentile: number; }) { const projection = getRumPageLoadTransactionsProjection({ setup, @@ -30,19 +36,19 @@ export async function getUrlSearch({ aggs: { totalUrls: { cardinality: { - field: 'url.full', + field: TRANSACTION_URL, }, }, urls: { terms: { - field: 'url.full', + field: TRANSACTION_URL, size: 10, }, aggs: { medianPLD: { percentiles: { - field: 'transaction.duration.us', - percents: [50], + field: TRANSACTION_DURATION, + percents: [percentile], }, }, }, @@ -56,12 +62,14 @@ export async function getUrlSearch({ const response = await apmEventClient.search(params); const { urls, totalUrls } = response.aggregations ?? {}; + const pkey = percentile.toFixed(1); + return { total: totalUrls?.value || 0, items: (urls?.buckets ?? []).map((bucket) => ({ url: bucket.key as string, count: bucket.doc_count, - pld: bucket.medianPLD.values['50.0'] ?? 0, + pld: bucket.medianPLD.values[pkey] ?? 0, })), }; } diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts b/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts index 0828d7ab65190..676b3506397a7 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_web_core_vitals.ts @@ -23,12 +23,15 @@ import { export async function getWebCoreVitals({ setup, urlQuery, + percentile = 50, }: { setup: Setup & SetupTimeRange & SetupUIFilters; urlQuery?: string; + percentile?: number; }) { const projection = getRumPageLoadTransactionsProjection({ setup, + urlQuery, }); const params = mergeProjection(projection, { @@ -50,31 +53,31 @@ export async function getWebCoreVitals({ lcp: { percentiles: { field: LCP_FIELD, - percents: [50], + percents: [percentile], }, }, fid: { percentiles: { field: FID_FIELD, - percents: [50], + percents: [percentile], }, }, cls: { percentiles: { field: CLS_FIELD, - percents: [50], + percents: [percentile], }, }, tbt: { percentiles: { field: TBT_FIELD, - percents: [50], + percents: [percentile], }, }, fcp: { percentiles: { field: FCP_FIELD, - percents: [50], + percents: [percentile], }, }, lcpRanks: { @@ -124,12 +127,15 @@ export async function getWebCoreVitals({ { value: 0, key: 0 }, ]; + const pkey = percentile.toFixed(1); + + // Divide by 1000 to convert ms into seconds return { - cls: String(cls?.values['50.0']?.toFixed(2) || 0), - fid: fid?.values['50.0'] ?? 0, - lcp: lcp?.values['50.0'] ?? 0, - tbt: tbt?.values['50.0'] ?? 0, - fcp: fcp?.values['50.0'] ?? 0, + cls: String(cls?.values[pkey]?.toFixed(2) || 0), + fid: fid?.values[pkey] ?? 0, + lcp: lcp?.values[pkey] ?? 0, + tbt: tbt?.values[pkey] ?? 0, + fcp: fcp?.values[pkey] ?? 0, lcpRanks: getRanksPercentages(lcpRanks?.values ?? defaultRanks), fidRanks: getRanksPercentages(fidRanks?.values ?? defaultRanks), diff --git a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/config.ts b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/config.ts index 9f2483ab8a24e..40744202b804c 100644 --- a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/config.ts +++ b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/config.ts @@ -3,98 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { i18n } from '@kbn/i18n'; -import { - CONTAINER_ID, - POD_NAME, - AGENT_NAME, - HOST_NAME, - TRANSACTION_RESULT, - SERVICE_VERSION, - TRANSACTION_URL, - USER_AGENT_NAME, - USER_AGENT_DEVICE, - USER_AGENT_OS, - CLIENT_GEO_COUNTRY_ISO_CODE, - SERVICE_NAME, -} from '../../../../common/elasticsearch_fieldnames'; -const filtersByName = { - host: { - title: i18n.translate('xpack.apm.localFilters.titles.host', { - defaultMessage: 'Host', - }), - fieldName: HOST_NAME, - }, - agentName: { - title: i18n.translate('xpack.apm.localFilters.titles.agentName', { - defaultMessage: 'Agent name', - }), - fieldName: AGENT_NAME, - }, - containerId: { - title: i18n.translate('xpack.apm.localFilters.titles.containerId', { - defaultMessage: 'Container ID', - }), - fieldName: CONTAINER_ID, - }, - podName: { - title: i18n.translate('xpack.apm.localFilters.titles.podName', { - defaultMessage: 'Kubernetes pod', - }), - fieldName: POD_NAME, - }, - transactionResult: { - title: i18n.translate('xpack.apm.localFilters.titles.transactionResult', { - defaultMessage: 'Transaction result', - }), - fieldName: TRANSACTION_RESULT, - }, - serviceVersion: { - title: i18n.translate('xpack.apm.localFilters.titles.serviceVersion', { - defaultMessage: 'Service version', - }), - fieldName: SERVICE_VERSION, - }, - transactionUrl: { - title: i18n.translate('xpack.apm.localFilters.titles.transactionUrl', { - defaultMessage: 'Url', - }), - fieldName: TRANSACTION_URL, - }, - browser: { - title: i18n.translate('xpack.apm.localFilters.titles.browser', { - defaultMessage: 'Browser', - }), - fieldName: USER_AGENT_NAME, - }, - device: { - title: i18n.translate('xpack.apm.localFilters.titles.device', { - defaultMessage: 'Device', - }), - fieldName: USER_AGENT_DEVICE, - }, - location: { - title: i18n.translate('xpack.apm.localFilters.titles.location', { - defaultMessage: 'Location', - }), - fieldName: CLIENT_GEO_COUNTRY_ISO_CODE, - }, - os: { - title: i18n.translate('xpack.apm.localFilters.titles.os', { - defaultMessage: 'OS', - }), - fieldName: USER_AGENT_OS, - }, - serviceName: { - title: i18n.translate('xpack.apm.localFilters.titles.serviceName', { - defaultMessage: 'Service name', - }), - fieldName: SERVICE_NAME, - }, -}; - -export type LocalUIFilterName = keyof typeof filtersByName; +import { filtersByName, LocalUIFilterName } from '../../../../common/ui_filter'; export interface LocalUIFilter { name: LocalUIFilterName; diff --git a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/get_local_filter_query.ts b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/get_local_filter_query.ts index cfbd79d37c041..10f6e93c1cfc1 100644 --- a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/get_local_filter_query.ts +++ b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/get_local_filter_query.ts @@ -9,7 +9,8 @@ import { mergeProjection } from '../../../projections/util/merge_projection'; import { Projection } from '../../../projections/typings'; import { UIFilters } from '../../../../typings/ui_filters'; import { getUiFiltersES } from '../../helpers/convert_ui_filters/get_ui_filters_es'; -import { localUIFilters, LocalUIFilterName } from './config'; +import { localUIFilters } from './config'; +import { LocalUIFilterName } from '../../../../common/ui_filter'; export const getLocalFilterQuery = ({ uiFilters, diff --git a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts index 78c4abd75f2ee..20184f1d53ac5 100644 --- a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts +++ b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts @@ -9,7 +9,8 @@ import { Projection } from '../../../projections/typings'; import { PromiseReturnType } from '../../../../../observability/typings/common'; import { getLocalFilterQuery } from './get_local_filter_query'; import { Setup } from '../../helpers/setup_request'; -import { localUIFilters, LocalUIFilterName } from './config'; +import { localUIFilters } from './config'; +import { LocalUIFilterName } from '../../../../common/ui_filter'; export type LocalUIFiltersAPIResponse = PromiseReturnType< typeof getLocalUIFilters diff --git a/x-pack/plugins/apm/server/routes/rum_client.ts b/x-pack/plugins/apm/server/routes/rum_client.ts index c0351991e4c0d..d86069a3ec27a 100644 --- a/x-pack/plugins/apm/server/routes/rum_client.ts +++ b/x-pack/plugins/apm/server/routes/rum_client.ts @@ -24,33 +24,36 @@ export const percentileRangeRt = t.partial({ maxPercentile: t.string, }); -const urlQueryRt = t.partial({ urlQuery: t.string }); +const uxQueryRt = t.intersection([ + uiFiltersRt, + rangeRt, + t.partial({ urlQuery: t.string, percentile: t.string }), +]); export const rumClientMetricsRoute = createRoute(() => ({ path: '/api/apm/rum/client-metrics', params: { - query: t.intersection([uiFiltersRt, rangeRt, urlQueryRt]), + query: uxQueryRt, }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); const { - query: { urlQuery }, + query: { urlQuery, percentile }, } = context.params; - return getClientMetrics({ setup, urlQuery }); + return getClientMetrics({ + setup, + urlQuery, + percentile: percentile ? Number(percentile) : undefined, + }); }, })); export const rumPageLoadDistributionRoute = createRoute(() => ({ path: '/api/apm/rum-client/page-load-distribution', params: { - query: t.intersection([ - uiFiltersRt, - rangeRt, - percentileRangeRt, - urlQueryRt, - ]), + query: t.intersection([uxQueryRt, percentileRangeRt]), }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); @@ -72,10 +75,8 @@ export const rumPageLoadDistBreakdownRoute = createRoute(() => ({ path: '/api/apm/rum-client/page-load-distribution/breakdown', params: { query: t.intersection([ - uiFiltersRt, - rangeRt, + uxQueryRt, percentileRangeRt, - urlQueryRt, t.type({ breakdown: t.string }), ]), }, @@ -99,12 +100,7 @@ export const rumPageLoadDistBreakdownRoute = createRoute(() => ({ export const rumPageViewsTrendRoute = createRoute(() => ({ path: '/api/apm/rum-client/page-view-trends', params: { - query: t.intersection([ - uiFiltersRt, - rangeRt, - urlQueryRt, - t.partial({ breakdowns: t.string }), - ]), + query: t.intersection([uxQueryRt, t.partial({ breakdowns: t.string })]), }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); @@ -113,7 +109,11 @@ export const rumPageViewsTrendRoute = createRoute(() => ({ query: { breakdowns, urlQuery }, } = context.params; - return getPageViewTrends({ setup, breakdowns, urlQuery }); + return getPageViewTrends({ + setup, + breakdowns, + urlQuery, + }); }, })); @@ -132,7 +132,7 @@ export const rumServicesRoute = createRoute(() => ({ export const rumVisitorsBreakdownRoute = createRoute(() => ({ path: '/api/apm/rum-client/visitor-breakdown', params: { - query: t.intersection([uiFiltersRt, rangeRt, urlQueryRt]), + query: uxQueryRt, }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); @@ -141,30 +141,37 @@ export const rumVisitorsBreakdownRoute = createRoute(() => ({ query: { urlQuery }, } = context.params; - return getVisitorBreakdown({ setup, urlQuery }); + return getVisitorBreakdown({ + setup, + urlQuery, + }); }, })); export const rumWebCoreVitals = createRoute(() => ({ path: '/api/apm/rum-client/web-core-vitals', params: { - query: t.intersection([uiFiltersRt, rangeRt, urlQueryRt]), + query: uxQueryRt, }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); const { - query: { urlQuery }, + query: { urlQuery, percentile }, } = context.params; - return getWebCoreVitals({ setup, urlQuery }); + return getWebCoreVitals({ + setup, + urlQuery, + percentile: percentile ? Number(percentile) : undefined, + }); }, })); export const rumLongTaskMetrics = createRoute(() => ({ path: '/api/apm/rum-client/long-task-metrics', params: { - query: t.intersection([uiFiltersRt, rangeRt, urlQueryRt]), + query: uxQueryRt, }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); @@ -173,23 +180,26 @@ export const rumLongTaskMetrics = createRoute(() => ({ query: { urlQuery }, } = context.params; - return getLongTaskMetrics({ setup, urlQuery }); + return getLongTaskMetrics({ + setup, + urlQuery, + }); }, })); export const rumUrlSearch = createRoute(() => ({ path: '/api/apm/rum-client/url-search', params: { - query: t.intersection([uiFiltersRt, rangeRt, urlQueryRt]), + query: uxQueryRt, }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); const { - query: { urlQuery }, + query: { urlQuery, percentile }, } = context.params; - return getUrlSearch({ setup, urlQuery }); + return getUrlSearch({ setup, urlQuery, percentile: Number(percentile) }); }, })); diff --git a/x-pack/plugins/apm/server/routes/ui_filters.ts b/x-pack/plugins/apm/server/routes/ui_filters.ts index 8bdd83a8ddda6..936d460102dce 100644 --- a/x-pack/plugins/apm/server/routes/ui_filters.ts +++ b/x-pack/plugins/apm/server/routes/ui_filters.ts @@ -14,10 +14,7 @@ import { } from '../lib/helpers/setup_request'; import { getEnvironments } from '../lib/ui_filters/get_environments'; import { Projection } from '../projections/typings'; -import { - localUIFilterNames, - LocalUIFilterName, -} from '../lib/ui_filters/local_ui_filters/config'; +import { localUIFilterNames } from '../lib/ui_filters/local_ui_filters/config'; import { getUiFiltersES } from '../lib/helpers/convert_ui_filters/get_ui_filters_es'; import { getLocalUIFilters } from '../lib/ui_filters/local_ui_filters'; import { getServicesProjection } from '../projections/services'; @@ -32,6 +29,7 @@ import { getServiceNodesProjection } from '../projections/service_nodes'; import { getRumPageLoadTransactionsProjection } from '../projections/rum_page_load_transactions'; import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; import { APMRequestHandlerContext } from './typings'; +import { LocalUIFilterName } from '../../common/ui_filter'; export const uiFiltersEnvironmentsRoute = createRoute(() => ({ path: '/api/apm/ui_filters/environments', diff --git a/x-pack/plugins/apm/typings/ui_filters.ts b/x-pack/plugins/apm/typings/ui_filters.ts index efba6919778bb..d2b051b63cde2 100644 --- a/x-pack/plugins/apm/typings/ui_filters.ts +++ b/x-pack/plugins/apm/typings/ui_filters.ts @@ -4,8 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { LocalUIFilterName } from '../server/lib/ui_filters/local_ui_filters/config'; +import { LocalUIFilterName } from '../common/ui_filter'; export type UIFilters = { kuery?: string; diff --git a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts index a87ae3fb26159..41330e878035c 100644 --- a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts +++ b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts @@ -34,7 +34,7 @@ export type HasData = () => Promise; export type ObservabilityFetchDataPlugins = Exclude< ObservabilityApp, - 'observability' | 'stack_monitoring' + 'observability' | 'stack_monitoring' | 'ux' >; export interface DataHandler< diff --git a/x-pack/plugins/observability/typings/common.ts b/x-pack/plugins/observability/typings/common.ts index 845652031a578..c86eb924a051e 100644 --- a/x-pack/plugins/observability/typings/common.ts +++ b/x-pack/plugins/observability/typings/common.ts @@ -10,7 +10,8 @@ export type ObservabilityApp = | 'apm' | 'uptime' | 'observability' - | 'stack_monitoring'; + | 'stack_monitoring' + | 'ux'; export type PromiseReturnType = Func extends (...args: any[]) => Promise ? Value diff --git a/x-pack/test/apm_api_integration/trial/tests/csm/url_search.ts b/x-pack/test/apm_api_integration/trial/tests/csm/url_search.ts index 76dc758895e32..c887fa3e77648 100644 --- a/x-pack/test/apm_api_integration/trial/tests/csm/url_search.ts +++ b/x-pack/test/apm_api_integration/trial/tests/csm/url_search.ts @@ -16,7 +16,7 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) describe('when there is no data', () => { it('returns empty list', async () => { const response = await supertest.get( - '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-14T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22elastic-co-rum-test%22%5D%7D' + '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-14T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22elastic-co-rum-test%22%5D%7D&percentile=50' ); expect(response.status).to.be(200); @@ -41,7 +41,7 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) it('returns top urls when no query', async () => { const response = await supertest.get( - '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D' + '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D&percentile=50' ); expect(response.status).to.be(200); @@ -67,7 +67,7 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) it('returns specific results against query', async () => { const response = await supertest.get( - '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D&urlQuery=csm' + '/api/apm/rum-client/url-search?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D&urlQuery=csm&percentile=50' ); expect(response.status).to.be(200); diff --git a/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts b/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts index 5825c8fc49a6b..efbdb75c47cc1 100644 --- a/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts +++ b/x-pack/test/apm_api_integration/trial/tests/csm/web_core_vitals.ts @@ -16,7 +16,7 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) describe('when there is no data', () => { it('returns empty list', async () => { const response = await supertest.get( - '/api/apm/rum-client/web-core-vitals?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-14T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22elastic-co-rum-test%22%5D%7D' + '/api/apm/rum-client/web-core-vitals?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-14T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22elastic-co-rum-test%22%5D%7D&percentile=50' ); expect(response.status).to.be(200); @@ -45,7 +45,7 @@ export default function rumServicesApiTests({ getService }: FtrProviderContext) it('returns web core vitals values', async () => { const response = await supertest.get( - '/api/apm/rum-client/web-core-vitals?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D' + '/api/apm/rum-client/web-core-vitals?start=2020-09-07T20%3A35%3A54.654Z&end=2020-09-16T20%3A35%3A54.654Z&uiFilters=%7B%22serviceName%22%3A%5B%22kibana-frontend-8_0_0%22%5D%7D&percentile=50' ); expect(response.status).to.be(200); From f6be7dc2f9f6ff79973f568e329dc544449e0e40 Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Wed, 30 Sep 2020 01:30:32 -0700 Subject: [PATCH 102/119] Fix condition and adjust tests (#78898) (cherry picked from commit 676ce45993109f4bf4a6e57f19e325c08f59da9a) --- .../agents/checkin/state_new_actions.test.ts | 14 +++++++++++--- .../services/agents/checkin/state_new_actions.ts | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts index dd00ba87fded5..f4a2147131570 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.test.ts @@ -80,7 +80,15 @@ describe('test agent checkin new action services', () => { expect( await createAgentActionFromPolicyAction( mockSavedObjectsClient, - { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.10.1-SNAPSHOT' } } } }, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.10.0-SNAPSHOT' } } } }, + mockPolicyAction + ) + ).toEqual(expectedResult); + + expect( + await createAgentActionFromPolicyAction( + mockSavedObjectsClient, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.10.2' } } } }, mockPolicyAction ) ).toEqual(expectedResult); @@ -131,7 +139,7 @@ describe('test agent checkin new action services', () => { expect( await createAgentActionFromPolicyAction( mockSavedObjectsClient, - { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.1-SNAPSHOT' } } } }, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.3' } } } }, mockPolicyAction ) ).toEqual(expectedResult); @@ -139,7 +147,7 @@ describe('test agent checkin new action services', () => { expect( await createAgentActionFromPolicyAction( mockSavedObjectsClient, - { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.3' } } } }, + { ...mockAgent, local_metadata: { elastic: { agent: { version: '7.9.1-SNAPSHOT' } } } }, mockPolicyAction ) ).toEqual(expectedResult); diff --git a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts index 89b045c5c0516..51ccdc8eb1c7c 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/checkin/state_new_actions.ts @@ -116,10 +116,21 @@ export async function createAgentActionFromPolicyAction( agent: Agent, policyAction: AgentPolicyAction ) { - // Transform the policy action for agent version <= 7.9 for BWC + // Transform the policy action for agent version <= 7.9.x for BWC const agentVersion = semver.parse((agent.local_metadata?.elastic as any)?.agent?.version); const agentPolicyAction: AgentPolicyAction | AgentPolicyActionV7_9 = - agentVersion && semver.lt(agentVersion, '7.10.0') + agentVersion && + semver.lt( + agentVersion, + // A prerelease tag is added here so that agent versions with prerelease tags can be compared + // correctly using `semvar` + '7.10.0-SNAPSHOT', + // `@types/semvar` is out of date with the version of `semvar` we use and doesn't have a + // corresponding release version we can update the typing to :( so, the typing error is + // suppressed here even though it is supported by `semvar` + // @ts-expect-error + { includePrerelease: true } + ) ? { ...policyAction, type: 'CONFIG_CHANGE', From f8d796aec6be6964e11e03e2b8e378fe69706530 Mon Sep 17 00:00:00 2001 From: Rudolf Meijering Date: Wed, 30 Sep 2020 10:39:08 +0200 Subject: [PATCH 103/119] Remove unused elasticsearch.preserverHost setting (#78608) * Remove unused elasticsearch.preserverHost setting * deprecate and remove elasticsearch.startupTimeout config --- config/kibana.yml | 8 -------- docs/setup/settings.asciidoc | 9 --------- src/core/server/config/deprecation/core_deprecations.ts | 2 ++ src/core/server/elasticsearch/elasticsearch_config.ts | 2 -- src/core/server/mocks.ts | 1 - src/core/server/plugins/plugin_context.test.ts | 1 - src/core/server/plugins/types.ts | 2 +- src/core/server/server.api.md | 2 -- .../docker_generator/resources/bin/kibana-docker | 6 ++---- x-pack/plugins/monitoring/server/config.test.ts | 2 -- 10 files changed, 5 insertions(+), 30 deletions(-) diff --git a/config/kibana.yml b/config/kibana.yml index 72e0764f849a0..58ae8b9346f51 100644 --- a/config/kibana.yml +++ b/config/kibana.yml @@ -27,11 +27,6 @@ # The URLs of the Elasticsearch instances to use for all your queries. #elasticsearch.hosts: ["http://localhost:9200"] -# When this setting's value is true Kibana uses the hostname specified in the server.host -# setting. When the value of this setting is false, Kibana uses the hostname of the host -# that connects to this Kibana instance. -#elasticsearch.preserveHost: true - # Kibana uses an index in Elasticsearch to store saved searches, visualizations and # dashboards. Kibana creates a new index if the index doesn't already exist. #kibana.index: ".kibana" @@ -81,9 +76,6 @@ # Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable. #elasticsearch.shardTimeout: 30000 -# Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying. -#elasticsearch.startupTimeout: 5000 - # Logs queries sent to Elasticsearch. Requires logging.verbose set to true. #elasticsearch.logQueries: false diff --git a/docs/setup/settings.asciidoc b/docs/setup/settings.asciidoc index af68f3e541628..903bb59cef380 100644 --- a/docs/setup/settings.asciidoc +++ b/docs/setup/settings.asciidoc @@ -68,11 +68,6 @@ currently do not have an inspector, for example Timelion and Monitoring. | Time in milliseconds to wait for {es} to respond to pings. *Default: the value of the <> setting* -| `elasticsearch.preserveHost:` - | When the value is `true`, {kib} uses the hostname specified in the -<> setting. When the value is `false`, {kib} uses -the hostname of the host that connects to this {kib} instance. *Default: `true`* - |[[elasticsearch-requestHeadersWhitelist]] `elasticsearch.requestHeadersWhitelist:` | List of {kib} client-side headers to send to {es}. To send *no* client-side headers, set this value to [] (an empty list). Removing the `authorization` @@ -204,10 +199,6 @@ making an outbound SSL/TLS connection to {es}. Valid values are `"full"`, using `"certificate"` skips hostname verification, and using `"none"` skips verification entirely. *Default: `"full"`* -| `elasticsearch.startupTimeout:` - | Time in milliseconds to wait for {es} at {kib} startup before retrying. -*Default: `5000`* - |[[elasticsearch-user-passwd]] `elasticsearch.username:` and `elasticsearch.password:` | If your {es} is protected with basic authentication, these settings provide the username and password that the {kib} server uses to perform maintenance diff --git a/src/core/server/config/deprecation/core_deprecations.ts b/src/core/server/config/deprecation/core_deprecations.ts index 2701edcf44e03..6c85cfbed8e82 100644 --- a/src/core/server/config/deprecation/core_deprecations.ts +++ b/src/core/server/config/deprecation/core_deprecations.ts @@ -136,6 +136,8 @@ export const coreDeprecationProvider: ConfigDeprecationProvider = ({ rename, unu unusedFromRoot('optimize.workers'), unusedFromRoot('optimize.profile'), unusedFromRoot('optimize.validateSyntaxOfNodeModules'), + unusedFromRoot('elasticsearch.preserveHost'), + unusedFromRoot('elasticsearch.startupTimeout'), rename('cpu.cgroup.path.override', 'ops.cGroupOverrides.cpuPath'), rename('cpuacct.cgroup.path.override', 'ops.cGroupOverrides.cpuAcctPath'), configPathDeprecation, diff --git a/src/core/server/elasticsearch/elasticsearch_config.ts b/src/core/server/elasticsearch/elasticsearch_config.ts index cac8c75a04486..cfc1edfbd318e 100644 --- a/src/core/server/elasticsearch/elasticsearch_config.ts +++ b/src/core/server/elasticsearch/elasticsearch_config.ts @@ -45,7 +45,6 @@ export const configSchema = schema.object({ hosts: schema.oneOf([hostURISchema, schema.arrayOf(hostURISchema, { minSize: 1 })], { defaultValue: 'http://localhost:9200', }), - preserveHost: schema.boolean({ defaultValue: true }), username: schema.maybe( schema.conditional( schema.contextRef('dist'), @@ -71,7 +70,6 @@ export const configSchema = schema.object({ shardTimeout: schema.duration({ defaultValue: '30s' }), requestTimeout: schema.duration({ defaultValue: '30s' }), pingTimeout: schema.duration({ defaultValue: schema.siblingRef('requestTimeout') }), - startupTimeout: schema.duration({ defaultValue: '5s' }), logQueries: schema.boolean({ defaultValue: false }), ssl: schema.object( { diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index e9b345317e999..3030cd9f4e0cb 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -67,7 +67,6 @@ export function pluginInitializerContextConfigMock(config: T) { shardTimeout: duration('30s'), requestTimeout: duration('30s'), pingTimeout: duration('30s'), - startupTimeout: duration('30s'), }, path: { data: '/tmp' }, savedObjects: { diff --git a/src/core/server/plugins/plugin_context.test.ts b/src/core/server/plugins/plugin_context.test.ts index cb4e8f20be982..7b2a5cd3b35f8 100644 --- a/src/core/server/plugins/plugin_context.test.ts +++ b/src/core/server/plugins/plugin_context.test.ts @@ -91,7 +91,6 @@ describe('createPluginInitializerContext', () => { shardTimeout: duration(30, 's'), requestTimeout: duration(30, 's'), pingTimeout: duration(30, 's'), - startupTimeout: duration(5, 's'), }, path: { data: fromRoot('data') }, savedObjects: { maxImportPayloadBytes: new ByteSizeValue(10485760) }, diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index 9de181124a349..0dd481687eb59 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -262,7 +262,7 @@ export interface Plugin< export const SharedGlobalConfigKeys = { // We can add more if really needed kibana: ['index', 'autocompleteTerminateAfter', 'autocompleteTimeout'] as const, - elasticsearch: ['shardTimeout', 'requestTimeout', 'pingTimeout', 'startupTimeout'] as const, + elasticsearch: ['shardTimeout', 'requestTimeout', 'pingTimeout'] as const, path: ['data'] as const, savedObjects: ['maxImportPayloadBytes'] as const, }; diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index cc51d27589ce7..450be3b0e9a6c 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -348,7 +348,6 @@ export const config: { sniffInterval: Type; sniffOnConnectionFault: Type; hosts: Type; - preserveHost: Type; username: Type; password: Type; requestHeadersWhitelist: Type; @@ -356,7 +355,6 @@ export const config: { shardTimeout: Type; requestTimeout: Type; pingTimeout: Type; - startupTimeout: Type; logQueries: Type; ssl: import("@kbn/config-schema").ObjectType<{ verificationMode: Type<"none" | "certificate" | "full">; diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker index 884e7e38494cc..2770f288b6af8 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker @@ -8,11 +8,11 @@ # # eg. Setting the environment variable: # -# ELASTICSEARCH_STARTUPTIMEOUT=60 +# ELASTICSEARCH_LOGQUERIES=true # # will cause Kibana to be invoked with: # -# --elasticsearch.startupTimeout=60 +# --elasticsearch.logQueries=true kibana_vars=( console.enabled @@ -30,7 +30,6 @@ kibana_vars=( elasticsearch.logQueries elasticsearch.password elasticsearch.pingTimeout - elasticsearch.preserveHost elasticsearch.requestHeadersWhitelist elasticsearch.requestTimeout elasticsearch.shardTimeout @@ -47,7 +46,6 @@ kibana_vars=( elasticsearch.ssl.truststore.path elasticsearch.ssl.truststore.password elasticsearch.ssl.verificationMode - elasticsearch.startupTimeout elasticsearch.username i18n.locale interpreter.enableInVisualize diff --git a/x-pack/plugins/monitoring/server/config.test.ts b/x-pack/plugins/monitoring/server/config.test.ts index f4ccb3f830af1..d264bbd83f561 100644 --- a/x-pack/plugins/monitoring/server/config.test.ts +++ b/x-pack/plugins/monitoring/server/config.test.ts @@ -72,7 +72,6 @@ describe('config schema', () => { "logFetchCount": 10, "logQueries": false, "pingTimeout": "PT30S", - "preserveHost": true, "requestHeadersWhitelist": Array [ "authorization", ], @@ -87,7 +86,6 @@ describe('config schema', () => { "truststore": Object {}, "verificationMode": "full", }, - "startupTimeout": "PT5S", }, "enabled": true, "logs": Object { From 14c7a5e41ae663a8fbf30b008b7c921d2cd24377 Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Wed, 30 Sep 2020 10:46:17 +0200 Subject: [PATCH 104/119] Remove isDeprecated flag on visType (#78820) --- .../region_map/public/region_map_type.js | 1 - src/plugins/tile_map/public/tile_map_type.js | 1 - .../public/vis_types/base_vis_type.ts | 6 +-- .../components/visualize_editor_common.tsx | 45 +++++++++---------- 4 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/plugins/region_map/public/region_map_type.js b/src/plugins/region_map/public/region_map_type.js index 105554f48f550..4cd30d32698ed 100644 --- a/src/plugins/region_map/public/region_map_type.js +++ b/src/plugins/region_map/public/region_map_type.js @@ -32,7 +32,6 @@ export function createRegionMapTypeDefinition(dependencies) { return { name: 'region_map', - isDeprecated: true, getDeprecationMessage, title: i18n.translate('regionMap.mapVis.regionMapTitle', { defaultMessage: 'Region Map' }), description: i18n.translate('regionMap.mapVis.regionMapDescription', { diff --git a/src/plugins/tile_map/public/tile_map_type.js b/src/plugins/tile_map/public/tile_map_type.js index 7073958a1b318..cc19a8bbcef91 100644 --- a/src/plugins/tile_map/public/tile_map_type.js +++ b/src/plugins/tile_map/public/tile_map_type.js @@ -33,7 +33,6 @@ export function createTileMapTypeDefinition(dependencies) { return { name: 'tile_map', - isDeprecated: true, getDeprecationMessage, title: i18n.translate('tileMap.vis.mapTitle', { defaultMessage: 'Coordinate Map', diff --git a/src/plugins/visualizations/public/vis_types/base_vis_type.ts b/src/plugins/visualizations/public/vis_types/base_vis_type.ts index 149146bf77e73..de1afc254e0d3 100644 --- a/src/plugins/visualizations/public/vis_types/base_vis_type.ts +++ b/src/plugins/visualizations/public/vis_types/base_vis_type.ts @@ -44,7 +44,7 @@ interface CommonBaseVisTypeOptions { useCustomNoDataScreen?: boolean; inspectorAdapters?: Adapters | (() => Adapters); isDeprecated?: boolean; - getDeprecationMessage?: (vis: Vis) => ReactElement; + getDeprecationMessage?: (vis: Vis) => ReactElement<{}>; } interface ExpressionBaseVisTypeOptions extends CommonBaseVisTypeOptions { @@ -84,8 +84,7 @@ export class BaseVisType { useCustomNoDataScreen: boolean; inspectorAdapters?: Adapters | (() => Adapters); toExpressionAst?: VisToExpressionAst; - isDeprecated: boolean; - getDeprecationMessage?: (vis: Vis) => ReactElement; + getDeprecationMessage?: (vis: Vis) => ReactElement<{}>; constructor(opts: BaseVisTypeOptions) { if (!opts.icon && !opts.image) { @@ -123,7 +122,6 @@ export class BaseVisType { this.useCustomNoDataScreen = opts.useCustomNoDataScreen || false; this.inspectorAdapters = opts.inspectorAdapters; this.toExpressionAst = opts.toExpressionAst; - this.isDeprecated = opts.isDeprecated || false; this.getDeprecationMessage = opts.getDeprecationMessage; } diff --git a/src/plugins/visualize/public/application/components/visualize_editor_common.tsx b/src/plugins/visualize/public/application/components/visualize_editor_common.tsx index 4321d7dd1a6ca..4b7b4dae02d0a 100644 --- a/src/plugins/visualize/public/application/components/visualize_editor_common.tsx +++ b/src/plugins/visualize/public/application/components/visualize_editor_common.tsx @@ -79,34 +79,29 @@ export const VisualizeEditorCommon = ({ /> )} {visInstance?.vis?.type?.isExperimental && } - {visInstance?.vis?.type?.isDeprecated && - visInstance?.vis?.type?.getDeprecationMessage && - visInstance.vis.type.getDeprecationMessage(visInstance?.vis)} + {visInstance?.vis?.type?.getDeprecationMessage?.(visInstance.vis)} {visInstance && (

- { - // @ts-expect-error - 'savedVis' in visInstance && visInstance.savedVis.id ? ( - - ) : ( - - ) - } + {'savedVis' in visInstance && visInstance.savedVis.id ? ( + + ) : ( + + )}

)} From 855a33c73305e3c61c82fcd4417451ff69eb3265 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Wed, 30 Sep 2020 11:38:25 +0200 Subject: [PATCH 105/119] Improve invalid field error message at search.aggs.param_types.field (#78587) --- src/plugins/data/common/search/aggs/param_types/field.ts | 5 +++-- x-pack/plugins/translations/translations/ja-JP.json | 1 - x-pack/plugins/translations/translations/zh-CN.json | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/plugins/data/common/search/aggs/param_types/field.ts b/src/plugins/data/common/search/aggs/param_types/field.ts index 492294bdf4e5f..a0bc71ac8e156 100644 --- a/src/plugins/data/common/search/aggs/param_types/field.ts +++ b/src/plugins/data/common/search/aggs/param_types/field.ts @@ -90,9 +90,10 @@ export class FieldParamType extends BaseParamType { 'data.search.aggs.paramTypes.field.invalidSavedFieldParameterErrorMessage', { defaultMessage: - 'Saved {fieldParameter} parameter is now invalid. Please select a new field.', + 'Saved field "{fieldParameter}" is invalid for use with the "{aggType}" aggregation. Please select a new field.', values: { - fieldParameter: '"field"', + fieldParameter: fieldName, + aggType: aggConfig?.type?.title, }, } ) diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index a26daffcd88d8..550cf35b1e3bf 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -1200,7 +1200,6 @@ "data.search.aggs.metrics.uniqueCountTitle": "ユニークカウント", "data.search.aggs.otherBucket.labelForMissingValuesLabel": "欠測値のラベル", "data.search.aggs.otherBucket.labelForOtherBucketLabel": "他のバケットのラベル", - "data.search.aggs.paramTypes.field.invalidSavedFieldParameterErrorMessage": "保存した {fieldParameter} パラメーターが無効になりました。新しいフィールドを選択してください。", "data.search.aggs.paramTypes.field.requiredFieldParameterErrorMessage": "{fieldParameter} は必須パラメーターです", "data.search.aggs.percentageOfLabel": "{label} の割合", "data.search.aggs.string.customLabel": "カスタムラベル", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 444fff9efa8b7..5f50eb831022b 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -1201,7 +1201,6 @@ "data.search.aggs.metrics.uniqueCountTitle": "唯一计数", "data.search.aggs.otherBucket.labelForMissingValuesLabel": "缺失值的标签", "data.search.aggs.otherBucket.labelForOtherBucketLabel": "其他存储桶的标签", - "data.search.aggs.paramTypes.field.invalidSavedFieldParameterErrorMessage": "保存的 {fieldParameter} 参数现在无效。请选择新字段。", "data.search.aggs.paramTypes.field.requiredFieldParameterErrorMessage": "{fieldParameter} 是必需字段", "data.search.aggs.percentageOfLabel": "{label} 的百分比", "data.search.aggs.string.customLabel": "定制标签", From 7b903336288298f502bdd75fc6614eecf363ff56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Wed, 30 Sep 2020 11:36:55 +0100 Subject: [PATCH 106/119] [APM] Service Map: `Not Defined` option doesn't work properly (#77757) * Service Map: option doesn't work properly * addressing PR comment * addressing PR comment * adding unit tests * addressing PR comment * fixing tests * addressing PR comment * addressing PR comment * addressing PR comment * addressing PR comment * addressing PR comment * add filter by environment * addressing PR comment * fixing API tests Co-authored-by: Elastic Machine --- ...et_service_map_from_trace_ids.test.ts.snap | 222 - .../server/lib/service_map/get_service_map.ts | 23 +- .../get_service_map_from_trace_ids.test.ts | 258 +- .../get_service_map_from_trace_ids.ts | 67 +- ...ce_map_from_trace_ids_script_response.json | 1165 - .../observability_overview.ts | 24 +- .../basic/tests/services/top_services.ts | 54 +- .../tests/settings/agent_configuration.ts | 1 + .../traces/__snapshots__/top_traces.snap | 646 +- .../basic/tests/traces/top_traces.ts | 32 +- .../__snapshots__/breakdown.snap | 802 +- .../__snapshots__/error_rate.snap | 188 +- .../__snapshots__/top_transaction_groups.snap | 138 +- .../__snapshots__/transaction_charts.snap | 1266 +- .../tests/transaction_groups/breakdown.ts | 16 +- .../tests/transaction_groups/error_rate.ts | 6 +- .../top_transaction_groups.ts | 2 +- .../transaction_groups/transaction_charts.ts | 2 +- .../common/archives_metadata.ts | 4 +- .../es_archiver/apm_8.0.0/data.json.gz | Bin 2220093 -> 2527015 bytes .../es_archiver/apm_8.0.0/mappings.json | 18754 ++++++++++++++-- .../__snapshots__/service_maps.snap | 1095 +- .../trial/tests/service_maps/service_maps.ts | 38 +- .../trial/tests/services/top_services.ts | 3 +- 24 files changed, 19895 insertions(+), 4911 deletions(-) delete mode 100644 x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap delete mode 100644 x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json diff --git a/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap b/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap deleted file mode 100644 index 1f4a8a4367fad..0000000000000 --- a/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap +++ /dev/null @@ -1,222 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`getConnections transforms a list of paths into a list of connections filtered by service.name and environment 1`] = ` -Array [ - Object { - "destination": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - "source": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "172.18.0.6:3000", - "span.subtype": "http", - "span.type": "external", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - "source": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "postgresql", - "span.subtype": "postgresql", - "span.type": "db", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "opbeans-python:3000", - "span.subtype": "http_rb", - "span.type": "ext", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "opbeans-node:3000", - "span.subtype": "http", - "span.type": "external", - }, - "source": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "172.18.0.7:3000", - "span.subtype": "http", - "span.type": "external", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "postgresql", - "span.subtype": "postgresql", - "span.type": "db", - }, - "source": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - }, - Object { - "destination": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "postgresql", - "span.subtype": "postgresql", - "span.type": "db", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "93.184.216.34:80", - "span.subtype": "http", - "span.type": "external", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "opbeans-ruby:3000", - "span.subtype": "http_rb", - "span.type": "ext", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "redis", - "span.subtype": "redis", - "span.type": "cache", - }, - "source": Object { - "agent.name": "nodejs", - "service.environment": "production", - "service.name": "opbeans-node", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "opbeans-node:3000", - "span.subtype": "http_rb", - "span.type": "ext", - }, - "source": Object { - "agent.name": "ruby", - "service.environment": "production", - "service.name": "opbeans-ruby", - }, - }, - Object { - "destination": Object { - "span.destination.service.resource": "opbeans-ruby:3000", - "span.subtype": "http", - "span.type": "external", - }, - "source": Object { - "agent.name": "python", - "service.environment": "production", - "service.name": "opbeans-python", - }, - }, -] -`; diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts index 402beb1999240..75acebe7ed56c 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts @@ -14,6 +14,7 @@ import { getServicesProjection } from '../../projections/services'; import { mergeProjection } from '../../projections/util/merge_projection'; import { PromiseReturnType } from '../../../typings/common'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; +import { getEnvironmentUiFilterES } from '../helpers/convert_ui_filters/get_environment_ui_filter_es'; import { transformServiceMapResponses } from './transform_service_map_responses'; import { getServiceMapFromTraceIds } from './get_service_map_from_trace_ids'; import { getTraceSampleIds } from './get_trace_sample_ids'; @@ -85,7 +86,19 @@ async function getServicesData(options: IEnvOptions) { searchAggregatedTransactions, }); - const { filter } = projection.body.query.bool; + let { filter } = projection.body.query.bool; + + if (options.serviceName) { + filter = filter.concat({ + term: { + [SERVICE_NAME]: options.serviceName, + }, + }); + } + + if (options.environment) { + filter = filter.concat(getEnvironmentUiFilterES(options.environment)); + } const params = mergeProjection(projection, { body: { @@ -93,13 +106,7 @@ async function getServicesData(options: IEnvOptions) { query: { bool: { ...projection.body.query.bool, - filter: options.serviceName - ? filter.concat({ - term: { - [SERVICE_NAME]: options.serviceName, - }, - }) - : filter, + filter, }, }, aggs: { diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts index a3a7e5c995bfe..4cc4d66f0121c 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts @@ -5,24 +5,248 @@ */ import { getConnections } from './get_service_map_from_trace_ids'; -import serviceMapFromTraceIdsScriptResponse from './mock_responses/get_service_map_from_trace_ids_script_response.json'; -import { PromiseReturnType } from '../../../typings/common'; -import { fetchServicePathsFromTraceIds } from './fetch_service_paths_from_trace_ids'; +import { Connection, ConnectionNode } from '../../../common/service_map'; +import { ENVIRONMENT_NOT_DEFINED } from '../../../common/environment_filter_values'; + +function getConnectionsPairs(connections: Connection[]) { + return connections + .map((conn) => { + const source = `${conn.source['service.name']}:${conn.source['service.environment']}`; + const destination = conn.destination['service.name'] + ? `${conn.destination['service.name']}:${conn.destination['service.environment']}` + : conn.destination['span.type']; + return `${source} -> ${destination}`; + }) + .filter((_) => _); +} describe('getConnections', () => { - it('transforms a list of paths into a list of connections filtered by service.name and environment', () => { - const response = serviceMapFromTraceIdsScriptResponse as PromiseReturnType< - typeof fetchServicePathsFromTraceIds - >; - const serviceName = 'opbeans-node'; - const environment = 'production'; - - const connections = getConnections( - response.aggregations?.service_map.value.paths, - serviceName, - environment - ); - - expect(connections).toMatchSnapshot(); + describe('with environments defined', () => { + const paths = [ + [ + { + 'service.environment': 'testing', + 'service.name': 'opbeans-ruby', + 'agent.name': 'ruby', + }, + { + 'service.environment': null, + 'service.name': 'opbeans-node', + 'agent.name': 'nodejs', + }, + { + 'service.environment': 'production', + 'service.name': 'opbeans-go', + 'agent.name': 'go', + }, + { + 'service.environment': 'production', + 'service.name': 'opbeans-java', + 'agent.name': 'java', + }, + { + 'span.subtype': 'http', + 'span.destination.service.resource': '172.18.0.6:3000', + 'span.type': 'external', + }, + ], + [ + { + 'service.environment': 'testing', + 'service.name': 'opbeans-ruby', + 'agent.name': 'ruby', + }, + { + 'service.environment': 'testing', + 'service.name': 'opbeans-python', + 'agent.name': 'python', + }, + { + 'span.subtype': 'http', + 'span.destination.service.resource': '172.18.0.6:3000', + 'span.type': 'external', + }, + ], + ] as ConnectionNode[][]; + describe('if neither service name or environment is given', () => { + it('includes all connections', () => { + const connections = getConnections({ + paths, + serviceName: undefined, + environment: undefined, + }); + + const connectionsPairs = getConnectionsPairs(connections); + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-node:null', + 'opbeans-node:null -> opbeans-go:production', + 'opbeans-go:production -> opbeans-java:production', + 'opbeans-java:production -> external', + 'opbeans-ruby:testing -> opbeans-python:testing', + 'opbeans-python:testing -> external', + ]); + }); + }); + + describe('if service name and environment are given', () => { + it('shows all connections for opbeans-java and production', () => { + const connections = getConnections({ + paths, + serviceName: 'opbeans-java', + environment: 'production', + }); + + const connectionsPairs = getConnectionsPairs(connections); + + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-node:null', + 'opbeans-node:null -> opbeans-go:production', + 'opbeans-go:production -> opbeans-java:production', + 'opbeans-java:production -> external', + ]); + }); + + it('shows all connections for opbeans-python and testing', () => { + const connections = getConnections({ + paths, + serviceName: 'opbeans-python', + environment: 'testing', + }); + + const connectionsPairs = getConnectionsPairs(connections); + + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-python:testing', + 'opbeans-python:testing -> external', + ]); + }); + }); + + describe('if service name is given', () => { + it('shows all connections for opbeans-node', () => { + const connections = getConnections({ + paths, + serviceName: 'opbeans-node', + environment: undefined, + }); + + const connectionsPairs = getConnectionsPairs(connections); + + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-node:null', + 'opbeans-node:null -> opbeans-go:production', + 'opbeans-go:production -> opbeans-java:production', + 'opbeans-java:production -> external', + ]); + }); + }); + + describe('if environment is given', () => { + it('shows all connections for testing environment', () => { + const connections = getConnections({ + paths, + serviceName: undefined, + environment: 'testing', + }); + + const connectionsPairs = getConnectionsPairs(connections); + + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-node:null', + 'opbeans-node:null -> opbeans-go:production', + 'opbeans-go:production -> opbeans-java:production', + 'opbeans-java:production -> external', + 'opbeans-ruby:testing -> opbeans-python:testing', + 'opbeans-python:testing -> external', + ]); + }); + it('shows all connections for production environment', () => { + const connections = getConnections({ + paths, + serviceName: undefined, + environment: 'production', + }); + + const connectionsPairs = getConnectionsPairs(connections); + + expect(connectionsPairs).toEqual([ + 'opbeans-ruby:testing -> opbeans-node:null', + 'opbeans-node:null -> opbeans-go:production', + 'opbeans-go:production -> opbeans-java:production', + 'opbeans-java:production -> external', + ]); + }); + }); + }); + + describe('environment is "not defined"', () => { + it('shows all connections where environment is not set', () => { + const environmentNotDefinedPaths = [ + [ + { + 'service.environment': 'production', + 'service.name': 'opbeans-go', + 'agent.name': 'go', + }, + { + 'service.environment': 'production', + 'service.name': 'opbeans-java', + 'agent.name': 'java', + }, + { + 'span.subtype': 'http', + 'span.destination.service.resource': '172.18.0.6:3000', + 'span.type': 'external', + }, + ], + [ + { + 'service.environment': null, + 'service.name': 'opbeans-go', + 'agent.name': 'go', + }, + { + 'service.environment': null, + 'service.name': 'opbeans-java', + 'agent.name': 'java', + }, + { + 'span.subtype': 'http', + 'span.destination.service.resource': '172.18.0.6:3000', + 'span.type': 'external', + }, + ], + [ + { + 'service.environment': null, + 'service.name': 'opbeans-python', + 'agent.name': 'python', + }, + { + 'service.environment': null, + 'service.name': 'opbeans-node', + 'agent.name': 'nodejs', + }, + { + 'span.subtype': 'http', + 'span.destination.service.resource': '172.18.0.6:3000', + 'span.type': 'external', + }, + ], + ] as ConnectionNode[][]; + const connections = getConnections({ + paths: environmentNotDefinedPaths, + serviceName: undefined, + environment: ENVIRONMENT_NOT_DEFINED.value, + }); + + const connectionsPairs = getConnectionsPairs(connections); + expect(connectionsPairs).toEqual([ + 'opbeans-go:null -> opbeans-java:null', + 'opbeans-java:null -> external', + 'opbeans-python:null -> opbeans-node:null', + 'opbeans-node:null -> external', + ]); + }); }); }); diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts index a7771d14532d6..14cfece22d053 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts @@ -9,42 +9,47 @@ import { SERVICE_ENVIRONMENT, SERVICE_NAME, } from '../../../common/elasticsearch_fieldnames'; -import { - Connection, - ConnectionNode, - ServiceConnectionNode, -} from '../../../common/service_map'; +import { Connection, ConnectionNode } from '../../../common/service_map'; import { Setup } from '../helpers/setup_request'; import { fetchServicePathsFromTraceIds } from './fetch_service_paths_from_trace_ids'; -export function getConnections( - paths?: ConnectionNode[][], - serviceName?: string, - environment?: string -) { +export function getConnections({ + paths, + serviceName, + environment, +}: { + paths: ConnectionNode[][] | undefined; + serviceName: string | undefined; + environment: string | undefined; +}) { if (!paths) { return []; } if (serviceName || environment) { paths = paths.filter((path) => { - return path.some((node) => { - let matches = true; - if (serviceName) { - matches = - matches && - SERVICE_NAME in node && - (node as ServiceConnectionNode)[SERVICE_NAME] === serviceName; - } - if (environment && environment !== ENVIRONMENT_NOT_DEFINED.value) { - matches = - matches && - SERVICE_ENVIRONMENT in node && - (node as ServiceConnectionNode)[SERVICE_ENVIRONMENT] === - environment; - } - return matches; - }); + return ( + path + // Only apply the filter on node that contains service name, this filters out external nodes + .filter((node) => { + return node[SERVICE_NAME]; + }) + .some((node) => { + if (serviceName && node[SERVICE_NAME] !== serviceName) { + return false; + } + + if (!environment) { + return true; + } + + if (environment === ENVIRONMENT_NOT_DEFINED.value) { + return !node[SERVICE_ENVIRONMENT]; + } + + return node[SERVICE_ENVIRONMENT] === environment; + }) + ); }); } @@ -88,11 +93,11 @@ export async function getServiceMapFromTraceIds({ serviceMapFromTraceIdsScriptResponse.aggregations?.service_map.value; return { - connections: getConnections( - serviceMapScriptedAggValue?.paths, + connections: getConnections({ + paths: serviceMapScriptedAggValue?.paths, serviceName, - environment - ), + environment, + }), discoveredServices: serviceMapScriptedAggValue?.discoveredServices ?? [], }; } diff --git a/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json b/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json deleted file mode 100644 index 49d8efebbf43b..0000000000000 --- a/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json +++ /dev/null @@ -1,1165 +0,0 @@ -{ - "took": 43, - "timed_out": false, - "_shards": { "total": 6, "successful": 6, "skipped": 0, "failed": 0 }, - "hits": { - "total": { "value": 465, "relation": "eq" }, - "max_score": null, - "hits": [] - }, - "aggregations": { - "service_map": { - "value": { - "paths": [ - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.6:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.6:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.7:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.7:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.7:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "93.184.216.34:80", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.7:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "postgresql", - "span.destination.service.resource": "postgresql", - "span.type": "db" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.6:3000", - "span.type": "external" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - }, - { - "span.subtype": "redis", - "span.destination.service.resource": "redis", - "span.type": "cache" - } - ], - [ - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - }, - { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - }, - { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - } - ] - ], - "discoveredServices": [ - { - "from": { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "external" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - } - }, - { - "from": { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.7:3000", - "span.type": "external" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - } - }, - { - "from": { - "span.subtype": "http", - "span.destination.service.resource": "opbeans-ruby:3000", - "span.type": "external" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-ruby", - "agent.name": "ruby" - } - }, - { - "from": { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-node:3000", - "span.type": "ext" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-node", - "agent.name": "nodejs" - } - }, - { - "from": { - "span.subtype": "http_rb", - "span.destination.service.resource": "opbeans-python:3000", - "span.type": "ext" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - } - }, - { - "from": { - "span.subtype": "http", - "span.destination.service.resource": "172.18.0.6:3000", - "span.type": "external" - }, - "to": { - "service.environment": "production", - "service.name": "opbeans-python", - "agent.name": "python" - } - } - ] - } - } - } -} diff --git a/x-pack/test/apm_api_integration/basic/tests/observability_overview/observability_overview.ts b/x-pack/test/apm_api_integration/basic/tests/observability_overview/observability_overview.ts index 41564af55562a..01fa09630e85a 100644 --- a/x-pack/test/apm_api_integration/basic/tests/observability_overview/observability_overview.ts +++ b/x-pack/test/apm_api_integration/basic/tests/observability_overview/observability_overview.ts @@ -45,9 +45,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(response.body.serviceCount).to.be.greaterThan(0); expect(response.body.transactionCoordinates.length).to.be.greaterThan(0); - expectSnapshot(response.body.serviceCount).toMatchInline(`7`); + expectSnapshot(response.body.serviceCount).toMatchInline(`8`); - expectSnapshot(response.body.transactionCoordinates.length).toMatchInline(`31`); + expectSnapshot(response.body.transactionCoordinates.length).toMatchInline(`30`); expectSnapshot( response.body.transactionCoordinates @@ -59,24 +59,24 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(` Array [ Object { - "x": "2020-09-15T08:53:00.000Z", - "y": 1, + "x": "2020-09-29T14:30:00.000Z", + "y": 2.26666666666667, }, Object { - "x": "2020-09-15T08:54:00.000Z", - "y": 1.86666666666667, + "x": "2020-09-29T14:31:00.000Z", + "y": 1.03333333333333, }, Object { - "x": "2020-09-15T08:55:00.000Z", - "y": 0.966666666666667, + "x": "2020-09-29T14:32:00.000Z", + "y": 1.9, }, Object { - "x": "2020-09-15T08:56:00.000Z", - "y": 1.93333333333333, + "x": "2020-09-29T14:33:00.000Z", + "y": 0.8, }, Object { - "x": "2020-09-15T08:57:00.000Z", - "y": 1.1, + "x": "2020-09-29T14:34:00.000Z", + "y": 1.9, }, ] `); diff --git a/x-pack/test/apm_api_integration/basic/tests/services/top_services.ts b/x-pack/test/apm_api_integration/basic/tests/services/top_services.ts index 0e0d5cb21b71a..b4bbec1e0f861 100644 --- a/x-pack/test/apm_api_integration/basic/tests/services/top_services.ts +++ b/x-pack/test/apm_api_integration/basic/tests/services/top_services.ts @@ -68,11 +68,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ "opbeans-python", "opbeans-node", - "opbeans-go", "opbeans-ruby", + "opbeans-go", "opbeans-dotnet", "opbeans-java", "opbeans-rum", + "elastic-co-frontend", ] `); }); @@ -91,76 +92,84 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ Object { "avgResponseTime": Object { - "value": 213583.765249538, + "value": 219090.56261343, }, "transactionErrorRate": Object { - "value": 0, + "value": 0.317604355716878, }, "transactionsPerMinute": Object { - "value": 18.0333333333333, + "value": 18.3666666666667, }, }, Object { "avgResponseTime": Object { - "value": 600255.707964602, + "value": 600888.274678112, }, "transactionErrorRate": Object { "value": 0, }, "transactionsPerMinute": Object { - "value": 7.53333333333333, + "value": 7.76666666666667, }, }, Object { "avgResponseTime": Object { - "value": 1818501.06081081, + "value": 120020.290123457, }, "transactionErrorRate": Object { - "value": 0.0202702702702703, + "value": 0.0185185185185185, }, "transactionsPerMinute": Object { - "value": 4.93333333333333, + "value": 5.4, }, }, Object { "avgResponseTime": Object { - "value": 290900.571428571, + "value": 489731.277777778, }, "transactionErrorRate": Object { - "value": 0.0136054421768707, + "value": 0.0238095238095238, }, "transactionsPerMinute": Object { - "value": 4.9, + "value": 4.2, }, }, Object { "avgResponseTime": Object { - "value": 1123903.7027027, + "value": 1250898.95081967, }, "transactionErrorRate": Object { - "value": 0.00900900900900901, + "value": 0.0163934426229508, }, "transactionsPerMinute": Object { - "value": 3.7, + "value": 4.06666666666667, }, }, Object { "avgResponseTime": Object { - "value": 80364.6296296296, + "value": 311287.565217391, }, "transactionErrorRate": Object { - "value": 0.185185185185185, + "value": 0.152173913043478, }, "transactionsPerMinute": Object { - "value": 3.6, + "value": 3.06666666666667, }, }, Object { "avgResponseTime": Object { - "value": 1365102.94117647, + "value": 1827564.51612903, }, "transactionsPerMinute": Object { - "value": 2.26666666666667, + "value": 2.06666666666667, + }, + }, + Object { + "avgResponseTime": Object { + "value": 7480000, + }, + "transactionsPerMinute": Object { + "value": 0.0333333333333333, }, }, ] @@ -178,10 +187,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { "testing", ], Array [ - "testing", + "production", ], Array [ - "production", + "testing", ], Array [ "production", @@ -192,6 +201,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ "testing", ], + Array [], ] `); }); diff --git a/x-pack/test/apm_api_integration/basic/tests/settings/agent_configuration.ts b/x-pack/test/apm_api_integration/basic/tests/settings/agent_configuration.ts index 70ddf276ab35c..a327f492f45fe 100644 --- a/x-pack/test/apm_api_integration/basic/tests/settings/agent_configuration.ts +++ b/x-pack/test/apm_api_integration/basic/tests/settings/agent_configuration.ts @@ -136,6 +136,7 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte expectSnapshot(body).toMatchInline(` Array [ "ALL_OPTION_VALUE", + "elastic-co-frontend", "opbeans-dotnet", "opbeans-go", "opbeans-java", diff --git a/x-pack/test/apm_api_integration/basic/tests/traces/__snapshots__/top_traces.snap b/x-pack/test/apm_api_integration/basic/tests/traces/__snapshots__/top_traces.snap index 157bbccd109be..9cecb0b3b1dd7 100644 --- a/x-pack/test/apm_api_integration/basic/tests/traces/__snapshots__/top_traces.snap +++ b/x-pack/test/apm_api_integration/basic/tests/traces/__snapshots__/top_traces.snap @@ -3,44 +3,44 @@ exports[`Top traces when data is loaded returns the correct buckets 1`] = ` Array [ Object { - "averageResponseTime": 1137, + "averageResponseTime": 1756, "impact": 0, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "POST /api/orders", + "service.name": "opbeans-java", + "transaction.name": "DispatcherServlet#doPost", }, - "serviceName": "opbeans-node", - "transactionName": "POST /api/orders", + "serviceName": "opbeans-java", + "transactionName": "DispatcherServlet#doPost", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 3347, - "impact": 0.00355908118244852, + "averageResponseTime": 3251, + "impact": 0.00224063647384788, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.stats", + "service.name": "opbeans-node", + "transaction.name": "GET /api/types", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.stats", + "serviceName": "opbeans-node", + "transactionName": "GET /api/types", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 4479, - "impact": 0.00538210376096966, + "averageResponseTime": 3813, + "impact": 0.00308293593759538, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/customers/:id", + "service.name": "opbeans-java", + "transaction.name": "ResourceHttpRequestHandler", }, - "serviceName": "opbeans-node", - "transactionName": "GET /api/customers/:id", + "serviceName": "opbeans-java", + "transactionName": "ResourceHttpRequestHandler", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 7287, - "impact": 0.00990423043984542, + "averageResponseTime": 7741, + "impact": 0.0089700396628626, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/products/top", @@ -51,20 +51,20 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 8023, - "impact": 0.011089517204679, + "averageResponseTime": 7994, + "impact": 0.00934922429689839, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::OrdersController#show", + "service.name": "opbeans-go", + "transaction.name": "POST /api/orders", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::OrdersController#show", + "serviceName": "opbeans-go", + "transactionName": "POST /api/orders", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 8282, - "impact": 0.0115066221939342, + "averageResponseTime": 10317, + "impact": 0.0128308286639543, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/orders/:id", @@ -75,368 +75,392 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 12116, - "impact": 0.0176810643900915, + "averageResponseTime": 10837, + "impact": 0.0136101804809449, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::ProductsController#top", + "service.name": "opbeans-java", + "transaction.name": "APIRestController#topProducts", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::ProductsController#top", + "serviceName": "opbeans-java", + "transactionName": "APIRestController#topProducts", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 6451, - "impact": 0.018946873353623, + "averageResponseTime": 6495, + "impact": 0.0168369967539847, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/products", + "transaction.name": "GET /api/products/:id", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/products", + "transactionName": "GET /api/products/:id", "transactionType": "request", "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 13360, - "impact": 0.019684456693696, + "averageResponseTime": 13952, + "impact": 0.0182787976154172, "key": Object { "service.name": "opbeans-java", - "transaction.name": "APIRestController#customers", + "transaction.name": "APIRestController#stats", }, "serviceName": "opbeans-java", - "transactionName": "APIRestController#customers", + "transactionName": "APIRestController#stats", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 7903, - "impact": 0.0236236026539988, + "averageResponseTime": 7324.5, + "impact": 0.0193234288008834, "key": Object { "service.name": "opbeans-java", - "transaction.name": "APIRestController#product", + "transaction.name": "APIRestController#customerWhoBought", }, "serviceName": "opbeans-java", - "transactionName": "APIRestController#product", + "transactionName": "APIRestController#customerWhoBought", "transactionType": "request", "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 17913, - "impact": 0.0270168081071296, + "averageResponseTime": 7089.66666666667, + "impact": 0.0292451769325711, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/stats", + "service.name": "opbeans-go", + "transaction.name": "GET /api/customers/:id", }, - "serviceName": "opbeans-node", - "transactionName": "GET /api/stats", + "serviceName": "opbeans-go", + "transactionName": "GET /api/customers/:id", "transactionType": "request", - "transactionsPerMinute": 0.0333333333333333, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 6065.66666666667, - "impact": 0.0274741741957338, + "averageResponseTime": 11759.5, + "impact": 0.0326173722945495, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "APIRestController#topProducts", + "service.name": "opbeans-node", + "transaction.name": "GET /api/customers/:id", }, - "serviceName": "opbeans-java", - "transactionName": "APIRestController#topProducts", + "serviceName": "opbeans-node", + "transactionName": "GET /api/customers/:id", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 2340.875, - "impact": 0.0283277095019319, + "averageResponseTime": 8109.33333333333, + "impact": 0.0338298638713675, "key": Object { "service.name": "opbeans-java", - "transaction.name": "ResourceHttpRequestHandler", + "transaction.name": "APIRestController#customer", }, "serviceName": "opbeans-java", - "transactionName": "ResourceHttpRequestHandler", + "transactionName": "APIRestController#customer", "transactionType": "request", - "transactionsPerMinute": 0.266666666666667, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 7340.66666666667, - "impact": 0.0336341223961255, + "averageResponseTime": 8677.33333333333, + "impact": 0.0363837398255058, "key": Object { "service.name": "opbeans-java", - "transaction.name": "APIRestController#customerWhoBought", + "transaction.name": "APIRestController#order", }, "serviceName": "opbeans-java", - "transactionName": "APIRestController#customerWhoBought", + "transactionName": "APIRestController#order", "transactionType": "request", "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 7689, - "impact": 0.0353170363489122, + "averageResponseTime": 26624, + "impact": 0.0372710018940797, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/types", + "transaction.name": "GET /api/customers", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/types", + "transactionName": "GET /api/customers", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 11598, - "impact": 0.0355247836215529, + "averageResponseTime": 5687.8, + "impact": 0.0399912394860756, + "key": Object { + "service.name": "opbeans-go", + "transaction.name": "GET /api/products", + }, + "serviceName": "opbeans-go", + "transactionName": "GET /api/products", + "transactionType": "request", + "transactionsPerMinute": 0.166666666666667, + }, + Object { + "averageResponseTime": 9496.33333333333, + "impact": 0.0400661771607863, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/products/:id/customers", + "transaction.name": "GET /api/products", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/products/:id/customers", + "transactionName": "GET /api/products", "transactionType": "request", - "transactionsPerMinute": 0.0666666666666667, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 12077.5, - "impact": 0.0370691993925792, + "averageResponseTime": 10717.3333333333, + "impact": 0.0455561112100871, "key": Object { "service.name": "opbeans-java", - "transaction.name": "APIRestController#order", + "transaction.name": "APIRestController#products", }, "serviceName": "opbeans-java", - "transactionName": "APIRestController#order", + "transactionName": "APIRestController#products", "transactionType": "request", - "transactionsPerMinute": 0.0666666666666667, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 6296.5, - "impact": 0.0387295671297305, + "averageResponseTime": 8438.75, + "impact": 0.04795861306131, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::TypesController#index", + "service.name": "opbeans-node", + "transaction.name": "GET /api/orders", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::TypesController#index", + "serviceName": "opbeans-node", + "transactionName": "GET /api/orders", "transactionType": "request", "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 28181, - "impact": 0.0435528468317365, + "averageResponseTime": 17322.5, + "impact": 0.0492925036711592, + "key": Object { + "service.name": "opbeans-java", + "transaction.name": "APIRestController#customers", + }, + "serviceName": "opbeans-java", + "transactionName": "APIRestController#customers", + "transactionType": "request", + "transactionsPerMinute": 0.0666666666666667, + }, + Object { + "averageResponseTime": 34696, + "impact": 0.0493689400993641, "key": Object { "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.customer", + "transaction.name": "GET opbeans.views.product", }, "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.customer", + "transactionName": "GET opbeans.views.product", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 7439, - "impact": 0.0460892960907213, + "averageResponseTime": 7321.4, + "impact": 0.0522330580268044, "key": Object { "service.name": "opbeans-go", - "transaction.name": "GET /api/customers/:id", + "transaction.name": "GET /api/types/:id", }, "serviceName": "opbeans-go", - "transactionName": "GET /api/customers/:id", + "transactionName": "GET /api/types/:id", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 10471.3333333333, - "impact": 0.0487594121995447, + "averageResponseTime": 9663.5, + "impact": 0.0553010064294577, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/types/:id", + "service.name": "opbeans-ruby", + "transaction.name": "Api::OrdersController#show", }, - "serviceName": "opbeans-node", - "transactionName": "GET /api/types/:id", + "serviceName": "opbeans-ruby", + "transactionName": "Api::OrdersController#show", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 20810.5, - "impact": 0.0651972138417402, + "averageResponseTime": 44819, + "impact": 0.0645408217212785, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/customers", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.products", }, - "serviceName": "opbeans-node", - "transactionName": "GET /api/customers", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.products", "transactionType": "request", - "transactionsPerMinute": 0.0666666666666667, + "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 11732.25, - "impact": 0.0737454504555125, + "averageResponseTime": 14944, + "impact": 0.0645603055167033, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "APIRestController#customer", + "service.name": "opbeans-ruby", + "transaction.name": "Api::ProductsController#index", }, - "serviceName": "opbeans-java", - "transactionName": "APIRestController#customer", + "serviceName": "opbeans-ruby", + "transactionName": "Api::ProductsController#index", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 47646, - "impact": 0.0749001387848408, + "averageResponseTime": 24056, + "impact": 0.0694762169777207, "key": Object { "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.customers", + "transaction.name": "GET opbeans.views.product_types", }, "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.customers", + "transactionName": "GET opbeans.views.product_types", "transactionType": "request", - "transactionsPerMinute": 0.0333333333333333, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 13160.75, - "impact": 0.0829475273227119, + "averageResponseTime": 8401.33333333333, + "impact": 0.0729173550004329, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.products", + "service.name": "opbeans-go", + "transaction.name": "GET /api/types", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.products", + "serviceName": "opbeans-go", + "transactionName": "GET /api/types", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 4131.46153846154, - "impact": 0.0846642605989518, + "averageResponseTime": 13182, + "impact": 0.0763944631070062, "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/types/:id", + "service.name": "opbeans-node", + "transaction.name": "GET /api/products/:id/customers", }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/types/:id", + "serviceName": "opbeans-node", + "transactionName": "GET /api/products/:id/customers", "transactionType": "request", - "transactionsPerMinute": 0.433333333333333, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 13869.25, - "impact": 0.0875115255449106, + "averageResponseTime": 7923, + "impact": 0.0804905564066893, "key": Object { "service.name": "opbeans-ruby", - "transaction.name": "Api::StatsController#index", + "transaction.name": "Api::TypesController#index", }, "serviceName": "opbeans-ruby", - "transactionName": "Api::StatsController#index", + "transactionName": "Api::TypesController#index", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 20643.3333333333, - "impact": 0.0979037205088655, + "averageResponseTime": 19838.6666666667, + "impact": 0.0865680018257216, "key": Object { "service.name": "opbeans-ruby", - "transaction.name": "Api::ProductsController#show", + "transaction.name": "Api::CustomersController#index", }, "serviceName": "opbeans-ruby", - "transactionName": "Api::ProductsController#show", + "transactionName": "Api::CustomersController#index", "transactionType": "request", "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 15596.5, - "impact": 0.0986380829609906, + "averageResponseTime": 7952.33333333333, + "impact": 0.104635475198455, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::TypesController#show", + "service.name": "opbeans-go", + "transaction.name": "GET /api/orders/:id", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::TypesController#show", + "serviceName": "opbeans-go", + "transactionName": "GET /api/orders/:id", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 20989, - "impact": 0.0995737509098606, + "averageResponseTime": 19666, + "impact": 0.115266133732905, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.orders", + "service.name": "opbeans-node", + "transaction.name": "GET /api/stats", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.orders", + "serviceName": "opbeans-node", + "transactionName": "GET /api/stats", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 74419, - "impact": 0.118016555299635, + "averageResponseTime": 40188.5, + "impact": 0.117833498468491, "key": Object { "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.product_type", + "transaction.name": "GET opbeans.views.customer", }, "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.product_type", + "transactionName": "GET opbeans.views.customer", "transactionType": "request", - "transactionsPerMinute": 0.0333333333333333, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 10678.4285714286, - "impact": 0.118548001811041, + "averageResponseTime": 26802.3333333333, + "impact": 0.117878461073318, "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/orders/:id", + "service.name": "opbeans-ruby", + "transaction.name": "Api::ProductsController#show", }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/orders/:id", + "serviceName": "opbeans-ruby", + "transactionName": "Api::ProductsController#show", "transactionType": "request", - "transactionsPerMinute": 0.233333333333333, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 27078.6666666667, - "impact": 0.12899495187011, + "averageResponseTime": 14709.3333333333, + "impact": 0.129642177249393, "key": Object { "service.name": "opbeans-ruby", - "transaction.name": "Api::OrdersController#index", + "transaction.name": "Api::StatsController#index", }, "serviceName": "opbeans-ruby", - "transactionName": "Api::OrdersController#index", + "transactionName": "Api::StatsController#index", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 11827.4285714286, - "impact": 0.13150080269359, + "averageResponseTime": 15432, + "impact": 0.136140772400299, "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/customers", + "service.name": "opbeans-ruby", + "transaction.name": "Api::TypesController#show", }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/customers", + "serviceName": "opbeans-ruby", + "transactionName": "Api::TypesController#show", "transactionType": "request", - "transactionsPerMinute": 0.233333333333333, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 21770.75, - "impact": 0.138411217785846, + "averageResponseTime": 33266.3333333333, + "impact": 0.146942288833089, "key": Object { "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.product", + "transaction.name": "GET opbeans.views.orders", }, "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.product", + "transactionName": "GET opbeans.views.orders", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 10252, - "impact": 0.146761369790822, + "averageResponseTime": 33445.3333333333, + "impact": 0.147747119459481, "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/types", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.customers", }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/types", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.customers", "transactionType": "request", - "transactionsPerMinute": 0.3, + "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 100570, - "impact": 0.160131275662626, + "averageResponseTime": 107438, + "impact": 0.158391266775379, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.top_products", @@ -447,44 +471,56 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 15505, - "impact": 0.197928395731435, + "averageResponseTime": 27696.75, + "impact": 0.163410592227497, "key": Object { "service.name": "opbeans-ruby", - "transaction.name": "Api::CustomersController#index", + "transaction.name": "Api::ProductsController#top", }, "serviceName": "opbeans-ruby", - "transactionName": "Api::CustomersController#index", + "transactionName": "Api::ProductsController#top", "transactionType": "request", - "transactionsPerMinute": 0.266666666666667, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 22856.5, - "impact": 0.219023601346318, + "averageResponseTime": 55832.5, + "impact": 0.164726497795416, "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/products", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.stats", }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/products", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.stats", "transactionType": "request", - "transactionsPerMinute": 0.2, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 17250.125, - "impact": 0.220411804051871, + "averageResponseTime": 10483.6363636364, + "impact": 0.170204441816763, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::ProductsController#index", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.order", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::ProductsController#index", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.order", "transactionType": "request", - "transactionsPerMinute": 0.266666666666667, + "transactionsPerMinute": 0.366666666666667, + }, + Object { + "averageResponseTime": 24524.5, + "impact": 0.217905269277069, + "key": Object { + "service.name": "opbeans-go", + "transaction.name": "GET /api/customers", + }, + "serviceName": "opbeans-go", + "transactionName": "GET /api/customers", + "transactionType": "request", + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 20089.5555555556, - "impact": 0.289346858357169, + "averageResponseTime": 14822.3, + "impact": 0.219517928036841, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::CustomersController#show", @@ -492,11 +528,11 @@ Array [ "serviceName": "opbeans-ruby", "transactionName": "Api::CustomersController#show", "transactionType": "request", - "transactionsPerMinute": 0.3, + "transactionsPerMinute": 0.333333333333333, }, Object { - "averageResponseTime": 26487.8571428571, - "impact": 0.296769394633144, + "averageResponseTime": 44771.75, + "impact": 0.26577545588222, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/stats", @@ -504,23 +540,35 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/stats", "transactionType": "request", + "transactionsPerMinute": 0.133333333333333, + }, + Object { + "averageResponseTime": 39421.4285714286, + "impact": 0.410949215592138, + "key": Object { + "service.name": "opbeans-ruby", + "transaction.name": "Api::OrdersController#index", + }, + "serviceName": "opbeans-ruby", + "transactionName": "Api::OrdersController#index", + "transactionType": "request", "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 14957.5384615385, - "impact": 0.311316535049912, + "averageResponseTime": 33513.3076923077, + "impact": 0.650334619948262, "key": Object { "service.name": "opbeans-go", - "transaction.name": "GET /api/products/:id/customers", + "transaction.name": "GET /api/products/:id", }, "serviceName": "opbeans-go", - "transactionName": "GET /api/products/:id/customers", + "transactionName": "GET /api/products/:id", "transactionType": "request", "transactionsPerMinute": 0.433333333333333, }, Object { - "averageResponseTime": 30178.5, - "impact": 0.678579893755146, + "averageResponseTime": 28933.2222222222, + "impact": 0.777916011143112, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api", @@ -528,23 +576,23 @@ Array [ "serviceName": "opbeans-node", "transactionName": "GET /api", "transactionType": "request", - "transactionsPerMinute": 0.466666666666667, + "transactionsPerMinute": 0.6, }, Object { - "averageResponseTime": 32625.875, - "impact": 0.838843225823637, + "averageResponseTime": 101613, + "impact": 1.06341806051616, "key": Object { "service.name": "opbeans-go", - "transaction.name": "GET /api/products/:id", + "transaction.name": "GET /api/products/:id/customers", }, "serviceName": "opbeans-go", - "transactionName": "GET /api/products/:id", + "transactionName": "GET /api/products/:id/customers", "transactionType": "request", - "transactionsPerMinute": 0.533333333333333, + "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 121200.833333333, - "impact": 1.16929183528418, + "averageResponseTime": 377325, + "impact": 1.12840251327172, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.product_customers", @@ -552,11 +600,11 @@ Array [ "serviceName": "opbeans-python", "transactionName": "GET opbeans.views.product_customers", "transactionType": "request", - "transactionsPerMinute": 0.2, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 38025.8666666667, - "impact": 3.67248059487481, + "averageResponseTime": 39452.8333333333, + "impact": 3.54517249775948, "key": Object { "service.name": "opbeans-python", "transaction.name": "opbeans.tasks.sync_orders", @@ -567,20 +615,8 @@ Array [ "transactionsPerMinute": 2, }, Object { - "averageResponseTime": 815238, - "impact": 11.8142250451802, - "key": Object { - "service.name": "opbeans-java", - "transaction.name": "DispatcherServlet#doGet", - }, - "serviceName": "opbeans-java", - "transactionName": "DispatcherServlet#doGet", - "transactionType": "request", - "transactionsPerMinute": 0.3, - }, - Object { - "averageResponseTime": 691636.363636364, - "impact": 12.2504266790787, + "averageResponseTime": 715444.444444444, + "impact": 9.64784193809929, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/customers", @@ -588,11 +624,11 @@ Array [ "serviceName": "opbeans-rum", "transactionName": "/customers", "transactionType": "page-load", - "transactionsPerMinute": 0.366666666666667, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 1590910.5, - "impact": 20.4947467478614, + "averageResponseTime": 833539.125, + "impact": 9.99152559811767, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/orders", @@ -603,8 +639,20 @@ Array [ "transactionsPerMinute": 0.266666666666667, }, Object { - "averageResponseTime": 303589.162790698, - "impact": 21.0214424495446, + "averageResponseTime": 7480000, + "impact": 11.2080443255746, + "key": Object { + "service.name": "elastic-co-frontend", + "transaction.name": "/community/security", + }, + "serviceName": "elastic-co-frontend", + "transactionName": "/community/security", + "transactionType": "page-load", + "transactionsPerMinute": 0.0333333333333333, + }, + Object { + "averageResponseTime": 171383.519230769, + "impact": 13.354173900338, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Rack", @@ -612,11 +660,23 @@ Array [ "serviceName": "opbeans-ruby", "transactionName": "Rack", "transactionType": "request", - "transactionsPerMinute": 1.43333333333333, + "transactionsPerMinute": 1.73333333333333, }, Object { - "averageResponseTime": 1180200, - "impact": 28.5078585961908, + "averageResponseTime": 1052468.6, + "impact": 15.7712781068549, + "key": Object { + "service.name": "opbeans-java", + "transaction.name": "DispatcherServlet#doGet", + }, + "serviceName": "opbeans-java", + "transactionName": "DispatcherServlet#doGet", + "transactionType": "request", + "transactionsPerMinute": 0.333333333333333, + }, + Object { + "averageResponseTime": 1413866.66666667, + "impact": 31.7829322941256, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/products", @@ -627,8 +687,8 @@ Array [ "transactionsPerMinute": 0.5, }, Object { - "averageResponseTime": 1073178.57142857, - "impact": 48.3903998986838, + "averageResponseTime": 996583.333333333, + "impact": 35.8445542634419, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/dashboard", @@ -636,23 +696,11 @@ Array [ "serviceName": "opbeans-rum", "transactionName": "/dashboard", "transactionType": "page-load", - "transactionsPerMinute": 0.933333333333333, - }, - Object { - "averageResponseTime": 2676214.28571429, - "impact": 60.3366732975087, - "key": Object { - "service.name": "opbeans-rum", - "transaction.name": "/orders", - }, - "serviceName": "opbeans-rum", - "transactionName": "/orders", - "transactionType": "page-load", - "transactionsPerMinute": 0.466666666666667, + "transactionsPerMinute": 0.8, }, Object { - "averageResponseTime": 928922.434782609, - "impact": 68.8131356442496, + "averageResponseTime": 1046912.60465116, + "impact": 67.4671169361798, "key": Object { "service.name": "opbeans-node", "transaction.name": "Process completed order", @@ -660,23 +708,23 @@ Array [ "serviceName": "opbeans-node", "transactionName": "Process completed order", "transactionType": "Worker", - "transactionsPerMinute": 1.53333333333333, + "transactionsPerMinute": 1.43333333333333, }, Object { - "averageResponseTime": 1012219.09302326, - "impact": 70.0934208886629, + "averageResponseTime": 1142941.8, + "impact": 68.5168888461311, "key": Object { "service.name": "opbeans-node", - "transaction.name": "Process payment", + "transaction.name": "Update shipping status", }, "serviceName": "opbeans-node", - "transactionName": "Process payment", + "transactionName": "Update shipping status", "transactionType": "Worker", - "transactionsPerMinute": 1.43333333333333, + "transactionsPerMinute": 1.33333333333333, }, Object { - "averageResponseTime": 126010.608333333, - "impact": 73.0540578695005, + "averageResponseTime": 128285.213888889, + "impact": 69.2138167147075, "key": Object { "service.name": "opbeans-python", "transaction.name": "opbeans.tasks.update_stats", @@ -687,19 +735,31 @@ Array [ "transactionsPerMinute": 12, }, Object { - "averageResponseTime": 1041680.24444444, - "impact": 75.4887141857793, + "averageResponseTime": 1032979.06666667, + "impact": 69.6655125415468, "key": Object { "service.name": "opbeans-node", - "transaction.name": "Update shipping status", + "transaction.name": "Process payment", }, "serviceName": "opbeans-node", - "transactionName": "Update shipping status", + "transactionName": "Process payment", "transactionType": "Worker", "transactionsPerMinute": 1.5, }, Object { - "averageResponseTime": 1724883.75, + "averageResponseTime": 4410285.71428571, + "impact": 92.5364039355288, + "key": Object { + "service.name": "opbeans-rum", + "transaction.name": "/orders", + }, + "serviceName": "opbeans-rum", + "transactionName": "/orders", + "transactionType": "page-load", + "transactionsPerMinute": 0.466666666666667, + }, + Object { + "averageResponseTime": 1803347.81081081, "impact": 100, "key": Object { "service.name": "opbeans-python", @@ -708,7 +768,7 @@ Array [ "serviceName": "opbeans-python", "transactionName": "opbeans.tasks.sync_customers", "transactionType": "celery", - "transactionsPerMinute": 1.2, + "transactionsPerMinute": 1.23333333333333, }, ] `; diff --git a/x-pack/test/apm_api_integration/basic/tests/traces/top_traces.ts b/x-pack/test/apm_api_integration/basic/tests/traces/top_traces.ts index b6fccf8f5b581..6a3a1ddd0f6ae 100644 --- a/x-pack/test/apm_api_integration/basic/tests/traces/top_traces.ts +++ b/x-pack/test/apm_api_integration/basic/tests/traces/top_traces.ts @@ -49,7 +49,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('returns the correct number of buckets', async () => { - expectSnapshot(response.body.items.length).toMatchInline(`59`); + expectSnapshot(response.body.items.length).toMatchInline(`64`); }); it('returns the correct buckets', async () => { @@ -64,14 +64,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(firstItem).toMatchInline(` Object { - "averageResponseTime": 1137, + "averageResponseTime": 1756, "impact": 0, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "POST /api/orders", + "service.name": "opbeans-java", + "transaction.name": "DispatcherServlet#doPost", }, - "serviceName": "opbeans-node", - "transactionName": "POST /api/orders", + "serviceName": "opbeans-java", + "transactionName": "DispatcherServlet#doPost", "transactionType": "request", "transactionsPerMinute": 0.0333333333333333, } @@ -79,7 +79,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(lastItem).toMatchInline(` Object { - "averageResponseTime": 1724883.75, + "averageResponseTime": 1803347.81081081, "impact": 100, "key": Object { "service.name": "opbeans-python", @@ -88,31 +88,31 @@ export default function ApiTest({ getService }: FtrProviderContext) { "serviceName": "opbeans-python", "transactionName": "opbeans.tasks.sync_customers", "transactionType": "celery", - "transactionsPerMinute": 1.2, + "transactionsPerMinute": 1.23333333333333, } `); expectSnapshot(groups).toMatchInline(` Array [ Object { - "service.name": "opbeans-node", - "transaction.name": "POST /api/orders", + "service.name": "opbeans-java", + "transaction.name": "DispatcherServlet#doPost", }, Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.stats", + "service.name": "opbeans-node", + "transaction.name": "GET /api/types", }, Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/customers/:id", + "service.name": "opbeans-java", + "transaction.name": "ResourceHttpRequestHandler", }, Object { "service.name": "opbeans-node", "transaction.name": "GET /api/products/top", }, Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::OrdersController#show", + "service.name": "opbeans-go", + "transaction.name": "POST /api/orders", }, ] `); diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/breakdown.snap b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/breakdown.snap index 87938f6f1f122..5f598ba72cd72 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/breakdown.snap +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/breakdown.snap @@ -7,252 +7,252 @@ Object { "color": "#54b399", "data": Array [ Object { - "x": 1600159980000, - "y": null, + "x": 1601389800000, + "y": 0.0161290322580645, }, Object { - "x": 1600160010000, - "y": null, + "x": 1601389830000, + "y": 0.402597402597403, }, Object { - "x": 1600160040000, - "y": null, + "x": 1601389860000, + "y": 0.0303030303030303, }, Object { - "x": 1600160070000, - "y": 1, + "x": 1601389890000, + "y": null, }, Object { - "x": 1600160100000, - "y": 0.1875, + "x": 1601389920000, + "y": 0.518072289156627, }, Object { - "x": 1600160130000, - "y": 0.2625, + "x": 1601389950000, + "y": 0.120603015075377, }, Object { - "x": 1600160160000, - "y": null, + "x": 1601389980000, + "y": 0.823529411764706, }, Object { - "x": 1600160190000, - "y": 0.482758620689655, + "x": 1601390010000, + "y": null, }, Object { - "x": 1600160220000, - "y": 0.44, + "x": 1601390040000, + "y": 0.273381294964029, }, Object { - "x": 1600160250000, - "y": 1, + "x": 1601390070000, + "y": 0.39047619047619, }, Object { - "x": 1600160280000, + "x": 1601390100000, "y": null, }, Object { - "x": 1600160310000, - "y": 0.171428571428571, + "x": 1601390130000, + "y": 0.733333333333333, }, Object { - "x": 1600160340000, - "y": 0.55, + "x": 1601390160000, + "y": 0.144230769230769, }, Object { - "x": 1600160370000, - "y": 0.5, + "x": 1601390190000, + "y": 0.0688524590163934, }, Object { - "x": 1600160400000, + "x": 1601390220000, "y": null, }, Object { - "x": 1600160430000, - "y": 0.419642857142857, - }, - Object { - "x": 1600160460000, - "y": 0.722222222222222, + "x": 1601390250000, + "y": null, }, Object { - "x": 1600160490000, - "y": 0.833333333333333, + "x": 1601390280000, + "y": 0.0540540540540541, }, Object { - "x": 1600160520000, + "x": 1601390310000, "y": null, }, Object { - "x": 1600160550000, + "x": 1601390340000, "y": null, }, Object { - "x": 1600160580000, - "y": 0.11044776119403, + "x": 1601390370000, + "y": 1, }, Object { - "x": 1600160610000, + "x": 1601390400000, "y": null, }, Object { - "x": 1600160640000, - "y": null, + "x": 1601390430000, + "y": 0.75, + }, + Object { + "x": 1601390460000, + "y": 0.764705882352941, }, Object { - "x": 1600160670000, - "y": 0.15028901734104, + "x": 1601390490000, + "y": 0.117647058823529, }, Object { - "x": 1600160700000, - "y": 0.380952380952381, + "x": 1601390520000, + "y": 0.220588235294118, }, Object { - "x": 1600160730000, - "y": 0.0676156583629893, + "x": 1601390550000, + "y": 0.302325581395349, }, Object { - "x": 1600160760000, + "x": 1601390580000, "y": null, }, Object { - "x": 1600160790000, - "y": 0.263736263736264, + "x": 1601390610000, + "y": null, }, Object { - "x": 1600160820000, + "x": 1601390640000, "y": null, }, Object { - "x": 1600160850000, - "y": 0.529411764705882, + "x": 1601390670000, + "y": 0.215686274509804, }, Object { - "x": 1600160880000, + "x": 1601390700000, "y": null, }, Object { - "x": 1600160910000, - "y": 0.0120967741935484, + "x": 1601390730000, + "y": null, }, Object { - "x": 1600160940000, - "y": 0.261261261261261, + "x": 1601390760000, + "y": 0.217391304347826, }, Object { - "x": 1600160970000, - "y": null, + "x": 1601390790000, + "y": 0.253333333333333, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": null, }, Object { - "x": 1600161030000, - "y": 0.160714285714286, + "x": 1601390850000, + "y": 0.117647058823529, }, Object { - "x": 1600161060000, - "y": 0.0402684563758389, + "x": 1601390880000, + "y": 0.361111111111111, }, Object { - "x": 1600161090000, - "y": 1, + "x": 1601390910000, + "y": null, }, Object { - "x": 1600161120000, + "x": 1601390940000, "y": null, }, Object { - "x": 1600161150000, - "y": 0.0789473684210526, + "x": 1601390970000, + "y": 0.19047619047619, }, Object { - "x": 1600161180000, - "y": 0.407407407407407, + "x": 1601391000000, + "y": 0.354430379746835, }, Object { - "x": 1600161210000, + "x": 1601391030000, "y": null, }, Object { - "x": 1600161240000, + "x": 1601391060000, "y": null, }, Object { - "x": 1600161270000, - "y": 0.666666666666667, + "x": 1601391090000, + "y": null, }, Object { - "x": 1600161300000, - "y": 0.821428571428571, + "x": 1601391120000, + "y": 0.437956204379562, }, Object { - "x": 1600161330000, - "y": 1, + "x": 1601391150000, + "y": 0.0175438596491228, }, Object { - "x": 1600161360000, + "x": 1601391180000, "y": null, }, Object { - "x": 1600161390000, - "y": 0.173333333333333, + "x": 1601391210000, + "y": 0.277777777777778, }, Object { - "x": 1600161420000, - "y": 0.142857142857143, + "x": 1601391240000, + "y": 1, }, Object { - "x": 1600161450000, - "y": 0.85, + "x": 1601391270000, + "y": 0.885714285714286, }, Object { - "x": 1600161480000, + "x": 1601391300000, "y": null, }, Object { - "x": 1600161510000, - "y": 0.421052631578947, + "x": 1601391330000, + "y": null, }, Object { - "x": 1600161540000, - "y": null, + "x": 1601391360000, + "y": 0.111111111111111, }, Object { - "x": 1600161570000, + "x": 1601391390000, "y": null, }, Object { - "x": 1600161600000, - "y": null, + "x": 1601391420000, + "y": 0.764705882352941, }, Object { - "x": 1600161630000, + "x": 1601391450000, "y": null, }, Object { - "x": 1600161660000, - "y": 0.0185185185185185, + "x": 1601391480000, + "y": 0.0338983050847458, }, Object { - "x": 1600161690000, - "y": 0.0625, + "x": 1601391510000, + "y": 0.293233082706767, }, Object { - "x": 1600161720000, + "x": 1601391540000, "y": null, }, Object { - "x": 1600161750000, - "y": 0.367647058823529, + "x": 1601391570000, + "y": null, }, Object { - "x": 1600161780000, - "y": 0.105263157894737, + "x": 1601391600000, + "y": null, }, ], "hideLegend": false, - "legendValue": "23%", + "legendValue": "25%", "title": "app", "type": "areaStacked", }, @@ -260,252 +260,252 @@ Object { "color": "#6092c0", "data": Array [ Object { - "x": 1600159980000, - "y": null, + "x": 1601389800000, + "y": 0.983870967741935, }, Object { - "x": 1600160010000, - "y": null, + "x": 1601389830000, + "y": 0.545454545454545, }, Object { - "x": 1600160040000, - "y": null, + "x": 1601389860000, + "y": 0.96969696969697, }, Object { - "x": 1600160070000, - "y": 0, + "x": 1601389890000, + "y": null, }, Object { - "x": 1600160100000, - "y": 0.71875, + "x": 1601389920000, + "y": 0.156626506024096, }, Object { - "x": 1600160130000, - "y": 0.4875, + "x": 1601389950000, + "y": 0.85929648241206, }, Object { - "x": 1600160160000, - "y": null, + "x": 1601389980000, + "y": 0, }, Object { - "x": 1600160190000, - "y": 0.413793103448276, + "x": 1601390010000, + "y": null, }, Object { - "x": 1600160220000, - "y": 0, + "x": 1601390040000, + "y": 0.482014388489209, }, Object { - "x": 1600160250000, - "y": 0, + "x": 1601390070000, + "y": 0.361904761904762, }, Object { - "x": 1600160280000, + "x": 1601390100000, "y": null, }, Object { - "x": 1600160310000, - "y": 0.628571428571429, - }, - Object { - "x": 1600160340000, + "x": 1601390130000, "y": 0, }, Object { - "x": 1600160370000, - "y": 0.5, + "x": 1601390160000, + "y": 0.759615384615385, }, Object { - "x": 1600160400000, - "y": null, + "x": 1601390190000, + "y": 0.931147540983607, }, Object { - "x": 1600160430000, - "y": 0.4375, + "x": 1601390220000, + "y": null, }, Object { - "x": 1600160460000, - "y": 0, + "x": 1601390250000, + "y": null, }, Object { - "x": 1600160490000, - "y": 0, + "x": 1601390280000, + "y": 0.945945945945946, }, Object { - "x": 1600160520000, + "x": 1601390310000, "y": null, }, Object { - "x": 1600160550000, + "x": 1601390340000, "y": null, }, Object { - "x": 1600160580000, - "y": 0.88955223880597, + "x": 1601390370000, + "y": 0, }, Object { - "x": 1600160610000, + "x": 1601390400000, "y": null, }, Object { - "x": 1600160640000, - "y": null, + "x": 1601390430000, + "y": 0, + }, + Object { + "x": 1601390460000, + "y": 0, }, Object { - "x": 1600160670000, - "y": 0.705202312138728, + "x": 1601390490000, + "y": 0.784313725490196, }, Object { - "x": 1600160700000, - "y": 0, + "x": 1601390520000, + "y": 0.544117647058823, }, Object { - "x": 1600160730000, - "y": 0.871886120996441, + "x": 1601390550000, + "y": 0.558139534883721, }, Object { - "x": 1600160760000, + "x": 1601390580000, "y": null, }, Object { - "x": 1600160790000, - "y": 0.67032967032967, + "x": 1601390610000, + "y": null, }, Object { - "x": 1600160820000, + "x": 1601390640000, "y": null, }, Object { - "x": 1600160850000, - "y": 0, + "x": 1601390670000, + "y": 0.784313725490196, }, Object { - "x": 1600160880000, + "x": 1601390700000, "y": null, }, Object { - "x": 1600160910000, - "y": 0.987903225806452, + "x": 1601390730000, + "y": null, }, Object { - "x": 1600160940000, - "y": 0.738738738738739, + "x": 1601390760000, + "y": 0.536231884057971, }, Object { - "x": 1600160970000, - "y": null, + "x": 1601390790000, + "y": 0.746666666666667, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": null, }, Object { - "x": 1600161030000, - "y": 0.794642857142857, + "x": 1601390850000, + "y": 0.735294117647059, }, Object { - "x": 1600161060000, - "y": 0.959731543624161, + "x": 1601390880000, + "y": 0.416666666666667, }, Object { - "x": 1600161090000, - "y": 0, + "x": 1601390910000, + "y": null, }, Object { - "x": 1600161120000, + "x": 1601390940000, "y": null, }, Object { - "x": 1600161150000, - "y": 0.921052631578947, + "x": 1601390970000, + "y": 0.619047619047619, }, Object { - "x": 1600161180000, - "y": 0, + "x": 1601391000000, + "y": 0.518987341772152, }, Object { - "x": 1600161210000, + "x": 1601391030000, "y": null, }, Object { - "x": 1600161240000, + "x": 1601391060000, "y": null, }, Object { - "x": 1600161270000, - "y": 0, + "x": 1601391090000, + "y": null, }, Object { - "x": 1600161300000, - "y": 0, + "x": 1601391120000, + "y": 0.408759124087591, }, Object { - "x": 1600161330000, - "y": 0, + "x": 1601391150000, + "y": 0.982456140350877, }, Object { - "x": 1600161360000, + "x": 1601391180000, "y": null, }, Object { - "x": 1600161390000, - "y": 0.746666666666667, + "x": 1601391210000, + "y": 0.648148148148148, }, Object { - "x": 1600161420000, - "y": 0.857142857142857, + "x": 1601391240000, + "y": 0, }, Object { - "x": 1600161450000, + "x": 1601391270000, "y": 0, }, Object { - "x": 1600161480000, + "x": 1601391300000, "y": null, }, Object { - "x": 1600161510000, - "y": 0.578947368421053, + "x": 1601391330000, + "y": null, }, Object { - "x": 1600161540000, - "y": null, + "x": 1601391360000, + "y": 0.888888888888889, }, Object { - "x": 1600161570000, + "x": 1601391390000, "y": null, }, Object { - "x": 1600161600000, - "y": null, + "x": 1601391420000, + "y": 0, }, Object { - "x": 1600161630000, + "x": 1601391450000, "y": null, }, Object { - "x": 1600161660000, - "y": 0.981481481481482, + "x": 1601391480000, + "y": 0.966101694915254, }, Object { - "x": 1600161690000, - "y": 0.9375, + "x": 1601391510000, + "y": 0.676691729323308, }, Object { - "x": 1600161720000, + "x": 1601391540000, "y": null, }, Object { - "x": 1600161750000, - "y": 0.558823529411765, + "x": 1601391570000, + "y": null, }, Object { - "x": 1600161780000, - "y": 0.894736842105263, + "x": 1601391600000, + "y": null, }, ], "hideLegend": false, - "legendValue": "68%", + "legendValue": "65%", "title": "http", "type": "areaStacked", }, @@ -513,252 +513,252 @@ Object { "color": "#d36086", "data": Array [ Object { - "x": 1600159980000, - "y": null, + "x": 1601389800000, + "y": 0, }, Object { - "x": 1600160010000, - "y": null, + "x": 1601389830000, + "y": 0.051948051948052, }, Object { - "x": 1600160040000, - "y": null, + "x": 1601389860000, + "y": 0, }, Object { - "x": 1600160070000, - "y": 0, + "x": 1601389890000, + "y": null, }, Object { - "x": 1600160100000, - "y": 0.09375, + "x": 1601389920000, + "y": 0.325301204819277, }, Object { - "x": 1600160130000, - "y": 0.25, + "x": 1601389950000, + "y": 0.0201005025125628, }, Object { - "x": 1600160160000, - "y": null, + "x": 1601389980000, + "y": 0.176470588235294, }, Object { - "x": 1600160190000, - "y": 0.103448275862069, + "x": 1601390010000, + "y": null, }, Object { - "x": 1600160220000, - "y": 0.56, + "x": 1601390040000, + "y": 0.244604316546763, }, Object { - "x": 1600160250000, - "y": 0, + "x": 1601390070000, + "y": 0.247619047619048, }, Object { - "x": 1600160280000, + "x": 1601390100000, "y": null, }, Object { - "x": 1600160310000, - "y": 0.2, + "x": 1601390130000, + "y": 0.266666666666667, }, Object { - "x": 1600160340000, - "y": 0.45, + "x": 1601390160000, + "y": 0.0961538461538462, }, Object { - "x": 1600160370000, + "x": 1601390190000, "y": 0, }, Object { - "x": 1600160400000, + "x": 1601390220000, "y": null, }, Object { - "x": 1600160430000, - "y": 0.142857142857143, - }, - Object { - "x": 1600160460000, - "y": 0.277777777777778, + "x": 1601390250000, + "y": null, }, Object { - "x": 1600160490000, - "y": 0.166666666666667, + "x": 1601390280000, + "y": 0, }, Object { - "x": 1600160520000, + "x": 1601390310000, "y": null, }, Object { - "x": 1600160550000, + "x": 1601390340000, "y": null, }, Object { - "x": 1600160580000, + "x": 1601390370000, "y": 0, }, Object { - "x": 1600160610000, + "x": 1601390400000, "y": null, }, Object { - "x": 1600160640000, - "y": null, + "x": 1601390430000, + "y": 0.25, }, Object { - "x": 1600160670000, - "y": 0.144508670520231, + "x": 1601390460000, + "y": 0.235294117647059, }, Object { - "x": 1600160700000, - "y": 0.619047619047619, + "x": 1601390490000, + "y": 0.0980392156862745, + }, + Object { + "x": 1601390520000, + "y": 0.235294117647059, }, Object { - "x": 1600160730000, - "y": 0.0604982206405694, + "x": 1601390550000, + "y": 0.13953488372093, }, Object { - "x": 1600160760000, + "x": 1601390580000, "y": null, }, Object { - "x": 1600160790000, - "y": 0.0659340659340659, + "x": 1601390610000, + "y": null, }, Object { - "x": 1600160820000, + "x": 1601390640000, "y": null, }, Object { - "x": 1600160850000, - "y": 0.470588235294118, + "x": 1601390670000, + "y": 0, }, Object { - "x": 1600160880000, + "x": 1601390700000, "y": null, }, Object { - "x": 1600160910000, - "y": 0, + "x": 1601390730000, + "y": null, }, Object { - "x": 1600160940000, - "y": 0, + "x": 1601390760000, + "y": 0.246376811594203, }, Object { - "x": 1600160970000, - "y": null, + "x": 1601390790000, + "y": 0, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": null, }, Object { - "x": 1600161030000, - "y": 0.0446428571428571, + "x": 1601390850000, + "y": 0.147058823529412, }, Object { - "x": 1600161060000, - "y": 0, + "x": 1601390880000, + "y": 0.222222222222222, }, Object { - "x": 1600161090000, - "y": 0, + "x": 1601390910000, + "y": null, }, Object { - "x": 1600161120000, + "x": 1601390940000, "y": null, }, Object { - "x": 1600161150000, - "y": 0, + "x": 1601390970000, + "y": 0.19047619047619, }, Object { - "x": 1600161180000, - "y": 0.592592592592593, + "x": 1601391000000, + "y": 0.126582278481013, }, Object { - "x": 1600161210000, + "x": 1601391030000, "y": null, }, Object { - "x": 1600161240000, + "x": 1601391060000, "y": null, }, Object { - "x": 1600161270000, - "y": 0.333333333333333, + "x": 1601391090000, + "y": null, }, Object { - "x": 1600161300000, - "y": 0.178571428571429, + "x": 1601391120000, + "y": 0.153284671532847, }, Object { - "x": 1600161330000, + "x": 1601391150000, "y": 0, }, Object { - "x": 1600161360000, + "x": 1601391180000, "y": null, }, Object { - "x": 1600161390000, - "y": 0.08, + "x": 1601391210000, + "y": 0.0740740740740741, }, Object { - "x": 1600161420000, + "x": 1601391240000, "y": 0, }, Object { - "x": 1600161450000, - "y": 0.15, + "x": 1601391270000, + "y": 0.114285714285714, }, Object { - "x": 1600161480000, + "x": 1601391300000, "y": null, }, Object { - "x": 1600161510000, - "y": 0, + "x": 1601391330000, + "y": null, }, Object { - "x": 1600161540000, - "y": null, + "x": 1601391360000, + "y": 0, }, Object { - "x": 1600161570000, + "x": 1601391390000, "y": null, }, Object { - "x": 1600161600000, - "y": null, + "x": 1601391420000, + "y": 0.235294117647059, }, Object { - "x": 1600161630000, + "x": 1601391450000, "y": null, }, Object { - "x": 1600161660000, + "x": 1601391480000, "y": 0, }, Object { - "x": 1600161690000, - "y": 0, + "x": 1601391510000, + "y": 0.0300751879699248, }, Object { - "x": 1600161720000, + "x": 1601391540000, "y": null, }, Object { - "x": 1600161750000, - "y": 0.0735294117647059, + "x": 1601391570000, + "y": null, }, Object { - "x": 1600161780000, - "y": 0, + "x": 1601391600000, + "y": null, }, ], "hideLegend": false, - "legendValue": "9.3%", + "legendValue": "10%", "title": "postgresql", "type": "areaStacked", }, @@ -769,248 +769,248 @@ Object { exports[`Breakdown when data is loaded returns the transaction breakdown for a transaction group 9`] = ` Array [ Object { - "x": 1600159980000, - "y": null, + "x": 1601389800000, + "y": 1, }, Object { - "x": 1600160010000, - "y": null, + "x": 1601389830000, + "y": 1, }, Object { - "x": 1600160040000, - "y": null, + "x": 1601389860000, + "y": 1, }, Object { - "x": 1600160070000, + "x": 1601389890000, "y": null, }, Object { - "x": 1600160100000, + "x": 1601389920000, "y": 1, }, Object { - "x": 1600160130000, + "x": 1601389950000, "y": 1, }, Object { - "x": 1600160160000, + "x": 1601389980000, + "y": null, + }, + Object { + "x": 1601390010000, "y": null, }, Object { - "x": 1600160190000, + "x": 1601390040000, "y": 1, }, Object { - "x": 1600160220000, - "y": null, + "x": 1601390070000, + "y": 1, }, Object { - "x": 1600160250000, + "x": 1601390100000, "y": null, }, Object { - "x": 1600160280000, + "x": 1601390130000, "y": null, }, Object { - "x": 1600160310000, + "x": 1601390160000, "y": 1, }, Object { - "x": 1600160340000, - "y": null, + "x": 1601390190000, + "y": 1, }, Object { - "x": 1600160370000, - "y": 1, + "x": 1601390220000, + "y": null, }, Object { - "x": 1600160400000, + "x": 1601390250000, "y": null, }, Object { - "x": 1600160430000, + "x": 1601390280000, "y": 1, }, Object { - "x": 1600160460000, + "x": 1601390310000, "y": null, }, Object { - "x": 1600160490000, + "x": 1601390340000, "y": null, }, Object { - "x": 1600160520000, + "x": 1601390370000, "y": null, }, Object { - "x": 1600160550000, + "x": 1601390400000, "y": null, }, Object { - "x": 1600160580000, - "y": 1, - }, - Object { - "x": 1600160610000, + "x": 1601390430000, "y": null, }, Object { - "x": 1600160640000, + "x": 1601390460000, "y": null, }, Object { - "x": 1600160670000, + "x": 1601390490000, "y": 1, }, Object { - "x": 1600160700000, - "y": null, + "x": 1601390520000, + "y": 1, }, Object { - "x": 1600160730000, + "x": 1601390550000, "y": 1, }, Object { - "x": 1600160760000, + "x": 1601390580000, "y": null, }, Object { - "x": 1600160790000, - "y": 1, + "x": 1601390610000, + "y": null, }, Object { - "x": 1600160820000, + "x": 1601390640000, "y": null, }, Object { - "x": 1600160850000, - "y": null, + "x": 1601390670000, + "y": 1, }, Object { - "x": 1600160880000, + "x": 1601390700000, "y": null, }, Object { - "x": 1600160910000, - "y": 1, + "x": 1601390730000, + "y": null, }, Object { - "x": 1600160940000, + "x": 1601390760000, "y": 1, }, Object { - "x": 1600160970000, - "y": null, + "x": 1601390790000, + "y": 1, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": null, }, Object { - "x": 1600161030000, + "x": 1601390850000, "y": 1, }, Object { - "x": 1600161060000, + "x": 1601390880000, "y": 1, }, Object { - "x": 1600161090000, + "x": 1601390910000, "y": null, }, Object { - "x": 1600161120000, + "x": 1601390940000, "y": null, }, Object { - "x": 1600161150000, + "x": 1601390970000, "y": 1, }, Object { - "x": 1600161180000, - "y": null, + "x": 1601391000000, + "y": 1, }, Object { - "x": 1600161210000, + "x": 1601391030000, "y": null, }, Object { - "x": 1600161240000, + "x": 1601391060000, "y": null, }, Object { - "x": 1600161270000, + "x": 1601391090000, "y": null, }, Object { - "x": 1600161300000, - "y": null, + "x": 1601391120000, + "y": 1, }, Object { - "x": 1600161330000, - "y": null, + "x": 1601391150000, + "y": 1, }, Object { - "x": 1600161360000, + "x": 1601391180000, "y": null, }, Object { - "x": 1600161390000, + "x": 1601391210000, "y": 1, }, Object { - "x": 1600161420000, - "y": 1, + "x": 1601391240000, + "y": null, }, Object { - "x": 1600161450000, + "x": 1601391270000, "y": null, }, Object { - "x": 1600161480000, + "x": 1601391300000, "y": null, }, Object { - "x": 1600161510000, - "y": 1, + "x": 1601391330000, + "y": null, }, Object { - "x": 1600161540000, - "y": null, + "x": 1601391360000, + "y": 1, }, Object { - "x": 1600161570000, + "x": 1601391390000, "y": null, }, Object { - "x": 1600161600000, + "x": 1601391420000, "y": null, }, Object { - "x": 1600161630000, + "x": 1601391450000, "y": null, }, Object { - "x": 1600161660000, + "x": 1601391480000, "y": 1, }, Object { - "x": 1600161690000, + "x": 1601391510000, "y": 1, }, Object { - "x": 1600161720000, + "x": 1601391540000, "y": null, }, Object { - "x": 1600161750000, - "y": 1, + "x": 1601391570000, + "y": null, }, Object { - "x": 1600161780000, - "y": 1, + "x": 1601391600000, + "y": null, }, ] `; diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/error_rate.snap b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/error_rate.snap index ab228385aaf56..1161beb7f06c0 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/error_rate.snap +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/error_rate.snap @@ -3,247 +3,247 @@ exports[`Error rate when data is loaded returns the transaction error rate has the correct error rate 1`] = ` Array [ Object { - "x": 1600159980000, + "x": 1601389800000, + "y": 0.166666666666667, + }, + Object { + "x": 1601389830000, "y": null, }, Object { - "x": 1600160010000, - "y": 0, + "x": 1601389860000, + "y": null, }, Object { - "x": 1600160040000, - "y": 0.142857142857143, + "x": 1601389890000, + "y": null, }, Object { - "x": 1600160070000, + "x": 1601389920000, "y": 0, }, Object { - "x": 1600160100000, + "x": 1601389950000, "y": 0, }, Object { - "x": 1600160130000, + "x": 1601389980000, "y": null, }, Object { - "x": 1600160160000, + "x": 1601390010000, + "y": null, + }, + Object { + "x": 1601390040000, "y": 0, }, Object { - "x": 1600160190000, + "x": 1601390070000, "y": 0.5, }, Object { - "x": 1600160220000, - "y": 0, + "x": 1601390100000, + "y": null, }, Object { - "x": 1600160250000, + "x": 1601390130000, "y": null, }, Object { - "x": 1600160280000, - "y": 0.166666666666667, + "x": 1601390160000, + "y": 0.285714285714286, }, Object { - "x": 1600160310000, - "y": 0.333333333333333, + "x": 1601390190000, + "y": 0, }, Object { - "x": 1600160340000, - "y": 1, + "x": 1601390220000, + "y": 0, }, Object { - "x": 1600160370000, + "x": 1601390250000, "y": null, }, Object { - "x": 1600160400000, + "x": 1601390280000, "y": null, }, Object { - "x": 1600160430000, + "x": 1601390310000, "y": 0, }, Object { - "x": 1600160460000, - "y": 0, + "x": 1601390340000, + "y": null, }, Object { - "x": 1600160490000, + "x": 1601390370000, "y": null, }, Object { - "x": 1600160520000, - "y": 0.166666666666667, + "x": 1601390400000, + "y": 0, }, Object { - "x": 1600160550000, - "y": 0, + "x": 1601390430000, + "y": null, }, Object { - "x": 1600160580000, - "y": 0, + "x": 1601390460000, + "y": null, }, Object { - "x": 1600160610000, + "x": 1601390490000, "y": null, }, Object { - "x": 1600160640000, + "x": 1601390520000, "y": 0, }, Object { - "x": 1600160670000, - "y": 0, + "x": 1601390550000, + "y": 1, }, Object { - "x": 1600160700000, + "x": 1601390580000, "y": 0, }, Object { - "x": 1600160730000, + "x": 1601390610000, "y": null, }, Object { - "x": 1600160760000, - "y": 0, + "x": 1601390640000, + "y": 1, }, Object { - "x": 1600160790000, - "y": 0.2, + "x": 1601390670000, + "y": 0.5, }, Object { - "x": 1600160820000, - "y": 0.5, + "x": 1601390700000, + "y": null, }, Object { - "x": 1600160850000, + "x": 1601390730000, "y": null, }, Object { - "x": 1600160880000, - "y": 0, + "x": 1601390760000, + "y": 0.25, }, Object { - "x": 1600160910000, + "x": 1601390790000, "y": 0, }, Object { - "x": 1600160940000, - "y": null, + "x": 1601390820000, + "y": 0, }, Object { - "x": 1600160970000, + "x": 1601390850000, "y": null, }, Object { - "x": 1600161000000, - "y": 0, + "x": 1601390880000, + "y": 0.166666666666667, }, Object { - "x": 1600161030000, - "y": 0, + "x": 1601390910000, + "y": null, }, Object { - "x": 1600161060000, - "y": 0.5, + "x": 1601390940000, + "y": 0.333333333333333, }, Object { - "x": 1600161090000, + "x": 1601390970000, "y": null, }, Object { - "x": 1600161120000, + "x": 1601391000000, "y": 0, }, Object { - "x": 1600161150000, - "y": 0, + "x": 1601391030000, + "y": null, }, Object { - "x": 1600161180000, - "y": null, + "x": 1601391060000, + "y": 1, }, Object { - "x": 1600161210000, + "x": 1601391090000, "y": null, }, Object { - "x": 1600161240000, + "x": 1601391120000, "y": 0, }, Object { - "x": 1600161270000, - "y": 0.4, + "x": 1601391150000, + "y": 0, }, Object { - "x": 1600161300000, - "y": 0.5, + "x": 1601391180000, + "y": 0, }, Object { - "x": 1600161330000, + "x": 1601391210000, "y": null, }, Object { - "x": 1600161360000, + "x": 1601391240000, "y": 0, }, Object { - "x": 1600161390000, - "y": 0, + "x": 1601391270000, + "y": null, }, Object { - "x": 1600161420000, + "x": 1601391300000, "y": 0, }, Object { - "x": 1600161450000, + "x": 1601391330000, "y": null, }, Object { - "x": 1600161480000, - "y": 0.1, + "x": 1601391360000, + "y": 0, }, Object { - "x": 1600161510000, - "y": 0.5, + "x": 1601391390000, + "y": null, }, Object { - "x": 1600161540000, + "x": 1601391420000, "y": null, }, Object { - "x": 1600161570000, + "x": 1601391450000, "y": null, }, Object { - "x": 1600161600000, + "x": 1601391480000, "y": 0, }, Object { - "x": 1600161630000, + "x": 1601391510000, "y": 0, }, Object { - "x": 1600161660000, - "y": null, + "x": 1601391540000, + "y": 1, }, Object { - "x": 1600161690000, + "x": 1601391570000, "y": null, }, Object { - "x": 1600161720000, - "y": 0.625, - }, - Object { - "x": 1600161750000, - "y": 0, - }, - Object { - "x": 1600161780000, + "x": 1601391600000, "y": null, }, ] diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/top_transaction_groups.snap b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/top_transaction_groups.snap index 93f22e67e1a02..9ff2294cdb08f 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/top_transaction_groups.snap +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/top_transaction_groups.snap @@ -3,144 +3,124 @@ exports[`Top transaction groups when data is loaded returns the correct buckets (when ignoring samples) 1`] = ` Array [ Object { - "averageResponseTime": 1137, + "averageResponseTime": 2292, "impact": 0, - "key": "POST /api/orders", - "p95": 1136, - "serviceName": "opbeans-node", - "transactionName": "POST /api/orders", - "transactionType": "request", - "transactionsPerMinute": 0.0333333333333333, - }, - Object { - "averageResponseTime": 4479, - "impact": 0.182527896674573, - "key": "GET /api/customers/:id", - "p95": 4448, - "serviceName": "opbeans-node", - "transactionName": "GET /api/customers/:id", - "transactionType": "request", - "transactionsPerMinute": 0.0333333333333333, - }, - Object { - "averageResponseTime": 2754.5, - "impact": 0.238782754117664, "key": "GET /*", - "p95": 2832, + "p95": 2288, "serviceName": "opbeans-node", "transactionName": "GET /*", "transactionType": "request", - "transactionsPerMinute": 0.0666666666666667, + "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 10841, - "impact": 1.12209324870709, + "averageResponseTime": 10317, + "impact": 0.420340829629707, "key": "GET /api/orders/:id", - "p95": 13376, + "p95": 10304, "serviceName": "opbeans-node", "transactionName": "GET /api/orders/:id", "transactionType": "request", - "transactionsPerMinute": 0.0666666666666667, - }, - Object { - "averageResponseTime": 10551.3333333333, - "impact": 1.66672765494254, - "key": "GET /api/products/top", - "p95": 19552, - "serviceName": "opbeans-node", - "transactionName": "GET /api/products/top", - "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 15988, - "impact": 1.68431412493931, + "averageResponseTime": 6495, + "impact": 0.560349681667116, "key": "GET /api/products/:id", - "p95": 16000, + "p95": 6720, "serviceName": "opbeans-node", "transactionName": "GET /api/products/:id", "transactionType": "request", "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 9499, - "impact": 2.01310465096592, + "averageResponseTime": 9825.5, + "impact": 0.909245664989668, "key": "GET /api/types", - "p95": 14944, + "p95": 16496, "serviceName": "opbeans-node", "transactionName": "GET /api/types", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 12228, - "impact": 2.60929690712978, - "key": "GET /api/products/:id/customers", - "p95": 17760, + "averageResponseTime": 9516.83333333333, + "impact": 2.87083620326164, + "key": "GET /api/products", + "p95": 17888, "serviceName": "opbeans-node", - "transactionName": "GET /api/products/:id/customers", + "transactionName": "GET /api/products", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 22555.6666666667, - "impact": 3.63362685989209, - "key": "GET /api/customers", - "p95": 25984, + "averageResponseTime": 13962.2, + "impact": 3.53657227112376, + "key": "GET /api/products/:id/customers", + "p95": 23264, "serviceName": "opbeans-node", - "transactionName": "GET /api/customers", + "transactionName": "GET /api/products/:id/customers", "transactionType": "request", - "transactionsPerMinute": 0.1, + "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 13852.6, - "impact": 3.72079458074566, - "key": "GET /api/types/:id", - "p95": 21984, + "averageResponseTime": 21129.5, + "impact": 4.3069090413872, + "key": "GET /api/customers/:id", + "p95": 32608, "serviceName": "opbeans-node", - "transactionName": "GET /api/types/:id", + "transactionName": "GET /api/customers/:id", "transactionType": "request", - "transactionsPerMinute": 0.166666666666667, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 12228.5, - "impact": 3.94515861412062, + "averageResponseTime": 10137.1111111111, + "impact": 4.65868586528666, "key": "GET /api/orders", - "p95": 16736, + "p95": 21344, "serviceName": "opbeans-node", "transactionName": "GET /api/orders", "transactionType": "request", - "transactionsPerMinute": 0.2, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 12491.4285714286, - "impact": 4.71355627370009, - "key": "GET /api/products", - "p95": 30448, + "averageResponseTime": 24206.25, + "impact": 4.95153640465858, + "key": "GET /api/customers", + "p95": 36032, "serviceName": "opbeans-node", - "transactionName": "GET /api/products", + "transactionName": "GET /api/customers", "transactionType": "request", - "transactionsPerMinute": 0.233333333333333, + "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 23683.3333333333, - "impact": 11.5793797000797, + "averageResponseTime": 17267.0833333333, + "impact": 10.7331215479018, + "key": "GET /api/products/top", + "p95": 26208, + "serviceName": "opbeans-node", + "transactionName": "GET /api/products/top", + "transactionType": "request", + "transactionsPerMinute": 0.4, + }, + Object { + "averageResponseTime": 20417.7272727273, + "impact": 11.6439909593985, "key": "GET /api/stats", - "p95": 36288, + "p95": 24800, "serviceName": "opbeans-node", "transactionName": "GET /api/stats", "transactionType": "request", - "transactionsPerMinute": 0.3, + "transactionsPerMinute": 0.366666666666667, }, Object { - "averageResponseTime": 42606.7441860465, + "averageResponseTime": 39822.0208333333, "impact": 100, "key": "GET /api", - "p95": 131008, + "p95": 122816, "serviceName": "opbeans-node", "transactionName": "GET /api", "transactionType": "request", - "transactionsPerMinute": 1.43333333333333, + "transactionsPerMinute": 1.6, }, ] `; diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/transaction_charts.snap b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/transaction_charts.snap index 9ed103b445575..75dc775d887e4 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/transaction_charts.snap +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/__snapshots__/transaction_charts.snap @@ -3,1495 +3,1495 @@ exports[`Transaction charts when data is loaded returns the correct data 4`] = ` Object { "apmTimeseries": Object { - "overallAvgDuration": 600255.707964602, + "overallAvgDuration": 600888.274678112, "responseTimes": Object { "avg": Array [ Object { - "x": 1600159980000, - "y": 961397, + "x": 1601389800000, + "y": 651784.714285714, }, Object { - "x": 1600160010000, - "y": 605527.5, + "x": 1601389830000, + "y": 747797.4, }, Object { - "x": 1600160040000, - "y": 390910, + "x": 1601389860000, + "y": 567568.333333333, }, Object { - "x": 1600160070000, - "y": 556820.6, + "x": 1601389890000, + "y": 1289936, }, Object { - "x": 1600160100000, - "y": 496316.4, + "x": 1601389920000, + "y": 79698.6, }, Object { - "x": 1600160130000, - "y": null, + "x": 1601389950000, + "y": 646660.833333333, }, Object { - "x": 1600160160000, - "y": 467003.666666667, + "x": 1601389980000, + "y": 18095, }, Object { - "x": 1600160190000, - "y": 863809.666666667, + "x": 1601390010000, + "y": 543534, }, Object { - "x": 1600160220000, - "y": 812744, + "x": 1601390040000, + "y": 250234.466666667, }, Object { - "x": 1600160250000, - "y": 1536887, + "x": 1601390070000, + "y": 200435.2, }, Object { - "x": 1600160280000, - "y": 506194.8, + "x": 1601390100000, + "y": 1089389.66666667, }, Object { - "x": 1600160310000, - "y": 459425.5, + "x": 1601390130000, + "y": 1052697.33333333, }, Object { - "x": 1600160340000, - "y": 553661, + "x": 1601390160000, + "y": 27908.8333333333, }, Object { - "x": 1600160370000, - "y": 658207.5, + "x": 1601390190000, + "y": 1078058.25, }, Object { - "x": 1600160400000, - "y": 368087.909090909, + "x": 1601390220000, + "y": 755843.5, }, Object { - "x": 1600160430000, - "y": 115251.8, + "x": 1601390250000, + "y": 1371940.33333333, }, Object { - "x": 1600160460000, - "y": 635499.25, + "x": 1601390280000, + "y": 38056, }, Object { - "x": 1600160490000, - "y": 1224766, + "x": 1601390310000, + "y": 1133161.33333333, }, Object { - "x": 1600160520000, - "y": 826125.5, + "x": 1601390340000, + "y": 1236497, }, Object { - "x": 1600160550000, - "y": 389583.75, + "x": 1601390370000, + "y": 870027, }, Object { - "x": 1600160580000, - "y": 477951, + "x": 1601390400000, + "y": null, }, Object { - "x": 1600160610000, - "y": 882789.666666667, + "x": 1601390430000, + "y": 800475, }, Object { - "x": 1600160640000, - "y": 238075.909090909, + "x": 1601390460000, + "y": 374597.2, }, Object { - "x": 1600160670000, - "y": 608137, + "x": 1601390490000, + "y": 657002, }, Object { - "x": 1600160700000, - "y": 356875.5, + "x": 1601390520000, + "y": 305164.5, }, Object { - "x": 1600160730000, - "y": 1207555.5, + "x": 1601390550000, + "y": 274576.4, }, Object { - "x": 1600160760000, - "y": 282337.166666667, + "x": 1601390580000, + "y": 888533, }, Object { - "x": 1600160790000, - "y": 987012.333333333, + "x": 1601390610000, + "y": 1191308, }, Object { - "x": 1600160820000, - "y": 268791.5, + "x": 1601390640000, + "y": 1521297, }, Object { - "x": 1600160850000, - "y": 1268295.5, + "x": 1601390670000, + "y": 373994.4, }, Object { - "x": 1600160880000, - "y": 442801.5, + "x": 1601390700000, + "y": 1108442, }, Object { - "x": 1600160910000, - "y": 314103.5, + "x": 1601390730000, + "y": 1014666.66666667, }, Object { - "x": 1600160940000, - "y": 1313632.66666667, + "x": 1601390760000, + "y": 184717, }, Object { - "x": 1600160970000, - "y": 888299, + "x": 1601390790000, + "y": 369595.5, }, Object { - "x": 1600161000000, - "y": 611899.142857143, + "x": 1601390820000, + "y": 525805.5, }, Object { - "x": 1600161030000, - "y": 273321.857142857, + "x": 1601390850000, + "y": 583359, }, Object { - "x": 1600161060000, - "y": 407488.75, + "x": 1601390880000, + "y": 315244.25, }, Object { - "x": 1600161090000, - "y": 1446104.66666667, + "x": 1601390910000, + "y": 1133846, }, Object { - "x": 1600161120000, - "y": 650821, + "x": 1601390940000, + "y": 312801, }, Object { - "x": 1600161150000, - "y": 818027.6, + "x": 1601390970000, + "y": 1135768.33333333, }, Object { - "x": 1600161180000, - "y": 1606260.5, + "x": 1601391000000, + "y": 199876, }, Object { - "x": 1600161210000, - "y": 1054428.66666667, + "x": 1601391030000, + "y": 1508216.66666667, }, Object { - "x": 1600161240000, - "y": 816781.333333333, + "x": 1601391060000, + "y": 1481690.5, }, Object { - "x": 1600161270000, - "y": 319174, + "x": 1601391090000, + "y": 659469, }, Object { - "x": 1600161300000, - "y": 683605.5, + "x": 1601391120000, + "y": 225622.666666667, }, Object { - "x": 1600161330000, - "y": 884499.5, + "x": 1601391150000, + "y": 675812.666666667, }, Object { - "x": 1600161360000, - "y": 714202.333333333, + "x": 1601391180000, + "y": 279013.333333333, }, Object { - "x": 1600161390000, - "y": 439751.6, + "x": 1601391210000, + "y": 1327234, }, Object { - "x": 1600161420000, - "y": 576370.2, + "x": 1601391240000, + "y": 487259, }, Object { - "x": 1600161450000, - "y": 836182.333333333, + "x": 1601391270000, + "y": 686597.333333333, }, Object { - "x": 1600161480000, - "y": 19902, + "x": 1601391300000, + "y": 1236063.33333333, }, Object { - "x": 1600161510000, - "y": 615193.333333333, + "x": 1601391330000, + "y": 1322639, }, Object { - "x": 1600161540000, - "y": 946298.666666667, + "x": 1601391360000, + "y": 517955.333333333, }, Object { - "x": 1600161570000, - "y": 1146024, + "x": 1601391390000, + "y": 983213.333333333, }, Object { - "x": 1600161600000, - "y": 823085, + "x": 1601391420000, + "y": 920165.5, }, Object { - "x": 1600161630000, - "y": 460616, + "x": 1601391450000, + "y": 655826, }, Object { - "x": 1600161660000, - "y": 955115.5, + "x": 1601391480000, + "y": 335100.666666667, }, Object { - "x": 1600161690000, - "y": 1684473, + "x": 1601391510000, + "y": 496048.555555556, }, Object { - "x": 1600161720000, - "y": 450557.777777778, + "x": 1601391540000, + "y": 629243, }, Object { - "x": 1600161750000, - "y": 19350, + "x": 1601391570000, + "y": 796819.4, }, Object { - "x": 1600161780000, - "y": 960447, + "x": 1601391600000, + "y": null, }, ], "p95": Array [ Object { - "x": 1600159980000, - "y": 1711104, + "x": 1601389800000, + "y": 1531888, }, Object { - "x": 1600160010000, - "y": 784384, + "x": 1601389830000, + "y": 1695616, }, Object { - "x": 1600160040000, - "y": 389120, + "x": 1601389860000, + "y": 1482496, }, Object { - "x": 1600160070000, - "y": 1581024, + "x": 1601389890000, + "y": 1617920, }, Object { - "x": 1600160100000, - "y": 1277824, + "x": 1601389920000, + "y": 329696, }, Object { - "x": 1600160130000, - "y": null, + "x": 1601389950000, + "y": 1474432, }, Object { - "x": 1600160160000, - "y": 1753072, + "x": 1601389980000, + "y": 18048, }, Object { - "x": 1600160190000, - "y": 1916800, + "x": 1601390010000, + "y": 990720, }, Object { - "x": 1600160220000, - "y": 1228736, + "x": 1601390040000, + "y": 1163232, }, Object { - "x": 1600160250000, - "y": 1671168, + "x": 1601390070000, + "y": 958432, }, Object { - "x": 1600160280000, - "y": 1679328, + "x": 1601390100000, + "y": 1777600, }, Object { - "x": 1600160310000, - "y": 1028064, + "x": 1601390130000, + "y": 1873920, }, Object { - "x": 1600160340000, - "y": 1630144, + "x": 1601390160000, + "y": 55776, }, Object { - "x": 1600160370000, - "y": 972800, + "x": 1601390190000, + "y": 1752064, }, Object { - "x": 1600160400000, - "y": 1359856, + "x": 1601390220000, + "y": 1136640, }, Object { - "x": 1600160430000, - "y": 536568, + "x": 1601390250000, + "y": 1523712, }, Object { - "x": 1600160460000, - "y": 1130368, + "x": 1601390280000, + "y": 37888, }, Object { - "x": 1600160490000, - "y": 1245184, + "x": 1601390310000, + "y": 1196032, }, Object { - "x": 1600160520000, - "y": 1028096, + "x": 1601390340000, + "y": 1810304, }, Object { - "x": 1600160550000, - "y": 1228768, + "x": 1601390370000, + "y": 1007616, }, Object { - "x": 1600160580000, - "y": 790016, + "x": 1601390400000, + "y": null, }, Object { - "x": 1600160610000, - "y": 1416192, + "x": 1601390430000, + "y": 1523584, }, Object { - "x": 1600160640000, - "y": 905184, + "x": 1601390460000, + "y": 1712096, }, Object { - "x": 1600160670000, - "y": 1154816, + "x": 1601390490000, + "y": 679936, }, Object { - "x": 1600160700000, - "y": 1154944, + "x": 1601390520000, + "y": 1163200, }, Object { - "x": 1600160730000, - "y": 1544192, + "x": 1601390550000, + "y": 1171392, }, Object { - "x": 1600160760000, - "y": 888768, + "x": 1601390580000, + "y": 901120, }, Object { - "x": 1600160790000, - "y": 1783808, + "x": 1601390610000, + "y": 1355776, }, Object { - "x": 1600160820000, - "y": 737248, + "x": 1601390640000, + "y": 1515520, }, Object { - "x": 1600160850000, - "y": 1409024, + "x": 1601390670000, + "y": 1097600, }, Object { - "x": 1600160880000, - "y": 843520, + "x": 1601390700000, + "y": 1363968, }, Object { - "x": 1600160910000, - "y": 987072, + "x": 1601390730000, + "y": 1290240, }, Object { - "x": 1600160940000, - "y": 1646592, + "x": 1601390760000, + "y": 663488, }, Object { - "x": 1600160970000, - "y": 884736, + "x": 1601390790000, + "y": 827264, }, Object { - "x": 1600161000000, - "y": 1163200, + "x": 1601390820000, + "y": 1302400, }, Object { - "x": 1600161030000, - "y": 991168, + "x": 1601390850000, + "y": 978912, }, Object { - "x": 1600161060000, - "y": 806784, + "x": 1601390880000, + "y": 1482720, }, Object { - "x": 1600161090000, - "y": 1732608, + "x": 1601390910000, + "y": 1306624, }, Object { - "x": 1600161120000, - "y": 1916864, + "x": 1601390940000, + "y": 1179520, }, Object { - "x": 1600161150000, - "y": 1335168, + "x": 1601390970000, + "y": 1347584, }, Object { - "x": 1600161180000, - "y": 1703936, + "x": 1601391000000, + "y": 1122272, }, Object { - "x": 1600161210000, - "y": 1306624, + "x": 1601391030000, + "y": 1835008, }, Object { - "x": 1600161240000, - "y": 1343424, + "x": 1601391060000, + "y": 1572864, }, Object { - "x": 1600161270000, - "y": 794560, + "x": 1601391090000, + "y": 1343232, }, Object { - "x": 1600161300000, - "y": 1351552, + "x": 1601391120000, + "y": 810880, }, Object { - "x": 1600161330000, - "y": 1275904, + "x": 1601391150000, + "y": 1122048, }, Object { - "x": 1600161360000, - "y": 1515264, + "x": 1601391180000, + "y": 782208, }, Object { - "x": 1600161390000, - "y": 1359808, + "x": 1601391210000, + "y": 1466368, }, Object { - "x": 1600161420000, - "y": 1187808, + "x": 1601391240000, + "y": 1490928, }, Object { - "x": 1600161450000, - "y": 1069056, + "x": 1601391270000, + "y": 1433472, }, Object { - "x": 1600161480000, - "y": 24896, + "x": 1601391300000, + "y": 1677312, }, Object { - "x": 1600161510000, - "y": 804864, + "x": 1601391330000, + "y": 1830912, }, Object { - "x": 1600161540000, - "y": 1347584, + "x": 1601391360000, + "y": 950144, }, Object { - "x": 1600161570000, - "y": 1138688, + "x": 1601391390000, + "y": 1265664, }, Object { - "x": 1600161600000, - "y": 1588224, + "x": 1601391420000, + "y": 1408896, }, Object { - "x": 1600161630000, - "y": 1089280, + "x": 1601391450000, + "y": 1178624, }, Object { - "x": 1600161660000, - "y": 1793920, + "x": 1601391480000, + "y": 946048, }, Object { - "x": 1600161690000, - "y": 1679360, + "x": 1601391510000, + "y": 1761248, }, Object { - "x": 1600161720000, - "y": 1384416, + "x": 1601391540000, + "y": 626688, }, Object { - "x": 1600161750000, - "y": 19328, + "x": 1601391570000, + "y": 1564544, }, Object { - "x": 1600161780000, - "y": 1554432, + "x": 1601391600000, + "y": null, }, ], "p99": Array [ Object { - "x": 1600159980000, - "y": 1711104, + "x": 1601389800000, + "y": 1531888, }, Object { - "x": 1600160010000, - "y": 784384, + "x": 1601389830000, + "y": 1695616, }, Object { - "x": 1600160040000, - "y": 389120, + "x": 1601389860000, + "y": 1482496, }, Object { - "x": 1600160070000, - "y": 1581024, + "x": 1601389890000, + "y": 1617920, }, Object { - "x": 1600160100000, - "y": 1277824, + "x": 1601389920000, + "y": 329696, }, Object { - "x": 1600160130000, - "y": null, + "x": 1601389950000, + "y": 1474432, }, Object { - "x": 1600160160000, - "y": 1753072, + "x": 1601389980000, + "y": 18048, }, Object { - "x": 1600160190000, - "y": 1916800, + "x": 1601390010000, + "y": 990720, }, Object { - "x": 1600160220000, - "y": 1228736, + "x": 1601390040000, + "y": 1318880, }, Object { - "x": 1600160250000, - "y": 1671168, + "x": 1601390070000, + "y": 958432, }, Object { - "x": 1600160280000, - "y": 1679328, + "x": 1601390100000, + "y": 1777600, }, Object { - "x": 1600160310000, - "y": 1028064, + "x": 1601390130000, + "y": 1873920, }, Object { - "x": 1600160340000, - "y": 1630144, + "x": 1601390160000, + "y": 72160, }, Object { - "x": 1600160370000, - "y": 972800, + "x": 1601390190000, + "y": 1752064, }, Object { - "x": 1600160400000, - "y": 1400816, + "x": 1601390220000, + "y": 1136640, }, Object { - "x": 1600160430000, - "y": 536568, + "x": 1601390250000, + "y": 1523712, }, Object { - "x": 1600160460000, - "y": 1130368, + "x": 1601390280000, + "y": 37888, }, Object { - "x": 1600160490000, - "y": 1245184, + "x": 1601390310000, + "y": 1196032, }, Object { - "x": 1600160520000, - "y": 1028096, + "x": 1601390340000, + "y": 1810304, }, Object { - "x": 1600160550000, - "y": 1228768, + "x": 1601390370000, + "y": 1007616, }, Object { - "x": 1600160580000, - "y": 790016, + "x": 1601390400000, + "y": null, }, Object { - "x": 1600160610000, - "y": 1416192, + "x": 1601390430000, + "y": 1523584, }, Object { - "x": 1600160640000, - "y": 1556448, + "x": 1601390460000, + "y": 1712096, }, Object { - "x": 1600160670000, - "y": 1154816, + "x": 1601390490000, + "y": 679936, }, Object { - "x": 1600160700000, - "y": 1154944, + "x": 1601390520000, + "y": 1163200, }, Object { - "x": 1600160730000, - "y": 1544192, + "x": 1601390550000, + "y": 1171392, }, Object { - "x": 1600160760000, - "y": 888768, + "x": 1601390580000, + "y": 901120, }, Object { - "x": 1600160790000, - "y": 1783808, + "x": 1601390610000, + "y": 1355776, }, Object { - "x": 1600160820000, - "y": 737248, + "x": 1601390640000, + "y": 1515520, }, Object { - "x": 1600160850000, - "y": 1409024, + "x": 1601390670000, + "y": 1097600, }, Object { - "x": 1600160880000, - "y": 843520, + "x": 1601390700000, + "y": 1363968, }, Object { - "x": 1600160910000, - "y": 987072, + "x": 1601390730000, + "y": 1290240, }, Object { - "x": 1600160940000, - "y": 1646592, + "x": 1601390760000, + "y": 663488, }, Object { - "x": 1600160970000, - "y": 884736, + "x": 1601390790000, + "y": 827264, }, Object { - "x": 1600161000000, - "y": 1163200, + "x": 1601390820000, + "y": 1302400, }, Object { - "x": 1600161030000, - "y": 991168, + "x": 1601390850000, + "y": 978912, }, Object { - "x": 1600161060000, - "y": 806784, + "x": 1601390880000, + "y": 1482720, }, Object { - "x": 1600161090000, - "y": 1732608, + "x": 1601390910000, + "y": 1306624, }, Object { - "x": 1600161120000, - "y": 1916864, + "x": 1601390940000, + "y": 1179520, }, Object { - "x": 1600161150000, - "y": 1335168, + "x": 1601390970000, + "y": 1347584, }, Object { - "x": 1600161180000, - "y": 1703936, + "x": 1601391000000, + "y": 1122272, }, Object { - "x": 1600161210000, - "y": 1306624, + "x": 1601391030000, + "y": 1835008, }, Object { - "x": 1600161240000, - "y": 1343424, + "x": 1601391060000, + "y": 1572864, }, Object { - "x": 1600161270000, - "y": 794560, + "x": 1601391090000, + "y": 1343232, }, Object { - "x": 1600161300000, - "y": 1351552, + "x": 1601391120000, + "y": 810880, }, Object { - "x": 1600161330000, - "y": 1275904, + "x": 1601391150000, + "y": 1122048, }, Object { - "x": 1600161360000, - "y": 1515264, + "x": 1601391180000, + "y": 782208, }, Object { - "x": 1600161390000, - "y": 1359808, + "x": 1601391210000, + "y": 1466368, }, Object { - "x": 1600161420000, - "y": 1187808, + "x": 1601391240000, + "y": 1490928, }, Object { - "x": 1600161450000, - "y": 1069056, + "x": 1601391270000, + "y": 1433472, }, Object { - "x": 1600161480000, - "y": 24896, + "x": 1601391300000, + "y": 1677312, }, Object { - "x": 1600161510000, - "y": 804864, + "x": 1601391330000, + "y": 1830912, }, Object { - "x": 1600161540000, - "y": 1347584, + "x": 1601391360000, + "y": 950144, }, Object { - "x": 1600161570000, - "y": 1138688, + "x": 1601391390000, + "y": 1265664, }, Object { - "x": 1600161600000, - "y": 1588224, + "x": 1601391420000, + "y": 1408896, }, Object { - "x": 1600161630000, - "y": 1089280, + "x": 1601391450000, + "y": 1178624, }, Object { - "x": 1600161660000, - "y": 1793920, + "x": 1601391480000, + "y": 946048, }, Object { - "x": 1600161690000, - "y": 1679360, + "x": 1601391510000, + "y": 1761248, }, Object { - "x": 1600161720000, - "y": 1384416, + "x": 1601391540000, + "y": 626688, }, Object { - "x": 1600161750000, - "y": 19328, + "x": 1601391570000, + "y": 1564544, }, Object { - "x": 1600161780000, - "y": 1554432, + "x": 1601391600000, + "y": null, }, ], }, "tpmBuckets": Array [ Object { - "avg": 2.83333333333333, + "avg": 3.3, "dataPoints": Array [ Object { - "x": 1600159980000, - "y": 0, + "x": 1601389800000, + "y": 3, }, Object { - "x": 1600160010000, - "y": 0, + "x": 1601389830000, + "y": 2, + }, + Object { + "x": 1601389860000, + "y": 1, }, Object { - "x": 1600160040000, + "x": 1601389890000, "y": 0, }, Object { - "x": 1600160070000, - "y": 3, + "x": 1601389920000, + "y": 4, }, Object { - "x": 1600160100000, - "y": 2, + "x": 1601389950000, + "y": 1, + }, + Object { + "x": 1601389980000, + "y": 1, }, Object { - "x": 1600160130000, + "x": 1601390010000, "y": 0, }, Object { - "x": 1600160160000, - "y": 2, + "x": 1601390040000, + "y": 11, }, Object { - "x": 1600160190000, - "y": 1, + "x": 1601390070000, + "y": 4, }, Object { - "x": 1600160220000, + "x": 1601390100000, "y": 1, }, Object { - "x": 1600160250000, + "x": 1601390130000, "y": 0, }, Object { - "x": 1600160280000, - "y": 3, + "x": 1601390160000, + "y": 10, }, Object { - "x": 1600160310000, - "y": 3, + "x": 1601390190000, + "y": 1, }, Object { - "x": 1600160340000, - "y": 2, + "x": 1601390220000, + "y": 0, }, Object { - "x": 1600160370000, + "x": 1601390250000, "y": 0, }, Object { - "x": 1600160400000, - "y": 8, + "x": 1601390280000, + "y": 1, }, Object { - "x": 1600160430000, - "y": 1, + "x": 1601390310000, + "y": 0, }, Object { - "x": 1600160460000, + "x": 1601390340000, "y": 1, }, Object { - "x": 1600160490000, + "x": 1601390370000, "y": 0, }, Object { - "x": 1600160520000, + "x": 1601390400000, "y": 0, }, Object { - "x": 1600160550000, - "y": 3, + "x": 1601390430000, + "y": 1, }, Object { - "x": 1600160580000, - "y": 0, + "x": 1601390460000, + "y": 4, }, Object { - "x": 1600160610000, + "x": 1601390490000, "y": 0, }, Object { - "x": 1600160640000, - "y": 8, - }, - Object { - "x": 1600160670000, - "y": 1, + "x": 1601390520000, + "y": 3, }, Object { - "x": 1600160700000, + "x": 1601390550000, "y": 3, }, Object { - "x": 1600160730000, + "x": 1601390580000, "y": 0, }, Object { - "x": 1600160760000, - "y": 4, + "x": 1601390610000, + "y": 0, }, Object { - "x": 1600160790000, + "x": 1601390640000, "y": 0, }, Object { - "x": 1600160820000, + "x": 1601390670000, "y": 2, }, Object { - "x": 1600160850000, + "x": 1601390700000, "y": 0, }, Object { - "x": 1600160880000, + "x": 1601390730000, "y": 0, }, Object { - "x": 1600160910000, - "y": 5, - }, - Object { - "x": 1600160940000, - "y": 0, + "x": 1601390760000, + "y": 2, }, Object { - "x": 1600160970000, - "y": 0, + "x": 1601390790000, + "y": 2, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": 3, }, Object { - "x": 1600161030000, - "y": 5, + "x": 1601390850000, + "y": 1, }, Object { - "x": 1600161060000, - "y": 1, + "x": 1601390880000, + "y": 6, }, Object { - "x": 1600161090000, + "x": 1601390910000, "y": 0, }, Object { - "x": 1600161120000, - "y": 2, + "x": 1601390940000, + "y": 3, }, Object { - "x": 1600161150000, - "y": 1, + "x": 1601390970000, + "y": 0, }, Object { - "x": 1600161180000, + "x": 1601391000000, + "y": 5, + }, + Object { + "x": 1601391030000, "y": 0, }, Object { - "x": 1600161210000, + "x": 1601391060000, "y": 0, }, Object { - "x": 1600161240000, + "x": 1601391090000, "y": 1, }, Object { - "x": 1600161270000, - "y": 2, + "x": 1601391120000, + "y": 4, }, Object { - "x": 1600161300000, + "x": 1601391150000, "y": 1, }, Object { - "x": 1600161330000, - "y": 0, + "x": 1601391180000, + "y": 2, }, Object { - "x": 1600161360000, - "y": 1, + "x": 1601391210000, + "y": 0, }, Object { - "x": 1600161390000, + "x": 1601391240000, "y": 3, }, Object { - "x": 1600161420000, - "y": 2, + "x": 1601391270000, + "y": 1, }, Object { - "x": 1600161450000, + "x": 1601391300000, "y": 0, }, Object { - "x": 1600161480000, - "y": 2, + "x": 1601391330000, + "y": 0, }, Object { - "x": 1600161510000, - "y": 0, + "x": 1601391360000, + "y": 1, }, Object { - "x": 1600161540000, + "x": 1601391390000, "y": 0, }, Object { - "x": 1600161570000, - "y": 0, + "x": 1601391420000, + "y": 1, }, Object { - "x": 1600161600000, + "x": 1601391450000, "y": 0, }, Object { - "x": 1600161630000, - "y": 1, + "x": 1601391480000, + "y": 2, }, Object { - "x": 1600161660000, - "y": 1, + "x": 1601391510000, + "y": 6, }, Object { - "x": 1600161690000, + "x": 1601391540000, "y": 0, }, Object { - "x": 1600161720000, - "y": 5, - }, - Object { - "x": 1600161750000, + "x": 1601391570000, "y": 1, }, Object { - "x": 1600161780000, + "x": 1601391600000, "y": 0, }, ], "key": "HTTP 2xx", }, Object { - "avg": 0.233333333333333, + "avg": 0.2, "dataPoints": Array [ Object { - "x": 1600159980000, + "x": 1601389800000, "y": 0, }, Object { - "x": 1600160010000, + "x": 1601389830000, "y": 0, }, Object { - "x": 1600160040000, + "x": 1601389860000, "y": 0, }, Object { - "x": 1600160070000, + "x": 1601389890000, "y": 0, }, Object { - "x": 1600160100000, + "x": 1601389920000, "y": 0, }, Object { - "x": 1600160130000, - "y": 0, - }, - Object { - "x": 1600160160000, + "x": 1601389950000, "y": 1, }, Object { - "x": 1600160190000, + "x": 1601389980000, "y": 0, }, Object { - "x": 1600160220000, + "x": 1601390010000, "y": 0, }, Object { - "x": 1600160250000, - "y": 0, + "x": 1601390040000, + "y": 1, }, Object { - "x": 1600160280000, + "x": 1601390070000, "y": 0, }, Object { - "x": 1600160310000, + "x": 1601390100000, "y": 0, }, Object { - "x": 1600160340000, + "x": 1601390130000, "y": 0, }, Object { - "x": 1600160370000, - "y": 0, + "x": 1601390160000, + "y": 2, }, Object { - "x": 1600160400000, + "x": 1601390190000, "y": 0, }, Object { - "x": 1600160430000, - "y": 3, + "x": 1601390220000, + "y": 0, }, Object { - "x": 1600160460000, + "x": 1601390250000, "y": 0, }, Object { - "x": 1600160490000, + "x": 1601390280000, "y": 0, }, Object { - "x": 1600160520000, + "x": 1601390310000, "y": 0, }, Object { - "x": 1600160550000, + "x": 1601390340000, "y": 0, }, Object { - "x": 1600160580000, + "x": 1601390370000, "y": 0, }, Object { - "x": 1600160610000, + "x": 1601390400000, "y": 0, }, Object { - "x": 1600160640000, - "y": 1, + "x": 1601390430000, + "y": 0, }, Object { - "x": 1600160670000, + "x": 1601390460000, "y": 0, }, Object { - "x": 1600160700000, + "x": 1601390490000, "y": 0, }, Object { - "x": 1600160730000, + "x": 1601390520000, "y": 0, }, Object { - "x": 1600160760000, + "x": 1601390550000, "y": 0, }, Object { - "x": 1600160790000, + "x": 1601390580000, "y": 0, }, Object { - "x": 1600160820000, + "x": 1601390610000, "y": 0, }, Object { - "x": 1600160850000, + "x": 1601390640000, "y": 0, }, Object { - "x": 1600160880000, + "x": 1601390670000, "y": 1, }, Object { - "x": 1600160910000, + "x": 1601390700000, "y": 0, }, Object { - "x": 1600160940000, + "x": 1601390730000, "y": 0, }, Object { - "x": 1600160970000, + "x": 1601390760000, + "y": 1, + }, + Object { + "x": 1601390790000, "y": 0, }, Object { - "x": 1600161000000, + "x": 1601390820000, "y": 0, }, Object { - "x": 1600161030000, + "x": 1601390850000, "y": 0, }, Object { - "x": 1600161060000, + "x": 1601390880000, "y": 0, }, Object { - "x": 1600161090000, + "x": 1601390910000, "y": 0, }, Object { - "x": 1600161120000, + "x": 1601390940000, "y": 0, }, Object { - "x": 1600161150000, + "x": 1601390970000, "y": 0, }, Object { - "x": 1600161180000, + "x": 1601391000000, "y": 0, }, Object { - "x": 1600161210000, + "x": 1601391030000, "y": 0, }, Object { - "x": 1600161240000, + "x": 1601391060000, "y": 0, }, Object { - "x": 1600161270000, - "y": 1, + "x": 1601391090000, + "y": 0, }, Object { - "x": 1600161300000, + "x": 1601391120000, "y": 0, }, Object { - "x": 1600161330000, + "x": 1601391150000, "y": 0, }, Object { - "x": 1600161360000, + "x": 1601391180000, "y": 0, }, Object { - "x": 1600161390000, + "x": 1601391210000, "y": 0, }, Object { - "x": 1600161420000, + "x": 1601391240000, "y": 0, }, Object { - "x": 1600161450000, + "x": 1601391270000, "y": 0, }, Object { - "x": 1600161480000, + "x": 1601391300000, "y": 0, }, Object { - "x": 1600161510000, + "x": 1601391330000, "y": 0, }, Object { - "x": 1600161540000, + "x": 1601391360000, "y": 0, }, Object { - "x": 1600161570000, + "x": 1601391390000, "y": 0, }, Object { - "x": 1600161600000, + "x": 1601391420000, "y": 0, }, Object { - "x": 1600161630000, + "x": 1601391450000, "y": 0, }, Object { - "x": 1600161660000, + "x": 1601391480000, "y": 0, }, Object { - "x": 1600161690000, + "x": 1601391510000, "y": 0, }, Object { - "x": 1600161720000, + "x": 1601391540000, "y": 0, }, Object { - "x": 1600161750000, + "x": 1601391570000, "y": 0, }, Object { - "x": 1600161780000, + "x": 1601391600000, "y": 0, }, ], "key": "HTTP 4xx", }, Object { - "avg": 4.46666666666667, + "avg": 4.26666666666667, "dataPoints": Array [ Object { - "x": 1600159980000, - "y": 2, + "x": 1601389800000, + "y": 4, }, Object { - "x": 1600160010000, - "y": 2, + "x": 1601389830000, + "y": 3, }, Object { - "x": 1600160040000, - "y": 1, + "x": 1601389860000, + "y": 2, }, Object { - "x": 1600160070000, + "x": 1601389890000, "y": 2, }, Object { - "x": 1600160100000, - "y": 3, + "x": 1601389920000, + "y": 1, }, Object { - "x": 1600160130000, - "y": 0, + "x": 1601389950000, + "y": 4, }, Object { - "x": 1600160160000, - "y": 3, + "x": 1601389980000, + "y": 0, }, Object { - "x": 1600160190000, - "y": 2, + "x": 1601390010000, + "y": 3, }, Object { - "x": 1600160220000, + "x": 1601390040000, "y": 3, }, Object { - "x": 1600160250000, - "y": 2, + "x": 1601390070000, + "y": 1, }, Object { - "x": 1600160280000, + "x": 1601390100000, "y": 2, }, Object { - "x": 1600160310000, + "x": 1601390130000, "y": 3, }, Object { - "x": 1600160340000, - "y": 1, + "x": 1601390160000, + "y": 0, }, Object { - "x": 1600160370000, + "x": 1601390190000, + "y": 3, + }, + Object { + "x": 1601390220000, "y": 2, }, Object { - "x": 1600160400000, + "x": 1601390250000, "y": 3, }, Object { - "x": 1600160430000, - "y": 1, + "x": 1601390280000, + "y": 0, }, Object { - "x": 1600160460000, + "x": 1601390310000, "y": 3, }, Object { - "x": 1600160490000, + "x": 1601390340000, + "y": 3, + }, + Object { + "x": 1601390370000, "y": 2, }, Object { - "x": 1600160520000, - "y": 4, + "x": 1601390400000, + "y": 0, }, Object { - "x": 1600160550000, + "x": 1601390430000, + "y": 3, + }, + Object { + "x": 1601390460000, "y": 1, }, Object { - "x": 1600160580000, + "x": 1601390490000, "y": 3, }, Object { - "x": 1600160610000, - "y": 3, + "x": 1601390520000, + "y": 1, + }, + Object { + "x": 1601390550000, + "y": 2, }, Object { - "x": 1600160640000, + "x": 1601390580000, "y": 2, }, Object { - "x": 1600160670000, + "x": 1601390610000, "y": 2, }, Object { - "x": 1600160700000, + "x": 1601390640000, "y": 1, }, Object { - "x": 1600160730000, + "x": 1601390670000, "y": 2, }, Object { - "x": 1600160760000, + "x": 1601390700000, "y": 2, }, Object { - "x": 1600160790000, + "x": 1601390730000, "y": 3, }, Object { - "x": 1600160820000, - "y": 2, + "x": 1601390760000, + "y": 1, }, Object { - "x": 1600160850000, + "x": 1601390790000, "y": 2, }, Object { - "x": 1600160880000, - "y": 1, - }, - Object { - "x": 1600160910000, + "x": 1601390820000, "y": 3, }, Object { - "x": 1600160940000, - "y": 3, + "x": 1601390850000, + "y": 2, }, Object { - "x": 1600160970000, - "y": 1, + "x": 1601390880000, + "y": 2, }, Object { - "x": 1600161000000, + "x": 1601390910000, "y": 4, }, Object { - "x": 1600161030000, - "y": 2, - }, - Object { - "x": 1600161060000, - "y": 3, + "x": 1601390940000, + "y": 1, }, Object { - "x": 1600161090000, + "x": 1601390970000, "y": 3, }, Object { - "x": 1600161120000, + "x": 1601391000000, "y": 1, }, Object { - "x": 1600161150000, - "y": 4, + "x": 1601391030000, + "y": 3, }, Object { - "x": 1600161180000, + "x": 1601391060000, "y": 2, }, Object { - "x": 1600161210000, + "x": 1601391090000, "y": 3, }, Object { - "x": 1600161240000, + "x": 1601391120000, "y": 2, }, Object { - "x": 1600161270000, + "x": 1601391150000, "y": 2, }, Object { - "x": 1600161300000, + "x": 1601391180000, "y": 1, }, Object { - "x": 1600161330000, + "x": 1601391210000, "y": 2, }, Object { - "x": 1600161360000, + "x": 1601391240000, "y": 2, }, Object { - "x": 1600161390000, + "x": 1601391270000, "y": 2, }, Object { - "x": 1600161420000, + "x": 1601391300000, "y": 3, }, Object { - "x": 1600161450000, - "y": 3, + "x": 1601391330000, + "y": 2, }, Object { - "x": 1600161480000, - "y": 0, + "x": 1601391360000, + "y": 2, }, Object { - "x": 1600161510000, + "x": 1601391390000, "y": 3, }, Object { - "x": 1600161540000, + "x": 1601391420000, "y": 3, }, Object { - "x": 1600161570000, - "y": 1, - }, - Object { - "x": 1600161600000, - "y": 4, + "x": 1601391450000, + "y": 2, }, Object { - "x": 1600161630000, - "y": 2, + "x": 1601391480000, + "y": 1, }, Object { - "x": 1600161660000, + "x": 1601391510000, "y": 3, }, Object { - "x": 1600161690000, + "x": 1601391540000, "y": 1, }, Object { - "x": 1600161720000, + "x": 1601391570000, "y": 4, }, Object { - "x": 1600161750000, + "x": 1601391600000, "y": 0, }, - Object { - "x": 1600161780000, - "y": 2, - }, ], "key": "success", }, diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/breakdown.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/breakdown.ts index 1c842ee457dae..f2e58718870bf 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/breakdown.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/breakdown.ts @@ -73,23 +73,23 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(` Array [ Object { - "x": "2020-09-15T08:53:00.000Z", - "y": null, + "x": "2020-09-29T14:30:00.000Z", + "y": 1, }, Object { - "x": "2020-09-15T08:53:30.000Z", - "y": null, + "x": "2020-09-29T14:30:30.000Z", + "y": 1, }, Object { - "x": "2020-09-15T08:54:00.000Z", - "y": null, + "x": "2020-09-29T14:31:00.000Z", + "y": 1, }, Object { - "x": "2020-09-15T08:54:30.000Z", + "x": "2020-09-29T14:31:30.000Z", "y": null, }, Object { - "x": "2020-09-15T08:55:00.000Z", + "x": "2020-09-29T14:32:00.000Z", "y": 1, }, ] diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/error_rate.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/error_rate.ts index 17ada95ca4958..8ef42052ba951 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/error_rate.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/error_rate.ts @@ -66,13 +66,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('has the correct start date', () => { expectSnapshot( new Date(first(errorRateResponse.erroneousTransactionsRate)?.x ?? NaN).toISOString() - ).toMatchInline(`"2020-09-15T08:53:00.000Z"`); + ).toMatchInline(`"2020-09-29T14:30:00.000Z"`); }); it('has the correct end date', () => { expectSnapshot( new Date(last(errorRateResponse.erroneousTransactionsRate)?.x ?? NaN).toISOString() - ).toMatchInline(`"2020-09-15T09:23:00.000Z"`); + ).toMatchInline(`"2020-09-29T15:00:00.000Z"`); }); it('has the correct number of buckets', () => { @@ -80,7 +80,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('has the correct calculation for average', () => { - expectSnapshot(errorRateResponse.average).toMatchInline(`0.140863095238095`); + expectSnapshot(errorRateResponse.average).toMatchInline(`0.200076804915515`); }); it('has the correct error rate', () => { diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/top_transaction_groups.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/top_transaction_groups.ts index c3ac1ed518652..2e802957a95e3 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/top_transaction_groups.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/top_transaction_groups.ts @@ -57,7 +57,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('returns the correct number of buckets', () => { - expectSnapshot(response.body.items.length).toMatchInline(`14`); + expectSnapshot(response.body.items.length).toMatchInline(`12`); }); it('returns the correct buckets (when ignoring samples)', async () => { diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/transaction_charts.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/transaction_charts.ts index ef874695e6046..c9581079b9952 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/transaction_charts.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/transaction_charts.ts @@ -62,7 +62,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the correct data', () => { expectSnapshot(response.body.apmTimeseries.overallAvgDuration).toMatchInline( - `600255.707964602` + `600888.274678112` ); expectSnapshot(response.body.apmTimeseries.responseTimes.avg.length).toMatchInline(`61`); expectSnapshot(response.body.apmTimeseries.tpmBuckets.length).toMatchInline(`3`); diff --git a/x-pack/test/apm_api_integration/common/archives_metadata.ts b/x-pack/test/apm_api_integration/common/archives_metadata.ts index 84932310d22d2..48111ced9052e 100644 --- a/x-pack/test/apm_api_integration/common/archives_metadata.ts +++ b/x-pack/test/apm_api_integration/common/archives_metadata.ts @@ -6,7 +6,7 @@ export default { 'apm_8.0.0': { - start: '2020-09-15T08:53:10.777Z', - end: '2020-09-15T09:23:10.777Z', + start: '2020-09-29T14:30:00.000Z', + end: '2020-09-29T15:00:00.000Z', }, }; diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/data.json.gz b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/data.json.gz index 9b21a59367e80509d8a602f7be1d08e3865f0a73..159123b937857bc6ea6bf8c90f1c472b1eb5ba91 100644 GIT binary patch literal 2527015 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
`uy=B+|9(@wLx^7u#n1i=pd-aTu5abX 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�(9`I(48? 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­owg}^WR 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 z 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

?Hg1cYrHY`mSd-L`jcJSC-4W< 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 @@ -70,14 +96,8 @@ export const DataTierAllocationField: FunctionComponent = ({ /> {/* Data tier related warnings */} - - {phaseData.dataTierAllocationType === 'default' && !isCompatible && ( - - )} - - {phaseData.dataTierAllocationType === 'custom' && !hasNodeAttrs && ( - - )} + {renderDefaultAllocationNotice()} + {renderNodeAttributesWarning()} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/phases/warm_phase.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/phases/warm_phase.tsx index 16a740b1171c9..b837eed1256c5 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/phases/warm_phase.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/phases/warm_phase.tsx @@ -45,8 +45,7 @@ const i18nTexts = { ), dataTierAllocation: { description: i18n.translate('xpack.indexLifecycleMgmt.warmPhase.dataTier.description', { - defaultMessage: - 'Move warm data to nodes optimized for read-only access. Store warm data on less-expensive hardware.', + defaultMessage: 'Move data to nodes optimized for less-frequent, read-only access.', }), }, }; From 1eb229be2e09709f2bc3aee02cbf007964aa4bdf Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Wed, 30 Sep 2020 12:45:27 +0200 Subject: [PATCH 108/119] Fix warning text doesn't get displayed on filters with custom filter name (#78617) Co-authored-by: Elastic Machine --- .../__snapshots__/filter_label.test.js.snap | 18 -- .../filter_editor/lib/filter_label.test.js | 48 ------ .../filter_editor/lib/filter_label.test.tsx | 156 ++++++++++++++++++ .../filter_editor/lib/filter_label.tsx | 5 +- .../data/public/ui/filter_bar/filter_item.tsx | 10 +- .../ui/filter_bar/filter_view/index.tsx | 11 +- 6 files changed, 177 insertions(+), 71 deletions(-) delete mode 100644 src/plugins/data/public/ui/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.js.snap delete mode 100644 src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.js create mode 100644 src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.tsx diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.js.snap b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.js.snap deleted file mode 100644 index b0bcec12ca3b7..0000000000000 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.js.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`alias 1`] = ` - - geo.coordinates in US - -`; - -exports[`negated alias 1`] = ` - - - NOT - - geo.coordinates in US - -`; diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.js b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.js deleted file mode 100644 index 55df544ad010b..0000000000000 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import { FilterLabel } from './filter_label'; -import { shallow } from 'enzyme'; -import { phraseFilter } from '../../../../stubs'; - -test('alias', () => { - const filter = { - ...phraseFilter, - meta: { - ...phraseFilter.meta, - alias: 'geo.coordinates in US', - }, - }; - const component = shallow(); - expect(component).toMatchSnapshot(); -}); - -test('negated alias', () => { - const filter = { - ...phraseFilter, - meta: { - ...phraseFilter.meta, - alias: 'geo.coordinates in US', - negate: true, - }, - }; - const component = shallow(); - expect(component).toMatchSnapshot(); -}); diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.tsx b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.tsx new file mode 100644 index 0000000000000..59afc1606adf9 --- /dev/null +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.test.tsx @@ -0,0 +1,156 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { FilterLabel } from './filter_label'; +import { render, cleanup } from '@testing-library/react/pure'; +import { phraseFilter } from '../../../../stubs'; + +afterEach(cleanup); + +test('alias', () => { + const filter = { + ...phraseFilter, + meta: { + ...phraseFilter.meta, + alias: 'geo.coordinates in US', + }, + }; + const { container } = render(); + expect(container).toMatchInlineSnapshot(` +
+ + geo.coordinates in US +
+ `); +}); + +test('negated alias', () => { + const filter = { + ...phraseFilter, + meta: { + ...phraseFilter.meta, + alias: 'geo.coordinates in US', + negate: true, + }, + }; + const { container } = render(); + expect(container).toMatchInlineSnapshot(` +
+ + NOT + + geo.coordinates in US +
+ `); +}); + +test('alias with warning status', () => { + const filter = { + ...phraseFilter, + meta: { + ...phraseFilter.meta, + alias: 'geo.coordinates in US', + negate: true, + }, + }; + const { container } = render( + + ); + expect(container).toMatchInlineSnapshot(` +
+ + NOT + + geo.coordinates in US + : + + Warning + +
+ `); +}); + +test('alias with error status', () => { + const filter = { + ...phraseFilter, + meta: { + ...phraseFilter.meta, + alias: 'geo.coordinates in US', + negate: true, + }, + }; + const { container } = render( + + ); + expect(container).toMatchInlineSnapshot(` +
+ + NOT + + geo.coordinates in US + : + + Error + +
+ `); +}); + +test('warning', () => { + const { container } = render(); + expect(container).toMatchInlineSnapshot(` +
+ + machine.os + : + + Warning + +
+ `); +}); + +test('error', () => { + const { container } = render(); + expect(container).toMatchInlineSnapshot(` +
+ + machine.os + : + + Error + +
+ `); +}); diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx index 070631354d8b8..3b85d0753b8c5 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx @@ -22,13 +22,15 @@ import { EuiTextColor } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { existsOperator, isOneOfOperator } from './filter_operators'; import { Filter, FILTERS } from '../../../../../common'; +import type { FilterLabelStatus } from '../../filter_item'; interface Props { filter: Filter; valueLabel?: string; + filterLabelStatus?: FilterLabelStatus; } -export function FilterLabel({ filter, valueLabel }: Props) { +export function FilterLabel({ filter, valueLabel, filterLabelStatus }: Props) { const prefixText = filter.meta.negate ? ` ${i18n.translate('data.filter.filterBar.negatedFilterPrefix', { defaultMessage: 'NOT ', @@ -50,6 +52,7 @@ export function FilterLabel({ filter, valueLabel }: Props) { {prefix} {filter.meta.alias} + {filterLabelStatus && <>: {getValue(valueLabel)}} ); } diff --git a/src/plugins/data/public/ui/filter_bar/filter_item.tsx b/src/plugins/data/public/ui/filter_bar/filter_item.tsx index 078fc8c9e1a8f..cbff20115f8ea 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_item.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_item.tsx @@ -49,7 +49,7 @@ interface Props { interface LabelOptions { title: string; - status: string; + status: FilterLabelStatus; message?: string; } @@ -57,6 +57,11 @@ const FILTER_ITEM_OK = ''; const FILTER_ITEM_WARNING = 'warn'; const FILTER_ITEM_ERROR = 'error'; +export type FilterLabelStatus = + | typeof FILTER_ITEM_OK + | typeof FILTER_ITEM_WARNING + | typeof FILTER_ITEM_ERROR; + export function FilterItem(props: Props) { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const [indexPatternExists, setIndexPatternExists] = useState(undefined); @@ -260,7 +265,7 @@ export function FilterItem(props: Props) { } function getValueLabel(): LabelOptions { - const label = { + const label: LabelOptions = { title: '', message: '', status: FILTER_ITEM_OK, @@ -326,6 +331,7 @@ export function FilterItem(props: Props) { props.onRemove()} diff --git a/src/plugins/data/public/ui/filter_bar/filter_view/index.tsx b/src/plugins/data/public/ui/filter_bar/filter_view/index.tsx index f9328875cc910..3f9cbce06b315 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_view/index.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_view/index.tsx @@ -22,10 +22,12 @@ import { i18n } from '@kbn/i18n'; import React, { FC } from 'react'; import { FilterLabel } from '../filter_editor/lib/filter_label'; import { Filter, isFilterPinned } from '../../../../common'; +import type { FilterLabelStatus } from '../filter_item'; interface Props { filter: Filter; valueLabel: string; + filterLabelStatus: FilterLabelStatus; errorMessage?: string; [propName: string]: any; } @@ -36,6 +38,7 @@ export const FilterView: FC = ({ onClick, valueLabel, errorMessage, + filterLabelStatus, ...rest }: Props) => { const [ref, innerText] = useInnerText(); @@ -65,7 +68,7 @@ export const FilterView: FC = ({ iconType="cross" iconSide="right" closeButtonProps={{ - // Removing tab focus on close button because the same option can be optained through the context menu + // Removing tab focus on close button because the same option can be obtained through the context menu // Also, we may want to add a `DEL` keyboard press functionality tabIndex: -1, }} @@ -80,7 +83,11 @@ export const FilterView: FC = ({ {...rest} > - + ); From b6525cd3b30974bdba8d11362c37acef4ca1eb53 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Wed, 30 Sep 2020 14:52:44 +0300 Subject: [PATCH 109/119] update vega version (#78390) --- package.json | 8 +- .../vega_visualization.test.js.snap | 8 +- yarn.lock | 758 ++++++++++-------- 3 files changed, 418 insertions(+), 356 deletions(-) diff --git a/package.json b/package.json index 3e26ba566f1b3..6122c1090671f 100644 --- a/package.json +++ b/package.json @@ -478,10 +478,10 @@ "tree-kill": "^1.2.2", "typescript": "4.0.2", "ui-select": "0.19.8", - "vega": "^5.13.0", - "vega-lite": "^4.13.1", - "vega-schema-url-parser": "^1.1.0", - "vega-tooltip": "^0.12.0", + "vega": "^5.16.1", + "vega-lite": "^4.16.8", + "vega-schema-url-parser": "^2.1.0", + "vega-tooltip": "^0.24.2", "vinyl-fs": "^3.0.3", "xml2js": "^0.4.22", "xmlbuilder": "13.0.2", diff --git a/src/plugins/vis_type_vega/public/__snapshots__/vega_visualization.test.js.snap b/src/plugins/vis_type_vega/public/__snapshots__/vega_visualization.test.js.snap index 639559dff3091..0d38d9775a4cd 100644 --- a/src/plugins/vis_type_vega/public/__snapshots__/vega_visualization.test.js.snap +++ b/src/plugins/vis_type_vega/public/__snapshots__/vega_visualization.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`VegaVisualizations VegaVisualization - basics should show vega blank rectangle on top of a map (vegamap) 1`] = `"
"`; +exports[`VegaVisualizations VegaVisualization - basics should show vega blank rectangle on top of a map (vegamap) 1`] = `"
"`; -exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"
"`; +exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"
"`; -exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 1`] = `"
"`; +exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 1`] = `"
"`; -exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 2`] = `"
"`; +exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 2`] = `"
"`; diff --git a/yarn.lock b/yarn.lock index 03f1471a132df..c84e43942e3cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3883,10 +3883,10 @@ resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.9.tgz#d868b6febb02666330410fe7f58f3c4b8258be7b" integrity sha512-MNl+rT5UmZeilaPxAVs6YaPC2m6aA8rofviZbhbxpPpl61uKodfdQVsBtgJGTqGizEf02oW3tsVe7FYB8kK14A== -"@types/clone@~0.1.30": - version "0.1.30" - resolved "https://registry.yarnpkg.com/@types/clone/-/clone-0.1.30.tgz#e7365648c1b42136a59c7d5040637b3b5c83b614" - integrity sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ= +"@types/clone@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/clone/-/clone-2.1.0.tgz#cb888a3fe5319275b566ae3a9bc606e310c533d4" + integrity sha512-d/aS/lPOnUSruPhgNtT8jW39fHRVTLQy9sodysP1kkG8EdAtdZu1vt8NJaYA8w/6Z9j8izkAsx1A/yJhcYR1CA== "@types/cmd-shim@^2.0.0": version "2.0.0" @@ -10585,10 +10585,10 @@ d3-array@1, d3-array@1.2.4, d3-array@^1.1.1, d3-array@^1.2.0, d3-array@^1.2.4: resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== -"d3-array@1.2.0 - 2", d3-array@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" - integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== +"d3-array@1 - 2", d3-array@>=2.5, d3-array@^2.3.0, d3-array@^2.7.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.8.0.tgz#f76e10ad47f1f4f75f33db5fc322eb9ffde5ef23" + integrity sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw== d3-cloud@1.2.5: version "1.2.5" @@ -10602,11 +10602,16 @@ d3-collection@1, d3-collection@^1.0.3, d3-collection@^1.0.7: resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== -d3-color@1, d3-color@^1.0.3, d3-color@^1.4.0, d3-color@^1.4.1: +d3-color@1, d3-color@^1.0.3, d3-color@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== +"d3-color@1 - 2", d3-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" + integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== + d3-contour@^1.1.0: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" @@ -10614,7 +10619,7 @@ d3-contour@^1.1.0: dependencies: d3-array "^1.1.1" -d3-delaunay@^5.2.1: +d3-delaunay@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-5.3.0.tgz#b47f05c38f854a4e7b3cea80e0bb12e57398772d" integrity sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w== @@ -10626,10 +10631,15 @@ d3-dispatch@1, d3-dispatch@^1.0.3: resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== -d3-dsv@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== +"d3-dispatch@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz#8a18e16f76dd3fcaef42163c97b926aa9b55e7cf" + integrity sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== + +d3-dsv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0.tgz#b37b194b6df42da513a120d913ad1be22b5fe7c5" + integrity sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w== dependencies: commander "2" iconv-lite "0.4" @@ -10640,58 +10650,87 @@ d3-ease@1: resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== -d3-force@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.0.1.tgz#31750eee8c43535301d571195bf9683beda534e2" - integrity sha512-zh73/N6+MElRojiUG7vmn+3vltaKon7iD5vB/7r9nUaBeftXMzRo5IWEG63DLBCto4/8vr9i3m9lwr1OTJNiCg== +d3-force@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.1.tgz#f20ccbf1e6c9e80add1926f09b51f686a8bc0937" + integrity sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== dependencies: - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" + d3-dispatch "1 - 2" + d3-quadtree "1 - 2" + d3-timer "1 - 2" -d3-format@1, d3-format@^1.2.0, d3-format@^1.4.4: +d3-format@1, d3-format@^1.2.0: version "1.4.4" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== -d3-geo-projection@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz#826db62f748e8ecd67cd00aced4c26a236ec030c" - integrity sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ== +"d3-format@1 - 2", d3-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" + integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== + +d3-geo-projection@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz#45ad8ce756cdbfa8340b11b2988644d8e1fa42e4" + integrity sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA== dependencies: commander "2" - d3-array "1" - d3-geo "^1.12.0" + d3-array "1 - 2" + d3-geo "1.12.0 - 2" resolve "^1.1.10" -d3-geo@^1.12.0, d3-geo@^1.12.1, d3-geo@^1.6.4: +"d3-geo@1.12.0 - 2", d3-geo@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.1.tgz#2437fdfed3fe3aba2812bd8f30609cac83a7ee39" + integrity sha512-M6yzGbFRfxzNrVhxDJXzJqSLQ90q1cCyb3EWFZ1LF4eWOBYxFypw7I/NFVBNXKNqxv1bqLathhYvdJ6DC+th3A== + dependencies: + d3-array ">=2.5" + +d3-geo@^1.6.4: version "1.12.1" resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== dependencies: d3-array "1" -d3-hierarchy@^1.1.4, d3-hierarchy@^1.1.9: +d3-hierarchy@^1.1.4: version "1.1.9" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== -d3-interpolate@1, d3-interpolate@^1.1.4, d3-interpolate@^1.2.0, d3-interpolate@^1.4.0: +d3-hierarchy@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz#dab88a58ca3e7a1bc6cab390e89667fcc6d20218" + integrity sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw== + +d3-interpolate@1, d3-interpolate@^1.1.4: version "1.4.0" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== dependencies: d3-color "1" -d3-path@1, d3-path@^1.0.9: +"d3-interpolate@1.2.0 - 2", d3-interpolate@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163" + integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== + dependencies: + d3-color "1 - 2" + +d3-path@1: version "1.0.9" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== +"d3-path@1 - 2", d3-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8" + integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== + +"d3-quadtree@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d" + integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== d3-sankey@^0.7.1: version "0.7.1" @@ -10715,46 +10754,70 @@ d3-scale@1.0.7, d3-scale@^1.0.5, d3-scale@^1.0.7: d3-time "1" d3-time-format "2" -d3-scale@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69" - integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA== +d3-scale@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" + integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== dependencies: - d3-array "1.2.0 - 2" - d3-format "1" - d3-interpolate "^1.2.0" - d3-time "1" - d3-time-format "2" + d3-array "^2.3.0" + d3-format "1 - 2" + d3-interpolate "1.2.0 - 2" + d3-time "1 - 2" + d3-time-format "2 - 3" d3-selection@^1.0.2, d3-selection@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== -d3-shape@^1.1.0, d3-shape@^1.2.0, d3-shape@^1.3.4, d3-shape@^1.3.7: +d3-shape@^1.1.0, d3-shape@^1.2.0, d3-shape@^1.3.4: version "1.3.7" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== dependencies: d3-path "1" -d3-time-format@2, d3-time-format@^2.2.3: +d3-shape@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd" + integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw== + dependencies: + d3-path "1 - 2" + +d3-time-format@2: version "2.2.3" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== dependencies: d3-time "1" -d3-time@1, d3-time@^1.1.0: +"d3-time-format@2 - 3", d3-time-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" + integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + dependencies: + d3-time "1 - 2" + +d3-time@1: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== -d3-timer@1, d3-timer@^1.0.10: +"d3-time@1 - 2", d3-time@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" + integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== + +d3-timer@1: version "1.0.10" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== +"d3-timer@1 - 2", d3-timer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0.tgz#055edb1d170cfe31ab2da8968deee940b56623e6" + integrity sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== + d3-transition@^1.0.1: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" @@ -13331,7 +13394,7 @@ fancy-log@^1.3.2: color-support "^1.1.3" time-stamp "^1.0.0" -fast-deep-equal@^3.1.1, fast-deep-equal@~3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@~3.1.3: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== @@ -29153,11 +29216,16 @@ tslib@^1, tslib@^1.0.0, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -tslib@^2.0.0, tslib@~2.0.0: +tslib@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== +tslib@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -30153,339 +30221,350 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vega-canvas@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/vega-canvas/-/vega-canvas-1.2.2.tgz#f31aae9ac1e1ed01bb7817a1e53099279e2d3d43" - integrity sha512-39h8/fZp4kDwSeDGIEoyEiIgtP3mgY3D08InD1Ldm0FntePpSe1tXzC1zcvoLe/+f7Qprl6Jfwux/ksOXvpj2w== +vega-canvas@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/vega-canvas/-/vega-canvas-1.2.5.tgz#c332bad588893391b583fbeb0c95e1143127f797" + integrity sha512-6+jFEd6s7G088npH0+YuN1JTRxMYsjb1uXbwqcJ8zSP7gFR4f3tg/yA/BHU0+JbvLnxnScr61HYpDXAQ59YW3w== -vega-crossfilter@~4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vega-crossfilter/-/vega-crossfilter-4.0.2.tgz#739a26eb8eb741b3e1725679d09ee2af56f983b5" - integrity sha512-wlKpqBEUpDd/Y3aaC1u91lebXR+sS7LElYv2jGDDG5pA+RS8lRo3NmSClKVBM5NcY80IeMywG+0a/ogzVeBrPQ== +vega-crossfilter@~4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz#cf6a5fca60821928f976b32f22cf66cfd9cbeeae" + integrity sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg== dependencies: - d3-array "^2.4.0" - vega-dataflow "^5.5.1" - vega-util "^1.13.2" + d3-array "^2.7.1" + vega-dataflow "^5.7.3" + vega-util "^1.15.2" -vega-dataflow@^5.5.1, vega-dataflow@^5.6.0, vega-dataflow@^5.7.0, vega-dataflow@~5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/vega-dataflow/-/vega-dataflow-5.7.0.tgz#811381d946e044cafe093c7c7f8111d366cfbc11" - integrity sha512-W8Q6NBCmk3TCDjTiy/I2PA4JTQljqp3XF6227CiCvZfhmCZCeHchuZKrgwJUBVZ2CoqT+UL2JpCi1SFzrPObIQ== +vega-dataflow@^5.7.3, vega-dataflow@~5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/vega-dataflow/-/vega-dataflow-5.7.3.tgz#66ca06a61f72a210b0732e3b6cc1eec5117197f7" + integrity sha512-2ipzKgQUmbSXcQBH+9XF0BYbXyZrHvjlbJ8ifyRWYQk78w8kMvE6wy/rcdXYK6iVZ6aAbEDDT7jTI+rFt3tGLA== dependencies: - vega-format "^1.0.0" - vega-loader "^4.3.0" - vega-util "^1.14.0" + vega-format "^1.0.4" + vega-loader "^4.3.2" + vega-util "^1.15.2" -vega-encode@~4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/vega-encode/-/vega-encode-4.8.0.tgz#948f3302892360cffc7a76d2107295c421835d12" - integrity sha512-1OYYblMu9oyhuRIiFRK+R7/ChwXn3ckWyl6omK5Q46vkeLZhafBNb8ZdqftPoM/5BnZUTpia0SQ06AGX8VDjHw== +vega-encode@~4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/vega-encode/-/vega-encode-4.8.3.tgz#b3048fb39845d72f18d8dc302ad697f826e0ff83" + integrity sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg== dependencies: - d3-array "^2.4.0" - d3-interpolate "^1.4.0" - vega-dataflow "^5.7.0" - vega-scale "^7.0.0" - vega-util "^1.14.0" + d3-array "^2.7.1" + d3-interpolate "^2.0.1" + vega-dataflow "^5.7.3" + vega-scale "^7.0.3" + vega-util "^1.15.2" -vega-event-selector@^2.0.3, vega-event-selector@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/vega-event-selector/-/vega-event-selector-2.0.3.tgz#760c61af7ab5c325d3274fd3ab284d067ff16f8c" - integrity sha512-rUnAvBSy5tkk+0MELY7qICTgjMNjH/DDNIH603q3GRi+bBRCd4MlJxWrPYBhwZIYpmr6XCe130lZ90/F5SgVfA== +vega-event-selector@^2.0.6, vega-event-selector@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vega-event-selector/-/vega-event-selector-2.0.6.tgz#6beb00e066b78371dde1a0f40cb5e0bbaecfd8bc" + integrity sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew== -vega-expression@^2.6.4, vega-expression@^2.6.5, vega-expression@~2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/vega-expression/-/vega-expression-2.6.5.tgz#7bda7524b9223cbbf9034071695c7c2a9bd81971" - integrity sha512-3hJts0gKomu3ePXYeIb+VAw7yNKoHJ6VqSKsHHFPyoEGNdwmlgI5d9IBblelPCiMCHK4sMt7h1OTWB33cfxZGA== +vega-expression@^3.0.0, vega-expression@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vega-expression/-/vega-expression-3.0.0.tgz#39179d010b34c57513162bf1ab5a7bff4b31be91" + integrity sha512-/ObjIOK94MB+ziTuh8HZt2eWlKUPT/piRJLal5tx5QL1sQbfRi++7lHKTaKMLXLqc4Xqp9/DewE3PqQ6tYzaUA== dependencies: - vega-util "^1.14.0" + vega-util "^1.15.2" -vega-force@~4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/vega-force/-/vega-force-4.0.4.tgz#b73cba2e169cc248c994c9d981c374eb06aff764" - integrity sha512-ETTezb3lpQIbrk8pdmv4WpoNlChWdIK1Hv5CHL8Q/oOT/lIop/NHnI+JZO4yuzaYv+o3UqNWPcjiY0U5/i51dw== +vega-force@~4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/vega-force/-/vega-force-4.0.7.tgz#6dc39ecb7889d9102661244d62fbc8d8714162ee" + integrity sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA== dependencies: - d3-force "^2.0.1" - vega-dataflow "^5.5.1" - vega-util "^1.13.2" + d3-force "^2.1.1" + vega-dataflow "^5.7.3" + vega-util "^1.15.2" -vega-format@^1.0.0, vega-format@^1.0.1, vega-format@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vega-format/-/vega-format-1.0.1.tgz#94b5be9eb3d6a8b315fcf3d523ed6a1bb2ea4d71" - integrity sha512-f9IZ+SDHVFFneDDc+d8RfeJhXXvUgquAuM+1MZ2Rjf4xqpg+E8FSNQkh8wjeo82mc6G3KVa9hynSdfN/a0AktQ== +vega-format@^1.0.4, vega-format@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vega-format/-/vega-format-1.0.4.tgz#40c0c252d11128738b845ee73d8173f8064d6626" + integrity sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A== dependencies: - d3-array "^2.4.0" - d3-format "^1.4.4" - d3-time-format "^2.2.3" - vega-time "^2.0.0" - vega-util "^1.14.0" + d3-array "^2.7.1" + d3-format "^2.0.0" + d3-time-format "^3.0.0" + vega-time "^2.0.3" + vega-util "^1.15.2" -vega-functions@^5.7.0, vega-functions@^5.7.1, vega-functions@~5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/vega-functions/-/vega-functions-5.7.1.tgz#4231f013c7a8a6cdcefaa6ee08c96f361c0c9ef5" - integrity sha512-PQUcRkLAJwiRK+Y2o8MZdHJOHZwGcIYKvnYZnes2IY5433lhKYL7b1DmwQhUqyHyKCudqlz/pRnoLpmuL8sAgg== - dependencies: - d3-array "^2.4.0" - d3-color "^1.4.1" - d3-geo "^1.12.1" - vega-dataflow "^5.7.0" - vega-expression "^2.6.5" - vega-scale "^7.0.0" - vega-scenegraph "^4.8.0" - vega-selections "^5.1.1" - vega-statistics "^1.7.5" - vega-time "^2.0.1" - vega-util "^1.14.0" - -vega-geo@~4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/vega-geo/-/vega-geo-4.3.4.tgz#1bd26e438a304ff2596d51f57acee0e119e81313" - integrity sha512-sfMK1XGCLzMnfmy7fBJ2D+h8NG5WDwnSiPvcsjgwwAyonlUgCZWKdrNouAyLaRODy5ICZUEj/GDILSBdlIfUCg== - dependencies: - d3-array "^2.4.0" - d3-color "^1.4.1" - d3-geo "^1.12.1" - vega-canvas "^1.2.2" - vega-dataflow "^5.6.0" - vega-projection "^1.4.2" - vega-statistics "^1.7.5" - vega-util "^1.14.0" - -vega-hierarchy@~4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/vega-hierarchy/-/vega-hierarchy-4.0.6.tgz#e286e917e47f1d4d9bfefa278cfdfa163d9f1225" - integrity sha512-v71NQzz9503aBJgRPnrBEZ/87q58EjwylmAs3uh+SaI5ocMCn9+goE+x5ZwZ0gNT9qJv4Umm5L3GZ9h8LuXjlg== +vega-functions@^5.8.0, vega-functions@~5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/vega-functions/-/vega-functions-5.8.0.tgz#48e02b0e5b14261cd445bda3c4721a18b02c810c" + integrity sha512-xaUqWZHEX+EuJuKfN0Biux3rrCHDEHmMbW7LHYyyEqguR0i6+zhtOSUEWmYqDfzB/+BlIwCk5Vif6q6/mzJxbQ== + dependencies: + d3-array "^2.7.1" + d3-color "^2.0.0" + d3-geo "^2.0.1" + vega-dataflow "^5.7.3" + vega-expression "^3.0.0" + vega-scale "^7.1.1" + vega-scenegraph "^4.9.2" + vega-selections "^5.1.4" + vega-statistics "^1.7.9" + vega-time "^2.0.4" + vega-util "^1.15.2" + +vega-geo@~4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/vega-geo/-/vega-geo-4.3.7.tgz#4220137458a17d422fa15705f24905ba2595ca40" + integrity sha512-5HC1D9Z/WYuM1Gmlk8PxuRKgeN8snNWsfKO4E9PTmR7wo7tuU/2SGlRoE27aTsgwMMpBIrpRbSgKtgh5l/fMUQ== + dependencies: + d3-array "^2.7.1" + d3-color "^2.0.0" + d3-geo "^2.0.1" + vega-canvas "^1.2.5" + vega-dataflow "^5.7.3" + vega-projection "^1.4.5" + vega-statistics "^1.7.9" + vega-util "^1.15.2" + +vega-hierarchy@~4.0.9: + version "4.0.9" + resolved "https://registry.yarnpkg.com/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz#4b4bafbc181a14a280ecdbee8874c0db7e369f47" + integrity sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug== dependencies: - d3-hierarchy "^1.1.9" - vega-dataflow "^5.5.1" - vega-util "^1.13.2" + d3-hierarchy "^2.0.0" + vega-dataflow "^5.7.3" + vega-util "^1.15.2" -vega-lite@^4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/vega-lite/-/vega-lite-4.13.1.tgz#e9ee31c76cb93565e287a760700e432e57244064" - integrity sha512-OHZSSqVLuikoZ3idz3jIRk0UCKtVU2Lq5gaD6cLNTnJjNetoHKKdfZ023LVj4+Y9yWPz5meb+EJUsfBAGfF4Vw== +vega-label@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vega-label/-/vega-label-1.0.0.tgz#c3bea3a608a62217ca554ecc0f7fe0395d81bd1b" + integrity sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ== + dependencies: + vega-canvas "^1.2.5" + vega-dataflow "^5.7.3" + vega-scenegraph "^4.9.2" + vega-util "^1.15.2" + +vega-lite@^4.16.8: + version "4.16.8" + resolved "https://registry.yarnpkg.com/vega-lite/-/vega-lite-4.16.8.tgz#23a91f9b87a97c7ffc6d754d0ec8f6a3b04d6976" + integrity sha512-WB9OOHbFyIaLvx5k9m8XGEaB2p0sTC9Srtsm9ETQ6EoOksdLQtVesxCalgT+cGaUVtHAiqBNmLh/nQGxZXml7w== dependencies: - "@types/clone" "~0.1.30" + "@types/clone" "~2.1.0" "@types/fast-json-stable-stringify" "^2.0.0" array-flat-polyfill "^1.0.1" clone "~2.1.2" - fast-deep-equal "~3.1.1" + fast-deep-equal "~3.1.3" fast-json-stable-stringify "~2.1.0" json-stringify-pretty-compact "~2.0.0" - tslib "~2.0.0" - vega-event-selector "~2.0.3" - vega-expression "~2.6.5" - vega-util "~1.14.0" - yargs "~15.3.1" - -vega-loader@^4.3.0, vega-loader@~4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/vega-loader/-/vega-loader-4.3.0.tgz#f32d70e2dd57d753e4160aae2e1f48c20e0d00e5" - integrity sha512-XrwwJ1xWnsVS2N2M4vdvzieUdXWegdD31t04sCPQ5C3US58NYlq1ho1Md+5FVrtl0uCd0wG/mk700Jp7yPhN+w== - dependencies: - d3-dsv "^1.2.0" - node-fetch "^2.6.0" + tslib "~2.0.1" + vega-event-selector "~2.0.6" + vega-expression "~3.0.0" + vega-util "~1.15.3" + yargs "~16.0.3" + +vega-loader@^4.3.2, vega-loader@^4.3.3, vega-loader@~4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/vega-loader/-/vega-loader-4.3.3.tgz#1432dabae4dd7ab344f84c5ae6e250234e9c1005" + integrity sha512-ZcAMi6C7yfbA3gpxDnFe3PvsP/jcDwUjgPIpZ2IYsaQS+JijZAj5g3i4mpQCao0Atc+C/g7htg0Ir3twFLPjkQ== + dependencies: + d3-dsv "^2.0.0" + node-fetch "^2.6.1" topojson-client "^3.1.0" - vega-format "^1.0.0" - vega-util "^1.14.0" - -vega-parser@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/vega-parser/-/vega-parser-6.0.2.tgz#c76dfd13a38abedacb07658fe75fd0c05a509a1c" - integrity sha512-3337WvsUuuYZ0+H7ew4uZFgn82QWoaWv/9uinlMOH7ncnu8qTuWt4nV3WoUX9RFqie38qIMw/mf6+HK5gfXBoQ== - dependencies: - vega-dataflow "^5.6.0" - vega-event-selector "^2.0.3" - vega-functions "^5.7.0" - vega-scale "^7.0.0" - vega-util "^1.14.0" + vega-format "^1.0.4" + vega-util "^1.15.2" -vega-projection@^1.4.2, vega-projection@~1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/vega-projection/-/vega-projection-1.4.2.tgz#2e5edfffac54e8ba8ab56fba29f174dab0bc98d1" - integrity sha512-eULwc/8TMVjFkGtIVF5IGpJzEksnS0ccbaaCH9QjHtQTyBaR2CA679r5/98x6ur7ZLaYgcm2o082kjReUoyncA== - dependencies: - d3-geo "^1.12.1" - d3-geo-projection "^2.9.0" - -vega-regression@~1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/vega-regression/-/vega-regression-1.0.6.tgz#0081a91328e933c826813c06afe7041915532d4f" - integrity sha512-s4kjsKp23WvDJDHkpIrGNUaLI3/95k6nTURj9RDtM4C6CbUgO2snIaEfki4JfOCnBYtvotwDuZgXKmJInu9hVw== +vega-parser@~6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/vega-parser/-/vega-parser-6.1.0.tgz#485fb6fcd79d14b09efee340e2b55fb510e57e20" + integrity sha512-u14bHXV8vtcuMIJkMNoDAJ4Xu3lwKIkep+YEkPumWvlwl3fClWy26EAcwTneeM3rXu2F6ZJI6W3ddu/If8u13w== dependencies: - d3-array "^2.4.0" - vega-dataflow "^5.5.1" - vega-statistics "^1.7.4" - vega-util "^1.13.2" + vega-dataflow "^5.7.3" + vega-event-selector "^2.0.6" + vega-functions "^5.8.0" + vega-scale "^7.1.1" + vega-util "^1.15.2" -vega-runtime@^6.1.0, vega-runtime@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/vega-runtime/-/vega-runtime-6.1.0.tgz#7b3016e616bcea779f971e242065b03e8d3ea6b5" - integrity sha512-wKzymOtUsselAIJZbiC/88zVgeuhB1lHZTdPN7IrB2o1qgxF50DdDa7eNUpKrkFJ2DK6gCJ8JlqLtM3QVr3iXQ== +vega-projection@^1.4.5, vega-projection@~1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/vega-projection/-/vega-projection-1.4.5.tgz#020cb646b4eaae535359da25f4f48eef8d324af2" + integrity sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag== dependencies: - vega-dataflow "^5.7.0" - vega-util "^1.14.0" + d3-geo "^2.0.1" + d3-geo-projection "^3.0.0" -vega-scale@^7.0.0, vega-scale@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/vega-scale/-/vega-scale-7.0.0.tgz#0101802c6da29e2e903887160a269d57d6da479e" - integrity sha512-3oQAQYLRk+PIs6aF6kdb7tbhm5IpxNiwdFVM9fNS+SSsii6v8kFC681EuUMqLVZOHELiklWIE1rZIHaB5dNRXg== +vega-regression@~1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/vega-regression/-/vega-regression-1.0.9.tgz#f33da47fe457e03ad134782c11414bcef7b1da82" + integrity sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA== dependencies: - d3-array "^2.4.0" - d3-interpolate "^1.4.0" - d3-scale "^3.2.1" - vega-time "^2.0.0" - vega-util "^1.14.0" + d3-array "^2.7.1" + vega-dataflow "^5.7.3" + vega-statistics "^1.7.9" + vega-util "^1.15.2" -vega-scenegraph@^4.8.0, vega-scenegraph@^4.8.3, vega-scenegraph@~4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/vega-scenegraph/-/vega-scenegraph-4.8.3.tgz#11b557019175ec5ddc258c3a5eb7371e64cec5e1" - integrity sha512-2GznqXm/py7/XX9juohFbLYQTKxHY5VNRZLHc0bL35Nd7lShKeOlHY9uVkHw2FoLLCz78UcXFminWM8lddvGxw== +vega-runtime@^6.1.3, vega-runtime@~6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/vega-runtime/-/vega-runtime-6.1.3.tgz#01e18246f7a80cee034a96017ac30113b92c4034" + integrity sha512-gE+sO2IfxMUpV0RkFeQVnHdmPy3K7LjHakISZgUGsDI/ZFs9y+HhBf8KTGSL5pcZPtQsZh3GBQ0UonqL1mp9PA== dependencies: - d3-path "^1.0.9" - d3-shape "^1.3.7" - vega-canvas "^1.2.2" - vega-loader "^4.3.0" - vega-scale "^7.0.0" - vega-util "^1.14.0" + vega-dataflow "^5.7.3" + vega-util "^1.15.2" -vega-schema-url-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vega-schema-url-parser/-/vega-schema-url-parser-1.1.0.tgz#39168ec04e5468ce278a06c16ec0d126035a85b5" - integrity sha512-Tc85J2ofMZZOsxiqDM9sbvfsa+Vdo3GwNLjEEsPOsCDeYqsUHKAlc1IpbbhPLZ6jusyM9Lk0e1izF64GGklFDg== +vega-scale@^7.0.3, vega-scale@^7.1.1, vega-scale@~7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/vega-scale/-/vega-scale-7.1.1.tgz#b69a38d1980f6fc1093390f796e556be63fdc808" + integrity sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA== + dependencies: + d3-array "^2.7.1" + d3-interpolate "^2.0.1" + d3-scale "^3.2.2" + vega-time "^2.0.4" + vega-util "^1.15.2" + +vega-scenegraph@^4.9.2, vega-scenegraph@~4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/vega-scenegraph/-/vega-scenegraph-4.9.2.tgz#83b1dbc34a9ab5595c74d547d6d95849d74451ed" + integrity sha512-epm1CxcB8AucXQlSDeFnmzy0FCj+HV2k9R6ch2lfLRln5lPLEfgJWgFcFhVf5jyheY0FSeHH52Q5zQn1vYI1Ow== + dependencies: + d3-path "^2.0.0" + d3-shape "^2.0.0" + vega-canvas "^1.2.5" + vega-loader "^4.3.3" + vega-scale "^7.1.1" + vega-util "^1.15.2" + +vega-schema-url-parser@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vega-schema-url-parser/-/vega-schema-url-parser-2.1.0.tgz#847f9cf9f1624f36f8a51abc1adb41ebc6673cb4" + integrity sha512-JHT1PfOyVzOohj89uNunLPirs05Nf59isPT5gnwIkJph96rRgTIBJE7l7yLqndd7fLjr3P8JXHGAryRp74sCaQ== -vega-selections@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/vega-selections/-/vega-selections-5.1.1.tgz#5ea3931bbf7bc13f2ab7c5c5ebf39aed98e4c114" - integrity sha512-ztZUMfDicuIGJHZimSdVvMGzMvaa37ICzUHHvwxS51OhYv096dzKgoSypjx+tsmR7wnhY7ZL+iQgpT1/O29jlA== +vega-selections@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/vega-selections/-/vega-selections-5.1.4.tgz#cc086fac5b4e646f9f1e000777f8786782d8516a" + integrity sha512-L7CHwcIjVf90GoW2tS2x5O496O5Joaerp5A1KM6VJ1uo4z6KfqxY6M/328a/uaAs0LC5qbQgXT3htFbtUrPW/A== dependencies: - vega-expression "^2.6.4" - vega-util "^1.13.2" + vega-expression "^3.0.0" + vega-util "^1.15.2" vega-spec-injector@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/vega-spec-injector/-/vega-spec-injector-0.0.2.tgz#f1d990109dd9d845c524738f818baa4b72a60ca6" integrity sha512-wOMMqmpssn0/ZFPW7wl1v26vbseRX7zHPWzEyS9TwNXTRCu1TcjIBIR+X23lCWocxhoBqFxmqyn8UowMhlGtAg== -vega-statistics@^1.7.4, vega-statistics@^1.7.5, vega-statistics@~1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/vega-statistics/-/vega-statistics-1.7.6.tgz#6f920c83adbec9a25087ca60c41af272838f85bd" - integrity sha512-w6z5t4p1zYNSvsg3lln4TZakxXlH/tM0w5WAP1EXLYrCYRw0F/SvxqLQ+WqEZVnI/WGQDq2v5xMAn0WvHJ/kUg== +vega-statistics@^1.7.9, vega-statistics@~1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/vega-statistics/-/vega-statistics-1.7.9.tgz#feec01d463e1b50593d890d20631f72138fcb65d" + integrity sha512-T0sd2Z08k/mHxr1Vb4ajLWytPluLFYnsYqyk4SIS5czzUs4errpP2gUu63QJ0B7CKNu33vnS9WdOMOo/Eprr/Q== dependencies: - d3-array "^2.4.0" + d3-array "^2.7.1" -vega-time@^2.0.0, vega-time@^2.0.1, vega-time@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vega-time/-/vega-time-2.0.1.tgz#2a91c3acafd091e6724063dea26e4b3fe6061d2f" - integrity sha512-Ij0gmABKDRKAMUTh/1AGSSkU6ocWiteLkIK/cmcnt98u8LiuVcFT5w7gusd0+ibO9EooeMKazn5xPmjvQs0qEg== +vega-time@^2.0.3, vega-time@^2.0.4, vega-time@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vega-time/-/vega-time-2.0.4.tgz#ff308358a831de927caa44e281cdc96f0863ba08" + integrity sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q== dependencies: - d3-array "^2.4.0" - d3-time "^1.1.0" - vega-util "^1.14.0" + d3-array "^2.7.1" + d3-time "^2.0.0" + vega-util "^1.15.2" -vega-tooltip@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/vega-tooltip/-/vega-tooltip-0.12.0.tgz#014b21b08ea5fe14eb59c9b6643614c77a3b3e47" - integrity sha512-0a1gYQ5NjdVxzSm8ameZGnSocDAW9lB3h6e2Us5L2oTlU6tYI6et1+7qU1yRCycBuUQ/oAUsNbeINVwvsV9UIg== +vega-tooltip@^0.24.2: + version "0.24.2" + resolved "https://registry.yarnpkg.com/vega-tooltip/-/vega-tooltip-0.24.2.tgz#da55a171a96ea48a8ff135a728622e1cbb1152af" + integrity sha512-b7IeYQl/piNVsMmTliOgTnwSOhBs67KqoZ9UzP1I3XpH7TKbSuc3YHA7b1CSxkRR0hHKdradby4UI8c9rdH74w== dependencies: - vega-util "^1.7.0" + vega-util "^1.15.2" -vega-transforms@~4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/vega-transforms/-/vega-transforms-4.9.0.tgz#272be37adb8565633ccde68f64079fb5029a8ac9" - integrity sha512-xsgvkHsyKgEWdCB86DVts2Zu6fJ+cGjpc56MpcCWPArNuhcUSugivIoTAFAh8w7QempQBsAtnPrnbaytMYOJ8w== +vega-transforms@~4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/vega-transforms/-/vega-transforms-4.9.3.tgz#40e5234b956a68eaa03eedf489ed03293075bbfb" + integrity sha512-PdqQd5oPlRyD405M2w+Sz9Bo+i7Rwi8o03SVK7RaeQsJC2FffKGJ6acIaSEgOq+yD1Q2k/1SePmCXcmLUlIiEA== dependencies: - d3-array "^2.4.0" - vega-dataflow "^5.7.0" - vega-statistics "^1.7.5" - vega-time "^2.0.1" - vega-util "^1.14.0" + d3-array "^2.7.1" + vega-dataflow "^5.7.3" + vega-statistics "^1.7.9" + vega-time "^2.0.4" + vega-util "^1.15.2" -vega-typings@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/vega-typings/-/vega-typings-0.18.0.tgz#c8f66406cae8418eafed6fbc4c7c63f88eee670d" - integrity sha512-uMSS7EEP8Q2gg4dN7D2xhi4S+dp/IQGTQp3VgieJx8ki8mrm0N43pdUC14nNYTtiUDxDdmup5nyj6JHuboKUmg== +vega-typings@~0.19.0: + version "0.19.1" + resolved "https://registry.yarnpkg.com/vega-typings/-/vega-typings-0.19.1.tgz#a53949143fa37721ae7bd146bbb9add5c78aca52" + integrity sha512-OSyNYwMJ8FayTTNU/gohprbt1EFQBpoiMPP9p2vqo1O9z45XVnotQ92jYHAhraI6gWiMIIfo4OjPbSe/GX7etg== dependencies: - vega-util "^1.14.0" + vega-util "^1.15.2" -vega-util@^1.13.2, vega-util@^1.14.0, vega-util@^1.7.0, vega-util@~1.14.0, vega-util@~1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/vega-util/-/vega-util-1.14.1.tgz#0fb614277764f98738ba0b80e5cdfbe663426183" - integrity sha512-pSKJ8OCkgfgHZDTljyj+gmGltgulceWbk1BV6LWrXqp6P3J8qPA/oZA8+a93YNApYxXZ3yzIVUDOo5O27xk0jw== +vega-util@^1.15.2, vega-util@~1.15.2, vega-util@~1.15.3: + version "1.15.3" + resolved "https://registry.yarnpkg.com/vega-util/-/vega-util-1.15.3.tgz#b42b4fb11f32fbb57fb5cd116d4d3e1827d177aa" + integrity sha512-NCbfCPMVgdP4geLrFtCDN9PTEXrgZgJBBLvpyos7HGv2xSe9bGjDCysv6qcueHrc1myEeCQzrHDFaShny6wXDg== -vega-view-transforms@~4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/vega-view-transforms/-/vega-view-transforms-4.5.5.tgz#b934da0fc1b41c10039300c036cfa38a56c83631" - integrity sha512-HFTA6j2zFKRlfBlS6b9tmLLDNt7g78ZoyKFAT9fCm3X0KLT6FTn13PiiB4KppMg40nwgm0c2KUQmjnC6fGgIdQ== +vega-view-transforms@~4.5.8: + version "4.5.8" + resolved "https://registry.yarnpkg.com/vega-view-transforms/-/vega-view-transforms-4.5.8.tgz#c8dc42c3c7d4aa725d40b8775180c9f23bc98f4e" + integrity sha512-966m7zbzvItBL8rwmF2nKG14rBp7q+3sLCKWeMSUrxoG+M15Smg5gWEGgwTG3A/RwzrZ7rDX5M1sRaAngRH25g== dependencies: - vega-dataflow "^5.6.0" - vega-scenegraph "^4.8.0" - vega-util "^1.14.0" + vega-dataflow "^5.7.3" + vega-scenegraph "^4.9.2" + vega-util "^1.15.2" -vega-view@~5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/vega-view/-/vega-view-5.8.0.tgz#64ff5acd32855c16b4799cdb4b657d9f3e15b7f9" - integrity sha512-0H+m0olEYpadUq+3z35t6g6ozbr9AzpGqg8KOklHpe+rSmmaaItEF8B+eGr3Ut5i/+u0c7PKa6jEdVG61xbpGA== - dependencies: - d3-array "^2.4.0" - d3-timer "^1.0.10" - vega-dataflow "^5.7.0" - vega-format "^1.0.1" - vega-functions "^5.7.1" - vega-runtime "^6.1.0" - vega-scenegraph "^4.8.3" - vega-util "^1.14.0" - -vega-voronoi@~4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/vega-voronoi/-/vega-voronoi-4.1.2.tgz#459b78f5191fb707e94d9afa7d8c1a68ad9aec7a" - integrity sha512-XXp2UChi4/6jkEqWkLFbjDBVLMizQICWDv4RUkfMeDNhWmhEY/3kPHCU6taqfTVkbxfA7aN20ivbakJzoywiAQ== - dependencies: - d3-delaunay "^5.2.1" - vega-dataflow "^5.5.1" - vega-util "^1.13.2" - -vega-wordcloud@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vega-wordcloud/-/vega-wordcloud-4.1.0.tgz#edf020a99378eb88109cb9ac4702fec0e0ac8cdd" - integrity sha512-WiISiNlHdbTL6QsnxyzxbniUgcPmjzwdwZzu6clQSHXNRz9kThCPhXOyLwYdbFV+9sjd4sJlW0YOaCcx7wMT2Q== +vega-view@~5.9.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/vega-view/-/vega-view-5.9.0.tgz#ee6d5abd66d2503dec71e05e7ca8cf813465ae3f" + integrity sha512-HqRFuqO2OwoPHHK+CVt8vB8fu2L8GjQerLpmEpglWtCPDns5+gn5B6F7M8Ah8v24WlfqW7cLrY81t9OloPZOyw== + dependencies: + d3-array "^2.7.1" + d3-timer "^2.0.0" + vega-dataflow "^5.7.3" + vega-format "^1.0.4" + vega-functions "^5.8.0" + vega-runtime "^6.1.3" + vega-scenegraph "^4.9.2" + vega-util "^1.15.2" + +vega-voronoi@~4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/vega-voronoi/-/vega-voronoi-4.1.5.tgz#e7af574d4c27fd9cb12d70082f12c6f59b80b445" + integrity sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA== dependencies: - vega-canvas "^1.2.2" - vega-dataflow "^5.6.0" - vega-scale "^7.0.0" - vega-statistics "^1.7.5" - vega-util "^1.14.0" + d3-delaunay "^5.3.0" + vega-dataflow "^5.7.3" + vega-util "^1.15.2" -vega@^5.13.0: - version "5.13.0" - resolved "https://registry.yarnpkg.com/vega/-/vega-5.13.0.tgz#12253667d203e8f82fe317014084c55b479057ee" - integrity sha512-3X6ptCqQrfYg1xdy6rCkywKXOiIQIIJBFESV5JJOXaqm1ye9LRD3NOmZukqenLJXlg6aaPbP6kFFqpjBzmAefg== - dependencies: - vega-crossfilter "~4.0.2" - vega-dataflow "~5.7.0" - vega-encode "~4.8.0" - vega-event-selector "~2.0.3" - vega-expression "~2.6.5" - vega-force "~4.0.4" - vega-format "~1.0.1" - vega-functions "~5.7.1" - vega-geo "~4.3.4" - vega-hierarchy "~4.0.6" - vega-loader "~4.3.0" - vega-parser "~6.0.2" - vega-projection "~1.4.2" - vega-regression "~1.0.6" - vega-runtime "~6.1.0" - vega-scale "~7.0.0" - vega-scenegraph "~4.8.3" - vega-statistics "~1.7.6" - vega-time "~2.0.1" - vega-transforms "~4.9.0" - vega-typings "~0.18.0" - vega-util "~1.14.1" - vega-view "~5.8.0" - vega-view-transforms "~4.5.5" - vega-voronoi "~4.1.2" - vega-wordcloud "~4.1.0" +vega-wordcloud@~4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/vega-wordcloud/-/vega-wordcloud-4.1.3.tgz#ce90900333f4e0d3ee706ba4f36bb0905f8b4a9f" + integrity sha512-is4zYn9FMAyp9T4SAcz2P/U/wqc0Lx3P5YtpWKCbOH02a05vHjUQrQ2TTPOuvmMfAEDCSKvbMSQIJMOE018lJA== + dependencies: + vega-canvas "^1.2.5" + vega-dataflow "^5.7.3" + vega-scale "^7.1.1" + vega-statistics "^1.7.9" + vega-util "^1.15.2" + +vega@^5.16.1: + version "5.16.1" + resolved "https://registry.yarnpkg.com/vega/-/vega-5.16.1.tgz#76a794c28118b685e8578a8f9944c5e239dbe1cd" + integrity sha512-bqovD23iKvIgFnTkP9WqapJbaejhgdED6YjAVWIwG8hsDq5Lf/ZNstJJWPiSDu3j785GQU/o6ZU3RXywdH4dJA== + dependencies: + vega-crossfilter "~4.0.5" + vega-dataflow "~5.7.3" + vega-encode "~4.8.3" + vega-event-selector "~2.0.6" + vega-expression "~3.0.0" + vega-force "~4.0.7" + vega-format "~1.0.4" + vega-functions "~5.8.0" + vega-geo "~4.3.7" + vega-hierarchy "~4.0.9" + vega-label "~1.0.0" + vega-loader "~4.3.3" + vega-parser "~6.1.0" + vega-projection "~1.4.5" + vega-regression "~1.0.9" + vega-runtime "~6.1.3" + vega-scale "~7.1.1" + vega-scenegraph "~4.9.2" + vega-statistics "~1.7.9" + vega-time "~2.0.4" + vega-transforms "~4.9.3" + vega-typings "~0.19.0" + vega-util "~1.15.2" + vega-view "~5.9.0" + vega-view-transforms "~4.5.8" + vega-voronoi "~4.1.5" + vega-wordcloud "~4.1.3" venn.js@0.2.20: version "0.2.20" @@ -31655,7 +31734,7 @@ yargs-parser@^10.0.0: dependencies: camelcase "^4.1.0" -yargs-parser@^18.1.1, yargs-parser@^18.1.2, yargs-parser@^18.1.3: +yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -31727,7 +31806,7 @@ yargs@^15.0.2, yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.0.3: +yargs@^16.0.3, yargs@~16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.0.3.tgz#7a919b9e43c90f80d4a142a89795e85399a7e54c" integrity sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA== @@ -31772,23 +31851,6 @@ yargs@^7.0.0, yargs@^7.1.0: y18n "^3.2.1" yargs-parser "5.0.0-security.0" -yargs@~15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 4306082af50df4f7619ca30647e86a32e8d6d784 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Wed, 30 Sep 2020 15:10:01 +0300 Subject: [PATCH 110/119] Invalid `searchSourceJSON` causes saved object migration to fail (#78535) * Invalid `searchSourceJSON` causes saved object migration to fail Closes: #78530 * 7.8.2 -> 7.9.3 * return migration into 6.7.2 --- .../saved_objects/dashboard_migrations.ts | 1 + .../migrate_match_all_query.test.ts | 17 ++++ .../saved_objects/migrate_match_all_query.ts | 7 ++ .../saved_objects/search_migrations.test.ts | 85 ++++++++++++------ .../server/saved_objects/search_migrations.ts | 8 ++ .../visualization_migrations.test.ts | 86 +++++++++++++------ .../saved_objects/visualization_migrations.ts | 8 ++ 7 files changed, 160 insertions(+), 52 deletions(-) diff --git a/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts b/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts index 1e8356a1ef100..ac91c5a92048a 100644 --- a/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts +++ b/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts @@ -114,4 +114,5 @@ export const dashboardSavedObjectTypeMigrations = { '6.7.2': flow(migrateMatchAllQuery), '7.0.0': flow(migrations700), '7.3.0': flow(migrations730), + '7.9.3': flow(migrateMatchAllQuery), }; diff --git a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.test.ts b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.test.ts index 8a91c422eed3d..ce7a5ffcd9fe1 100644 --- a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.test.ts +++ b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.test.ts @@ -49,4 +49,21 @@ describe('migrate match_all query', () => { }, }); }); + + it('should return original doc if searchSourceJSON cannot be parsed', () => { + const migratedDoc = migrateMatchAllQuery( + { + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + } as Parameters[0], + savedObjectMigrationContext + ); + + expect(migratedDoc).toEqual({ + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + }); + }); }); diff --git a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts index 452d68aa92394..3d7aadab5602c 100644 --- a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts +++ b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts @@ -21,6 +21,12 @@ import { SavedObjectMigrationFn } from 'kibana/server'; import { get } from 'lodash'; import { DEFAULT_QUERY_LANGUAGE } from '../../../data/common'; +/** + * This migration script is related to: + * @link https://github.com/elastic/kibana/pull/62194 + * @link https://github.com/elastic/kibana/pull/14644 + * This is only a problem when you import an object from 5.x into 6.x but to be sure that all saved objects migrated we should execute it twice in 6.7.2 and 7.9.3 + */ export const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); @@ -31,6 +37,7 @@ export const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { searchSource = JSON.parse(searchSourceJSON); } catch (e) { // Let it go, the data is invalid and we'll leave it as is + return doc; } if (searchSource.query?.match_all) { diff --git a/src/plugins/discover/server/saved_objects/search_migrations.test.ts b/src/plugins/discover/server/saved_objects/search_migrations.test.ts index babd25c03dbb2..3324a2d93f5ad 100644 --- a/src/plugins/discover/server/saved_objects/search_migrations.test.ts +++ b/src/plugins/discover/server/saved_objects/search_migrations.test.ts @@ -22,36 +22,61 @@ import { searchMigrations } from './search_migrations'; const savedObjectMigrationContext = (null as unknown) as SavedObjectMigrationContext; +const testMigrateMatchAllQuery = (migrationFn: Function) => { + it('should migrate obsolete match_all query', () => { + const migratedDoc = migrationFn( + { + type: 'search', + attributes: { + kibanaSavedObjectMeta: { + searchSourceJSON: JSON.stringify({ + query: { + match_all: {}, + }, + }), + }, + }, + }, + savedObjectMigrationContext + ); + const migratedSearchSource = JSON.parse( + migratedDoc.attributes.kibanaSavedObjectMeta.searchSourceJSON + ); + + expect(migratedSearchSource).toEqual({ + query: { + query: '', + language: 'kuery', + }, + }); + }); + + it('should return original doc if searchSourceJSON cannot be parsed', () => { + const migratedDoc = migrationFn( + { + type: 'search', + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + }, + savedObjectMigrationContext + ); + + expect(migratedDoc).toEqual({ + type: 'search', + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + }); + }); +}; + describe('migration search', () => { describe('6.7.2', () => { const migrationFn = searchMigrations['6.7.2']; - it('should migrate obsolete match_all query', () => { - const migratedDoc = migrationFn( - { - type: 'search', - attributes: { - kibanaSavedObjectMeta: { - searchSourceJSON: JSON.stringify({ - query: { - match_all: {}, - }, - }), - }, - }, - }, - savedObjectMigrationContext - ); - const migratedSearchSource = JSON.parse( - migratedDoc.attributes.kibanaSavedObjectMeta.searchSourceJSON - ); - - expect(migratedSearchSource).toEqual({ - query: { - query: '', - language: 'kuery', - }, - }); + describe('migrateMatchAllQuery', () => { + testMigrateMatchAllQuery(migrationFn); }); }); @@ -328,4 +353,12 @@ Object { expect(migratedDoc).toEqual(doc); }); }); + + describe('7.9.3', () => { + const migrationFn = searchMigrations['7.9.3']; + + describe('migrateMatchAllQuery', () => { + testMigrateMatchAllQuery(migrationFn); + }); + }); }); diff --git a/src/plugins/discover/server/saved_objects/search_migrations.ts b/src/plugins/discover/server/saved_objects/search_migrations.ts index 0302159c43c56..fdb086bd17a2d 100644 --- a/src/plugins/discover/server/saved_objects/search_migrations.ts +++ b/src/plugins/discover/server/saved_objects/search_migrations.ts @@ -21,6 +21,12 @@ import { flow, get } from 'lodash'; import { SavedObjectMigrationFn } from 'kibana/server'; import { DEFAULT_QUERY_LANGUAGE } from '../../../data/common'; +/** + * This migration script is related to: + * @link https://github.com/elastic/kibana/pull/62194 + * @link https://github.com/elastic/kibana/pull/14644 + * This is only a problem when you import an object from 5.x into 6.x but to be sure that all saved objects migrated we should execute it twice in 6.7.2 and 7.9.3 + */ const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); @@ -31,6 +37,7 @@ const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { searchSource = JSON.parse(searchSourceJSON); } catch (e) { // Let it go, the data is invalid and we'll leave it as is + return doc; } if (searchSource.query?.match_all) { @@ -125,4 +132,5 @@ export const searchMigrations = { '6.7.2': flow(migrateMatchAllQuery), '7.0.0': flow(setNewReferences), '7.4.0': flow(migrateSearchSortToNestedArray), + '7.9.3': flow(migrateMatchAllQuery), }; diff --git a/src/plugins/visualizations/server/saved_objects/visualization_migrations.test.ts b/src/plugins/visualizations/server/saved_objects/visualization_migrations.test.ts index dc8bae69ca377..c4ee92194ec36 100644 --- a/src/plugins/visualizations/server/saved_objects/visualization_migrations.test.ts +++ b/src/plugins/visualizations/server/saved_objects/visualization_migrations.test.ts @@ -22,6 +22,50 @@ import { SavedObjectMigrationContext, SavedObjectMigrationFn } from 'kibana/serv const savedObjectMigrationContext = (null as unknown) as SavedObjectMigrationContext; +const testMigrateMatchAllQuery = (migrate: Function) => { + it('should migrate obsolete match_all query', () => { + const migratedDoc = migrate({ + type: 'area', + attributes: { + kibanaSavedObjectMeta: { + searchSourceJSON: JSON.stringify({ + query: { + match_all: {}, + }, + }), + }, + }, + }); + + const migratedSearchSource = JSON.parse( + migratedDoc.attributes.kibanaSavedObjectMeta.searchSourceJSON + ); + + expect(migratedSearchSource).toEqual({ + query: { + query: '', + language: 'kuery', + }, + }); + }); + + it('should return original doc if searchSourceJSON cannot be parsed', () => { + const migratedDoc = migrate({ + type: 'area', + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + }); + + expect(migratedDoc).toEqual({ + type: 'area', + attributes: { + kibanaSavedObjectMeta: 'kibanaSavedObjectMeta', + }, + }); + }); +}; + describe('migration visualization', () => { describe('6.7.2', () => { const migrate = (doc: any) => @@ -31,6 +75,10 @@ describe('migration visualization', () => { ); let doc: any; + describe('migrateMatchAllQuery', () => { + testMigrateMatchAllQuery(migrate); + }); + describe('date histogram time zone removal', () => { beforeEach(() => { doc = { @@ -150,32 +198,6 @@ describe('migration visualization', () => { expect(aggs[3]).not.toHaveProperty('params.customBucket.params.time_zone'); expect(aggs[2]).not.toHaveProperty('params.time_zone'); }); - - it('should migrate obsolete match_all query', () => { - const migratedDoc = migrate({ - ...doc, - attributes: { - ...doc.attributes, - kibanaSavedObjectMeta: { - searchSourceJSON: JSON.stringify({ - query: { - match_all: {}, - }, - }), - }, - }, - }); - const migratedSearchSource = JSON.parse( - migratedDoc.attributes.kibanaSavedObjectMeta.searchSourceJSON - ); - - expect(migratedSearchSource).toEqual({ - query: { - query: '', - language: 'kuery', - }, - }); - }); }); }); @@ -1487,6 +1509,18 @@ describe('migration visualization', () => { }); }); + describe('7.9.3', () => { + const migrate = (doc: any) => + visualizationSavedObjectTypeMigrations['7.9.3']( + doc as Parameters[0], + savedObjectMigrationContext + ); + + describe('migrateMatchAllQuery', () => { + testMigrateMatchAllQuery(migrate); + }); + }); + describe('7.8.0 tsvb split_color_mode', () => { const migrate = (doc: any) => visualizationSavedObjectTypeMigrations['7.8.0']( diff --git a/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts b/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts index 170d7c460b06a..fbeefacf6035f 100644 --- a/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts +++ b/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts @@ -655,6 +655,12 @@ const migrateTableSplits: SavedObjectMigrationFn = (doc) => { } }; +/** + * This migration script is related to: + * @link https://github.com/elastic/kibana/pull/62194 + * @link https://github.com/elastic/kibana/pull/14644 + * This is only a problem when you import an object from 5.x into 6.x but to be sure that all saved objects migrated we should execute it twice in 6.7.2 and 7.9.3 + */ const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); @@ -665,6 +671,7 @@ const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { searchSource = JSON.parse(searchSourceJSON); } catch (e) { // Let it go, the data is invalid and we'll leave it as is + return doc; } if (searchSource.query?.match_all) { @@ -781,5 +788,6 @@ export const visualizationSavedObjectTypeMigrations = { '7.4.2': flow(transformSplitFiltersStringToQueryObject), '7.7.0': flow(migrateOperatorKeyTypo, migrateSplitByChartRow), '7.8.0': flow(migrateTsvbDefaultColorPalettes), + '7.9.3': flow(migrateMatchAllQuery), '7.10.0': flow(migrateFilterRatioQuery, removeTSVBSearchSource), }; From eebe4ad648e8f11d8e97cef20e64f13b754a1134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Wed, 30 Sep 2020 13:16:16 +0100 Subject: [PATCH 111/119] [Observability] Kibana nav when docked overlaps the content of the pages. (#78593) * adding padding left * adding space left to appSection --- .../public/components/app/header/index.tsx | 2 +- .../public/components/app/layout/with_header.tsx | 4 ---- .../observability/public/pages/landing/index.tsx | 5 +++-- .../observability/public/pages/landing/styles.scss | 12 ++++++++++++ 4 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 x-pack/plugins/observability/public/pages/landing/styles.scss diff --git a/x-pack/plugins/observability/public/components/app/header/index.tsx b/x-pack/plugins/observability/public/components/app/header/index.tsx index e8bd229265e37..543ca2c3b3232 100644 --- a/x-pack/plugins/observability/public/components/app/header/index.tsx +++ b/x-pack/plugins/observability/public/components/app/header/index.tsx @@ -27,7 +27,7 @@ const Wrapper = styled.div<{ restrictWidth?: number }>` max-width: ${(props) => `${props.restrictWidth}px`}; margin: 0 auto; overflow: hidden; - padding: ${(props) => (props.restrictWidth ? 0 : '0 24px')}; + padding: 0 16px; `; interface Props { diff --git a/x-pack/plugins/observability/public/components/app/layout/with_header.tsx b/x-pack/plugins/observability/public/components/app/layout/with_header.tsx index a77487e1244e6..86a8e9089e035 100644 --- a/x-pack/plugins/observability/public/components/app/layout/with_header.tsx +++ b/x-pack/plugins/observability/public/components/app/layout/with_header.tsx @@ -9,12 +9,8 @@ import React from 'react'; import styled from 'styled-components'; import { Header } from '../header/index'; -const getPaddingSize = (props: EuiPageProps) => (props.restrictWidth ? 0 : '24px'); - const Page = styled(EuiPage)` background: transparent; - padding-right: ${getPaddingSize}; - padding-left: ${getPaddingSize}; `; const Container = styled.div<{ color?: string }>` diff --git a/x-pack/plugins/observability/public/pages/landing/index.tsx b/x-pack/plugins/observability/public/pages/landing/index.tsx index 66a52091ae04d..24620f641c204 100644 --- a/x-pack/plugins/observability/public/pages/landing/index.tsx +++ b/x-pack/plugins/observability/public/pages/landing/index.tsx @@ -23,6 +23,7 @@ import { WithHeaderLayout } from '../../components/app/layout/with_header'; import { usePluginContext } from '../../hooks/use_plugin_context'; import { useTrackPageview } from '../../hooks/use_track_metric'; import { appsSection } from '../home/section'; +import './styles.scss'; const EuiCardWithoutPadding = styled(EuiCard)` padding: 0; @@ -43,7 +44,7 @@ export function LandingPage() { > {/* title and description */} - +

{i18n.translate('xpack.observability.home.sectionTitle', { @@ -65,7 +66,7 @@ export function LandingPage() { - + {appsSection.map((app) => ( Date: Wed, 30 Sep 2020 14:16:51 +0200 Subject: [PATCH 112/119] [UiActions] Don't throw an error if there are no compatible actions to execute (#78917) --- .../public/tests/execute_trigger_actions.test.ts | 12 +++++------- .../ui_actions/public/triggers/trigger_internal.ts | 6 ------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts index 81120990001e3..af2510467ba87 100644 --- a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts +++ b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts @@ -22,7 +22,7 @@ import { openContextMenu } from '../context_menu'; import { uiActionsPluginMock } from '../mocks'; import { Trigger } from '../triggers'; import { TriggerId, ActionType } from '../types'; -import { wait } from '@testing-library/dom'; +import { waitFor } from '@testing-library/dom'; jest.mock('../context_menu'); @@ -85,7 +85,7 @@ test('executes a single action mapped to a trigger', async () => { expect(executeFn).toBeCalledWith(expect.objectContaining(context)); }); -test('throws an error if there are no compatible actions to execute', async () => { +test("doesn't throw an error if there are no compatible actions to execute", async () => { const { setup, doStart } = uiActions; const trigger: Trigger = { id: 'MY-TRIGGER' as TriggerId, @@ -98,9 +98,7 @@ test('throws an error if there are no compatible actions to execute', async () = const start = doStart(); await expect( start.executeTriggerActions('MY-TRIGGER' as TriggerId, context) - ).rejects.toMatchObject( - new Error('No compatible actions found to execute for trigger [triggerId = MY-TRIGGER].') - ); + ).resolves.toBeUndefined(); }); test('does not execute an incompatible action', async () => { @@ -149,7 +147,7 @@ test('shows a context menu when more than one action is mapped to a trigger', as jest.runAllTimers(); - await wait(() => { + await waitFor(() => { expect(executeFn).toBeCalledTimes(0); expect(openContextMenu).toHaveBeenCalledTimes(1); }); @@ -197,7 +195,7 @@ test("doesn't show a context menu for auto executable actions", async () => { jest.runAllTimers(); - await wait(() => { + await waitFor(() => { expect(executeFn).toBeCalledTimes(2); expect(openContextMenu).toHaveBeenCalledTimes(0); }); diff --git a/src/plugins/ui_actions/public/triggers/trigger_internal.ts b/src/plugins/ui_actions/public/triggers/trigger_internal.ts index c91468d31add5..c766b5c798ecb 100644 --- a/src/plugins/ui_actions/public/triggers/trigger_internal.ts +++ b/src/plugins/ui_actions/public/triggers/trigger_internal.ts @@ -35,12 +35,6 @@ export class TriggerInternal { const triggerId = this.trigger.id; const actions = await this.service.getTriggerCompatibleActions!(triggerId, context); - if (!actions.length) { - throw new Error( - `No compatible actions found to execute for trigger [triggerId = ${triggerId}].` - ); - } - await Promise.all([ actions.map((action) => this.service.executionService.execute({ From caa260527bf795f1aa0d26854cb34dbc089749f8 Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Wed, 30 Sep 2020 08:38:02 -0400 Subject: [PATCH 113/119] [Ingest pipelines] Address copy review feedback (#78796) --- .../processor_form/processor_output/processor_output.tsx | 5 ++--- .../components/processors_empty_prompt.tsx | 2 +- .../components/processors_header.tsx | 2 +- .../add_documents_accordion/add_documents_accordion.tsx | 4 ++-- .../tab_documents/reset_documents_modal.tsx | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processor_output/processor_output.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processor_output/processor_output.tsx index bd0ce6ca2cd52..f6b13c2ba7228 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processor_output/processor_output.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processor_output/processor_output.tsx @@ -32,8 +32,7 @@ export interface Props { const i18nTexts = { tabDescription: i18n.translate('xpack.ingestPipelines.processorOutput.descriptionText', { - defaultMessage: - 'View how the processor affects the ingest document as it passes through the pipeline.', + defaultMessage: 'Preview changes to the test document.', }), skippedCalloutTitle: i18n.translate('xpack.ingestPipelines.processorOutput.skippedCalloutTitle', { defaultMessage: 'The processor was not run.', @@ -68,7 +67,7 @@ const i18nTexts = { processorIgnoredErrorTitle: i18n.translate( 'xpack.ingestPipelines.processorOutput.ignoredErrorCodeBlockLabel', { - defaultMessage: 'There was an error that was ignored', + defaultMessage: 'There was an ignored error', } ), documentsDropdownLabel: i18n.translate( diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_empty_prompt.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_empty_prompt.tsx index 3750ddda25d10..58d2df518f547 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_empty_prompt.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_empty_prompt.tsx @@ -35,7 +35,7 @@ export const ProcessorsEmptyPrompt: FunctionComponent = ({ onLoadJson })

= ({ onLoadJson, hasProc Date: Wed, 30 Sep 2020 08:42:29 -0400 Subject: [PATCH 114/119] [Ingest pipelines] Update readmes (#78350) --- x-pack/plugins/ingest_pipelines/README.md | 81 ++++++++++++++++++- .../pipeline_processors_editor/README.md | 35 ++++++-- .../__jest__/test_pipeline.helpers.tsx | 12 +-- .../pipeline_processors_editor/index.ts | 8 +- 4 files changed, 110 insertions(+), 26 deletions(-) diff --git a/x-pack/plugins/ingest_pipelines/README.md b/x-pack/plugins/ingest_pipelines/README.md index a469511bdbbd2..00d4f5a91863d 100644 --- a/x-pack/plugins/ingest_pipelines/README.md +++ b/x-pack/plugins/ingest_pipelines/README.md @@ -11,7 +11,7 @@ It requires a Basic license and the following cluster privileges: `manage_pipeli ## Development -A new app called Ingest Node Pipelines is registered in the Management section and follows a typical CRUD UI pattern. The client-side portion of this app lives in [public/application](public/application) and uses endpoints registered in [server/routes/api](server/routes/api). +A new app called Ingest Node Pipelines is registered in the Management section and follows a typical CRUD UI pattern. The client-side portion of this app lives in [public/application](public/application) and uses endpoints registered in [server/routes/api](server/routes/api). For more information on the pipeline processors editor component, check out the [component readme](public/application/components/pipeline_processors_editor/README.md). See the [kibana contributing guide](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md) for instructions on setting up your development environment. @@ -19,6 +19,83 @@ See the [kibana contributing guide](https://github.com/elastic/kibana/blob/maste The app has the following test coverage: -- Complete API integration tests +- API integration tests - Smoke-level functional test - Client-integration tests + +### Quick steps for manual testing + +You can run the following request in Console to create an ingest node pipeline: + +``` +PUT _ingest/pipeline/test_pipeline +{ + "description": "_description", + "processors": [ + { + "set": { + "field": "field1", + "value": "value1" + } + }, + { + "rename": { + "field": "dont_exist", + "target_field": "field1", + "ignore_failure": true + } + }, + { + "rename": { + "field": "foofield", + "target_field": "new_field", + "on_failure": [ + { + "set": { + "field": "field2", + "value": "value2" + } + } + ] + } + }, + { + "drop": { + "if": "false" + } + }, + { + "drop": { + "if": "true" + } + } + ] +} +``` + +Then, go to the Ingest Node Pipelines UI to edit, delete, clone, or view details of the pipeline. + +To simulate a pipeline, go to the "Edit" page of your pipeline. Click the "Add documents" link under the "Processors" section. You may add the following sample documents to test the pipeline: + +``` +// The first document in this example should trigger the on_failure processor in the pipeline, while the second one should succeed. +[ + { + "_index": "my_index", + "_id": "id1", + "_source": { + "foo": "bar" + } + }, + { + "_index": "my_index", + "_id": "id2", + "_source": { + "foo": "baz", + "foofield": "bar" + } + } +] +``` + +Alternatively, you can add a document from an existing index, or create some sample data of your own. Afterward, click the "Run the pipeline" button to view the output. diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md index d29af67d3179c..4761bd9e6c70b 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md @@ -7,18 +7,37 @@ pipeline. ## Editor components -The top-level API consists of 3 pieces that enable the maximum amount -of flexibility for consuming code to determine overall layout. +The top-level API consists of two pieces: -- PipelineProcessorsEditorContext -- ProcessorsEditor -- GlobalOnFailureProcessorsEditor +- ProcessorsEditorContextProvider +- PipelineProcessorsEditor -The editor components must be wrapped inside of the context component +The editor component must be wrapped inside of the context component as this is where the shared processors state is contained. -## Load JSON button +Example usage from the [PipelineFormFields](../pipeline_form/pipeline_form_fields.tsx) component: -This component is totally standalone. It gives users a button that +``` + + + +``` + +The editor has a dependency on `KibanaContextProvider`, which is defined in the main app's `index.tsx` file. Note that the editor also relies on imports from `public/shared_imports.ts` and `common/types.ts`. + +### ProcessorsEditorContextProvider +This component manages state for the processors, as well as state for the test pipeline functionality. + +### PipelineProcessorsEditor +This component is responsible for building the layout of the processors editor. + +It contains the processor and on-failure processor editors. It also includes the following capabilities that are rendered within the processors header: + +- **Load JSON button:** This component gives users a button that presents a modal for loading a pipeline. It does some basic validation on the JSON to ensure that it is correct. +- **Test pipeline actions:** This component presents users with a toolbar to test a pipeline. It includes a flyout where users can add sample documents. It issues a request to simulate the pipeline and displays the output. Once the request is successful, a user can use the documents dropdown to view the results for a particular document. diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx index 7f1b203869c70..222e0a491e0d2 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/test_pipeline.helpers.tsx @@ -25,13 +25,7 @@ import { apiService, } from '../../../services'; -import { - ProcessorsEditorContextProvider, - Props, - GlobalOnFailureProcessorsEditor, - ProcessorsEditor, -} from '../'; -import { TestPipelineActions } from '../'; +import { ProcessorsEditorContextProvider, Props, PipelineProcessorsEditor } from '../'; import { initHttpRequests } from './http_requests.helpers'; @@ -105,9 +99,7 @@ const testBedSetup = registerTestBed( (props: Props) => ( - - - + ), diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts index ca5184da25a07..ae3dd9d673ebe 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts @@ -4,16 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -export { PipelineProcessorsContextProvider, Props } from './context'; - -export { ProcessorsEditorContextProvider } from './context'; - -export { ProcessorsEditor, GlobalOnFailureProcessorsEditor } from './editors'; +export { Props, ProcessorsEditorContextProvider } from './context'; export { OnUpdateHandlerArg, OnUpdateHandler } from './types'; export { SerializeResult } from './serialize'; -export { LoadFromJsonButton, OnDoneLoadJsonHandler, TestPipelineActions } from './components'; +export { OnDoneLoadJsonHandler } from './components'; export { PipelineProcessorsEditor } from './pipeline_processors_editor'; From ae8f8e1d108cafcd1ae701595b417a9486d9c547 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Wed, 30 Sep 2020 16:02:41 +0300 Subject: [PATCH 115/119] Add TS projects for src/plugins & x-pack/plugins (#78440) * bump query-string version to remove manual type definitions * remove manual type declaration * add kibana_utils tsconfig * add refs to kibana_utils tsconfig * add kibana_utils to the project list * add kibana_react project * add support for x-pack/tsconfig.refs.json * add ts project for x-pack licensing plugins * add glob for ts projects in src/plugins & x-pack/plugins * add refs to projects in examples * fix ref paths in x-pack/test * address mistic comments Co-authored-by: Elastic Machine --- examples/bfetch_explorer/tsconfig.json | 3 +- examples/embeddable_examples/tsconfig.json | 3 +- .../state_containers_examples/tsconfig.json | 4 ++- examples/ui_action_examples/tsconfig.json | 3 +- examples/ui_actions_explorer/tsconfig.json | 3 +- package.json | 2 +- src/dev/typescript/build_refs.ts | 29 +++++++++++++++---- src/dev/typescript/projects.ts | 10 +++++-- src/dev/typescript/run_type_check_cli.ts | 4 +-- src/plugins/kibana_react/kibana.json | 1 + src/plugins/kibana_react/tsconfig.json | 17 +++++++++++ src/plugins/kibana_utils/kibana.json | 1 + src/plugins/kibana_utils/tsconfig.json | 22 ++++++++++++++ test/tsconfig.json | 4 ++- tsconfig.json | 8 +++-- tsconfig.refs.json | 6 ++-- .../tsconfig.json | 4 ++- x-pack/package.json | 2 +- x-pack/plugins/licensing/tsconfig.json | 20 +++++++++++++ x-pack/plugins/transform/tsconfig.json | 3 -- x-pack/test/tsconfig.json | 5 +++- x-pack/tsconfig.json | 10 +++++-- x-pack/tsconfig.refs.json | 6 ++++ 23 files changed, 141 insertions(+), 29 deletions(-) create mode 100644 src/plugins/kibana_react/tsconfig.json create mode 100644 src/plugins/kibana_utils/tsconfig.json create mode 100644 x-pack/plugins/licensing/tsconfig.json delete mode 100644 x-pack/plugins/transform/tsconfig.json create mode 100644 x-pack/tsconfig.refs.json diff --git a/examples/bfetch_explorer/tsconfig.json b/examples/bfetch_explorer/tsconfig.json index 86b35c5e4943f..253fdd9ee6c89 100644 --- a/examples/bfetch_explorer/tsconfig.json +++ b/examples/bfetch_explorer/tsconfig.json @@ -13,6 +13,7 @@ ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/examples/embeddable_examples/tsconfig.json b/examples/embeddable_examples/tsconfig.json index 78098339c16f5..a922c6defcd4c 100644 --- a/examples/embeddable_examples/tsconfig.json +++ b/examples/embeddable_examples/tsconfig.json @@ -14,6 +14,7 @@ ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/examples/state_containers_examples/tsconfig.json b/examples/state_containers_examples/tsconfig.json index 6cfb9f9dc2321..442fa08022dc4 100644 --- a/examples/state_containers_examples/tsconfig.json +++ b/examples/state_containers_examples/tsconfig.json @@ -14,6 +14,8 @@ ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/examples/ui_action_examples/tsconfig.json b/examples/ui_action_examples/tsconfig.json index 86b35c5e4943f..253fdd9ee6c89 100644 --- a/examples/ui_action_examples/tsconfig.json +++ b/examples/ui_action_examples/tsconfig.json @@ -13,6 +13,7 @@ ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/examples/ui_actions_explorer/tsconfig.json b/examples/ui_actions_explorer/tsconfig.json index 782b9cd57fa7b..b4449819b25a6 100644 --- a/examples/ui_actions_explorer/tsconfig.json +++ b/examples/ui_actions_explorer/tsconfig.json @@ -12,6 +12,7 @@ ], "exclude": [], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/package.json b/package.json index 6122c1090671f..5cd0c276ef76c 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "kbn:watch": "node scripts/kibana --dev --logging.json=false", "build:types": "rm -rf ./target/types && tsc --p tsconfig.types.json", "docs:acceptApiChanges": "node --max-old-space-size=6144 scripts/check_published_api_changes.js --accept", - "kbn:bootstrap": "node scripts/build_ts_refs && node scripts/register_git_hook", + "kbn:bootstrap": "node scripts/build_ts_refs --project tsconfig.refs.json && node scripts/register_git_hook", "spec_to_console": "node scripts/spec_to_console", "backport-skip-ci": "backport --prDescription \"[skip-ci]\"", "storybook": "node scripts/storybook", diff --git a/src/dev/typescript/build_refs.ts b/src/dev/typescript/build_refs.ts index cbb596c185f8b..de006bd674e87 100644 --- a/src/dev/typescript/build_refs.ts +++ b/src/dev/typescript/build_refs.ts @@ -18,12 +18,18 @@ */ import execa from 'execa'; +import Path from 'path'; import { run, ToolingLog } from '@kbn/dev-utils'; -export async function buildRefs(log: ToolingLog) { +export async function buildAllRefs(log: ToolingLog) { + await buildRefs(log, 'tsconfig.refs.json'); + await buildRefs(log, Path.join('x-pack', 'tsconfig.refs.json')); +} + +async function buildRefs(log: ToolingLog, projectPath: string) { try { - log.info('Building TypeScript projects refs...'); - await execa(require.resolve('typescript/bin/tsc'), ['-b', 'tsconfig.refs.json']); + log.debug(`Building TypeScript projects refs for ${projectPath}...`); + await execa(require.resolve('typescript/bin/tsc'), ['-b', projectPath]); } catch (e) { log.error(e); process.exit(1); @@ -31,7 +37,18 @@ export async function buildRefs(log: ToolingLog) { } export async function runBuildRefs() { - run(async ({ log }) => { - await buildRefs(log); - }); + run( + async ({ log, flags }) => { + await buildRefs(log, flags.project as string); + }, + { + description: 'Build TypeScript projects', + flags: { + string: ['project'], + help: ` +--project Required, path to the tsconfig.refs.file + `, + }, + } + ); } diff --git a/src/dev/typescript/projects.ts b/src/dev/typescript/projects.ts index 4d1e549e192b6..9891e9fa02c82 100644 --- a/src/dev/typescript/projects.ts +++ b/src/dev/typescript/projects.ts @@ -24,11 +24,11 @@ import { Project } from './project'; export const PROJECTS = [ new Project(resolve(REPO_ROOT, 'tsconfig.json')), - new Project(resolve(REPO_ROOT, 'src/test_utils/tsconfig.json')), - new Project(resolve(REPO_ROOT, 'src/core/tsconfig.json')), new Project(resolve(REPO_ROOT, 'test/tsconfig.json'), { name: 'kibana/test' }), new Project(resolve(REPO_ROOT, 'x-pack/tsconfig.json')), new Project(resolve(REPO_ROOT, 'x-pack/test/tsconfig.json'), { name: 'x-pack/test' }), + new Project(resolve(REPO_ROOT, 'src/test_utils/tsconfig.json')), + new Project(resolve(REPO_ROOT, 'src/core/tsconfig.json')), new Project(resolve(REPO_ROOT, 'x-pack/plugins/security_solution/cypress/tsconfig.json'), { name: 'security_solution/cypress', }), @@ -47,6 +47,12 @@ export const PROJECTS = [ ...glob .sync('packages/*/tsconfig.json', { cwd: REPO_ROOT }) .map((path) => new Project(resolve(REPO_ROOT, path))), + ...glob + .sync('src/plugins/*/tsconfig.json', { cwd: REPO_ROOT }) + .map((path) => new Project(resolve(REPO_ROOT, path))), + ...glob + .sync('x-pack/plugins/*/tsconfig.json', { cwd: REPO_ROOT }) + .map((path) => new Project(resolve(REPO_ROOT, path))), ...glob .sync('examples/*/tsconfig.json', { cwd: REPO_ROOT }) .map((path) => new Project(resolve(REPO_ROOT, path))), diff --git a/src/dev/typescript/run_type_check_cli.ts b/src/dev/typescript/run_type_check_cli.ts index 00968b7259a30..c52b9454c28be 100644 --- a/src/dev/typescript/run_type_check_cli.ts +++ b/src/dev/typescript/run_type_check_cli.ts @@ -24,7 +24,7 @@ import getopts from 'getopts'; import { execInProjects } from './exec_in_projects'; import { filterProjectsByFlag } from './projects'; -import { buildRefs } from './build_refs'; +import { buildAllRefs } from './build_refs'; export async function runTypeCheckCli() { const extraFlags: string[] = []; @@ -80,7 +80,7 @@ export async function runTypeCheckCli() { process.exit(); } - await buildRefs(log); + await buildAllRefs(log); const tscArgs = [ // composite project cannot be used with --noEmit diff --git a/src/plugins/kibana_react/kibana.json b/src/plugins/kibana_react/kibana.json index a507fe457b633..c05490c349917 100644 --- a/src/plugins/kibana_react/kibana.json +++ b/src/plugins/kibana_react/kibana.json @@ -2,5 +2,6 @@ "id": "kibanaReact", "version": "kibana", "ui": true, + "server": false, "requiredBundles": ["kibanaUtils"] } diff --git a/src/plugins/kibana_react/tsconfig.json b/src/plugins/kibana_react/tsconfig.json new file mode 100644 index 0000000000000..52899f868dbfb --- /dev/null +++ b/src/plugins/kibana_react/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "public/**/*", + "../../../typings/**/*" + ], + "references": [ + { "path": "../kibana_utils/tsconfig.json" } + ] +} diff --git a/src/plugins/kibana_utils/kibana.json b/src/plugins/kibana_utils/kibana.json index 7e2127c27548e..3e20b68bca431 100644 --- a/src/plugins/kibana_utils/kibana.json +++ b/src/plugins/kibana_utils/kibana.json @@ -2,6 +2,7 @@ "id": "kibanaUtils", "version": "kibana", "ui": true, + "server": false, "extraPublicDirs": [ "common", "demos/state_containers/todomvc", diff --git a/src/plugins/kibana_utils/tsconfig.json b/src/plugins/kibana_utils/tsconfig.json new file mode 100644 index 0000000000000..bd65e06c78608 --- /dev/null +++ b/src/plugins/kibana_utils/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "common/**/*", + "demos/**/*", + "public/**/*", + "server/**/*", + "index.ts", + "../../../typings/**/*" + ], + "references": [ + { "path": "../../test_utils/tsconfig.json" }, + { "path": "../../core/tsconfig.json" } + ] +} diff --git a/test/tsconfig.json b/test/tsconfig.json index 6e846690d54d9..2c92367f84823 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -18,6 +18,8 @@ "interpreter_functional/plugins/**/*" ], "references": [ - { "path": "../src/core/tsconfig.json" } + { "path": "../src/core/tsconfig.json" }, + { "path": "../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../src/plugins/kibana_react/tsconfig.json" } ] } diff --git a/tsconfig.json b/tsconfig.json index 11838627c5319..fb57936248cf6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,9 @@ "exclude": [ "src/**/__fixtures__/**/*", "src/test_utils/**/*", - "src/core/**/*" + "src/core/**/*", + "src/plugins/kibana_utils/**/*", + "src/plugins/kibana_react/**/*" // In the build we actually exclude **/public/**/* from this config so that // we can run the TSC on both this and the .browser version of this config // file, but if we did it during development IDEs would not be able to find @@ -21,6 +23,8 @@ ], "references": [ { "path": "./src/test_utils/tsconfig.json" }, - { "path": "./src/core/tsconfig.json" } + { "path": "./src/core/tsconfig.json" }, + { "path": "./src/plugins/kibana_utils/tsconfig.json" }, + { "path": "./src/plugins/kibana_react/tsconfig.json" } ] } diff --git a/tsconfig.refs.json b/tsconfig.refs.json index 66282687f633b..54bd07e4b134c 100644 --- a/tsconfig.refs.json +++ b/tsconfig.refs.json @@ -1,7 +1,9 @@ { "include": [], "references": [ - { "path": "./src/test_utils" }, - { "path": "./src/core" }, + { "path": "./src/test_utils/tsconfig.json" }, + { "path": "./src/core/tsconfig.json" }, + { "path": "./src/plugins/kibana_utils/tsconfig.json" }, + { "path": "./src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/x-pack/examples/ui_actions_enhanced_examples/tsconfig.json b/x-pack/examples/ui_actions_enhanced_examples/tsconfig.json index 9f4f010c20fec..f8c1a6b53dac5 100644 --- a/x-pack/examples/ui_actions_enhanced_examples/tsconfig.json +++ b/x-pack/examples/ui_actions_enhanced_examples/tsconfig.json @@ -13,6 +13,8 @@ ], "exclude": [], "references": [ - { "path": "../../../src/core/tsconfig.json" } + { "path": "../../../src/core/tsconfig.json" }, + { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, ] } diff --git a/x-pack/package.json b/x-pack/package.json index cd981b78aea63..97d673290abd1 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -6,7 +6,7 @@ "license": "Elastic-License", "scripts": { "kbn": "node ../scripts/kbn", - "kbn:bootstrap": "node plugins/canvas/scripts/storybook --clean", + "kbn:bootstrap": "node ../scripts/build_ts_refs --project tsconfig.refs.json && node plugins/canvas/scripts/storybook --clean", "start": "node ../scripts/kibana --dev", "build": "gulp build", "testonly": "echo 'Deprecated, use `yarn test`' && gulp test", diff --git a/x-pack/plugins/licensing/tsconfig.json b/x-pack/plugins/licensing/tsconfig.json new file mode 100644 index 0000000000000..9b8eb15dc4a9e --- /dev/null +++ b/x-pack/plugins/licensing/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "public/**/*", + "server/**/*", + "common/**/*", + "../../../typings/**/*" + ], + "references": [ + { "path": "../../../src/core/tsconfig.json" }, + { "path": "../../../src/plugins/kibana_react/tsconfig.json" } + ] +} diff --git a/x-pack/plugins/transform/tsconfig.json b/x-pack/plugins/transform/tsconfig.json deleted file mode 100644 index 6f83eb665f830..0000000000000 --- a/x-pack/plugins/transform/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json", -} diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 3736d957a55a6..628f2edefb079 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -17,6 +17,9 @@ "../typings/jest.d.ts" ], "references": [ - { "path": "../../src/core/tsconfig.json" } + { "path": "../../src/core/tsconfig.json" }, + { "path": "../../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../../src/plugins/kibana_react/tsconfig.json" }, + { "path": "../plugins/licensing/tsconfig.json" } ] } diff --git a/x-pack/tsconfig.json b/x-pack/tsconfig.json index 7978a89231566..d4722aba4882c 100644 --- a/x-pack/tsconfig.json +++ b/x-pack/tsconfig.json @@ -11,7 +11,8 @@ "test/**/*", "plugins/security_solution/cypress/**/*", "plugins/apm/e2e/cypress/**/*", - "plugins/apm/scripts/**/*" + "plugins/apm/scripts/**/*", + "plugins/licensing/**/*" ], "compilerOptions": { "outDir": ".", @@ -24,5 +25,10 @@ // overhead is too significant "incremental": false }, - "references": [{ "path": "../src/core/tsconfig.json" }] + "references": [ + { "path": "../src/core/tsconfig.json" }, + { "path": "../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../src/plugins/kibana_react/tsconfig.json" }, + { "path": "./plugins/licensing/tsconfig.json" } + ] } diff --git a/x-pack/tsconfig.refs.json b/x-pack/tsconfig.refs.json new file mode 100644 index 0000000000000..0b4c46b893aa8 --- /dev/null +++ b/x-pack/tsconfig.refs.json @@ -0,0 +1,6 @@ +{ + "include": [], + "references": [ + { "path": "./plugins/licensing/tsconfig.json" } + ] +} From 8e963fdf1a353d5d5f4d03bc7a53fda6d5dfbf96 Mon Sep 17 00:00:00 2001 From: Bhavya RM Date: Wed, 30 Sep 2020 09:34:24 -0400 Subject: [PATCH 116/119] A11y tests for filter panel (#78776) a11y tests for filter panel and some test data un mounting --- .../ui/filter_bar/filter_editor/index.tsx | 7 +- test/accessibility/apps/discover.ts | 4 + test/accessibility/apps/filter_panel.ts | 95 +++++++++++++++++++ test/accessibility/apps/management.ts | 4 + test/accessibility/config.ts | 1 + 5 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 test/accessibility/apps/filter_panel.ts diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx b/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx index 0e2bcc7581950..7bd4facc9caa9 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx @@ -106,7 +106,11 @@ class FilterEditorUI extends Component { - + {this.state.isCustomEditorOpen ? ( { { + await esArchiver.unload('logstash_functional'); + }); + it('Discover main page', async () => { await a11y.testAppSnapshot(); }); diff --git a/test/accessibility/apps/filter_panel.ts b/test/accessibility/apps/filter_panel.ts new file mode 100644 index 0000000000000..02f02ca015cac --- /dev/null +++ b/test/accessibility/apps/filter_panel.ts @@ -0,0 +1,95 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['common', 'discover', 'home']); + const a11y = getService('a11y'); + const filterBar = getService('filterBar'); + const testSubjects = getService('testSubjects'); + const browser = getService('browser'); + + describe('Filter panel', () => { + before(async () => { + await PageObjects.common.navigateToUrl('home', '/tutorial_directory/sampleData', { + useActualUrl: true, + }); + await PageObjects.home.addSampleDataSet('flights'); + await PageObjects.common.navigateToApp('discover'); + await PageObjects.discover.selectIndexPattern('kibana_sample_data_flights'); + }); + + it('a11y test on add filter panel', async () => { + await PageObjects.discover.openAddFilterPanel(); + await a11y.testAppSnapshot(); + await filterBar.addFilter('OriginCityName', 'is', 'Rome'); + }); + + it('a11y test on filter panel with custom label', async () => { + await filterBar.clickEditFilter('OriginCityName', 'Rome'); + await testSubjects.click('createCustomLabel'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on Edit filter as Query DSL panel', async () => { + await testSubjects.click('editQueryDSL'); + await a11y.testAppSnapshot(); + await browser.pressKeys(browser.keys.ESCAPE); + }); + + // the following tests filter panel options which changes UI + it('a11y test on filter panel options panel', async () => { + await filterBar.addFilter('DestCountry', 'is', 'AU'); + await testSubjects.click('showFilterActions'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on disable all filter options view', async () => { + await testSubjects.click('disableAllFilters'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on pin filters view', async () => { + await testSubjects.click('showFilterActions'); + await testSubjects.click('enableAllFilters'); + await testSubjects.click('showFilterActions'); + await testSubjects.click('pinAllFilters'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on unpin all filters view', async () => { + await testSubjects.click('showFilterActions'); + await testSubjects.click('unpinAllFilters'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on invert inclusion of all filters view', async () => { + await testSubjects.click('showFilterActions'); + await testSubjects.click('invertInclusionAllFilters'); + await a11y.testAppSnapshot(); + }); + + it('a11y test on remove all filtes view', async () => { + await testSubjects.click('showFilterActions'); + await testSubjects.click('removeAllFilters'); + await a11y.testAppSnapshot(); + }); + }); +} diff --git a/test/accessibility/apps/management.ts b/test/accessibility/apps/management.ts index 08177f54ee881..994aa03950437 100644 --- a/test/accessibility/apps/management.ts +++ b/test/accessibility/apps/management.ts @@ -35,6 +35,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.settings.navigateTo(); }); + after(async () => { + await esArchiver.unload('logstash_functional'); + }); + it('main view', async () => { await a11y.testAppSnapshot(); }); diff --git a/test/accessibility/config.ts b/test/accessibility/config.ts index dd366c17a4ba7..9068a7e06defc 100644 --- a/test/accessibility/config.ts +++ b/test/accessibility/config.ts @@ -35,6 +35,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./apps/management'), require.resolve('./apps/console'), require.resolve('./apps/home'), + require.resolve('./apps/filter_panel'), ], pageObjects, services, From 1ba706c9dd1d0461b60c2c1a45f1a55b136d4e9b Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 30 Sep 2020 14:57:33 +0100 Subject: [PATCH 117/119] skip failing suite (#78942) --- .../basic/tests/transaction_groups/distribution.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts index 6ea050d2eea3c..bd669600afc14 100644 --- a/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts +++ b/x-pack/test/apm_api_integration/basic/tests/transaction_groups/distribution.ts @@ -37,7 +37,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - describe('when data is loaded', () => { + // SKIP FAILING TEST to unblock CI: https://github.com/elastic/kibana/issues/78942 + describe.skip('when data is loaded', () => { let response: any; before(async () => { await esArchiver.load(archiveName); From 991e0de22616be0a64ea5d89729736046b6bc4a4 Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Wed, 30 Sep 2020 16:44:29 +0200 Subject: [PATCH 118/119] ui_actions service initial docs (#78902) --- docs/developer/plugin-list.asciidoc | 10 +- .../plugins/ui_actions/public/index.md | 12 + ...lugins-ui_actions-public.action.execute.md | 24 ++ ...ui_actions-public.action.getdisplayname.md | 24 ++ ...lugins-ui_actions-public.action.gethref.md | 24 ++ ...ns-ui_actions-public.action.geticontype.md | 24 ++ ...gin-plugins-ui_actions-public.action.id.md | 13 + ...s-ui_actions-public.action.iscompatible.md | 24 ++ ...plugin-plugins-ui_actions-public.action.md | 32 ++ ...ugins-ui_actions-public.action.menuitem.md | 15 + ...-plugins-ui_actions-public.action.order.md | 13 + ...actions-public.action.shouldautoexecute.md | 24 ++ ...n-plugins-ui_actions-public.action.type.md | 13 + ...i_actions-public.action_visualize_field.md | 11 + ...tions-public.action_visualize_geo_field.md | 11 + ...-plugins-ui_actions-public.actionbytype.md | 11 + ..._actions-public.actioncontextmapping.__.md | 11 + ...oncontextmapping.action_visualize_field.md | 11 + ...ntextmapping.action_visualize_geo_field.md | 11 + ...-ui_actions-public.actioncontextmapping.md | 20 ++ ...i_actions-public.actiondefinitionbytype.md | 11 + ...i_actions-public.actionexecutioncontext.md | 13 + ...s-ui_actions-public.actionexecutionmeta.md | 20 ++ ...ions-public.actionexecutionmeta.trigger.md | 13 + ...in-plugins-ui_actions-public.actiontype.md | 11 + ...-ui_actions-public.apply_filter_trigger.md | 11 + ...ns-ui_actions-public.applyfiltertrigger.md | 11 + ...tions-public.buildcontextmenuforactions.md | 24 ++ ...-plugins-ui_actions-public.createaction.md | 22 ++ ...c.incompatibleactionerror._constructor_.md | 13 + ...ons-public.incompatibleactionerror.code.md | 11 + ..._actions-public.incompatibleactionerror.md | 24 ++ ...kibana-plugin-plugins-ui_actions-public.md | 66 ++++ ...plugin-plugins-ui_actions-public.plugin.md | 22 ++ ...-ui_actions-public.select_range_trigger.md | 11 + ...ns-ui_actions-public.selectrangetrigger.md | 11 + ...s-ui_actions-public.trigger.description.md | 13 + ...in-plugins-ui_actions-public.trigger.id.md | 13 + ...lugin-plugins-ui_actions-public.trigger.md | 26 ++ ...plugins-ui_actions-public.trigger.title.md | 13 + ...lugins-ui_actions-public.triggercontext.md | 11 + ...actions-public.triggercontextmapping.__.md | 11 + ...ic.triggercontextmapping.filter_trigger.md | 11 + ...ui_actions-public.triggercontextmapping.md | 23 ++ ...ggercontextmapping.select_range_trigger.md | 11 + ...iggercontextmapping.value_click_trigger.md | 11 + ...rcontextmapping.visualize_field_trigger.md | 11 + ...textmapping.visualize_geo_field_trigger.md | 11 + ...gin-plugins-ui_actions-public.triggerid.md | 11 + ...ublic.uiactionsactiondefinition.execute.md | 24 ++ ...ublic.uiactionsactiondefinition.gethref.md | 24 ++ ...ons-public.uiactionsactiondefinition.id.md | 13 + ....uiactionsactiondefinition.iscompatible.md | 24 ++ ...ctions-public.uiactionsactiondefinition.md | 30 ++ ...tionsactiondefinition.shouldautoexecute.md | 24 ++ ...s-public.uiactionsactiondefinition.type.md | 13 + ...lic.uiactionspresentable.getdisplayname.md | 24 ++ ...ctionspresentable.getdisplaynametooltip.md | 24 ++ ...ons-public.uiactionspresentable.gethref.md | 24 ++ ...public.uiactionspresentable.geticontype.md | 24 ++ ...ns-public.uiactionspresentable.grouping.md | 13 + ..._actions-public.uiactionspresentable.id.md | 13 + ...ublic.uiactionspresentable.iscompatible.md | 24 ++ ...-ui_actions-public.uiactionspresentable.md | 33 ++ ...ns-public.uiactionspresentable.menuitem.md | 15 + ...tions-public.uiactionspresentable.order.md | 13 + ...ons-public.uiactionspresentablegrouping.md | 11 + ...s-public.uiactionsservice._constructor_.md | 20 ++ ...actions-public.uiactionsservice.actions.md | 11 + ...ublic.uiactionsservice.addtriggeraction.md | 15 + ...ns-public.uiactionsservice.attachaction.md | 11 + ...i_actions-public.uiactionsservice.clear.md | 13 + ...ns-public.uiactionsservice.detachaction.md | 11 + ....uiactionsservice.executetriggeractions.md | 16 + ...ublic.uiactionsservice.executionservice.md | 11 + ...ui_actions-public.uiactionsservice.fork.md | 13 + ...tions-public.uiactionsservice.getaction.md | 11 + ...ions-public.uiactionsservice.gettrigger.md | 11 + ...blic.uiactionsservice.gettriggeractions.md | 11 + ...ionsservice.gettriggercompatibleactions.md | 11 + ...tions-public.uiactionsservice.hasaction.md | 11 + ...gins-ui_actions-public.uiactionsservice.md | 41 +++ ...-public.uiactionsservice.registeraction.md | 11 + ...public.uiactionsservice.registertrigger.md | 11 + ...ctions-public.uiactionsservice.triggers.md | 11 + ...ublic.uiactionsservice.triggertoactions.md | 11 + ...ublic.uiactionsservice.unregisteraction.md | 11 + ...s-public.uiactionsserviceparams.actions.md | 11 + ...i_actions-public.uiactionsserviceparams.md | 20 ++ ...-public.uiactionsserviceparams.triggers.md | 11 + ...uiactionsserviceparams.triggertoactions.md | 13 + ...lugins-ui_actions-public.uiactionssetup.md | 11 + ...lugins-ui_actions-public.uiactionsstart.md | 11 + ...s-ui_actions-public.value_click_trigger.md | 11 + ...ins-ui_actions-public.valueclicktrigger.md | 11 + ..._actions-public.visualize_field_trigger.md | 11 + ...ions-public.visualize_geo_field_trigger.md | 11 + ....visualizefieldcontext.contextualfields.md | 11 + ...-public.visualizefieldcontext.fieldname.md | 11 + ...ic.visualizefieldcontext.indexpatternid.md | 11 + ...ui_actions-public.visualizefieldcontext.md | 20 ++ ...ui_actions-public.visualizefieldtrigger.md | 11 + ...actions-public.visualizegeofieldtrigger.md | 11 + src/dev/run_check_published_api_changes.ts | 1 + src/plugins/ui_actions/README.asciidoc | 26 ++ src/plugins/ui_actions/README.md | 10 - src/plugins/ui_actions/public/public.api.md | 337 ++++++++++++++++++ tsconfig.types.json | 5 + 108 files changed, 2014 insertions(+), 11 deletions(-) create mode 100644 docs/development/plugins/ui_actions/public/index.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionbytype.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiontype.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.select_range_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontext.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggerid.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.value_click_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md create mode 100644 docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md create mode 100644 src/plugins/ui_actions/README.asciidoc delete mode 100644 src/plugins/ui_actions/README.md create mode 100644 src/plugins/ui_actions/public/public.api.md diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 4918a87a3ff76..da62d1707f065 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -180,9 +180,16 @@ It also provides a stateful version of it on the start contract. which also contains the timelion APIs and backend, look at the vis_type_timelion plugin. -|{kib-repo}blob/{branch}/src/plugins/ui_actions/README.md[uiActions] +|<> |An API for: +- creating custom functionality (`actions`) +- creating custom user interaction events (`triggers`) +- attaching and detaching `actions` to `triggers`. +- emitting `trigger` events +- executing `actions` attached to a given `trigger`. +- exposing a context menu for the user to choose the appropriate action when there are multiple actions attached to a single trigger. + |{kib-repo}blob/{branch}/src/plugins/url_forwarding/README.md[urlForwarding] |This plugins contains helpers to redirect legacy URLs. It can be used to forward old URLs to their new counterparts. @@ -524,5 +531,6 @@ in their infrastructure. include::{kibana-root}/src/plugins/dashboard/README.asciidoc[leveloffset=+1] include::{kibana-root}/src/plugins/expressions/README.asciidoc[leveloffset=+1] +include::{kibana-root}/src/plugins/ui_actions/README.asciidoc[leveloffset=+1] include::{kibana-root}/x-pack/plugins/dashboard_enhanced/README.asciidoc[leveloffset=+1] include::{kibana-root}/x-pack/plugins/embeddable_enhanced/README.asciidoc[leveloffset=+1] diff --git a/docs/development/plugins/ui_actions/public/index.md b/docs/development/plugins/ui_actions/public/index.md new file mode 100644 index 0000000000000..cbc7035b880fa --- /dev/null +++ b/docs/development/plugins/ui_actions/public/index.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) + +## API Reference + +## Packages + +| Package | Description | +| --- | --- | +| [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md new file mode 100644 index 0000000000000..22a520123cf3f --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [execute](./kibana-plugin-plugins-ui_actions-public.action.execute.md) + +## Action.execute() method + +Executes the action. + +Signature: + +```typescript +execute(context: ActionExecutionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md new file mode 100644 index 0000000000000..cd8cc527e96ec --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getDisplayName](./kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md) + +## Action.getDisplayName() method + +Returns a title to be displayed to the user. + +Signature: + +```typescript +getDisplayName(context: ActionExecutionContext): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`string` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md new file mode 100644 index 0000000000000..5ad9d5e24cf87 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.action.gethref.md) + +## Action.getHref() method + +This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". + +Signature: + +```typescript +getHref?(context: ActionExecutionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md new file mode 100644 index 0000000000000..34d45c4ec75c2 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getIconType](./kibana-plugin-plugins-ui_actions-public.action.geticontype.md) + +## Action.getIconType() method + +Optional EUI icon type that can be displayed along with the title. + +Signature: + +```typescript +getIconType(context: ActionExecutionContext): string | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`string | undefined` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md new file mode 100644 index 0000000000000..e32a5c8592cce --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [id](./kibana-plugin-plugins-ui_actions-public.action.id.md) + +## Action.id property + +A unique identifier for this action instance. + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md new file mode 100644 index 0000000000000..7a1f6cd23be17 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.action.iscompatible.md) + +## Action.isCompatible() method + +Returns a promise that resolves to true if this action is compatible given the context, otherwise resolves to false. + +Signature: + +```typescript +isCompatible(context: ActionExecutionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md new file mode 100644 index 0000000000000..19af63a679de8 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md @@ -0,0 +1,32 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) + +## Action interface + +Signature: + +```typescript +export interface Action extends Partial>> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-ui_actions-public.action.id.md) | string | A unique identifier for this action instance. | +| [MenuItem](./kibana-plugin-plugins-ui_actions-public.action.menuitem.md) | UiComponent<{
context: ActionExecutionContext<Context>;
}> | UiComponent to render when displaying this action as a context menu item. If not provided, getDisplayName will be used instead. | +| [order](./kibana-plugin-plugins-ui_actions-public.action.order.md) | number | Determined the order when there is more than one action matched to a trigger. Higher numbers are displayed first. | +| [type](./kibana-plugin-plugins-ui_actions-public.action.type.md) | T | The action type is what determines the context shape. | + +## Methods + +| Method | Description | +| --- | --- | +| [execute(context)](./kibana-plugin-plugins-ui_actions-public.action.execute.md) | Executes the action. | +| [getDisplayName(context)](./kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md) | Returns a title to be displayed to the user. | +| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.action.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | +| [getIconType(context)](./kibana-plugin-plugins-ui_actions-public.action.geticontype.md) | Optional EUI icon type that can be displayed along with the title. | +| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.action.iscompatible.md) | Returns a promise that resolves to true if this action is compatible given the context, otherwise resolves to false. | +| [shouldAutoExecute(context)](./kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md) | Determines if action should be executed automatically, without first showing up in context menu. false by default. | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md new file mode 100644 index 0000000000000..ac2168b88e3be --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [MenuItem](./kibana-plugin-plugins-ui_actions-public.action.menuitem.md) + +## Action.MenuItem property + +`UiComponent` to render when displaying this action as a context menu item. If not provided, `getDisplayName` will be used instead. + +Signature: + +```typescript +MenuItem?: UiComponent<{ + context: ActionExecutionContext; + }>; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md new file mode 100644 index 0000000000000..ce9f66cfe5143 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [order](./kibana-plugin-plugins-ui_actions-public.action.order.md) + +## Action.order property + +Determined the order when there is more than one action matched to a trigger. Higher numbers are displayed first. + +Signature: + +```typescript +order?: number; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md new file mode 100644 index 0000000000000..1a784f5dad2d5 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [shouldAutoExecute](./kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md) + +## Action.shouldAutoExecute() method + +Determines if action should be executed automatically, without first showing up in context menu. false by default. + +Signature: + +```typescript +shouldAutoExecute?(context: ActionExecutionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionExecutionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md new file mode 100644 index 0000000000000..c423df9d1324c --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [type](./kibana-plugin-plugins-ui_actions-public.action.type.md) + +## Action.type property + +The action type is what determines the context shape. + +Signature: + +```typescript +readonly type: T; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md new file mode 100644 index 0000000000000..25788d7aecc9f --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_field.md) + +## ACTION\_VISUALIZE\_FIELD variable + +Signature: + +```typescript +ACTION_VISUALIZE_FIELD = "ACTION_VISUALIZE_FIELD" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md new file mode 100644 index 0000000000000..c9ef93eff934b --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md) + +## ACTION\_VISUALIZE\_GEO\_FIELD variable + +Signature: + +```typescript +ACTION_VISUALIZE_GEO_FIELD = "ACTION_VISUALIZE_GEO_FIELD" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionbytype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionbytype.md new file mode 100644 index 0000000000000..3ceb96adadb1a --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionbytype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionByType](./kibana-plugin-plugins-ui_actions-public.actionbytype.md) + +## ActionByType type + +Signature: + +```typescript +export declare type ActionByType = Action; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md new file mode 100644 index 0000000000000..eb7b1e5954ed2 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionContextMapping](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md) > [""](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md) + +## ActionContextMapping."" property + +Signature: + +```typescript +[DEFAULT_ACTION]: BaseContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md new file mode 100644 index 0000000000000..eb0547bbf8261 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionContextMapping](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md) > [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md) + +## ActionContextMapping.ACTION\_VISUALIZE\_FIELD property + +Signature: + +```typescript +[ACTION_VISUALIZE_FIELD]: VisualizeFieldContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md new file mode 100644 index 0000000000000..b44ed75106423 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionContextMapping](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md) > [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md) + +## ActionContextMapping.ACTION\_VISUALIZE\_GEO\_FIELD property + +Signature: + +```typescript +[ACTION_VISUALIZE_GEO_FIELD]: VisualizeFieldContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md new file mode 100644 index 0000000000000..740e6ac63bfba --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionContextMapping](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md) + +## ActionContextMapping interface + +Signature: + +```typescript +export interface ActionContextMapping +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [""](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.__.md) | BaseContext | | +| [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_field.md) | VisualizeFieldContext | | +| [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.action_visualize_geo_field.md) | VisualizeFieldContext | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md new file mode 100644 index 0000000000000..ba4dc39088fe4 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionDefinitionByType](./kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md) + +## ActionDefinitionByType type + +Signature: + +```typescript +export declare type ActionDefinitionByType = ActionDefinition; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md new file mode 100644 index 0000000000000..3271d86779959 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionContext](./kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md) + +## ActionExecutionContext type + +Action methods are executed with Context from trigger + [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) + +Signature: + +```typescript +export declare type ActionExecutionContext = Context & ActionExecutionMeta; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md new file mode 100644 index 0000000000000..2056d8f9c7fc6 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) + +## ActionExecutionMeta interface + +During action execution we can provide additional information, for example, trigger, that caused the action execution + +Signature: + +```typescript +export interface ActionExecutionMeta +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [trigger](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md) | Trigger | Trigger that executed the action | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md new file mode 100644 index 0000000000000..530c2fe514d2c --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) > [trigger](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md) + +## ActionExecutionMeta.trigger property + +Trigger that executed the action + +Signature: + +```typescript +trigger: Trigger; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiontype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiontype.md new file mode 100644 index 0000000000000..4916585531004 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actiontype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionType](./kibana-plugin-plugins-ui_actions-public.actiontype.md) + +## ActionType type + +Signature: + +```typescript +export declare type ActionType = keyof ActionContextMapping; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md new file mode 100644 index 0000000000000..94e66bf404f5c --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [APPLY\_FILTER\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md) + +## APPLY\_FILTER\_TRIGGER variable + +Signature: + +```typescript +APPLY_FILTER_TRIGGER = "FILTER_TRIGGER" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md new file mode 100644 index 0000000000000..e1fb6d342457e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [applyFilterTrigger](./kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md) + +## applyFilterTrigger variable + +Signature: + +```typescript +applyFilterTrigger: Trigger<'FILTER_TRIGGER'> +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md new file mode 100644 index 0000000000000..2d6c0ff106072 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [buildContextMenuForActions](./kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md) + +## buildContextMenuForActions() function + +Transforms an array of Actions to the shape EuiContextMenuPanel expects. + +Signature: + +```typescript +export declare function buildContextMenuForActions({ actions, title, closeMenu, }: BuildContextMenuParams): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { actions, title, closeMenu, } | BuildContextMenuParams | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md new file mode 100644 index 0000000000000..04ab36c2e3f58 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [createAction](./kibana-plugin-plugins-ui_actions-public.createaction.md) + +## createAction() function + +Signature: + +```typescript +export declare function createAction(action: ActionDefinitionByType): ActionByType; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| action | ActionDefinitionByType<T> | | + +Returns: + +`ActionByType` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md new file mode 100644 index 0000000000000..f06bb05270ff0 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) > [(constructor)](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md) + +## IncompatibleActionError.(constructor) + +Constructs a new instance of the `IncompatibleActionError` class + +Signature: + +```typescript +constructor(); +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md new file mode 100644 index 0000000000000..f16aa47438d72 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) > [code](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md) + +## IncompatibleActionError.code property + +Signature: + +```typescript +code: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md new file mode 100644 index 0000000000000..7c9943a53c2bb --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) + +## IncompatibleActionError class + +Signature: + +```typescript +export declare class IncompatibleActionError extends Error +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)()](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md) | | Constructs a new instance of the IncompatibleActionError class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [code](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md) | | string | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md new file mode 100644 index 0000000000000..ce4e8c17b9dff --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md @@ -0,0 +1,66 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) + +## kibana-plugin-plugins-ui\_actions-public package + +## Classes + +| Class | Description | +| --- | --- | +| [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) | | +| [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) | | + +## Functions + +| Function | Description | +| --- | --- | +| [buildContextMenuForActions({ actions, title, closeMenu, })](./kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md) | Transforms an array of Actions to the shape EuiContextMenuPanel expects. | +| [createAction(action)](./kibana-plugin-plugins-ui_actions-public.createaction.md) | | +| [plugin(initializerContext)](./kibana-plugin-plugins-ui_actions-public.plugin.md) | | + +## Interfaces + +| Interface | Description | +| --- | --- | +| [Action](./kibana-plugin-plugins-ui_actions-public.action.md) | | +| [ActionContextMapping](./kibana-plugin-plugins-ui_actions-public.actioncontextmapping.md) | | +| [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) | During action execution we can provide additional information, for example, trigger, that caused the action execution | +| [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) | This is a convenience interface used to register a \*trigger\*.Trigger specifies a named anchor to which Action can be attached. When Trigger is being \*called\* it creates a Context object and passes it to the execute method of an Action.More than one action can be attached to a single trigger, in which case when trigger is \*called\* it first displays a context menu for user to pick a single action to execute. | +| [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) | | +| [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) | A convenience interface used to register an action. | +| [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) | Represents something that can be displayed to user in UI. | +| [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) | | +| [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) | | + +## Variables + +| Variable | Description | +| --- | --- | +| [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_field.md) | | +| [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md) | | +| [APPLY\_FILTER\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.apply_filter_trigger.md) | | +| [applyFilterTrigger](./kibana-plugin-plugins-ui_actions-public.applyfiltertrigger.md) | | +| [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.select_range_trigger.md) | | +| [selectRangeTrigger](./kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md) | | +| [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.value_click_trigger.md) | | +| [valueClickTrigger](./kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md) | | +| [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md) | | +| [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md) | | +| [visualizeFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md) | | +| [visualizeGeoFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md) | | + +## Type Aliases + +| Type Alias | Description | +| --- | --- | +| [ActionByType](./kibana-plugin-plugins-ui_actions-public.actionbytype.md) | | +| [ActionDefinitionByType](./kibana-plugin-plugins-ui_actions-public.actiondefinitionbytype.md) | | +| [ActionExecutionContext](./kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md) | Action methods are executed with Context from trigger + [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) | +| [ActionType](./kibana-plugin-plugins-ui_actions-public.actiontype.md) | | +| [TriggerContext](./kibana-plugin-plugins-ui_actions-public.triggercontext.md) | | +| [TriggerId](./kibana-plugin-plugins-ui_actions-public.triggerid.md) | | +| [UiActionsPresentableGrouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md) | | +| [UiActionsSetup](./kibana-plugin-plugins-ui_actions-public.uiactionssetup.md) | | +| [UiActionsStart](./kibana-plugin-plugins-ui_actions-public.uiactionsstart.md) | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md new file mode 100644 index 0000000000000..d9427317d4fc6 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [plugin](./kibana-plugin-plugins-ui_actions-public.plugin.md) + +## plugin() function + +Signature: + +```typescript +export declare function plugin(initializerContext: PluginInitializerContext): UiActionsPlugin; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| initializerContext | PluginInitializerContext | | + +Returns: + +`UiActionsPlugin` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.select_range_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.select_range_trigger.md new file mode 100644 index 0000000000000..fd784ff17fa84 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.select_range_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.select_range_trigger.md) + +## SELECT\_RANGE\_TRIGGER variable + +Signature: + +```typescript +SELECT_RANGE_TRIGGER = "SELECT_RANGE_TRIGGER" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md new file mode 100644 index 0000000000000..0d9fa2d83ee57 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [selectRangeTrigger](./kibana-plugin-plugins-ui_actions-public.selectrangetrigger.md) + +## selectRangeTrigger variable + +Signature: + +```typescript +selectRangeTrigger: Trigger<'SELECT_RANGE_TRIGGER'> +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md new file mode 100644 index 0000000000000..76faaf8e1a691 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [description](./kibana-plugin-plugins-ui_actions-public.trigger.description.md) + +## Trigger.description property + +A longer user friendly description of the trigger. + +Signature: + +```typescript +description?: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md new file mode 100644 index 0000000000000..426f17f9a0352 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [id](./kibana-plugin-plugins-ui_actions-public.trigger.id.md) + +## Trigger.id property + +Unique name of the trigger as identified in `ui_actions` plugin trigger registry, such as "SELECT\_RANGE\_TRIGGER" or "VALUE\_CLICK\_TRIGGER". + +Signature: + +```typescript +id: ID; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md new file mode 100644 index 0000000000000..b69bba892f475 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) + +## Trigger interface + +This is a convenience interface used to register a \*trigger\*. + +`Trigger` specifies a named anchor to which `Action` can be attached. When `Trigger` is being \*called\* it creates a `Context` object and passes it to the `execute` method of an `Action`. + +More than one action can be attached to a single trigger, in which case when trigger is \*called\* it first displays a context menu for user to pick a single action to execute. + +Signature: + +```typescript +export interface Trigger +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [description](./kibana-plugin-plugins-ui_actions-public.trigger.description.md) | string | A longer user friendly description of the trigger. | +| [id](./kibana-plugin-plugins-ui_actions-public.trigger.id.md) | ID | Unique name of the trigger as identified in ui_actions plugin trigger registry, such as "SELECT\_RANGE\_TRIGGER" or "VALUE\_CLICK\_TRIGGER". | +| [title](./kibana-plugin-plugins-ui_actions-public.trigger.title.md) | string | User friendly name of the trigger. | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md new file mode 100644 index 0000000000000..ded71c8d0c437 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [title](./kibana-plugin-plugins-ui_actions-public.trigger.title.md) + +## Trigger.title property + +User friendly name of the trigger. + +Signature: + +```typescript +title?: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontext.md new file mode 100644 index 0000000000000..4ce95d27ecffa --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContext](./kibana-plugin-plugins-ui_actions-public.triggercontext.md) + +## TriggerContext type + +Signature: + +```typescript +export declare type TriggerContext = T extends TriggerId ? TriggerContextMapping[T] : never; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md new file mode 100644 index 0000000000000..17ad926f8ee82 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [""](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md) + +## TriggerContextMapping."" property + +Signature: + +```typescript +[DEFAULT_TRIGGER]: TriggerContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md new file mode 100644 index 0000000000000..0ccf8aa3d7415 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [FILTER\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md) + +## TriggerContextMapping.FILTER\_TRIGGER property + +Signature: + +```typescript +[APPLY_FILTER_TRIGGER]: ApplyGlobalFilterActionContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md new file mode 100644 index 0000000000000..9db44d4dc7b05 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) + +## TriggerContextMapping interface + +Signature: + +```typescript +export interface TriggerContextMapping +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [""](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.__.md) | TriggerContext | | +| [FILTER\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.filter_trigger.md) | ApplyGlobalFilterActionContext | | +| [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md) | RangeSelectContext | | +| [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md) | ValueClickContext | | +| [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md) | VisualizeFieldContext | | +| [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md) | VisualizeFieldContext | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md new file mode 100644 index 0000000000000..c5ef6843390b3 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.select_range_trigger.md) + +## TriggerContextMapping.SELECT\_RANGE\_TRIGGER property + +Signature: + +```typescript +[SELECT_RANGE_TRIGGER]: RangeSelectContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md new file mode 100644 index 0000000000000..129144a66cee5 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.value_click_trigger.md) + +## TriggerContextMapping.VALUE\_CLICK\_TRIGGER property + +Signature: + +```typescript +[VALUE_CLICK_TRIGGER]: ValueClickContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md new file mode 100644 index 0000000000000..feaaffac8a234 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_field_trigger.md) + +## TriggerContextMapping.VISUALIZE\_FIELD\_TRIGGER property + +Signature: + +```typescript +[VISUALIZE_FIELD_TRIGGER]: VisualizeFieldContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md new file mode 100644 index 0000000000000..023490a2ae027 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerContextMapping](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.md) > [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.triggercontextmapping.visualize_geo_field_trigger.md) + +## TriggerContextMapping.VISUALIZE\_GEO\_FIELD\_TRIGGER property + +Signature: + +```typescript +[VISUALIZE_GEO_FIELD_TRIGGER]: VisualizeFieldContext; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggerid.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggerid.md new file mode 100644 index 0000000000000..6e5a234e286f9 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.triggerid.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [TriggerId](./kibana-plugin-plugins-ui_actions-public.triggerid.md) + +## TriggerId type + +Signature: + +```typescript +export declare type TriggerId = keyof TriggerContextMapping; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md new file mode 100644 index 0000000000000..a2cf61ecc1306 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [execute](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md) + +## UiActionsActionDefinition.execute() method + +Executes the action. + +Signature: + +```typescript +execute(context: ActionDefinitionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionDefinitionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md new file mode 100644 index 0000000000000..83fee1233a206 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md) + +## UiActionsActionDefinition.getHref() method + +This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". + +Signature: + +```typescript +getHref?(context: ActionDefinitionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionDefinitionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md new file mode 100644 index 0000000000000..01fa6abce3b4a --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [id](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md) + +## UiActionsActionDefinition.id property + +ID of the action that uniquely identifies this action in the actions registry. + +Signature: + +```typescript +readonly id: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md new file mode 100644 index 0000000000000..736cc40c4243f --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md) + +## UiActionsActionDefinition.isCompatible() method + +Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. + +Signature: + +```typescript +isCompatible?(context: ActionDefinitionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionDefinitionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md new file mode 100644 index 0000000000000..7c873715795e9 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) + +## UiActionsActionDefinition interface + +A convenience interface used to register an action. + +Signature: + +```typescript +export interface ActionDefinition extends Partial>> +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md) | string | ID of the action that uniquely identifies this action in the actions registry. | +| [type](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md) | ActionType | ID of the factory for this action. Used to construct dynamic actions. | + +## Methods + +| Method | Description | +| --- | --- | +| [execute(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md) | Executes the action. | +| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | +| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md) | Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. | +| [shouldAutoExecute(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md) | Determines if action should be executed automatically, without first showing up in context menu. false by default. | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md new file mode 100644 index 0000000000000..04b9975f3b92e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [shouldAutoExecute](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md) + +## UiActionsActionDefinition.shouldAutoExecute() method + +Determines if action should be executed automatically, without first showing up in context menu. false by default. + +Signature: + +```typescript +shouldAutoExecute?(context: ActionDefinitionContext): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | ActionDefinitionContext<Context> | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md new file mode 100644 index 0000000000000..125f834e9036e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [type](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md) + +## UiActionsActionDefinition.type property + +ID of the factory for this action. Used to construct dynamic actions. + +Signature: + +```typescript +readonly type?: ActionType; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md new file mode 100644 index 0000000000000..986ad4afa5a48 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getDisplayName](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md) + +## UiActionsPresentable.getDisplayName() method + +Returns a title to be displayed to the user. + +Signature: + +```typescript +getDisplayName(context: Context): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | Context | | + +Returns: + +`string` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md new file mode 100644 index 0000000000000..8fc859d5713e6 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getDisplayNameTooltip](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md) + +## UiActionsPresentable.getDisplayNameTooltip() method + +Returns tooltip text which should be displayed when user hovers this object. Should return empty string if tooltip should not be displayed. + +Signature: + +```typescript +getDisplayNameTooltip(context: Context): string; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | Context | | + +Returns: + +`string` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md new file mode 100644 index 0000000000000..0c9bd434ff331 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md) + +## UiActionsPresentable.getHref() method + +This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". + +Signature: + +```typescript +getHref?(context: Context): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | Context | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md new file mode 100644 index 0000000000000..8bf5af0f3b7e2 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getIconType](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md) + +## UiActionsPresentable.getIconType() method + +Optional EUI icon type that can be displayed along with the title. + +Signature: + +```typescript +getIconType(context: Context): string | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | Context | | + +Returns: + +`string | undefined` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md new file mode 100644 index 0000000000000..6b160becf1afc --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [grouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md) + +## UiActionsPresentable.grouping property + +Grouping where this item should appear as a submenu. Each entry is a new sub-menu level. For example, used to show drilldowns and sharing options in panel context menu in a sub-menu. + +Signature: + +```typescript +readonly grouping?: PresentableGrouping; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md new file mode 100644 index 0000000000000..e98401d95cba8 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [id](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md) + +## UiActionsPresentable.id property + +ID that uniquely identifies this object. + +Signature: + +```typescript +readonly id: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md new file mode 100644 index 0000000000000..073f75c840bcd --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md) + +## UiActionsPresentable.isCompatible() method + +Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. + +Signature: + +```typescript +isCompatible(context: Context): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| context | Context | | + +Returns: + +`Promise` + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md new file mode 100644 index 0000000000000..03fa7fb6e447e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md @@ -0,0 +1,33 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) + +## UiActionsPresentable interface + +Represents something that can be displayed to user in UI. + +Signature: + +```typescript +export interface Presentable +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [grouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md) | PresentableGrouping<Context> | Grouping where this item should appear as a submenu. Each entry is a new sub-menu level. For example, used to show drilldowns and sharing options in panel context menu in a sub-menu. | +| [id](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md) | string | ID that uniquely identifies this object. | +| [MenuItem](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md) | UiComponent<{
context: Context;
}> | UiComponent to render when displaying this entity as a context menu item. If not provided, getDisplayName will be used instead. | +| [order](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md) | number | Determines the display order in relation to other items. Higher numbers are displayed first. | + +## Methods + +| Method | Description | +| --- | --- | +| [getDisplayName(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md) | Returns a title to be displayed to the user. | +| [getDisplayNameTooltip(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md) | Returns tooltip text which should be displayed when user hovers this object. Should return empty string if tooltip should not be displayed. | +| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | +| [getIconType(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md) | Optional EUI icon type that can be displayed along with the title. | +| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md) | Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md new file mode 100644 index 0000000000000..42afe6b8361f0 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [MenuItem](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md) + +## UiActionsPresentable.MenuItem property + +`UiComponent` to render when displaying this entity as a context menu item. If not provided, `getDisplayName` will be used instead. + +Signature: + +```typescript +readonly MenuItem?: UiComponent<{ + context: Context; + }>; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md new file mode 100644 index 0000000000000..0bbf80dc89211 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [order](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md) + +## UiActionsPresentable.order property + +Determines the display order in relation to other items. Higher numbers are displayed first. + +Signature: + +```typescript +readonly order: number; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md new file mode 100644 index 0000000000000..a61ff65e39c69 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentableGrouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md) + +## UiActionsPresentableGrouping type + +Signature: + +```typescript +export declare type PresentableGrouping = Array>; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md new file mode 100644 index 0000000000000..ff272245dbbf9 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [(constructor)](./kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md) + +## UiActionsService.(constructor) + +Constructs a new instance of the `UiActionsService` class + +Signature: + +```typescript +constructor({ triggers, actions, triggerToActions, }?: UiActionsServiceParams); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { triggers, actions, triggerToActions, } | UiActionsServiceParams | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md new file mode 100644 index 0000000000000..aaf4cebaf841c --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md) + +## UiActionsService.actions property + +Signature: + +```typescript +protected readonly actions: ActionRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md new file mode 100644 index 0000000000000..1782eef92442c --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) + +## UiActionsService.addTriggerAction property + +`addTriggerAction` is similar to `attachAction` as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet. + +`addTriggerAction` also infers better typing of the `action` argument. + +Signature: + +```typescript +readonly addTriggerAction: (triggerId: T, action: ActionDefinition | Action) => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md new file mode 100644 index 0000000000000..19f215a96b23b --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [attachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md) + +## UiActionsService.attachAction property + +Signature: + +```typescript +readonly attachAction: (triggerId: T, actionId: string) => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md new file mode 100644 index 0000000000000..024c7e3c3f85a --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [clear](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md) + +## UiActionsService.clear property + +Removes all registered triggers and actions. + +Signature: + +```typescript +readonly clear: () => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md new file mode 100644 index 0000000000000..a6ff2489c6f0e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [detachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md) + +## UiActionsService.detachAction property + +Signature: + +```typescript +readonly detachAction: (triggerId: TriggerId, actionId: string) => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md new file mode 100644 index 0000000000000..1bb6ca1115248 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [executeTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md) + +## UiActionsService.executeTriggerActions property + +> Warning: This API is now obsolete. +> +> Use `plugins.uiActions.getTrigger(triggerId).exec(params)` instead. +> + +Signature: + +```typescript +readonly executeTriggerActions: (triggerId: T, context: TriggerContext) => Promise; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md new file mode 100644 index 0000000000000..06384cc110a59 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [executionService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md) + +## UiActionsService.executionService property + +Signature: + +```typescript +readonly executionService: UiActionsExecutionService; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md new file mode 100644 index 0000000000000..2b7a43a44cca6 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [fork](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md) + +## UiActionsService.fork property + +"Fork" a separate instance of `UiActionsService` that inherits all existing triggers and actions, but going forward all new triggers and actions added to this instance of `UiActionsService` are only available within this instance. + +Signature: + +```typescript +readonly fork: () => UiActionsService; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md new file mode 100644 index 0000000000000..0c4584a07b569 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) + +## UiActionsService.getAction property + +Signature: + +```typescript +readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md new file mode 100644 index 0000000000000..d44dc4e43a52e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md) + +## UiActionsService.getTrigger property + +Signature: + +```typescript +readonly getTrigger: (triggerId: T) => TriggerContract; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md new file mode 100644 index 0000000000000..c65a9a992da2e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) + +## UiActionsService.getTriggerActions property + +Signature: + +```typescript +readonly getTriggerActions: (triggerId: T) => Action[]; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md new file mode 100644 index 0000000000000..751abe332b08e --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) + +## UiActionsService.getTriggerCompatibleActions property + +Signature: + +```typescript +readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md new file mode 100644 index 0000000000000..2287cb3052864 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [hasAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md) + +## UiActionsService.hasAction property + +Signature: + +```typescript +readonly hasAction: (actionId: string) => boolean; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md new file mode 100644 index 0000000000000..c372eb113d682 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md @@ -0,0 +1,41 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) + +## UiActionsService class + +Signature: + +```typescript +export declare class UiActionsService +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)({ triggers, actions, triggerToActions, })](./kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md) | | Constructs a new instance of the UiActionsService class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md) | | ActionRegistry | | +| [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, action: ActionDefinition<TriggerContextMapping[T]> | Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">) => void | addTriggerAction is similar to attachAction as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet.addTriggerAction also infers better typing of the action argument. | +| [attachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, actionId: string) => void | | +| [clear](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md) | | () => void | Removes all registered triggers and actions. | +| [detachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md) | | (triggerId: TriggerId, actionId: string) => void | | +| [executeTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, context: TriggerContext<T>) => Promise<void> | | +| [executionService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md) | | UiActionsExecutionService | | +| [fork](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md) | | () => UiActionsService | "Fork" a separate instance of UiActionsService that inherits all existing triggers and actions, but going forward all new triggers and actions added to this instance of UiActionsService are only available within this instance. | +| [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) | | <T extends ActionDefinition<{}>>(id: string) => Action<ActionContext<T>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK"> | | +| [getTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T) => TriggerContract<T> | | +| [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T) => Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">[] | | +| [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, context: TriggerContextMapping[T]) => Promise<Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">[]> | | +| [hasAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md) | | (actionId: string) => boolean | | +| [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) | | <A extends ActionDefinition<{}>>(definition: A) => Action<ActionContext<A>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK"> | | +| [registerTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md) | | (trigger: Trigger) => void | | +| [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md) | | TriggerRegistry | | +| [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md) | | TriggerToActionsRegistry | | +| [unregisterAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md) | | (actionId: string) => void | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md new file mode 100644 index 0000000000000..c71e86fc09dc7 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) + +## UiActionsService.registerAction property + +Signature: + +```typescript +readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md new file mode 100644 index 0000000000000..3002409c02304 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [registerTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md) + +## UiActionsService.registerTrigger property + +Signature: + +```typescript +readonly registerTrigger: (trigger: Trigger) => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md new file mode 100644 index 0000000000000..07d480286e771 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md) + +## UiActionsService.triggers property + +Signature: + +```typescript +protected readonly triggers: TriggerRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md new file mode 100644 index 0000000000000..1b79a1dd84593 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md) + +## UiActionsService.triggerToActions property + +Signature: + +```typescript +protected readonly triggerToActions: TriggerToActionsRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md new file mode 100644 index 0000000000000..0e0eb971c1a7b --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [unregisterAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md) + +## UiActionsService.unregisterAction property + +Signature: + +```typescript +readonly unregisterAction: (actionId: string) => void; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md new file mode 100644 index 0000000000000..44d2957b0f8ba --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md) + +## UiActionsServiceParams.actions property + +Signature: + +```typescript +readonly actions?: ActionRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md new file mode 100644 index 0000000000000..756cd3de92ef8 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) + +## UiActionsServiceParams interface + +Signature: + +```typescript +export interface UiActionsServiceParams +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md) | ActionRegistry | | +| [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md) | TriggerRegistry | | +| [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md) | TriggerToActionsRegistry | A 1-to-N mapping from Trigger to zero or more Action. | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md new file mode 100644 index 0000000000000..061aa5eb68c5d --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md) + +## UiActionsServiceParams.triggers property + +Signature: + +```typescript +readonly triggers?: TriggerRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md new file mode 100644 index 0000000000000..bdf1acba484e6 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md) + +## UiActionsServiceParams.triggerToActions property + +A 1-to-N mapping from `Trigger` to zero or more `Action`. + +Signature: + +```typescript +readonly triggerToActions?: TriggerToActionsRegistry; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md new file mode 100644 index 0000000000000..d03d4cf9f1ee2 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsSetup](./kibana-plugin-plugins-ui_actions-public.uiactionssetup.md) + +## UiActionsSetup type + +Signature: + +```typescript +export declare type UiActionsSetup = Pick; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md new file mode 100644 index 0000000000000..41f5bbf705e20 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsStart](./kibana-plugin-plugins-ui_actions-public.uiactionsstart.md) + +## UiActionsStart type + +Signature: + +```typescript +export declare type UiActionsStart = PublicMethodsOf; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.value_click_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.value_click_trigger.md new file mode 100644 index 0000000000000..bd8d4dc50b8fd --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.value_click_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.value_click_trigger.md) + +## VALUE\_CLICK\_TRIGGER variable + +Signature: + +```typescript +VALUE_CLICK_TRIGGER = "VALUE_CLICK_TRIGGER" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md new file mode 100644 index 0000000000000..5c4fc284d83b1 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [valueClickTrigger](./kibana-plugin-plugins-ui_actions-public.valueclicktrigger.md) + +## valueClickTrigger variable + +Signature: + +```typescript +valueClickTrigger: Trigger<'VALUE_CLICK_TRIGGER'> +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md new file mode 100644 index 0000000000000..c5d9f53557d6f --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md) + +## VISUALIZE\_FIELD\_TRIGGER variable + +Signature: + +```typescript +VISUALIZE_FIELD_TRIGGER = "VISUALIZE_FIELD_TRIGGER" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md new file mode 100644 index 0000000000000..a9396c1905485 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md) + +## VISUALIZE\_GEO\_FIELD\_TRIGGER variable + +Signature: + +```typescript +VISUALIZE_GEO_FIELD_TRIGGER = "VISUALIZE_GEO_FIELD_TRIGGER" +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md new file mode 100644 index 0000000000000..681d4127e4030 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [contextualFields](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md) + +## VisualizeFieldContext.contextualFields property + +Signature: + +```typescript +contextualFields?: string[]; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md new file mode 100644 index 0000000000000..95f45b1fbee4a --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [fieldName](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md) + +## VisualizeFieldContext.fieldName property + +Signature: + +```typescript +fieldName: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md new file mode 100644 index 0000000000000..588c115cd9885 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [indexPatternId](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md) + +## VisualizeFieldContext.indexPatternId property + +Signature: + +```typescript +indexPatternId: string; +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md new file mode 100644 index 0000000000000..7aeb254db7771 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) + +## VisualizeFieldContext interface + +Signature: + +```typescript +export interface VisualizeFieldContext +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [contextualFields](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md) | string[] | | +| [fieldName](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md) | string | | +| [indexPatternId](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md) | string | | + diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md new file mode 100644 index 0000000000000..15510bd3eb4a3 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [visualizeFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md) + +## visualizeFieldTrigger variable + +Signature: + +```typescript +visualizeFieldTrigger: Trigger<'VISUALIZE_FIELD_TRIGGER'> +``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md new file mode 100644 index 0000000000000..faec6a69b71f9 --- /dev/null +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [visualizeGeoFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md) + +## visualizeGeoFieldTrigger variable + +Signature: + +```typescript +visualizeGeoFieldTrigger: Trigger<'VISUALIZE_GEO_FIELD_TRIGGER'> +``` diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts index 5a6b6e092da2c..aaac706f991c2 100644 --- a/src/dev/run_check_published_api_changes.ts +++ b/src/dev/run_check_published_api_changes.ts @@ -232,6 +232,7 @@ async function run(folder: string, { opts }: { opts: Options }): Promise Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { CoreSetup } from 'src/core/public'; +import { CoreStart } from 'src/core/public'; +import { EnvironmentMode } from '@kbn/config'; +import { EuiContextMenuPanelDescriptor } from '@elastic/eui'; +import { Observable } from 'rxjs'; +import { PackageInfo } from '@kbn/config'; +import { Plugin } from 'src/core/public'; +import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; +import React from 'react'; +import * as Rx from 'rxjs'; +import { UiComponent } from 'src/plugins/kibana_utils/public'; + +// Warning: (ae-forgotten-export) The symbol "BaseContext" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "Action" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface Action extends Partial>> { + execute(context: ActionExecutionContext): Promise; + getDisplayName(context: ActionExecutionContext): string; + getHref?(context: ActionExecutionContext): Promise; + getIconType(context: ActionExecutionContext): string | undefined; + id: string; + isCompatible(context: ActionExecutionContext): Promise; + MenuItem?: UiComponent<{ + context: ActionExecutionContext; + }>; + order?: number; + shouldAutoExecute?(context: ActionExecutionContext): Promise; + readonly type: T; +} + +// Warning: (ae-missing-release-tag) "ACTION_VISUALIZE_FIELD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ACTION_VISUALIZE_FIELD = "ACTION_VISUALIZE_FIELD"; + +// Warning: (ae-missing-release-tag) "ACTION_VISUALIZE_GEO_FIELD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ACTION_VISUALIZE_GEO_FIELD = "ACTION_VISUALIZE_GEO_FIELD"; + +// Warning: (ae-missing-release-tag) "ActionByType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ActionByType = Action; + +// Warning: (ae-missing-release-tag) "ActionContextMapping" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ActionContextMapping { + // Warning: (ae-forgotten-export) The symbol "DEFAULT_ACTION" needs to be exported by the entry point index.d.ts + // + // (undocumented) + [DEFAULT_ACTION]: BaseContext; + // (undocumented) + [ACTION_VISUALIZE_FIELD]: VisualizeFieldContext; + // (undocumented) + [ACTION_VISUALIZE_GEO_FIELD]: VisualizeFieldContext; +} + +// Warning: (ae-missing-release-tag) "ActionDefinitionByType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ActionDefinitionByType = UiActionsActionDefinition; + +// Warning: (ae-missing-release-tag) "ActionExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export type ActionExecutionContext = Context & ActionExecutionMeta; + +// Warning: (ae-missing-release-tag) "ActionExecutionMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface ActionExecutionMeta { + trigger: Trigger; +} + +// Warning: (ae-missing-release-tag) "ActionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ActionType = keyof ActionContextMapping; + +// Warning: (ae-missing-release-tag) "APPLY_FILTER_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const APPLY_FILTER_TRIGGER = "FILTER_TRIGGER"; + +// Warning: (ae-missing-release-tag) "applyFilterTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const applyFilterTrigger: Trigger<'FILTER_TRIGGER'>; + +// Warning: (ae-forgotten-export) The symbol "BuildContextMenuParams" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "buildContextMenuForActions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function buildContextMenuForActions({ actions, title, closeMenu, }: BuildContextMenuParams): Promise; + +// Warning: (ae-forgotten-export) The symbol "ActionDefinitionByType" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "createAction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function createAction(action: ActionDefinitionByType_2): ActionByType; + +// Warning: (ae-missing-release-tag) "IncompatibleActionError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class IncompatibleActionError extends Error { + constructor(); + // (undocumented) + code: string; +} + +// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "UiActionsPlugin" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function plugin(initializerContext: PluginInitializerContext): UiActionsPlugin; + +// Warning: (ae-missing-release-tag) "SELECT_RANGE_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const SELECT_RANGE_TRIGGER = "SELECT_RANGE_TRIGGER"; + +// Warning: (ae-missing-release-tag) "selectRangeTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const selectRangeTrigger: Trigger<'SELECT_RANGE_TRIGGER'>; + +// Warning: (ae-missing-release-tag) "Trigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface Trigger { + description?: string; + id: ID; + title?: string; +} + +// Warning: (ae-missing-release-tag) "TriggerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type TriggerContext = T extends TriggerId ? TriggerContextMapping[T] : never; + +// Warning: (ae-missing-release-tag) "TriggerContextMapping" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface TriggerContextMapping { + // Warning: (ae-forgotten-export) The symbol "DEFAULT_TRIGGER" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "TriggerContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + [DEFAULT_TRIGGER]: TriggerContext_2; + // Warning: (ae-forgotten-export) The symbol "ApplyGlobalFilterActionContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + [APPLY_FILTER_TRIGGER]: ApplyGlobalFilterActionContext; + // Warning: (ae-forgotten-export) The symbol "RangeSelectContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + [SELECT_RANGE_TRIGGER]: RangeSelectContext; + // Warning: (ae-forgotten-export) The symbol "ValueClickContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + [VALUE_CLICK_TRIGGER]: ValueClickContext; + // (undocumented) + [VISUALIZE_FIELD_TRIGGER]: VisualizeFieldContext; + // (undocumented) + [VISUALIZE_GEO_FIELD_TRIGGER]: VisualizeFieldContext; +} + +// Warning: (ae-missing-release-tag) "TriggerId" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type TriggerId = keyof TriggerContextMapping; + +// Warning: (ae-forgotten-export) The symbol "ActionDefinitionContext" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ActionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface UiActionsActionDefinition extends Partial>> { + execute(context: ActionDefinitionContext): Promise; + getHref?(context: ActionDefinitionContext): Promise; + readonly id: string; + isCompatible?(context: ActionDefinitionContext): Promise; + shouldAutoExecute?(context: ActionDefinitionContext): Promise; + readonly type?: ActionType; +} + +// Warning: (ae-missing-release-tag) "Presentable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface UiActionsPresentable { + getDisplayName(context: Context): string; + getDisplayNameTooltip(context: Context): string; + getHref?(context: Context): Promise; + getIconType(context: Context): string | undefined; + readonly grouping?: UiActionsPresentableGrouping; + readonly id: string; + isCompatible(context: Context): Promise; + readonly MenuItem?: UiComponent<{ + context: Context; + }>; + readonly order: number; +} + +// Warning: (ae-forgotten-export) The symbol "PresentableGroup" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "PresentableGrouping" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type UiActionsPresentableGrouping = Array>; + +// Warning: (ae-missing-release-tag) "UiActionsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class UiActionsService { + constructor({ triggers, actions, triggerToActions, }?: UiActionsServiceParams); + // Warning: (ae-forgotten-export) The symbol "ActionRegistry" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected readonly actions: ActionRegistry; + readonly addTriggerAction: (triggerId: T, action: UiActionsActionDefinition | Action) => void; + // (undocumented) + readonly attachAction: (triggerId: T, actionId: string) => void; + readonly clear: () => void; + // (undocumented) + readonly detachAction: (triggerId: TriggerId, actionId: string) => void; + // @deprecated (undocumented) + readonly executeTriggerActions: (triggerId: T, context: TriggerContext) => Promise; + // Warning: (ae-forgotten-export) The symbol "UiActionsExecutionService" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readonly executionService: UiActionsExecutionService; + readonly fork: () => UiActionsService; + // (undocumented) + readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">; + // Warning: (ae-forgotten-export) The symbol "TriggerContract" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readonly getTrigger: (triggerId: T) => TriggerContract; + // (undocumented) + readonly getTriggerActions: (triggerId: T) => Action[]; + // (undocumented) + readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; + // (undocumented) + readonly hasAction: (actionId: string) => boolean; + // Warning: (ae-forgotten-export) The symbol "ActionContext" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK">; + // (undocumented) + readonly registerTrigger: (trigger: Trigger) => void; + // Warning: (ae-forgotten-export) The symbol "TriggerRegistry" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected readonly triggers: TriggerRegistry; + // Warning: (ae-forgotten-export) The symbol "TriggerToActionsRegistry" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected readonly triggerToActions: TriggerToActionsRegistry; + // (undocumented) + readonly unregisterAction: (actionId: string) => void; +} + +// Warning: (ae-missing-release-tag) "UiActionsServiceParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface UiActionsServiceParams { + // (undocumented) + readonly actions?: ActionRegistry; + // (undocumented) + readonly triggers?: TriggerRegistry; + readonly triggerToActions?: TriggerToActionsRegistry; +} + +// Warning: (ae-missing-release-tag) "UiActionsSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type UiActionsSetup = Pick; + +// Warning: (ae-missing-release-tag) "UiActionsStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type UiActionsStart = PublicMethodsOf; + +// Warning: (ae-missing-release-tag) "VALUE_CLICK_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const VALUE_CLICK_TRIGGER = "VALUE_CLICK_TRIGGER"; + +// Warning: (ae-missing-release-tag) "valueClickTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const valueClickTrigger: Trigger<'VALUE_CLICK_TRIGGER'>; + +// Warning: (ae-missing-release-tag) "VISUALIZE_FIELD_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const VISUALIZE_FIELD_TRIGGER = "VISUALIZE_FIELD_TRIGGER"; + +// Warning: (ae-missing-release-tag) "VISUALIZE_GEO_FIELD_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const VISUALIZE_GEO_FIELD_TRIGGER = "VISUALIZE_GEO_FIELD_TRIGGER"; + +// Warning: (ae-missing-release-tag) "VisualizeFieldContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface VisualizeFieldContext { + // (undocumented) + contextualFields?: string[]; + // (undocumented) + fieldName: string; + // (undocumented) + indexPatternId: string; +} + +// Warning: (ae-missing-release-tag) "visualizeFieldTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const visualizeFieldTrigger: Trigger<'VISUALIZE_FIELD_TRIGGER'>; + +// Warning: (ae-missing-release-tag) "visualizeGeoFieldTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const visualizeGeoFieldTrigger: Trigger<'VISUALIZE_GEO_FIELD_TRIGGER'>; + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/tsconfig.types.json b/tsconfig.types.json index 4b7dfa2d014a3..86a45f6db1697 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -13,6 +13,11 @@ "src/core/public/index.ts", "src/plugins/data/server/index.ts", "src/plugins/data/public/index.ts", + "src/plugins/embeddable/server/index.ts", + "src/plugins/embeddable/public/index.ts", + "src/plugins/expressions/server/index.ts", + "src/plugins/expressions/public/index.ts", + "src/plugins/ui_actions/public/index.ts", "typings" ] } From f993d2d8e9061d3f6fe1ea533fc9f62475e333e6 Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Wed, 30 Sep 2020 16:47:46 +0200 Subject: [PATCH 119/119] Optimize charts plugin (#78922) * Optimize charts plugin * Fix issues to keep same behavior * Remove dead import * Revert name change --- .../charts/public/services/colors/color_palette.ts | 6 +++--- .../charts/public/services/colors/colors_palette.test.ts | 6 ++++++ .../charts/public/services/colors/mapped_colors.test.ts | 8 ++++---- .../charts/public/services/colors/mapped_colors.ts | 4 ++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/plugins/charts/public/services/colors/color_palette.ts b/src/plugins/charts/public/services/colors/color_palette.ts index 464e9e3a66101..e1c32fe68da12 100644 --- a/src/plugins/charts/public/services/colors/color_palette.ts +++ b/src/plugins/charts/public/services/colors/color_palette.ts @@ -17,8 +17,8 @@ * under the License. */ -import d3 from 'd3'; import _ from 'lodash'; +import { hsl } from 'color'; import { seedColors } from './seed_colors'; @@ -49,7 +49,7 @@ const fraction = function (goal: number) { * If the number is greater than the length of seed colors available, * new colors are generated up to the value of the input number. */ -export function createColorPalette(num?: any): string[] { +export function createColorPalette(num: number): string[] { if (!_.isNumber(num)) { throw new TypeError('ColorPaletteUtilService expects a number'); } @@ -58,7 +58,7 @@ export function createColorPalette(num?: any): string[] { const seedLength = seedColors.length; _.times(num - seedLength, function (i) { - colors.push(d3.hsl((fraction(i + seedLength + 1) * 360 + offset) % 360, 0.5, 0.5).toString()); + colors.push(hsl((fraction(i + seedLength + 1) * 360 + offset) % 360, 0.5, 0.5).hex()); }); return colors; diff --git a/src/plugins/charts/public/services/colors/colors_palette.test.ts b/src/plugins/charts/public/services/colors/colors_palette.test.ts index 6612447cefe9e..02ff5a6056d54 100644 --- a/src/plugins/charts/public/services/colors/colors_palette.test.ts +++ b/src/plugins/charts/public/services/colors/colors_palette.test.ts @@ -37,26 +37,32 @@ describe('Color Palette', () => { it('should throw an error if input is not a number', () => { expect(() => { + // @ts-expect-error createColorPalette(string); }).toThrowError(); expect(() => { + // @ts-expect-error createColorPalette(bool); }).toThrowError(); expect(() => { + // @ts-expect-error createColorPalette(nullValue); }).toThrowError(); expect(() => { + // @ts-expect-error createColorPalette(emptyArr); }).toThrowError(); expect(() => { + // @ts-expect-error createColorPalette(emptyObject); }).toThrowError(); expect(() => { + // @ts-expect-error createColorPalette(); }).toThrowError(); }); diff --git a/src/plugins/charts/public/services/colors/mapped_colors.test.ts b/src/plugins/charts/public/services/colors/mapped_colors.test.ts index e97ca8ac257b4..9d00bf098de4c 100644 --- a/src/plugins/charts/public/services/colors/mapped_colors.test.ts +++ b/src/plugins/charts/public/services/colors/mapped_colors.test.ts @@ -18,7 +18,7 @@ */ import _ from 'lodash'; -import d3 from 'd3'; +import Color from 'color'; import { coreMock } from '../../../../../core/public/mocks'; import { COLOR_MAPPING_SETTING } from '../../../common'; @@ -61,7 +61,7 @@ describe('Mapped Colors', () => { mappedColors.mapKeys(arr); const colorValues = _(mappedColors.mapping).values(); - expect(colorValues.includes(seedColors[0])).toBe(false); + expect(colorValues).not.toContain(seedColors[0]); expect(colorValues.uniq().size()).toBe(arr.length); }); @@ -78,8 +78,8 @@ describe('Mapped Colors', () => { }); it('should treat different formats of colors as equal', () => { - const color = d3.rgb(seedColors[0]); - const rgb = `rgb(${color.r}, ${color.g}, ${color.b})`; + const color = new Color(seedColors[0]); + const rgb = `rgb(${color.red()}, ${color.green()}, ${color.blue()})`; const newConfig = { bar: rgb }; config.set(COLOR_MAPPING_SETTING, newConfig); diff --git a/src/plugins/charts/public/services/colors/mapped_colors.ts b/src/plugins/charts/public/services/colors/mapped_colors.ts index 3b9e1501d638d..15f9be32b829c 100644 --- a/src/plugins/charts/public/services/colors/mapped_colors.ts +++ b/src/plugins/charts/public/services/colors/mapped_colors.ts @@ -18,14 +18,14 @@ */ import _ from 'lodash'; -import d3 from 'd3'; +import Color from 'color'; import { CoreSetup } from 'kibana/public'; import { COLOR_MAPPING_SETTING } from '../../../common'; import { createColorPalette } from './color_palette'; -const standardizeColor = (color: string) => d3.rgb(color).toString(); +const standardizeColor = (color: string) => new Color(color).hex().toLowerCase(); /** * Maintains a lookup table that associates the value (key) with a hex color (value)

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%0DVgk4B*!EOa#6Y}WT!wkEhw0SU5 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℘frc0S`Dhjmg7Kv~G86|}q(Tr|TdzRYN9`fF~ zW=GBNZ$G*{rCY6lJBYK#Q8lN|rkFC~4ZE4{F}L^|zsAR& zPAe9xEjlk3WlrWi?k7K8QaBzYt~T4Pewm6@)R)tZsU&2v(b?vM6#ZhAi&#zp<3Hqi z{J+1ksWKn_xBFUWAK<=bJ#r!~V-`GKtWhqarCFEWQNKo&d;6XqX70PjrEeBY+s@@4 z*e?QRq9L2SAQL_cpL{1ByP12hDqFc{gEp^q*9Sxg$ZKaA@DMiGR|H z)mFc_m$fvET*e_4eRyx&%Qm8VZxjt6ew=7zw5}NxOjaKh3ELztpi^m2DCagpjNB(R zha{jGhKF zp364bBr550WVGVyOJSa5z;E9xPb{IPspq8eCoT0WENBPVm z*VVBWtv;9)&(x3Zp+=Z;JbIM82hecSjK2e!QpF=L=6yk z$4D`&&h$=YGY!7Z^_RUwT0OsC-gu}E+$8$yBZ!jE7?p^3U$Shsf9T!gIKsPc={^%! zFu&;soN*?ajaKquKz<@djQ_{coPXeOrUu&eMb-h5gE@fYpdSYz$Rc3s9ZviL5R`>v6kd9&?+6Q( zk!LRlun>%lmt6s8S_p|mIlByIp8KWuUz!6%Fp{?n<~cLtxPUH`tQD)2f3$3bfFLh= zUmtHHAIXpO6IPjZwlhWmnFav#K=l7brTG;#6hO%m@bpP9OQw^}!RL)}fEPvzfFBoG z>iqHz63Co@SfL#Bci^y74Dbz~|Mm^9Bp`oB1psvRn?}G9;K~0MA^cGzy!nQI%>?*{-$4PuH~b0;!mhJO17oj2c50q_k#iVp@&KA%3YQZ)70blXG0e|tk^6G4?ySy(zLv|cYO75_*b zr^Ay5wGNK{gUbG=bAUJCtUV*kf=CJgPEg2%N6^LQqNKS~vTIaxKfQH5FmAXAzk3mn zesq1m3iHR@xLVY$%Db<@D6r*}zBn`rC07Bi_)AyS*4Nj~45J?Qw(HLS*y;GSF#wJk ziAOL)S!s&Q43Fm+iMLw)Na4~vrZ8Gh#18%KpiYb|urS*=(Wl*C*AJLumJd6O26ikw ziaE`TSv!9X)cSaSmf@|TgZ<^vfyorw{d+orRJZ?OSv(NrTElhN;<+uRdNHlo>6Y-a z17`M64Kd>M(Ee%vx#`BF6UFewn0xkIRONBB$@%}cfKDgHSl;RRAa`)#-gi(Qsrpxu z#G?J>siUoMr!p@O$t(u7#813vQaK@!tIDleu)ux z5GD#=P_TAB7yRHBmG7+w9n8#kg|~pA>@8p@awyw@LHiXjAOZpgPe8!nTJxR_5HJ7% z0)`q$XZo}GHhth!sJ}Me0tPm;JCij)4+YS_Hr@h;zb5>e3HX`)o&pFM{_G6+nf=}e z5HP&^eLTR=>}}{*z;N~!Fxp;1`?$4Ht45MrcpT%!FaU`^<({?(==6wydnK+ znE$hi5Q0mm^JA$G^m@65{zl2CXC9)SJbboq%AICr(i1E`wtC6uT%H**qz%kYSa{Pa{ zj8J{`mBJ9YA(ulKBap8)OFnf_@sYdo)bA@Y$Br?huvp`W`9dL$EleYv?fy?H{x260 z%Cq-dQ}oA6{8~-mQ~VcxzC!a~{Cxbs`1!Se@$+L!-v4nAK$*Xg`elNN5wRX*ljGb}yhzs9rm`S)l$S+`3 z@V|gn-_k&+RLs{EyCiXN`f+xy3vme$_Y zoj|h1_*V77HN8B=TGA1_EuX36`SonWGy)Xp6@a1^R>f*|x)*yY@8xi(^{Ur@eJzpw zWP^;_-PxeSGwq+$Y(>?W$f!)b2t0jm)Og}+#yR$ zJ9b;A)CL$ECNA%PRVO^G2?!#FGveWG-K&aCpzzu*Z`!Vwp!8j#ZkIHuMc5|J5dv=U0eny)}X+S5|lm0Bk6Cn_50;W6Y-MuxNM`;-gZqtqP=X zwXKMf$7}2Epj(1y{MBhC*8T%;&9P`xE6y|J;@R#>@##yf+(TaEpkC{xXlzJhW_wln zeyG+njvZPJ%RYW2*46_^f8C_wlIcsJQY%IEJ6Gy?weR&-FNG;8io!pZzR1JGw#YwP zZ-Sc1y05-cdLi9+LQ-_iATkAO8|si{ww*->j|77WlUY~aa&S`-gpiB@%J89R?K=%j zCbT0l6R*Hut-RgRA?bF>&ITulqHx*>o~51GTX{Y%p1HF5MQtyX&3#D6t~$8ATxui^ z@4YtGj6O4C29FEmwvdP-RznC2mfI>7!pA zrIimMF*YQNkN^d{c3lAj;tE{L1M+YKRJBBMtf|+UGZ(kM-t8PWx-GDR0%f$JYYFpiCVdha3=$MarQf4B)Z zVUiGQ<+biIGcMSV$;Jn-N3oq|rnedj)Nr;lwm5XxH*lP`&g|2pr|qqyRCuaZEb6`| ztx4{&ulA-d5i3teh?hn1g2zMq)}g8L{_n6Dipa=K1kQ%Q|`d zR2ACUKJVD!?8alej%$6lJouQ!CixS~Q(1=yd6v$On!tS`eDxj08D{sT$}QJpKK5(S z-Eke5>?j&?1DlT8<{lH@+;!Zto+t3WtFa)?(#i9$a+|$_>WwSL%ClJ4puC0}+2c;K zV_0?S1bH=5?$k#5TK4zSp&ee5siy$2>j8D%Knro=+cNz_* zgpJAU)hw>EG6wFg_18}Lt0!W1Ms7!0{nz!-t}*b4NA1-*&Qwl zlh2mvvp?+9xqwaG^;%p?v&-CF-jE>Hrrl>Jf5lcv(;{%!EaMg!mrm%`8I& zh2+amd-fCC7yXG(znH{SEU<&ia{}Fc{9^&C&b%xkstnb8=1YJQDWoG}`WjbQS1yD) zh(G54C>jwfoB(+YTG{{rJro913!w~Sd1WeyHv8tf|FSl;2|AFb)ai#;ZP=Sfv$NZ> zOLWj|yU-W#eGP5A%tMQar6ow%!>GU^IK3=X*Ui{Q0tbP^j!=uQxcX zsf|Q~KWf)MdXHk^KO=fX)4X@xhZ;nA4)iIkV*bt;RsJeZ5}>&`tub~9r=?`6mN#`; zqnti=t$op!qeY^h*LtA#*b+-U7n@Kbb#Y+fY*Kq@VzjM(({jak;>&o1RR5rARyEKh z-Ls#`!xlM_xy=^diEbMd zH_}vTO^fli2(itFi*zeWwYAKYW1E*7D`wxP%+UZWVc3@~G1&ms_%xFGQ7O6JOxxUX zo6Md?+f!MFliP*m@zoXa2n9$6TH)F`&BisYC2~URsE2llmLGlvd+a>HALJ z>_q%mOXyK+{0sm!RcDVb>cqmj6ZfPG%dpQT1e2JgJE=^aSoyvCO>+|nJuYLyd`PNd z3f(cMs7&|AbM(faF;oaNsVcoL;y#Kg;@M|JV8aK2ysS$0Sv3v~?LS(?Iw;l;>R80T znfRct8FNlCgJ0~3L1pvE5pw1I?hK`Clc%Y7=KX5_0G0mMh^4_k;?)VFI+}i9|6+9SL;R*aH3lc^sg636Q-ye z7laO6zE(~k4Mx#7Il1rp?y_r)mip^T^>{T(C`YtiY8N-Dj}pg>&@0|1(bnMHT#9@Y zM#$OlR3ei$2iC!iMZr(Uk?9Ga#L4mB5c9HxN84u);m*Hk94h+#byowPN_YPp^cwvB zv-_fmMaQN7>6)@LbaOiTVwSzQG(5J29#En?Sh%%Yy?%Eyud^PN1N@k6Vh^Yq;$I!2 z+$a>@mvfvpVP$>pSV(ZRtzDm8q>!7cR33T>qbQJ1v57!e4QweA(zqDDn&h=>LMg8n zd#qtC(42mDr;#IusxhrnM%m*4;pE8*j9WIGX2n2y48i4TyV$a3_h8&mpQdQ$#SNRY z=0~?|v;3eLPUjOrBq50G3%3DI)_j||hVM7G!G@tP$G^mcRN(HllNPhmk$79WyxOiS zC2TWf(wK^TLNQ@yq8wLt5@_sOlI`_0wbw_uaLRxblDi$Kv|8~k=+$D=b{i66Z zzgT)@i-!=I>_vlRUVWzw+}3E2loA5Vpu>`?vh zSIGy~sly9S4lnD+*{udQM8(~K{)Lr3uhtdu%OR7c&u1<4uWdP}JS8J3voS4=&;_whNL!jCd8f8GKiupI(oeA%86L)sR2QOT6sJ;S)z50hTRW&a>yZ zn<6F-I=a;QA>!qz9Nbzw9-pvk=wxqOS3$w0oZVqL-sABe3*m?Jl#S0dI+acbFB{kT zl(6=G?M*&|K~RTgPG3D=PBlRfVewCysAFv^7FH?fAdm6RX}C#*TB@jetY)Y`a82&_ zXUMeb6*dwdPRYV}IKGd}+K|rH)fVq(jkkj)xv>{;t5chMsoTU6=?$Mvr`gMc%Z+Lj z57BR6YA^lb!8KI)sDJa>bT<3ui5So@_;YT;%~(w$S>x`6Si{bQ$7Hr*W=nOwUo3@J zMy_5~3x>#<^g zV`GN7Yj$nb=hGx~xRuDf2O#z5Zv<7FUNpX$cqRH(yk(_rCpIVP?Q7d%#jnOuoo@)z z;1bPE9bq;$kShnij0TW=f1hdh+^!KZm1IEB1nbaMgZ0UDDLA4aGq@}M=ZyUKF#txi zP>;l3CKOQ7#{Lz|+R4&O(%%ACgR2{g6f^e!7iVt)Rmak_jbgzag1bX-cXzko?hXm=?(Xg$ z+}$M*+}+)SJN!F2Iq&(-``!Ppb?>URYR~SeUDFIR(>?t>Rb_1d_WiWytuEGMzt(b5 zOOw{?E!%TmI6?Xo5n3Yd$e}4BCA}$XJ|gy+*eoNCKDM3ghwnwLi@WneJ8dVXA^yjv zb_?*}udtI7Kz~#f=4(W1YcE17yPz|zam{DUEr}oCkje!YA`~BEBiKcFMM7`pK!riE z$f;I+za{JzgoM2}`J;RU7yb|ejrfs(ieDLCN_qdPNG`GTkjOPZL>v<=+9Qxd?7P9`jhAxvYU zpq>|(hN_Gq5QwCV!6UB^_EA(`zuay5TA`F4FVkJIXePvv9>R4r>?$Ra!#|PNT&<4T z#8GTDWzlnzqT8x#zyd_W?eqO$YgVv~i^v(bP;IBLf%zLS1bAFw!wM=1;IWqoGOQRw z{o&t=2Pxm*h*CVs@860QfCK#7uwsFZKpi@+kU-r{(FEeJebZlw@kyivY60%C?}7d} z!6P{Q?NLzrhm;QZ@buFtJfI6|C?rz&)K!F#d^Duh-8gDGpeXVnpstboyDXxtr;(a$ zm6~M-t4xk?0_dq~IhDZ2SkW@tJHXRuNBtCv4MQC{yjwKAVK>yuhz7!#j)qYfnRG}` z*XiLjPZ}rMRlv{M-l=)yfv;QopZOg%KgE24IQ=D60k3N6#`HbC2oyC)z^C3ui*z68 ze7wRz{gDg=0|dkqc$jZ2A(RwVe7p!@RiQ<&c6^w|U}4tkGvTB~3ykDo>;0PafYqv8g+%5Lh(n=CDa?ZU`<|2#&=8quf-R-?Qd zB~nKVLuWOSy1^6ysyIcq0y1KNP*LG_V*dSnZm0bXuRGKfb{?DX#dn+zCWiTmiS3Dr zWx$#-AD?^Y1I^KS=8N^6_*(yh;r)R!$%6Lb>)Qg`fvpN4$@R^f+(P6E?Uk43{o7h# z@JRsZ4|#>p`1ma%L{R1gRsm3yF*$1oN*BPo1xe(AbeD6%sJdR>ua}7yGQ5h{Z*JZX zy)K$CVA%fE43KHh-BMJS$V3UKiwC8UZe{}ZT`{g!2~=8wyX_N$3o~c<u+B+!QFb2t-ChD>DD$fMsjR+sCtAlKGJh3>OpK%!cGW*>AXV{k)~rC>h!`EE!YLN@6S|zI&?l6-iYYT^gS)fM{s>S8 zPy_IO*bq#_I!~m!eq)hctINk@aLMz};cM}E?k;?8@0J`oI9AbE?ylsBL8-!m+@VMwSpn zksW^T4ond0oY@vU2;LV&)>#Bb2cZSif&~01cVL0ftv<|IWAtiZMKj~|u;4zKz#mR#4@PW~Z;<8mbCx32U43U&@{oAuk zi-%fNfk*%mCfVbVud(2d@BBe2MC77D@b7W3$U#1^z?dM6U`CKblThTau|%|}48knP z5m0%afe(h8g3u@)8d`^&0-6fX%f;i*n}GpO&t=-j)o*FTZ$2m`fnIA~}c zeg+VJfD-!aH2nG#4+HK4p*LdnX#_DXJ`(sR6znqC5fYUp1h@kBP56_;QX*pfeJTLw zuXrS|fWkuzO*9s&P}w(+@#YB74ID!!MXivkF5>6woduq+giB60xj5)pGPWAt5lvqS zVMG#MlBrrWZAv?8X$okMT$DdGLVqqVM`YCS%TPCWITk+EAI;85Xs zWqmY(9Pyanqk0gL6rO7-+x1=i;}@A$jB->?f=cVmuWdWaO`tnzs8@@2aMcji2Nc!C zcJInH+wx-|x@PBjEVra8ocE4bVmn&ZXsOxmfSF^F`3v60pukFc>235#pp{=gL!cG9 zjx3E)cs4w4?TCd&w<6dk(B|eawFsK7$EM99>x(#^!7KK8R-XX(xa-X%xc_93wm0Is z)AtVV73D%7v+?;>+nq6(MB*olSBCgp#HFbhtooOfPi;vv3f^^m{t6eS_5w-nd^n z>b$7oOC^5Mjf?Mlz4qVkv_L5Wy5ADP-{jqV3!6A=3dJQIy6cW0(1LojJ>9j4iSips z%$p7@AnajNlVHGX}N_u5A8WKLYEPG9xh!c{6FKoQAa7 zI%CF6(j+JHkATq_VxJiwXi~_X>4k(xLQgHbV^Ozw($!=edtJi&iJAjA(cEj{Hgw+X zcZ`VgHpbJmVSBoiC~_N&=(rz6m(-TT9TZY2>K>2ZyHH8`%eUuTth*2P))V;;;}JLY zTT3KAK$k*e~eiVZud#a*I*RJ5H`*!8*~Y zJvI6J7lBNI0fbv+G6VfpR(@s`w&-&AaXS0^+2!rcI-ThS?lLh)2!#*&8RYzU#Jk_VY>4Z z=n7xun@HyUGIIDR=5m%_uyH*x^t2H7`T9ku^(7Y@)#bKr)bms%zh`W%*L5mpp=qk$ z{(2y)oe#XjrRG#_aNea*#ukyzkwA0kz4_~c4kTF46Fi5i2-hyK$d9~9M#+46@GA`T z3CfRp!l5&HAO{e|AiEEx-EW9(wjL|GZR*Sz1*RCIkcgeE0UMl&vT$24JB)oHsQr6z zSP3)P$zQlr3Y?q$*Bxh8TU?smPf4}178y^EH*3%{2N|i;QKDI9(0Z>2t>THMX6X|o z^@$A+kAe=CYpqAfmd=TrRK7}BvMbG~J)NGb*J0`Bc}fadf((PLC9$NV#I4SNE!cNI zT@*f7IC9xZ^<5fpN7AnBY?YwviW1)!SNTsla=9kmodO9x7xKxbWwc9rzm`3d%m}I7 zSHGg&6z86ih3}s4nbG5tRUPZP#2!VTEjK7s*`hymo`Ih=l<+?9GwYmEjE>(f-%364 zcpHf}t=+h;I>t}U+Gru$Mg{eE&tUVx6=hU;+;}f^dhd8F(;0S}u7E3lPWEVcTO~di zXGOm=S!7F}=qy74z!?kYTbnZWNy$>TpTDKQjZ2f8KZ1+3%R`=aj-4kvT{+QnUMtlM zfk((ua%5ck3vjJaTXDh9kNXtj!fp?nOG_>h)mb%i| zPdB(8u5H}CXDP8A&e>EdPzZ9(Jh{v#@I0Br+s28iDy8WvN03?~H%<_n=Fd00s815L zO+FND`_>UL=@QeruGt&8BWo>96`#^Nj)mU_NdaBGaLF_ae6kagVDtE)qAcU$`;+*t zcjZyn(y7<2jZ}|FyTMjHe|8&kxEslstZ$+b>G{)_A-e?byQaW~nM9phql%?vDVcT4 z!!Py>Vw1HDrZd#VJgwNwt=kxb_g>O8m`m>utU^2DB3$$+JDg^#)A~j$bhxSKAC9~Z zR&+Kh!YoK19xFC1A9c7_$~<{eJj51`2tjzJAQQf4<*COEsl-$vf6TCr zcOzENSt->1Nt=!mS#Es`T6!?*BJ;3A4Sy=e^+Q^Ip`r&V2l^uv{vSK&>%SmRZ4`56vk;5eoQV0NK!ZvH{gGAt zxD4$$Ei*2+c+@X;s&m+hjm+Mt{55Hw2;#thiLE#r&QEiL?a7GV4KWk;`h4${x8&v8 z?dxS)2AEFR%JgBN`C|&1?2Z=m{+khN{K=aqGw_a7*-9&JiM(FDS+ACt6*&{F^j9`4 z-ki%N|MD(_Y7??qC_*yRam$7$w>AjoRyT3H z#Zl=o*ju*C!V`C5f6vk*Aq^cogu%fYxHyV;3p=iq#pGPf`Co9xO^j=CLM%iocipuA zS=KV~n8^UUXL{)6_rPO;NIHh(G#)b(mStno2CITJYF@sp&gvgk9V2DS2mm-k=WbV; z_yDrM(y3}=GhTrH@O^L23cf{b0-ldm@8w1|n7M8CP~HguXB5Zlbm6W@JPX_n$A@XUxAKMc=7ZTd&+bo#&VRPtb1nsb^?@I%vK~1@86y^ys>gb+XjvWV zeBs)ks^_S2@RT`WQ?QE#CxSfr{GRWb!_6*3VY(e}mANwtLf3H8zf1-}mVy#gw1HlW zL27aMxQC{9ypFHf$)Ro4=+G9j7_Kv_jVugDsWCKlGK@rnD9hxa<7Ipumb^)4`SAV| zV%^Wf;|K}Ri)C?b*IH?l!T`lpP?GbnX5$uzi>NYcpz8?Y zW^+LffJd;QrSM#m5K9UjL8Cyipm61_gaYz>euT_)KlF

B2oA&EFx9%H7 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 z zZptalPF2dIZj!0#%XWOrBTs*K)bhtjx|k%KSP0s9cT`?+h{gIA;rwsiILR9;%7SaEbvCg?6&IL zmOWzM1h{vBWVa{$m5`a+qYTbI=@c)x)$41Ea9U3AL9O(rW!RWoQ3}V?*T5> zlB@2gtnD3ZZ~<(vE75MJZK(;cD#kHhlY zk9x8id43e0_pbG#etzb{yPs7jtuhV;4};Jwv(boMUyQh<%l{6cCPvVTm}`vgI3#C+ zj(!II^gc6Z)uliS(SjP9BcWmj-r^|Jt;9?l&t5M+S`bYn92(Bz=&tzsm06%0&F^AY zhz4vvH|jq9+oQCbp-=4Rn~lfK#RzhX!Gp7z5fTdWc2dHJJ?@rKUa=|BQo_$|Ng7ml z3*FaRNUFz7COYWHAO4TFpRZgfU3AX9J?{29xn5k)r00#6-p@F2sI)0M&HvZi&Z4i| z&Tg`~4MM^Lj2a(?1XszW#Cw$Yq~(gTRDaw9n8r6(kGzsB>eVsuOS4y(oODe&qB$Qe zZZo)^w8xSWvTJC$klA2sM80y96OyN$BJea|Id^6vH$)#2d~r0M)b;_WL|?H-yjh;q zO`FGET_;L=Xq3}7p7I|She<8wmzgrunQoZjd5q6jPOJ?=SO}(qcbxU%8{@>_!PoHJdIKd z8TIg8tIm>pyot@)WcgIPx;R!u+T!8cT7~O&QM#vj=V!MqxBr;FUGMfqE1?J?l?mXB{d%pd#f#()=v#uu zd~CKxGRsj0;KiN#7ctrVWn-Q-15aB#DEB9C+2}5r$Nemki&fR*s-t#**Z;n2y%5Q2 zBhl(A0;_%#3%|aj84e!MK)tkMhaLp0(#?8&&=`LdVpvLD-6&%8zyn6)1fpx*aYJO> zI5;uyq8@(qx+@0Pk(jNCm1zVezHP&=&ADBREt_2Vs?u2g0NI|eo^4ke8|!$U-{TuB zq~e3qLg3v+gm&dq^Q|2=raMKM`F+jz0)|7`e0Odul3yu8Q}Gu=ebzMFM-9!c+s2=F zxAeq^9KY^0B_>DpIqNR9IM{O)&SOs>SK+VP3YAFPC8p=Mx~3Rpc(R~JG3vi}jFQmG z;kRMf!?!o-XIL<`v`{HYu&z2x0yK-$ge`AEtUpYux#zl)%p|Wdp>s?d%c9=;NGRa9QA{_?d~_Zl*aAJXEwQA+BiX!Y_2wH^5anWQ9{x9s>a zWBY@*%~;aYo57V1cb0W!z`F{`W;SHYHxeuJC73cL*xqbsS9~cCk9h8$SB*#y$nIls zysZ|*c>S~~5_WgP6$nOYjdypTTBKsQF; z0z>)6xVKU7o& zD<4VqM`pUMQuTzeAqFlq|7HU89`qE`cQk1=%lqGwf8x010|tp$%}|8Vs8_8_0DZVsb z4B7!iy&vC{+tr%1K#1^xfVPM@xJFgNdBn{`mCWqFzls04KG`fqlW75@wOKjNg6CT& z#wmg{O?2UZ?~A5{dPb83RrzU-C>v=z*yw_W&i+>8K)Iaodeb$O_g&4*YbRtr3;v&d zeSX1;Vd1-L3IzD#o7H^msEEez*nC#3c3sXiaFus`?f|hKyaE4;^#DAGVNydqh2M^} zs+r-5>4AT*`q8}7-&>BpkjjA`bpRB67qjQvO7~(g)f*T94}=TkXoU!p5aqWzf5Di99SRH{#4mtvjR27ysvEG*&y!!*;K$c~PF1)${WH72 z!yV}7c=L~SwuoZRf+7Ey@pE#ncKe?nYOiGcXF#sz;9sY92!94th4AD5T<@m|F*ty4 zpNR_xOd*10o!}GXCJUJ8Vc{uOx%U#Ab^s_ez&6MS2HpfQ#?pdJrr4oiwR0bmB%UdVUUvLoE?cR8i zL{nd$q`eFS7eoJf(k5p)ATI`_yr2rvWG@s%D!e@tGgl1ZzH@;yH-xSCx?#%6yx15NG!_;qw(do>L1%qQBvQqHb z-hTk*X||37;o&jl8+Yf_WNTs`LG7l-^g%gM-LmRF;KId!N|!23C(X zY;SSro-$H|l%a5_6N-o*RFJ-PX~oaNMJ3vzQOo+E;d&5|1j9mzK>L;d&~MHGv9bV> zDPQhPjy8yt`CB&&t~jY`GKKD|;o%*?@L*%VF-l$!I(bcIyo6n5O9~Tg=|9E~H!py< z{OQSiRj|&G0oBhIXdNh@i28l|!v^RMf!i6ecj%Q(gU83<0P)_OkQrD(Z07(y*TuBU zXI!05X!$Q??ISpr+7t=#_D_tP`H1sp8(8r-?pKzq$2K!2?8jOhH&-VPqU75AN68

0gaxoGo$KUO9Q7msF*w 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 NDJbY*(FfOq9 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%0ARP^H+3JKaged*isUk1kkf&MPpPWJ~@E@$*fg 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�>|1sMmMlV9s{regChfdI~r8D=O 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%0DBXN!qd12GaU9_{e}q3~n}q(m=v1%=as>_!0sSUd z-uvnFiuz7DDzwnyDQ1;osUm;9r^$b+tMU}1V1j(--?>VERnzG|6-qq~+=)x)L*XO{ z3Jov5#o(k-#DT&!IB8w$Iga$M_G=(4oF3BR-3&J#rJva11KM6hH=f6L-l;~vg zN0^`b7nSSulvG^@;GhE0vVUX1*a$GAw@xxZL6`v?!8D1|(2WAJ zP#n9t7eR>QJd}VsQ-=M{3^zbDM?P?(NeH9XtOJ2^PZ1)aPf{49c^*at66^vP(!~cb z5AtKyhr&8T=r^l%EMogbj)j|^9f+B&gl%Q*s?Ns+@l46iS4t^9)U;AqlR-OG%Ia;R zT|%jtvRz)OpvWL>)bR?pEPb_)+9`(Z2;MoB!D7c2cX9b<6get3n+Y%AYX_#ot@qJG zIQ~~n9xh)Wro{taErXU`Iv>1=tIp>gAjEjM77bqT?t*E2khT#uV=e#)sJ#Fnpx^=k z?}2yVu3F~d`=PXl@A||Ai3dSKg2Z$4JPUy5XIY5yEY2cOe>w@z$_p!Tm)|ewCz$I< ze<-&DdlMK?9zml(f_)FCNlJ}C4ydaP^E4$12m=FI4+5XDPVaeb+XK0RbswjJm*t@w zkfHp41OaIF*0HU3FMRsT_#~NkF>+|MhL|-S9pJC`eK+GxWgo8z4vD7Y($T4|JyB{` zg8nUk0lQtzWj>$JvjQu&_q`?{dFeT_r`2LUXHubBHM{$ieOb4l^x`N|-`(-W?!xcI zDm{l(#4h_suWl%Szt^tI{Sm4Y*4{w#n+&Vl!VYL_RNC;EZgySLlCd8zi&a{_8PK_8 z%B5f1hfIdr=+`pndbZKFM|Rc9n>>vYL+;*>)Sitf8m2#M*~5$1Yci=-&b}^^R_3g4 zFZ1}^YjPTNacQjZ4aIYd@5*qlmYpr;NVLxJ(!(5PJ9y)8=aiqfS`P3QKB`(n*}^XA zya0^qjAZyDeU?z;(09FBS^C3brS;IzHFQt@W%Wi{&XX$kCguBq1y@}J+)BV9ximRTk6*%Ko_|So84oLgmaSsbj)+Vb ziT%B(bQzOo5oulne=i#CRIzA>N21xEoi}ftfA;*gRPDQ$Izju9Q-?=|9Tr=?^eG-) zt$$YLImp%VPQ-a7DLMPiE8i$7c6dzKc@8J;#8tUoEgySScn)2psC~?FRnz2#QD;wj z*pXdq6pI~p<@WMkt0Jt5gsMPNl}_`>X;->Bex1cayN*%T-j{jA#s(>0992(^T7OZO zRZ#x!_B@AGMfpn%HrUE~yof_PEN91>9)?Ev1kBqNk;Jb1f{m0Y8RSb?R3yR2#0T{55R=wWlGIFJK;=4{(j2?vjM>2cr+&rw=YMaBn1)b#160GuNNFDhC zdeejN7s;n=)v@PKvndZCTk}Oi`qTR@H6`?${hILuj$`tvx2d`FFpv{*h|Qa)y|Ya{ zsP#bHKN5ED$@=#i2b-9BD**IA?I159+MO4=(9SActsZd9e;ZIUU&Z$8`?65e>E;mT zqq$Dvk=gD0W%iUVUe^7KRORb0WmoEJl1{ek&El~R^p=x!+ouWi_upsn_Wd9lUw1H` zvX|bb{%*1SG8CV4!tT92JCb9MEK(UmIGBZzzf79awdiWQB9(AAO{I->wO|mp4|>^X zkk;NSws$sT&f?I`Q|8ylruQUGR2$vBrF$cT+6YL)f-4~-M7=?((M(-Wr9<<>N7E5h zM@P<64P>(@qbAymXo8M2U*pg`5~yQf?e7noS}axA>GlV!a&+|HwCaULDy+l#s&qyc zAiX#85$?Gb9n&F%F0YL`I{xS7Q^mI=&mc)5 z3bQ0ggA8V;(p}*rsebs>+trfBZPi34jp*c@T#n1k_AMY3@Nk3v$nG z$>Nb-4+U4pzzau&R+nlC)B@7pv{90LiczY?(V6x?$McF^Fz~R_Qj#3jg7!I&z++78B$aU_!7H+%RfA6S= z-Qf&H|MUI^y2`V}Kt^-{JO(+aXqc!%&b&+Hp08z0^U7LSlzL7^kX06I+bJfCn(uAq zD;b8Cq!nTIg2XD?en9KF1+G<6F+qw4d)s&sj@TAm1qmH;c^xn!p^PSIp*eAVPjOt| z>o=~C-NU%PKLH4KkLy#ruoq&76IVL6&jzNvtl0dbAM5>edT3MbnI23l!?Mc=a0bps zPJ{E2(~~4uSpiux6gGtwMsJEHXadR>u|8leVu4S8#Q`3|5HeaPAUx_B3xMyTX0>vT z+HH#RF zFK-w~_vMY#i1@CXCwW3bgd*R?2}$xGh?6V;em(jh92VgjETZp%(MR;pL|mH3^-IGg z9j_U40H}(iRvX;jK;4j0C#|vie^?h48bubX=@zdw_8WhQSJSXU;Xh=n#iuRR+>dMi zoe?Aq`j`0Ghk*kwZ24rk7^d^f;ikl@h}9b!@ji<3T#I^_e$dr;kZs|lBDQ(*$})6l zuCEA{()jg1%!nwNpGA?|8dXybdjqY?24dZzM4`sOoHeLzuU9s^fLJ{PAg{>tLh~nlb zgd{|6num#-XKoz$F%Dqtg`p2%9+;>N7)4AQ5N;ir2b>5T1`(u-pJC`m9w2!{?P{7L zN*Xg1sT^eVl%1>`jbvR8D1$Lq97DG_>X86>{R_K*iE>3& z`rUL=qGT*qCjSO>tOuw9#R00|N`R`m^PY`hKyUyh+XWqKkGlcze2lA$`cX7;O7H0m zB*uf1UyG>Z*G>?Uz=uiTyP-?yav(3k^zQ5<55zcfQ<6Y0gK7RXyMnuSZg2-92L$&X zx(5Zq&H3%!cYoqUMD(@}kl(z4SwXw_He&|kkfd(rWiiMig0dvZBM4JJ&T)cC97#8E z+m~KnP29YwZ4)=_@_F*e&0vNjnB{B@2n_SojlIlAAoJ4%NObHwp*M&10sef#aD7u? zs{gHS@V=>4La9jvQA!&%`NIL{5wwg1v2U_D{Wy$W*F%`p=tB|{lK5B- zqe%q>4+KPw+~a1sN_qrl4i%t^Kn;Q|6QI(AJ+R<1*si#=GAN0lvQSJ*pP0wn8SnC9 zD;F9s-s>z`WuhU-D-q66(GVlRk*bFsAzb%XwZw=zGrgr-I!$ydlF+h9g1G%#?^!%9 zp58BJY1JmvMjldLUi7vSBTPNsj%OQKvg>t+DR6yN@JA!U`b}y9cfg)98tO476DpYS z%ehfhDNJ${*J}&e)1M{k9pkTJAnV?K+)6w3k0Q`A=&deJl{7Z)3@a`lyc3rxH1TWQ zO;UY9C2Cr4IX_R_QvpiwLsju ziXSFP9(eTMz7)I%0VO=1!|HfLAya}d0Jl0^w>n(bR_Re$Gp6avELLf@x)o2-i8~SL zt`-0|qopGSS+b>@kMZx&G%fnb`=H#;t{XJx)xPt*6;d=TC$9Uw`idl<%0a11!G4~x zh25^k53gzELf>i%zLpjhx@&^TNmAUkMlZ%LKm?X?YJd(hfZMC65>xtI8S`9P*#cSE zw`hD8_=dJH_Obu1Fsec@i`t?d%vWc_FhAXyr4IGcEkakwJ4(i6!#!7RHr#WsWy7DG z?Q*?YW#o}M=1&g@;-%Dq0R)%XhPpsbbQ9d?=F4yYJRB=_eD? zjdJMan7jNYM8Vno=3xgVMpbFurklm`umT2hBU`iQJTKc`D(ek7%=Wqtfan#9gNb66 zOdqp!My4}*vacsm;6*4!`Q&Ah=kQQW*bl<1s0%*oPziA_g3S`*gvFT3jn0$A!d^AV zh*QJG0;tS%v1k}GURA$)_Hou``GfdqVY2q8JkFk1rfM%cE@E9GGF;^@i+E6NxFXDX z@VR2N6TwfZw0Jd6orqf4l$sc$6AE>*xdpI*TCqLZb3wL2nL@HH`up$ICZ#{}Z7Rb{ zHCV!@e8)qIuljF(x%=C%-`#x&St;4& zdkYln3>V)sE`aS^{1@W_S;Iw*_=42Iw%{=-=4H&TFTE$f^hPqlZ3(uV3BD4c$7me++vfFrA50IaQfZ$Uz{4UMC!WnQ-`3!r5IU&crlloOZpUtE)`^nO#POFbO-As@!d63Y3Z{?|jocFEFC% z9WGkewQc<7i`SAq0Vwl`3$hRZl!7!0@;vra5@bH~lTsqy1cI{y3H8;`&tc*vF7e_p zjS_^C(03sTQ-}kUBR?aVANpwold^_>cn3nqb??3C9=j)N=tIz@hCT$GnGi=omUtk@ zLN9=E5+FAU{3MQj;z1vUQoRDbsLx)3RNGnS$dKB;mMSw;jt+Pb2DgTPN*n$)ds3mN zKE1-%G6N0OpLX!?o{=8r+4~(Pf}F!B=0r734qRS6NvzyR{0m{^DL`jo0?F zwWHLAy!dolec3(KQ9cEVrA7M`5~IC+|^fZeNkV*U{}>=Gm;O<|D1&E^GXv+~Zab24Rs}ryi#@ zrp~x2FJMbrM9j*mB38x_XCz@`>&auRparCB=?I~i^JZMOUc5;k?tG}&+p0x_u!;}A zimoR{wqj_sOpQKVRb{fVIz?kn`*9N+uf=t(Y|Lp!x9f=r7msf_EV}ioe2WHUv|dZG zA<+?!U-On9md-A&WLw)m6YFjnS3^*kguCC~Iz=4ES&^4grPie)u!xOQi{3c3*p0&? zHeKh)!Qa;ebL(nx9jyqWcZwDW{n`;`q$-d>rY$rq(0bt~Yc#LmMtNhkO~|Fh?~@H%aL-@>0W|%4geF zQhSgPqcL^vyA@#`Tbl8jo|Kb2?8r1Rt|GVFs$*}U8so3G`}VExcn8a9PDl?c4(Z{Z zYa(F#Y9io!IDAb6fB}e#KG1DzB8V>8Q5K{jN&P7EFirzENkQ!S5G7fX_LSo^e zM8tNTK7(m(yVgsr%XG<(LQW`X5fMYhH`&io5`&zC1g04KDM(R@NkV+z11KkM3T$Gr zwu*HY^Vla@kjFUlF;3iwEn<}9c@(%_kmIbzV&G8*OVcgIC@Tz4DVkE#K2%H(0}O9P z5e6)ZFv#t9gqQ06UThB1aq{+PQ)}-}JNoqw+2+3gB*Z9(Rot5XHN3}FVGVB2a@4i8 z9AhLzJ>I*Q&UUW?`aO&`}4IgoyxV6tQ?>fWqbgJ-_@Wn_j0w#BhyWOn41|6h*Pycg zm2Ks@inbNg1&D*o`^rNMD~!>O$)TdJDDZKk=&OabWMnR|qLgNNf4!CW8B4940Z^$$ zd6eV>TSQKOHlHtkF508M+5#t*MljVxg7sjvi{4>R>kXOnO29KF2J(@7{wsM(=K^!e z{`i&?^R_Sr-+lN*MJCEdtrm;TZ^iDcbaiEAJ?B#qHUr<0Uc2hCLL}m*cPsMI->cUi zz>@r_B|Q}!N?mm#*!^(Q&=^*?h@L92E^quJY%~2z?9}bDbJ8j^o9t8;xzv-DIaQm? ziO&Rz<1>M(_zd>?jL-0gg@Fg!#%JiYm(3HpAPI=?!8nSbALkLh!R9H7+#p77oYpZ$ z;aM0}opTrijY_Tiw=wbAYD47SegYpr2rEW9ScMkWYTJh`9eF-oH#0lAL?=q9f3(LYC-9|S%Oe}5V(Km#!f z!S4m5-1NOzbdfdK!c$7hf=maA}BJ3oU+J zP;YCo;FE6zQ zRNViosL(Q@jCCqQJDp=XWKA_`U1Ko$l%>Twd`fc0F8eWFEne1{UcQH$d05+dRDyo^ zecmi!-s&7!C#%_#Yu?BI-DVsv-}9=M)7?S(aSZy^wc~|v(Y!_OWp>47N=6ODgSA^YDIRBM#80I9nc=lEs zW;x%|Q+U|5>T!koHVX8h>zBdO1?qddmHNcD{o@z969&-y;r%~lKJ7n#_>a4ve*Tg9 z?paKy{;W@Bc2j+f7wh$%_6f%vZFyD|1ZfeGSTE+}X~FCZ8P($5!XAc)J!E#r@tvVK z9DC7P?w$8ClZ@r>fsjkcjwYA{c{su|XjS^>{5uLdpmvHIWx#tT=o3;pg4Ifz*U>sEwM91&U7u`;{Z z=>!AyD}J~jjauehwt8p&w%9LPcgoD!3udrThC+E=QwrsCf7C0kA_}RV?kdvglyOFl zw(EptFI26F9%_}La@pzF7SyP!CsZ7KI@D6E9#wu3snart_EWo~cTt4BoR=(S!LF{< zl*3gqG!=u|cVm0*a;=iQ^@!^;zdYOGo!u@_IxbM>HSy2~;|5xx-cUbC;b@m_n7WC~ z!J>zXvFKsXm0ErKDz*Ce$bd?%ksJ6OE44yS8pym9CdkJ=Nf7-R`*8#TCTZ%WsUO2S z!W?Lp2s1`gGzli|IeRsYCLaA;{y_j)B?ZLc+HSw?*>fNCzGU%|B&;@qP;fq-uF2x< zY@YT#sdf?0p7Ir4>=jkAtw5D;D098&HkVqj(zNJhSRatF0oWQ$oEsu$>|g1~3&%Il z7uz&ntR6{U#=PB|64VE2)NkW4m9-F$=GjhyB2C&9H@IIDi>%B^`F@dn%2uoG6QxhT z7E%lJzA)Unx0ilqm|NNtC*u%U3q4<>pzq!WUVwH+e#|74?=B)=+ zMFo)^Q@VXzZRybftk5W%U8Y=Ev)F6xm|2FmZ1-CAdDZa6GUj{wdu5nc1=y)A4arO? z8NCB)M*`Qq0D3(Q&1i*it;K#FdQoPFd}ny!j$K6~cEqJoS4|ZqMUW5Xt?tUcI5ph&igHtY*^KIPgBeifq?d0|%5+1kIvi$U>;_OEyRVizecNR$1q*Y9j zF{Wh1BQR;-3ig`8l^u_=PL;Zt3;dI zojK_ANHID+lB$&MPrw=Ic5n~DL80(nwf$Q8YXCeS;|igCbaqd}iOVpz{0RSAoZ(+P zK}Z50CV}sUE}=__yaYoO`p5$@j@*u@y@&2Wff#mvd-vU+ zI1#KH8~`nfs~5DhZ$r*Z=3)>5LZZyaF-#ISa$%0bEWmz1{1iw4y!Yic0Kgl19uNR; z+#295;Osi2}NRekM(pi`6K#|>Bmp(wzFN^ z)&35Kp>+E@H;WT5jxmWsA0synp$8#ylK>)=c{pt?#zQkIFTtVE>3|9lHbSTGcVz0E z{TFSdnx|z28C-7}oT$)Qdm4lZ`c-CV24O%?vS|=j79ZEkG<#gEi+227mfVr1p7Os$-r8Dz-p}r0e$-j4S2uk!h9BEK zmhr5|nclmH03qrwXX_1hi=XI6Rst)u<tlo7g-LRxmk7zm#{E5~I9kAbo)uU% z`Gqt>v{#8JFBKQr&Yl=}f(f49u4Z?VN?A^ecuwF)s73a>vTbfzM*`D_=?HJPe zE@rpE1#L1BvSV$&UA}LZq;__Y{+pqp?G0ARZM0KB@m&Mz)_@h(8@mbCflbM;bWW8v z8Mr4oqo`dvS1U=~GR;~^s{+5yF6?W}a_%eS0rZVgUke)=rGxxLFp45mB_+0oQ}@Zu zqECcCOuB7wJ_$U2XYxQ|fy) za3F9VAdwV%&w@ESop8#|uyP{Wb(OJww?Oh;mU=Rd7~avkHL`7!H}hCHcipKXXu!DhdF6W-UK+qJ<4S97;s zJkVp-1@)?G8iVh~u3CIIcCX>Pr7)%5A*Qs7PE2>vi2|u>GhP>QkhmOPm-t>l{5TDh zD1rpXZkAz!f;`4qo~Cgmi`PApZEY*XmSe zfD6(Ziazk@=gUL!lnmh^mY$xR^quXU2OV7iZ7YqQc&1!1i~CKsO8?Bpe0 z{#0qF=Yss>d5gkKmj@kkIf@z2tVc_Rnn>vi5WtX$>VTv9EYDWti>2mkMAnyqbwra2 z8#yT-KNYlhd;@hZlYKcY$>uifHd?ySLz7i{uiQOt64&9x>j>`1Jyz$_H;C$9uzP}c zVO;qQefP@s==u1iVfqp!AOA>}jmf>v^_eJO?}L_+_~Jw|W;+{fUp})F!x*}DPw!iU zjm!y!0mY#(&~qccz`jO&!Mzs_-iQwd0G18p+BV`tqV*i`+ziHH8sZ!UQJN-Mg0b&m zFAAd&dJ?VYE=%NG-#KV{-?_yTqm?ScQ3Nl*RP2rV{+$s%iqkL#ewqia3j&;xJjEnO z5V#q@xtG+7WWck+kCdq6^2_D}Wf`-{*ysGBE<=sSp`u}d7kMLU#3yxwZqco;X`n=F zfJW5CKH^HM3b>-XVO46ox+T_XZXaD3)dZi!F6u{Q$#%V=eDQ}s7K=>weTGc5XsiM7 zztlr8mhy1&LH-!xVGG{Y&PGmNL%!&iX=U?En|Ls#ThE0M{nbW3a+wl^xfoWicaOp=MTc94 zv5R`YML4@E`+E@AZl606yH!2o)d_7XQpvIP1uECsdmDwIPq*-32B?#Y?BEC zv)#<*qVDzcSjAF2#k9!6HhaZ8LeHyMvcd*!=S$` z??-sX9$pZeU#=T`!;+{$Whb~+^IzFz7ldtlSzEa)v(KCCX)XF=TIkj`*0c4BZHUcU ze39MQEL1$j$G_Q#xt3tL7L{llC#bvD5;#r?U*$#h=MHk)z0Y5KPC=K99#&CHkyj(= zRa@!xs78VTB|#ZYBG_01Fc=2snx{tK84JCdal31RoUU3CIhACaj0f@@s^K=U#cRtL zWhdl{23dCYaxwG0ScK3FF%2fG=b1xI`FG@YcV`!{Xi!BZ6!ZU@b3SzRisWnzKO9R( z-4xENfRR(RpkIEVcZ^-A$Ps}eUVn}MG+WLWU#!)~?dHQ>mHe}b1(CUAoyazX zE{SE-Z>iFd^xfk7FLW0yEF=CUicKVx!I$*s%k{eI}XWaw^uAeCY z>8nua28b77xebAP6!~bQh}k8_l@t{_kGU>k9C{EO=eQAJT!Yqr7nn7GD29BfLaheS zvmZV+fS|(F-~mws$T7omFw{{Qwk(#+0IC?=-6Uhb3oIHyj4@`p>obxe$yED#V-Z3zLAi_5 zkM8%w0F?>uZxM7dNM5CHmu4oslBxxU%<&fnJ#Mu~sGlxx^Bi$S*x33t=?O%a% z%fWiFcL3|P49V+<(n#Js#C{H=AoTMji303{6lRG2I|*Yq2C)>97h`?ZgWCalQ3d36 z9Y4n;^*>Ic^pRo2R;cw7`i^dVM_m(keIj`*e&s3Xl@h$&{ASi1AENsDP_-1B z75!bVW{-5*gzqeNM`7i)`JY){I1}DGqm89wW=X=MFZ)}PgBbGL#=KRGHv%i$wj)8j zoy{5Yezjg(dg2H^Ub6T>)Svyw5C3uZ)6YMO-w6<}y=;lQmDMb;F{$cpL=8%N`FI`2 zM0q}D4CVAxl<>81&6*ZrKKXe8Ki)M9G7lhaDcQFs1obO$w?$m6(rmSU6)V`Tal)K@ zS#0?ymb2s&KTXMc$t3d&|MT}VLhmc@zAPE9f14$%#d?vmm3qrU`oAn@+@w>veMe=! zT5$aGPjp4=-#+_I`WJtv%OlwSj&imYOU{uB|CxPxxA>GotUf*83a^Fgy%U7bUSxFvSW05t3>?EVBh?O}-q|6a^Yoc)-J3Fd7VC$Yu4sVn<$4sth8 zjNA?SEyC;r`-(6}_rQQ6%sxPVvm(q#1$L1runTY&XRb$p=S9As02rozl*f@vGB=E6 zpvTcYbafOFrc2bdh_K)>N+OIf$}uFVk24>pIL+cXf>DmsJWgxC+_Q@g!2udw-2D&W z#sGLe#uaZzk%1{)PX;~b0fMhZgy3r@2ua|>B=FtPCDfcDFToInKJq|}BR3@p^fH*{ zUo&ppJ2$w4kpqHz4^_J8{Pym#2>e?S=Eli4Wl**6$cFhUf1|&8uMVNN6k`gP{4Q?yK7Hf>dS=dMAoS>u zJ^B`vmB?H0I=MPUY})lm;iHjrn??M3ty^~&@86654qBOES&n|D`p4{FWTo2|TF^Vg zYL@EOdd2U2n^xC1;@lox@#6YbT1%;7g#pV$$!up2kJ)C$f3wP#^u(&EW12nRJ!PLa zcZ+z=1YLYtlp+^4ldWsa7LvrX`E0{z{ToT>;k8&ZLHC8;DxWTE+B#`3+?t_s_w5RP%HjOZm*6X~93?8Ff@3^`;(zU-rre(yW+e?> z!eJ|$iS^VzhxQ57g4BzU>dp8ZGs8lmH@O@$BaqNT3&tdgEEkW8%=E0J^|F4#PZ3;wX%96nZGnJnW?s><)!F z_dtl6Va~hZFOK^|7r#kXEbGCVT0FjA@uDo$@bc1Y9H74Ll2|)akfta-b2;s%B;hk; z_N+-~=*xmS37VFMT(=lo`)hzc;HyfZTBo;=>^>X>d^NzruT?VIButnohO4G3 zbZe!vWK;j~AJ<|4H}cX2HCk>W8!h6XwaM2NEx~o85LD zhed6ojkD$K>C0lvcEOj2cuPlK4KEJU55Tjo_RV;<2cfmR_UPFb=4h6L!Pa*u^rB*o zM(K57hJI3^br1C_$%c-R24rZ_sdxBmd&lA18H;N~m92Bz(L{BfYW%}v0lef0;w`_U zZCCSCf1l5@;!xT9T+dXNRAf)9#eB~8F4dvg-KXr!T7vd2-`ed6R=xSX*q6^CT`ZUV z)A#P2=lrqXhouER-%x1rAw48|W1l_syEdob~d z&6OXO{^EtcE@jYLWq$ifhRZZlKh5wF()ubkTXG!5uzj^C+m5)pQ%ZSVqkF*2=~Dg6 zfd6ajdwFHqM($?=SIbt0TAfr)qWe+ zWc0A>dHm8TqL&VfT{>0d(kcEUqLxk-vz#=59`;r06lL8)FUmxc7P*%``O#KHQxax@-FenXv~w2TtT z&bc3}ad=G1VR4+pzu_^Q`rm7#LCka_!gPVIHlHr_&fzgA=UEh&Rj%Fh{E3NsL-K1yJW!z9Fs&q|m3!6b?%0DBXN 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 FV*}l>=fwa3 literal 2220093 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

n!D?rJ=rWA_# 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 z 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%0A7@tV#2C= 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

3i9Y{H+MtB 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≶ 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 ew8F3G+IUK^e2Dn~I~(Q_H7< z+MpJT{Qeb3Z2)9z!wM+c&^%9W;77i9c96-B2qyz!L^5%VXaR|@l6Tv=$tF_Fm;<$Q zr!6{NZ54t)gfc_VOam|$YcN!52wwSM)Q0+fJ=DZ=h^_u0B7P`Om&fy)M{lQB8E(vd zV`p&g@M!~6RZ)T5@F@WWK~+;z`{rMaJ=}4bV*Ba~S{WdORA|JT#IQ z#nIvY>ohI;QinOKVh#t(aTNVCr&h6?%ku>c*5xG2CN|nxdE?><8l3sPj_Kvg)tLHD z>X;Q)T4Y{-bU?l)bz!WCeSxbLV;!;_&ZUQG>sw&IJSVcK2)=!w3T|lL29hZ4=G*Vd z4gH5i6gX2F!e+^vrmy{cYUT8F=Gk+F9yfm!f_w zp|>Tq1d3szJbCKaUqfZ{k|lc7F~|=fDz`@Z!~*4qBg6yiB7Yga`#!SHACdg>`QbiG z#PVIM%=%-~>i;%`j-5zyYNhnvX_Ij0^^<`ZqNBSHa<~uL*0_4@(Q<$`Ne?OGoL@Ej%Me=O2~=-Tam2WrV~9$if2D zZWwL5rZ|)evqF}JPKL%3*Z9T~;JbL#k>X)c5kB}N1SIDuahn4-g-1!pPPaCjYHvHH zYv55+5wLYD#1Zz$_Fm0g8#k>71Qva&I-_dpfKCjYqD^+njl4S1>u>3}I8#Y%Vmjh|S6W@)Y{jO{<>M2jJYAIlC6IRfxUGa$05s zq1oe52D<_{eJ`%KR&6vl;1&wC?Go=CoG=15b!21T&bD5R6N%LA4@X1Vv`vLDa-p=l zXe3{(PiV?&2edC#D7Mp~3YR*2jnASbWG?X6$XvabDzrg~HC==mYTY)jSB!4L>2`Jc zudLCFbnBl0j2r&jVi(JD2TsCs-(0WL<~}LxZ~nKy8_GjTSM-diO0~DXf%@sBrkaw6 zmTD)pFNHVCN$xi|*&bP>nzrZijd)HjOr%fOCO62-lx1{g6Jq@VmZ1Y%BD?!3bz|uM zNAew~76zE#Nw=GMQ<>&#sW$@YLw7?i4y~kr(p{haMOW+Yi9{0vY_p37O^7S?aVf z6#eZA_GW_#(-L9+v~b(+m5|vxh*MIdjW8RmZy3ZP4_a>5TE5|~R66)w=Wl6KksB2s zYkfDVj?*`3d$ySfZC>GGTPEI@mTD#*S=ziwU&rz6pO~n)b_i{*3vzqPv0UYN9>LdD zDf!CLja3a^4s-MO$?4Kq&<2t`ke7>>C%h34+MGdRbg&4p&`(%#IW! z^apPIOC6~lW}{UM>hl6DWZ}I8&lN~#452{WeQ~oPj)2^KGYxStG}{T5g=v7i!kP=Sqv;xV~oEM5%;W z9}Dt#U7~2kmEZdtFN+ONh`h?H|KZqx` z<|N-MKG^F&Rf1jV_rSUlCTD7+S4%DA`A^RB0yI*e|7HA;NbXK(#n;f$Ge1P|9`$VgE)sAa^b_LRX!xVpjqv5ZyA!}FSZC(l&<;Cd- zS3G$P#2%0vA1)xVZ$3Q%knJV3Fzg51k74?s5<(yoEQxIY>Y^J{@2bcR)9Qx_@d(!%q!jww)f81DY3qCF9S*JA(M_=bepr zboh8XCwCu`_f{1Cwk=^WBKQdL<_9<-JRW|7=(#|9D^cYq13Ss}2h9QgK=^-2eiSXt zJfe>r@VxjNq`!pOzvTGvTO40g0^f?6nj(>awj8N=KG@*E9}flqQs?fH%2z-l0oH)f zpNJj<4dh=$AN9>bEdYwZ4^WWN5YtQLq5_5K5vWF_a_Wc5@$BedEeeNHf_7HmPZi{s zLqq`uy1m!EJcKPpWJ zORj;uHR7LB#{JiVcN{oy5}5J-q1Pena+SF&S7Xyq7e?umg}+9!O#9Aej(AUlkR*aQ zpok+Q2mX+30MIV@ibZ5e#vM4D4PPp%Fqnh;A%Jwx#w|YlHZ+LFX)$k!KM&zN%co$t z@DInv$2fvyP(x+uOjF=iU41)g$k5n>$B|`6a@pFzF&cK^K()W|R04 zGrz8QI$!763;pIlM%JytI(v?=j;af}lBW6U+mMT+knK@pM&5rXZJ~d3V50#{{P~X( zX>hAh2Me|^$R~2v=_eH7dWVR>}*IxU3+ZE?^3Jt?jOTCnvN{MfVq_oTR* zNLuL?o?`nQjiH7rks%_F&Opih??JJ@!JXdzSC*!*8lnSWAb>vpIKP#o)s(h;e9VTG z<@}TTCdH8ECj92)-_s&LlK8n74kV{Kh?cGbf1I|T=0rvy6wZ~e2N3-#GJ&B^O!EVy z7B~<>D3nlj2j|^hTC5nO_}~Us=+sMeVh)>q|H8p7HGpCcU;L z$!1>LjstNjn(oT25wlC>;J)9iG7Z02cBwd9Pc+vWF5-xH(DcrZ!gk6s30x9@R- z;cZnSG6dSdd_W?0{NAZdIl$I7`_%izdDd~e>tG_^>5~$00-y1ioH+^zg`Y$=QZXn+ zG-v{X%w+EQ+%^VBAbd`r%W({&akk(Q;-9Oi1XL?t>k5Zjd8n1{LEK1el!6L6GT2p? z0E%E(Vp!;a-fY07yQQ2ypqZYIemh*>QC;+e5lt7yfCZvx*rN@>&aRlg4<20FhH zvqYck`w%ObXD8Xd@xSu6!(r-|QN5?FSN&L9AF^e>}NjpD9rq^ww9iX^;TQA5Cy!VNfs>AYp(* z7Ze3(AQ6@~Z}789AnKZlaA8e4@m~+^j-rOr_a9;VkztPJ11w|Eky;+k^iiZ;2%}hu zWXt-1y>vu?rjisu0%W;1OaX<42K?ctMK$tLIMq7|Gcpz$tw8JjG9>Ra>s+2|h79o0 zt_3SggZ=S~0&Jtd1FJQhUnNI`g3eBMUEnzo#pJ*IqX|OAxPthr3G$M_M^#Q@%oQ26 zjx7qW<_fL*F0Y8xkn<#UXpLV6^vA#ppUUDnhXA}(V0>`dPE zpao4z!{r?=Gs)` z-^fk3EfTV7E*%w~!B6Q8X>MxsqZxFy^^)e>33ZeO@7$anTFYl^MwYd^(SvW{sAoO` z-dF&I145{mbUpBg(BY%Ro;4p>U;1P&DXeMXfh{4~H4QKYLzgs4md-m%6DW(JDg-GJ zC@U$HC*C_)Yc$vh2x`5KVgHdbX$~rr{G)2>Ss-ly7;O7X7kgPakSoZe!T*?n8^`lv zkpKqaAW?uz9R*kWj!a(Y=$=>(dxd(N_OCIxF=fFFrKq=@j&dBj&S2PQp*+GuSfk~e z0HcL)4#hllL!(qh1U(GEAS_1-xH6Dfuqafv6VYTYD*as1DU?A`4_(nHT{fF7gQ^jv zlA~;f>I`J;T&l$|l3MlQ3Q{5U8&0V~*l`7ZL5TN)GSG9D zyEiixXW)AU?&bQ5;KQ+7sZY)o-@JT*8}8leF}9Y4l8FJvyP;y5fhxY&YW7RkO=A1( zmg!yha@0A0=U2+ks!c7tb^(0LyYX#NKyT1XIWeL`)AoD=)l_5lDEKGse0aXxqB3#g zmX*!?c&~;LP4a!h^+%LiFh7i!{_-%fcKorj<`&hsRydH7xg{lxs+E;O5DuSgH@J zBllD%x~94T^0R6L&>p8$-mJVf0~-VkH=fRpd1uZEX!HE#S7yAUAindd#+o-MxE-Uq z-fwFPaS2N@0quO0TL>c?GgD&^%(1DA{2NWpE)N7txfPyQc1)bIgRZXBDXeIt7NyB9 z77ivmB50coW&E67kW&z^W!{^{x&C6->MK7owi1*Tlz%@CXG!nOdZpCLjeSZ~ygC#HSWBNJ(msseXyr5ww5}|C_2{sX=Z=fB5 z$ObX#=lJsr+a>Iz<%Z7>b=N@@Q;Ide8OS`W72hB1c^LX5;1u=NAR+?ABo`VEzj}~H zFqTSJs4-FsR$q;k8};)0f%=a2O)ni02J4qAo>*R8<2JAW(;Dk6Hd4tlIONLDSBJ03 zF@l0!gezUS^_PCrVzc7L4lHHYzH*=v05rlo_NSFZ6^Y8J+>|{ba;+7y zA1);pA)&kH|I?!6l+t_Mr~57UY;1IjqM>RkOemprq#f#;?UpU&TQ*9^|DRnCKY+=*Gi z8DWRIZzWhgDw>nhuxq<_+8O!_lkqEl2DRp4@`EKX7+Mm<`6Lpog7gJM%z-qtKDB-Z z8WLaOCF#>%e~jMU785rfcT~3!r#jFGp@xzZm(S7Ys=_~-g-$>hc&cu7c3C)VkL z_u%X>vlUNf+-d|}-ix9psCgZn zNbP3$Q3NP%pMqWB>MLJpC%>TVsbGGkn6|FHMnN#WGt>n@NS6kuO= zE>J+Y{waZv_|KK7|0oVCHd`?~xf3LgKnV35LEe{-9ofgmtluRi+$hiKu*gpuCza(0 zwBesESt}(pco4t790m#?*}_=_d1K_eev7yhVyiBBWum#W-2)XYCa->g6Fny5k+50+G+?phQ2~)$@(UcCfydO+c8g zH-D`cna_`x4f6Zd|8|Wfv7$g8d#sVT=Sd;ale{;lAmRO0b^Yk#O<~!G%cShIjV+%o zVRZJ+gB)S@*vNX=v12g7x)$PwyIxz9~I&ZIA z((p$$R$US^QLhwWnoYXIW9S>YO`620ff`Ez%$&BW=48YXpKk&i%bavO98sqdxqDp_ zx`&|}%hq}R4_jv)6=mDKZHDfWZjc7)lJ4#X=@d}9ySt=2hYsoP5NT=DKS8pdcuWE}tP|rRJ|$kX#1WkG+c^jfolW zOzdnSmSknPsTczkZZbW%(X@xjYi3*9Q1ef%hFow^vYpnrT#lV zbul9Aty-1dTA>Is@D? zy-qp0uNpTDSs_#Ug;Nu)ZWN%_%%m>_bJ|u<(f*JMsgT;Nv0&t2aDx8EWI|E3HT33n zJBa|jwx=08gZs(;3_EUH$X_Z?@s%r`(2!Y7kX&fKe*`H7LU6U#TOI29(W9d;tpSX` z!oIg&Ck1ie=Wr2?7R zgvKC%c-d}0mG0dt2On?xR_BQ}N?8+&8nksQT&^E+Ux1X`@HHt>O9UDB-FqVbfLDd6 z)YN~05ayMDzA31UflKnmmnoDflq}$p2ZIL_H#A%ecIZ8JjeTmjKFARhKw{iH_i(vJ z+St#|yV~8ZS#B>v;5YcVP7@(06Oaq_ds>O2vEsX8)`Ik}%qgIh)umP0igW;qBr2~d zvSw1|<5(0?x%~d9`A?9okzgfOLiS;#j+WTDNuW(I)#>XHB8@CoS`0(Eha+=S4n37L zYmGDi)DNghP(yLu`pA?1KC^4x<7mlRB%G02KLywRDF< zmov#3a_Tm@aqpYL-@J>`^cs9|U3-@`dT1>pAn%iMe$UOXa325@<3~fLX;;;Gg-San zvGQVX8>wA}k(eY&NuKPHMeWtPQ2r&7TD{5WmTTY+f|8AIewcuU9x@n9V1BkA^A7U(Eh+via9 z0uT{b{+%Qkx-TRNKvGcvu9!52Md+z4-%C`jJ09Av4)U)ST9&UCzOPe#QxQF@+T2Z* zfX{2nz$DEC{1fm}+4V2~4wc{hkr4Y}oX%7DxH~==yb&5SrvMBzu0SSVb(l`m7+)W+ z;7eYB0yVemB$llN0zwyf6&U?l-#bOOW0l^h5?qK7O{VKNrAS$Ike{&CB?DeB2@L(C zSiMj|#Vj$5AH?S$&-l`CSv62xn~-$azXNpk%X(Iz3|qNw7tU_5;x(HFqbp{=NVyIO zV=O7rVBc+1OyoMrfvQ_fR9qEzzl@VJGi)_CW&<*NDzMxG|4)>z`VkbR(|vGN{gV2n zrmLL1et;n5Wj&^|?FDZjKY2g#kY51}`1&V?O42yxi3Y~PWedFb2**qUM-)f2Tesey zhqiorab&7BLtetPQ48cVrLp_`_!8dc17%}RtK*##WX%0|_LRKJfLGvuWHHF8vVQYu zqVc>tm^K@6>!<~`jI;69RO+LV&|lA5fSK}t`$)dXm&1Znz-=l?T9}mZYldo!#4TGM zbbdxYD|h!Lp2k_LwOMdLZLZ>8HV3!wXdbC{Z3P3 z<)htsC3K}w8kQAImKexh`)N4>ve%YVtm94{zhNeGESkvE$w?WC1oQ+K_C9J5eL7{h zAJn;gxk&weSk7oI7R{LBgYsEEvFuJZ?wx%AaFdI3mU#wcL|7xW#1YeejX{Ddr zrulaDYBqb-kVi9womwgcAqBx15ndGy;8HLuOZoDc5fL^Or$o-fQ2 zLg+-6F*vBJe_1_vm}HHVSsrbXNBwvI$bj}ME%g7>KhiHmco@T2ll{2*K=t6rftziH zJw#$|XPpz3+UftP%I9t@roPZ39O zE-^2smt^%N6(5g}KFZ5KP3$>(gP*pa^OJaMY-*Vco!9 zE@#F_3LCyRF84%cZ6fo{>t03nsucfld`Ni^VmW z)rpp_CDOPxpv03_XBQ%!R&|OK4$muu#{dr!BvpjPIFJ;V+y^y+9YVobzN7UCaW9Yu z|DK}<_i97EK7lQnuz{*EtPX3-%qaEH-8>0wPG~YinGS#U<8@msE1Oye602{YQ-ZN5 zia{0+@d3~uXMlhGUx#Jo+sHzz_ibuxiDeLKcnCKfDd`vFf16*3vXL!M;}V<@_V`Le zxM@fz6!~5~%-@^q1oTX+&MK}_oD2`HA^c2r%>wHrlxY%+Ha~&&>PNlWQkGQ=p*Mkr zTLZ+is%FIigk0|82&~CIynnhDV6nIt4stw~57XcRTXN*lL$!eawqSsaHU!Hqequ$m zX{iU;h(W{OjxNa99X~Jh>G^4r)`C^@ys(Et4SxU(Oz3_#k3}VigcA~u1-V9kc;u*- ze%w+d`SkzQ6=TY>*LjeLA`P-#v+0e5{-2eJi1+1 zI-eSjqLqc+nBrgipe~<(O;Qrj)%~*Y0#n&a8TO@xD?4h?wh%fRE|4mkOtpi<2Xd~A}Pr5I}N;t>le&)j4eb*_77Mi;erLd z5M@Fy(3##Oz*#~HcIM(0$Ai^?hyDHHCIQ=XE%UQROGp&sWaGHOmk!{TB$Im<@Hm}a zYN&4WSUpw9y=akg4w}wDSxAha?;jh~I&UDPI((UBz>G#W4b2gnY|u$OeMS~k#*&H! zr$L7-rjn9j&w$%g}ix`Yi# zt588rE6XBcGkxtvBQHVJxu8+zxIh&WTGXVlVZ(j$6=f~2aJpP>(p1tV+ z-hRJ13K?*NAn-@#h(w zJg4TqGg}&u30^(HOn63MRKgbuvkX>s|2rleoSJZ)OpEU%_oat#TKb?GXfp?*rd#fz>;xN1(vM8li_9AF%UDkM6Om zawiY(5z$&gqjF-%BWR?*71BG-k$@p(I!15YLXUAj%9^nQ_%z5wWWG;w;A!6|&EpVU zFz4d3ijvea3VixM45pu>`W-RchF8^7G5j&yCE1Z!-grQZNi@->YH|OukaW6EPm(3q zXtR467gmqOF}8~Svzn)B{quHd1X6a?83FvABA4X$c`&Lcj=FRc+LRf zN8jQ(QW^<--btLhn@2z(a&^WXsUSC>*uH9C@nOcVc^8xE6_H{N^8Xs><5)s_NKAhF zfBugS8|8YU!XazwXge?&wqqu12o9(X+j+y}YQZ)G4dS}x-#%=gC2>O7P#HJp7o3R* zAQzl?N(T~Fg6X_+NIwIxmzv+6jO30w?Z!Yk>qS4blZ@V9el4FGG_=sGUm7qv|8Ro% z%2E38_BVnU$^#8IZ?T`uN0`b@4`#pPD#fm1&4G&G$m+F2@t} zzEd}$b26f}Ocy37U&xY^mWBggh}dJI$nci7J?!R?yUOL3on=Jyg^5w4gQ zy?DtUgevM;Z^iZ%=^|aL0!^*f#<7Lvf+PS(286tepqpQ9So3!%n5InBr(EPr)QThV z5nG&rti)GByN4Hr%Hu#%dLQzF9{RclSMn=n6&(#w-~>z;j5(M~h)>8_?=OOvgf2k> z!IjgYOL}@@Knf3N4Jh%Q#s#wE$|89b%|zxzUVsbj-`#ckJY4V+KIxx2Rlp9lic*tM zqhi2vizrsmuQotZqdI^qLiNKI*RhVy5i+aS6IaBo z5>)Etsa!3I4s}{OZ$jqLL;a|rJwz76P9PLO9agglRri>SL4@6bG4dk2>ytrp)bo}6 zQsDO9uEnmM76Jz-SK5-!+R%Rq6Y1#?`yo7B-M-;hF)slR&;p zf)&AW0gh`TKRO9@u%$^2X+z%iF^4PqTa=M=eqz{aMjiq&pXE!{Aysr>$8JRL81)EJ zE~Ms!KtbdLl%YWIyg$jG*z~-KWZdMDa-Y7{@ZNhZCIoScug&n7v6V{)u7{K^KoZHpg%b}=;RRWx=D@k|m zN9Wqn#R;d)(On08bkp{JJue$*{#!?LA7o)0j7-F@?$I~*$y6s+`R8YmL*JQ2%7KyK zxNhCZ(r5bD!TDE{-3v8{7^!*@ zRAN+k(E$eDFYD%7X*(g}Ke=de1$^ZEcZnG#;I@iO>`lUg3523aB+`c`%A^*v5!)8q z49ChTvd;PTJ!J7+PC@$Sx|w2zb%_YV=Lt4I-Z5H^)oFfX?jx*l0iqg7@Ap1ws{-L} z|M@q5jGiEoiFsEYas;4^L1QT7kwD&?&DcKiam0O?VVlZkDLOi6mIb-u zSVuR!8~eM$@K(`MqxMZ@8SRfs@gLCeJU()pk}amGjZQ7a#Gbz4y$TyQ zYp^I=obbJ$4X-guf#~Y7cv^V}ai+js2yRWiX2r(_`w7t08b|%dpEURnjUn;yy=<%V zNHCkr+MBvp4W+@Vd}FaYbKD-sP^aTY<_vIlCIms%*mriV^pv&sq`ieL{UgMkEiM+f z-sJQ?Yz}w5#WSJN+bHv{^gf>&AG5UUpNv1FV0WX84 zNI|c4^l8vYhdfkg%Z;>`wf`bcnes=P=D1w+0#e8)4(N$y_OY;iP~%r6IuwMp*^=!)(>luj;) zTj+3I*kHUVGLz3BHw1q}_5BT{yhj?>Ajz!tXI=rH=N-8xmBD05V#{(p zp42i27P$6cJ>pC~MjKmxq|w<9GKcSFVcYLOjf(YA-}ud4(1IneZtr%pxVb`*|1tA|2+# z$dI_mi3N@@Rr&YDS!LNvSK(8tTBDdsqD*2nvv3@G0%JXcx=vb=8EoJ%Q=6l52Hwf{BxB1jiFya9}EK!4%Q#+msj;KBM&qh zcDm~WNuOatAGWCr=UY+n(r+T@V(&a`o87r?PQQ2kEE}fB^OhV!lxZ3~DG0g#{2Zoc z3u58bTYR^Kf~a}L8vgtvObDrp)6%qnaYsIZo_vl9wc9-t~9^vtau?Tg4EP0H7R%vLU@MhTtn74_q=EH8wn4(2|Bd z{g-@EDQ~2G_k27`eIe?Mi*2sIrcgQ3TXper$m-W6i8|_`3cON9%hJ~Z>mf@YIp96E zXBmlFtmTxX8Z5brpQ=zP=pC(R*)VV@wJ>T3SPG}{B7PzO!r(2i>C~g+lL0jReuMEi z1T!BVtszuPn%Lv0%`GzOYw{Y96oY`WVK<+Ar3tHS&EC0`@2uc!T%Y)q;<7KGD_Oj# zkTzQxi`>+`?7xsigEyfp+2EYeiDB9jgO)I$@7QeR<-k%q41ZibD_U*2lijnf6Z7uY zr4&ovv?v?yx!y!x?QjU8$qzez9_Ys;v*EpdA=ND-Zd<+_@=?{*rqSD&9RTH}GY{M>gm@GC{DSsAOy zEOTWFnPNwi@t0-v?P2nmPQ3vt+x%o(CeBnvBVN*@gZPX$H7i%ZLn^%55VvNgLCuNf z@XJ#{y%ixnWNOAFdpI}0wj*)9o58s{7M;#${zzSw&wzQwBxB_y$RT@4)AbQytsMGM zjU=Q%Q!dGeUf7|FzQiD5E#wmV9$RXJgo3*vqtDkAej4$&@tjy&+fu^_Uc1;AanBzE zT#mNci)>b=X&LkA*xceSHcnEsvjiTKE`(El@ZY)(P>H*Uc4-d882@C}x#vd-JrC+^ zZrfWoKeyA;D}VKvxs?Q$`*{^yJ{j~z*V9IpM?$Q^e@9T)8G5qlQ`NUi6_-TJWjNMI zhCHyBbow$Y3_{9BWw-5VW9g9454@$v=&_eHWY!VXB%vR@4L^5R*CBZ)@%G&j6mZ*i zvIkb_EL2Eao5`HCuJ9Twba*0kxKqD_zHj^BnCtt;mx^(p2ZhWHVG|7*bvd1jt%}5r zp4JvsomtbZ;GwuKQGYzN-vC6tPm$yKk_$|VO4KF0R=HZ#B7`5-AEeR0_4-c!Q1(Jq z$}6?v+O-@WCDka}rykCGML*}8Zn==z*seIK{KeJeG+$pi>peJG) z+3RP`tsYJW6=u3Kd#X+x_OjndAc83AqqgQ_ZP~>2x(39dJOg0h>rBoA^Z+AVs z79-E?bI_zsy6?$5B7YejhoQAA#((ZY2Vx#RZXjTDA}23Va}zFAZS>N3WscXCc(ljH z6G80*xfJI1HI`aOI;$u0Px{`DEebmNFv0NM>wx_n+On7^ za9^aqlG}ws;4}POcvsnEoG*L1UFn`Jmy$oouu3+OF{7s;4O@Z3nTGzYxV|N+MOl`n zFp5-Nt(>l)fNf*KsX#i--ivh-64XC$nqPj(UgtK#+tMU3n>>TW7$L_?U92=OsV=JBkh+P=0>Z{r7@29q_KZUAnB2eFnnwg&=U{mHT+TbatYj#g&H}C4Mdt03rDQ*aXIE!o9izcUKtMX6CJ+MrFOu%Z zSkkxe>N3Wyn?)4pY1{W1(UaZYLa-Ck6_BK+NPhw7fIu)|2{_>wkIt=tk2&gbG0e6A zzgJA|D~h*Bs?4Cb+D9X%U#m!FPKck})QtS9QHKH_RJ9YfXPWH0Vq|)qOL_C>`4 zQSIX-(IEZ->HT0X44uKkd3xIu00OehxBLS;hlB*@<_9nBz6%J==E#d7`xl4@xF;a; zinfKawtOq^e`OZSg^8drNuR;#*2*yZi=bMvB9Pe<%^T@Iu*4`aTCk5VQ25zzNlFrN z$Wdee;pcVb80$orMfjjbPfI^5NlHPy`1*7StP!7$qqX{-G@Q&cLXonRBw_%g{+nI? zt4;8FZ5#oFJ4g2^FZ>r>4tOT0c=ItSqf;MNm|PK`R8nOS@QS2I{Y}y1#v}d#u$u3=U_GaKB5nS{z( zQp8CieZ`1Hl!PXShyx4~#h9pRiGN(4nVsHBF9rB|3x86k14z6v`UIR8%THHip zRI8B>cim@;Pxj~=Nekblf?58(&wlaIj9xySKLWnzs0*WD!_Goqfw_adLLbM^sg6(E z1Fy$JQ7u8dOi|d^&l?yi2%5PE+b(dO@a`U$S-1j7{I1Fm21E~pxCcD>dS?aW7Z=*k z3cMvKPLwqHZ+@Uzh+-yvAayQBO>BX%|39)IEWKmhN$%3lk$~tPb|7qhoIjUDC@MAV zUu_V?4^(~gmmio2{=fXdug|V3B3X}&zhyzLZkRt*cH%CSwIZR8>?bTG`r%=g@wBIbrwM0f(1`kW_pRB#{A=U&GM4iWT; z|MRgJ`0)1om)6iO6m|Nc;7526&{h57*EL^4BH3;g@v;=SIk0uq{F zCnR+nnb`07skniU#AYpWz#FUAl#b+vT-D6IZ z2_Yv!dP@ssE>xVdyGXqyMD5RH@U5@sjo&$03_+kj&MErl!mzcN(287BT7aqp*B;BU zcuFf!(CshZoHX3uC(Xw!8n3`F<^jNLX1u0D}ZSKpSZpRG*<0%;9=KySRnl-31 za92PZnBD>e<06m7p88l~=~iz+W?W2zGpod~_XIg0tqw`9$x!f34%`pOkKk;6`liM$ z^Foiq-l>89QVZY6m2sKiQXpl)DFN|ax)+)`)jA_s;lL$c2GbWAZlVn(?Ez}-E*o%h zK)$b17xh{CR__-}?q0n=ZIDNL%|Q+a9`}FjaNAeNl^M zsk)rg;a(`bqJ?!xMi|wQs1TumJ}@INW(7mc(9iYoeWfktkl1Fy zg0lQ%0&bl^f7is>FYxi98X$E}Rgjh>anrd`H5iHV*C%#Kkh2nSK#D;;L0j<_qo|7n z0~H8vp^_z6OF!Bsi#u_WnefZ-89uwI6l! zIQ0=r-`V#|Y)OOQO9+1tFMu)<&f+d47Ka9=u>)=7(ikPw+DUHl>he!2`@?LF+?Q0X zvbBy!ktzWAgjJ2n@A&l5h>U}rCW9Wkwr=!W%Qwc)c;!<{WFsyJAyl0omKqI((Z;Yk z(9D(W@Z|%S;ePc@=xL_7ltAVteF@6v?BA#Ad`I{k5wuz2bF4@&z!13RxV}eC=qBZD z{~6OfBlIEPbqt=%qyB2G+rSge+$BFrHqwuBLE4aJI|-ox%chvvi%3@o8e8hLPy+|Q zROgf#cr?av^4K|@Kt$}iX;|lIe5V$krVvh3LXpbzYkWu|<5NoQV@ipBWa8sf^Mrwp z%DWX=EQ&9j^c|!HJHd=zy-1fNt3l$dM&;V)SZvsp0h(&o(tay~HaVO>@b{MSuJo`H zbXc)Zt<0XWO^O7V+his=V8h>)wa9Keiz!jO*O0fnvrMJ)N=x6P9JNlC90-&6xx5vr z9E%>Wu1E{iF3GP2@!04-C+sxvLU)WT{kIT}IoD1A&4t69VAad6|LaBo6E3%I@B*2W zAZa<>hX+l>ti;)8{!tAJF88+Jqe0R8*}XfPWW}!8skF5p!+kAQ<&_*2gWsNyhmMtH zs5qQP*>qeM7`UHnm9P&RnF>M-Yg(TqMN+4DP!Fp@XWnOHmke@b6$P9}&5b@fjpVuF z<}R%|J1)7X3>n={JUYseCY2Z$afXDT*sR|z{0xn+^SM|!q$uOONYI_dTs+xoHVDR& z?2-ejvNLG2nWNYaH6-gs(3CpMu3LAEWEg$SYpPS9^{0`QJk|^vd7zjx2v3>}g)k1^ z4s3n@ew>d=TSkeopb6o_#t}~m=&zy51g&}GCjbEnM%oHAL-305)KCe^Vanltyq(gh z<@8Dpj2%1K1LZ_ZgR$sIT)mwOe3`)fb?N?1@#_A>0FxT}?u-=F>$CeMH7qwnX8i)N zCM>X}n+<8wN*+{=fk;%1P`W-$2H%EOFlWLap0{QfYNuY%`)y--Sjx`V&IBfPFE`f; znVp9TEIlo05thmvO@z9mw@1w@79BUE9w4`p8yQ=+Ut(^QuQT~dyb)V}@)>Bo&Lsn* zv>V^5wvdXS+}_dp;9WJ{PkCGvNwHAgoyB=!!%p)BXHlFXw;zL4n+q zLc6`AiTW$7HoR29PX(>bGQGo-WP02GOs3xd+BO;?oPA>fn!NX8xF_1RVaPB(JO9zI zGpq6OeSRN)v<`M^=zLwOhTg6*BfaC89LCO&l-WOq&^N>Lc~LT>EK=?7^EHw~B=7;T zN(E8%(+C&iQlDf+h2J%+1>ONbbE$EEod8h$#QU5~a;KA0?+z!ZV>H)CLp4()x1*DK zP`n0YS}tkOoHdE+(LLhe@lKPABDa>NMjRnyf_OMDxw9~YLhe}*Mc0DRlG86$W3?)h z-K3%E6{pXl4_!*%8WFniR`y0?LoUQ8)qFP|jnF=a4p5oP6u???cz<&1&-NiwY=0|< zIlJ_bA1h+j-dr@zw_6$iRV%1e@zLB%yVea#8q>?>~SaIUn82`)-ld|!+57rHH;UQxg+So)bV zcAO1VrTZMk+7ugA2Bn}+;%H%S$;hWbZrOm{`D?OfUpFFOV6GbX&7~(J#J*?@%);Nb z$pk`fL0kat;sNWDI*R6ffV*p9ezLb50goiod7lhZ+b%_DvKY;R$9@|ivglY2YP&us z*PD)?!AstCdqIE{7Gks$l{{eXLN`!7`q$xx7e!Mmo5h>c!;LIlifLt|okCitwT|^j z7Ln5Rj)q`(p_{;mO&4#!hy551*8x4fPA_Xl%YLs(r#i&nat#%PuuIgKLl?*q*(atr zX^jz&$-jHRBJ32VvLvP8rR~aFVe@=g z!T?x8!RKlber7i%;dGdNCNsdDm55`C>g>9OUYgWdi-_aWkr6Y~N4ZdBJETU&>?d1N z(cSTEZmm&LZefStE}KC9V;g+>dXDF>BcVHdr4Fd=fQuMDrVzYA3?*fF3pY8ajZ5@H zb$Ci`Xb^JM0&;tn#nLLKmoqw{RJdbD_R@=DF}fB)q~nCepX=}4WhE_sy+3Fnow{4m z)V*E^ulxPxgw?DLZGmMNG|=Ggid`k4?xO%Tr`Q+JyqbEfA%OPi1N}$ws0Pe<>mbL= zlDpWa%$^SD--Z3Czn2tTob}%Vud}|Yv!>9UYpkt6;WSZI<8rYhQl^2NcsG9vzK6yw z_7HnT*<}l96{U4kXfG-c0R|%9FtsE#`c&f0&OkCqF{Om9H4NN8fewWGE1D`qGg*lB zYz3!$1~|N01fXLV%IN~1{yj)3rTA5&j5tZP4XQ_h9F~bsZJJ7zGDb3@bz^PejhrUEY+Q-sL z)>{BAAtf<^@XAmn{;JvNCCV!7E=!Vz={=?O&1zplkwKy?2cmi^xg;YvNSy_g`OXwU zmZ?DifWSH>Lola1b+jgU9jHnUM2+_pXBFUobkc+Piwbp@iqeqb4j+()+iF2T ze{G`hyf_z<7oG?z#$V#~y(tkzq;p|z9N6E?s6n!bV~r&KH<$t zE370`kuzJURJN0&u1HsmISp?KRi8xvq*7}7w#4aWqEsKX0v@zY9Ee(p29h^0f5qx) z#dkvLpH1>Di)T0VpZuBB{;1TYVPAY-m#t&)!n6JXwqn{JA<-$} z@hn?AciJ(^6HFR=`z@37UaSQb-qK*mwd#O)mN7k<8is@(iI|R=R3%|_W!1K|AWz|O z+ubN_Eh9Pk5}pEL)L*xj+>n2Wzn|6AaNWdFrC_+7;M} zSS_7#0Y6acqgBc|7Af{!IoBC|hsp8S=}ri%AI;A*FkGmVYd>0JRe>sIUC>5^;q904IpguZjEVL97I2V5$Q zI}8%$$?x%=jaNk6b&ngWw%<~64-6rk6PuOlhIH)PiMdB%OeF?{t#CtTohupo*M{La zOnI5AQ8+4M^>Cj8#tzQD&8g+`w(_8?$tB3MnU(46d%vIt!pw3 zOxM?!K!1*auS5RnOhJoJx;U%Qf;De4INajYQ)e&}(Cs=n7Z=@T@{|6CYKZy8VxV0Fi8!o0XAok@_#kQA{ zrtKVkRDYWvL#?Au9(uto50CPN-O9FyyoNMNbHMX)Uz|*3B;^?5JForh((XBOy zl_zbtEsUgY=43Q*s>D4bTJmtG0N)8spa&O(&F&Dl!1zT+ia5>Cw>QQX;7G7CiDvoPIJCr)Hx zRi+$~R`wX_d2CH?_qn7Ahu+%*eGB4c@*EQKs zbhD7Zaq4ki&QWa9>XlM&8ak%|{gN~8H@#CtgYveDJZ4XHmgmOAGk{O=b9#)pm32)u z!!1UOz-1`bIs;&9X<2F5Y~FhhLE(n>BW)<9>zy%6nLElvy-M-??x4d}ieBb>-UYI+ zH}%+Uj65H(yl{B%J0bYwa*B90 zro?y?4%h#w)u?hBXq(|ClWm=wJ|f3Nloc{t=u3>1SIpn$dR{0GWl}e6+Ap1B$Zfyl zv5j6v{}nP#4XI1XsN-XKD;kTOg87|DT7SNydjh<01?!rOzCkTxlZ!k(h0!^J=RK4N zjp30Vg})ES2hzgnTiH*D5t_vTTzS$Sh6Ka&eaddLRFUF#M_N(^;}+ybG{z?b()VbM z^sp#B$V=_+pF@iqihh9O#>R1H#%La7I95c5Cn5o_)#jBr$p)pdd0b}Z7vDe_3O_9E z5@zEpqXCQwSC<6`Z1*2{Nxoq}@ATz_WcLr48dbeA$PPpSPS}^c%hi5JJhP=tH7v-U zbe5FC&Y|ZhHhNAkmygGTZU-M->K&`|a2qB!E`8Ld7EF7at-siZJhirTXjqk~t3DbA zOU;QVu*x-~USm9>i8jATlHRDFna>58VyH#3q~jBhUf?b8RMN*I4Z~k~Ry@DO!PcS2 zs{2)0#~Y=55~bbEwy5HkwgMjfB;V(A*vsTanTh3qjOgKyBfeDT0xbkZoS%iq?NJBQ%MXdb0}Ss2+SBc*}?qx5ZW*_+l1>D1}32OOb5;u&*`b(L{+VoCOVkaGm)2saPeE9>a z{GjX$ZgD~((PCqCNB$+9yKS$vZwQs{ujfmAZ!P!ZmbJ70I$%2K<7WLiU?Q!84w#nf ztO62u5I%f1cMjrVyXCe&QmME8Ibe!j{WN7t85R#^C_24nby?bpMlp_>tnRQ$| zZ^oXzGko6NU)1}h%=7|^7cj?AgkuShaSuL@w|i$)%J95t0JbE3b|Fx6J=WyV#l_zG zWxSYBL!qlXW}P^5=BkxDC#HEk#BYOP==5xPSfnfS(022SmV&)LoR%VSHnK*0qfBS& zjYxUEZ}_>I^rc6&7);pLyucRdxFuT`k&$V9{epsq$aHDL6CKT=AdxaYF^zVwIk5S; z-!knB(GfnxKf?XfY|ry-5S^+ROeeaIz507=r~9Oqw>H1L=Lu0ji78z!92}%!*-=MN zfh?vsp!)qy;7|IVEm64N%hxKN|9ww+1~x@h><93jvj$=vU~2s8(**^TzCS4MfV3&| zjs0)!?#~z#%}6Xer-5`O`g{itD#Jl#c_aqZIw<|{w=8!DmF2t2k8gy2m*rD}N|xY? zkbmm({#i4@&q}8`mb^gK;Ib&^1R^dEr&O_C6sc50xTklPqy*m^!>DEcq#R12VlltJ zmXWVf2UGTzKofj4E3BY)!$m_((sWSCXgOstlXP+g4yvX9l+eaOGei43qHt=>Ipz3` z6@W>XP{h|z13om+AKg^}00dJ8qw&3>0hAQCP^DYt%Xt>5s1b=b8ypRWXsd)Ctb!s9 zbfNWzeY6#R2$+5FMo^%jLpFMKP3iE{5Sv+jCxfyW3nr+nUtm&JL+k)$8-ADgK{oY) zs_zX)K>-H@jW3c=uXQ_;Msre^+8Qk=>j1CgB^{=!Mp(AQqHgucQjYh4*fn=`ka4&% zyrd`p=dVHsKApk*0xneYc2lAzstIJH3Vs4t&B~!J2zYHVA*)%m5Z$-8;@O`K_P;JK znd6wWcNeGex$r$|sXDdQFdK#<$3f(&ZuP zH`o4&HhVD>iHE6HHhXRxt^(=FKiLj-Z|?h{C;okmssHmBV|0iWNF71y;JY(qlFaKQ zdud$RQ*F89)BvRvZY~#B^}Su$u)`4o#--sVZ@D zbE%!Y6_z)1u^(D0n$BoDH)1@LQ)uzdV)jT$MsSG4YzIBakf*l^r?+Dd$Wnb<1a+PB z89e%|KJc9$I$aqarCB0$1XmG!sUk;B5`mAHgzo`2v}misY4)o^gt73!5z@+Ps8OUI zCQa;T;_Azxf2W8wL?<&`Hh4I=2)}WW(7(-cXG6;HS8UKPIz5Pb{-SGMUK%FT5!a-w zOFZqM!adwEId1u9sD13!?JY+?>27AlW> zoo1izjL$H7?+bM|UECX@zjF%IA>!W|wY90eYR0MmE#P|74Yw`&#B6fu3+uUazc^2- z1+E2;n^+)Mt_@O3=rUk3}?#qI=PHih&&1Pt&S#c^)qd{@*+arMDTIY zo9P|j*kt+oyK%}X&$lJQE$d{yE11wq4Mz(XrUP>n!4D6mcB(C(TnteaZTVt3oROTb z^H)!Q)FuUIxI7GJ`7hgW{aseO13gAjNiiYrHYar3DJO8OTZT)<@-XK-(+T<850#wK zC*)Va(2X>mckL$22;wCz`bvv;DL$wy2ye?Zcch-MCqOtzMWPRB zZx#!_sXtrxnJv}4J1lWE6>o|a|3LSSDmW~vGD88QvAs&g+ycrD&nPH&y1esj$VF>G z>Vlbrpi;&89Sv)6ZG8;qk=I}=MlH9GkbS@O=4O#IhDs}k{BikO%0j(`B}^T(HbjNr zY<@HQVH`?|KEA8r4J9?LJsgjS9gUe4Gsr$y9FJ$9DTY-}K|lffB|) zXAlgu5UOQW5Mp?$5H+FcA(8;Y2MC9;vz6a!G7H>^d;?be0v5gt`P0~5($N0;{_=3E4s0V`_zO9Kl4739@}`J3d5Sw2}#0%EL&I-NK|l; zgG+RZx)h@Yv_DTUI2x~t#;LB7I*q&YvTXYuE))_$>rCuk4y$K_yf{qr^Kg{N(_ zX30h?=h3=YRKZ69U5VB?EiFGO>l^>?COA4$K;Izng`!zfTxmuhvHw0|LhJ#q2#$N^ z=Psnptrd^o1cKDb;vf=o*hFe3xZj%%vdeQfFQ2C+1w-FhQUL5^{yPt$t)bXKcWm1U z83>!Bjvku_{a>59c?p>DBnjb2{v^1nL)#yGRUBnP71s5xEzJ1Ri#Y`@rhse7FGrggQ`u?ZTkc&Z?4%h>M z0DnQD91=xT>b(@Ymm_SS*MH8V&Bw0CseSOyVK zu`5@GWQzsCMxt|@v}{T-aQC>E8oy;cg8f(6!@F3o>(QBNJDeCxe|bDR7#;U%TSm}gR*3}raO^Wu@yDvTY?Q{>ds_Vr187Pzh2I|cS9@B&4O~&@6w)} zRO{$uI?ymbKLM?BB~Qp4;BC(m)&-@ZKrC%#{6e6%5DXoP!g&|`a1)Ed8ffnMP+4GcdCL*`&3^i->u}`sC^zgD1pJPoYn^y1G0Mb~ z4?U|XWG(}ska$h;s+4`91tD?(Kf0JFx^DaujLHP1mCz_sm_#*@3w4m7d~^$5u?;2tJC7B50s71SEFZ>A1@tk5vcfGq1x=(r6%3@YsdT^e3PB+0BO(4x?~KR!)~K7pYd9-4DF3uS)R{~0sIOwi8B#pj%i_^B2o_z(;&o%3x!n73_R&7a7{otn7ZJjcYO|zMVZEP>WM-18=@5F z%BKx5GC&p^GOTs%zRw@kE%h0+*{n}N%IbVSRbT!U-C|%N1<^_NKa!!ch?4MHaM`*b z=mR{VVuikw)I5Z52UXNO&@xI>3%hO~b%;RXAy&JdCHQq&j)6gfy~eWE!WfBEN9T*C zqe=oWUrMOPeL~p-spO#4-vYr@!DzuSNgk{4FmZb1j6uNJ56rfq>_J8F2rcQI@BP`K zy1)$pRle*&QaBsxR`7`tC_M3W&Wg;oowB}<{Zyln!iEX}CO`_9EEr|69~@3?+>tNb z%^@`o>Fk=6h@Y7)1{gdTl&^nLN2x*S*md(%>o*3v={FHf!t^~Vh0xNW;OxG5f=D^g z37o~ENO7=sRbc&3HDJO>S!@W3NLXM9zMw16R4+Ev>el>BTwSUtQJ;?n4*DsYt(g!c z2{h3{d7(Y zIAST5N_v@yQe=vzL71s7mY}V8D7n#bmr~2^MV0%1RdY(HDU`1v(UnVeH2;sXcMOlL z>)LiZPA47Pww;b`+qP}nwr$(CZFH;-I_&tX?)$l)cklQ3_K$t!$6Rw&rE0C3b4`qE zjB#oileL4F`!DfX;5To_ZB!$bfK}pt8;N{kkr3T+nAcdfS(jF)*yNAvHC{N9U^?)V zmYBrItR!h}z`YEl+?%u3a$&MZ1q?!mBk65>)GC-S>j!e>$*h1(R1&s%R@BEZPU*!5 zh{@#LyX)}@v3In)jvWdf&xFrAv?j%Eyh9052mBz?eNNt~mM(FW6JggrmH&AZE@Cqz!M5Y-_xIs#z5eK3} zM7-w6cCHZrv@o!meN_l>(#8l0!?Hh=?#_EFU+}#sR+k}N?c(RhdxMNpTu~*Bb}UpQ z>V)UVgPkA-Tr!D&I4BDtRI@G0Q}-Hrt|$QSkXIn5FuN+yC>O%fGVqj492E*woL~Hc z&q!;&3P}m}n)|&UCpN%o0eR3~4t+VUDL=AZqrbNfO1Z}}R?NcWR40X|xXXFs?)hiy56Kco-p}4(<--BK)b|XB2A55b*IO2u2%fvU&DL6(wUgObvfES9^w-V%)G1yoEU79y-ZxRTxyliEVO^DqHg!?u=4?8jXF(#rVcL ztaJF{9#aEDwIKnVAq3?O=xmaxZAitOhp&b5*q$m1XO5WRY7(o4h9vJ{nrt($WdPGv z#}I@0PE17hdb|xSuFF!i7^B&|yo_o|V0i)Yr3LcxiBATXE`ek%DGVc*cP8x2*0x4$ zyUveE`VvC3R6+(Bu!GpRqE~DCz6aO@z4OJP^4K51ig;r%B|Nd2FImHc1_?q^^b*OP z^(p1w6cw(lb{4z7!v+6lmiIy~gvSem8#1N(l@9JG93ckK@;mE;n`oeq_Y=%CT$xp+ z8w7RnGura!hpLXr>4cDoGJdZWgwJZZ)^i{d8&T4$Y@|@Y zJvFc?qTzPdBQVVNN5|D0$0zY4gA)`=U|E)<9p)mj84w~`j8_v*!LjdUjrXA)+no<= zmsTzrZ~5-dUI<<*Xp;iM8UG)4$9y``_BbXSDHLH7)xxr#?=y$bGbOw(qB}S5b)2{W z*YOT=D28l6ke3D$gyK~_c{Cge*RJ(Pe~SIr0EZ4Q#(wtH$y_L#-wUN0ws?lEFUm<5 zyP3SRv$?(Qiry0_LgGo=SA0lFpj4_!hm)|(39b3weMD(zL$87CbDX5XWvhSCD3TS783LzCZXWu{&^`j2-$qL%o;2)aVHAxMNq>Yb9I9HiIhuS6 zHzN+d2ibKSVI65~&c;?ZXI_}1r2U3cU!kF3sV}ZC{$wRSYwB(q2|W!Ijl&3i6_&m>2B&#E z!Ir{3kx^rj$^x#8J(PEgMqjr4ts+mMKW`xKYC5myG2qEm2@*rm=Ie<*Jf-*jUb4z* z!Vif~Z2R#r9oROb2;1mxcTYB0yJyZKNj7?I4LibkT9|bHj(e4}g+O(JqArR2`{ady zpn8)C%n}Wi61fXe)r+=W>}kb3(DX%^=`7R)3nLl9(75mKVcuybBTrIouMyTiJ|@k{ z3tEijpod+H1tGLBkHlQeESh5GK*wR{u!JstvTB@6z~ncM$rX@<1E9M-4;n3|W5mzy zrurQ2k=SwpL(odbwr0vMdmqBeE@JQ%4ZIDMo(S8H8K&RcK8|fN7*~H~1-;NremOap zZ_Md5VK3Uk=gqHY!mVVn5aqX_KUkN&Bp<$wF#xU(e~3bBwhpAEv6fcO(gAQ*CV6#v zYkMOS`*aATqj=+z3^Ikv5clD5@qF!U58!7(MTV)TJij+HSh|n2CQM@NPH_1s4&Sa= zYW)Z>Q??nCE~U21XXVxpu;p6xPqr;hcFnGKz;AT3!oQndH$R1`eOsCwVA2otYZ!wg zJO~yjZ$WWth$Y{8X~wA79Pnqt$R>V}(7G~wf}&kfOF9upj%x6n$*8_8^8$iU7Q|7y z(vjQ3CIo_5zQR@--1M>gC(7xfNL>%tmF74rOoKhJ%FUh(|2Vgp{~Q3|hc&3tEsVaK@4} z-^~(cog29=V|~-I%sRAJKG?%Zj?bL^PLm{$Pef;yP8Z8ic-ivHeIfHBV8^cw?w#y>(xEqI&F!O`Sv425|n! zxL?^88LZHrm7$+4KcjKFdp}!lUx#1SnZnr7f?W&SJ8%eV*gOTU$5gzQ_oGXu!-Xro zlh-OYy0qq$JmP!opiEWPhCHS_j-d4tLX_M-27lNMZfy+!VQOx|5imNCo#~Dv8<8jI z?dnN*GY~d8z05LJwK92534+SLe}ZFrs4P0fapk5JibDt4L`GvAKWd?}I?UtTZbp-v zogy>46(+(-~)QBr6UF${C%XE;yo$2$FZ!KOk(q|Uz zH>mWc=p?^{*Sk^Z4|uYmE$tH%5U(&!2IHY=)l#LJ+-x|sVJQdec^k1+3+MBu3WRdE z!%jWN!IxT?X>?;U*13DlZX`E<3sXS(0QLIm_R;-FeY}~J*#0YY9?z3d(T61K_$DWw zT(wpV#5N{5fb%+P+9+#rt5xJTI7*D`1So8XP>4|d^=bu{04m0APAz6MgQO|RA}I2R zW9rd}?l;ULXPFC!<1k0dW}jEab^_)A%J!4tBa`h96==Q9pNlXP{C>cM7g1g3*Ca&Y zs?390Nbf336{cp6Q+>n50Mi7l0aWd$!bc_gQ?eWiJ8NcN*(#VM6Q^ClA_zICxCvIF zNkon2Z}cfpQD5<`TWZ7#(-6ZDm(6HUcf$mHKZUg+iUf6l;(vUEz+jUH^7otEFhM4T zwPBNA(7^~OX$+CYkqPvW>7fAG8GuFnd5`A(h@y@ZhvYq=LnUC=#{`E;nqU>9{HVav zfTe&+z9{~X7!NH>a+<)n<7EB0oU8zmjZa=|?Ib|)&&}l_&5heHhL>Tg5<)UHG8>h! zmOrp!k>VvVb|St^%P8U!$P_#OCWJ)v^`q-U`vH9eHj@mj8#d=EtR$p(T3p5Rc?AT{ zPhAayE-h~g_65WbsPBtj43?govY&p+^uAmeqjY(*uCC1;BtNb7AUfH?m^Jvw7ehaW zK6K>9=}@9XCF@qhIi7d=Vyx$@96fl*MUH^IrGGu=r z^fe$DA_z0k{^P=5cehvQ%2Sl3$tW3)`ex5^+*5;piKYn;y2xQw4;cW|@ct+(RmLlKzk#EDvJSJ3#jIcsvlJ!%FxeawZSp%OZE}>0|S?*Ncu1r zbDRN45kVKV)-|CH8a^cY$C?Fd@8|d&5P8K-4<}v#_{`ql!2P}NX z?n=b(R*q4%!a1(fmEzYGTW1l5jYuG{gJl8B0F~mGn>9r5TV;B}zc(>ZQ z-F6OpTapzC#0A?9sVi-TFs6L%M~itJ7-*6-PHPdO#_pz&(S2(%mMQ~4N8c~V@hG0f zoUL2zoRVU?hw@Ykc37xdG22qf9#!(9c6

3=U2zV{%uNis}X7mLR&R2K`8y8=E&HC5ceCN>n~Ah#kh=~&>7H!LlrlCdTe!A zYcM~-U0T6AQ^819r-olM(m%o0&t$({Cp5tX$P={GI3w?6sU4>YG`45cpc>WOo7)s* zGIwed;*jAQyCyP8?5P_qFhuApR4>i1-~HLpN;qofEUTK>NNAcFV^!M}dtN39wjnDZ z91JO2P8VtazU4&$%5NIJ{a^(+`DgfY&I>&GG`$WU*ET>xcGC&JA{JK9-|f=+`(2u{ zK-yStSBX$U)l%KS{f2l0`M_yjRaUMkpFY#}>Y0=NYQxFbvqvV>*&JiqG(^eh2F?YN z12l`jaXCM46Gh>ms>OdXJ-BT_h%y9ti&7Q;yLj9`31IlUG}?h(4m;u9fQaLmHn}v zkcVf(i5i-A#v@pq-xe)_kmthTBo%b7WLWqmM89vMJf@}+Nmx(mExTma`LdoHurQ-T zz}(Z%(Hr`)Cn=~wfwNPCIL(|?ml5^4EEdtv2^vo?S`*=KOyqxzc zRNU$O>1FsVgRp$@OZN_TFIOa!>$$A?qfhcymkWTsdYRkx=rL|rd^<*a5kX6XmJ^!f z+5e43ESbn#S-K5vdL2Zd_163YOCcWBd84(%t*wKkkx6j z#d)nFsFjlr$A<>s^P5sCc97L4K${2Tlu1NayjRbFl3yj_yS=}PtpgRA6$3=_KluQP zAL1H#>D*|&Tn=DTXtf~dX7{!RzJGAgNjJ}`e^$fsdw1n&5R!nR1VHfz=iyd!dQJXr zeJP?IoVbE5iW>BXp$JUkpU64fsyol9nYTy`-=lW>V}rvL^o=anub1)SndIqgRpRQB z;Js8eV+nGB5U2zVo)a)5XoA;(yv%@NOsSJDVr^3#Fy)Mt=gC^};cvU8ZCXJDt`1%i zu*`2(yV26_ND&*!q_5`Y`+bLoC-7>PuN>q+9rX7zHpsf*C9u+e+<{#bcFM8K)bT(C z2M+M>{b9?x9c<0Q-lPuP00&;p2YU{p)A8QC!J1qSpO*Hg2_DNhG4JPWDV zPM{(m_@GA2fDEnZYQ#Z?mYa06X!z|AhEVn+)G1N9R;LuI3uC!w6`pdQZqo%A@T$`i zD|1Tx1e9Cf01t%Dd{Wb-`*8Hapwr>cmx<|x zqtzZCfCNokiCI%Kq-FP;$(6{cBR7hEL*1qVHFj~`UOZchzTPcMI#!VitUig_+h4X< zFDPDOceD05ce=&9^#70NoEVCfs^&KxJ#d4ZO9#hC@!j(>wRJuX-C!JNqJ%1^z(;Ks zRy7076thsN&zocAC*D~=I)u`gK-EZ0stkRqWS&n|78IS9tcypgUH#9Rnzv<*2`hrn zhDVwsP$U~*eVXJc#EFXyMH%y%Hcyc1b;THqQP?d?*I5NgLyH}S7%bAVdI6<%1sMwQ zG!&_8OWF2M>bSMq-Z!p_#G$aW46oNTXX2JJL4W%>WX8*-P)?kNob$CYXwCpJl;Ls>7##`r(0o4b`k| z$d0hN9CB|n@Gyg-u-$%pOK>vrFq#=^*D-cDC7P8T4>>0Xs>URHQ;VZB z1-PyRklIKT1nJ`*edVk^tFzO#>e;wx)6zpStVroIw6kyc%j(|iz=Lwywg}UMVBhOS zmmPJQ;rYgf64Aaen8xT}Ct`B6o7)AMH7c~?I7?~*B3oNfvc&S>z>Jle!AYy*4h^)f z$yu8asY>4Iq1bm=GHx>J;?S%5ia#dR6AR>|+jAxRl+n2b3NS@2MiKxy;d2!v)$N$x zftlJjONaNV(kF^`U+4A*H+{10lGXZPtDHS$U8r}h_NcSOQ1fdpg3=g{tU}2hv<)%Q zgtJyd?Xz&e^Dt75E~Mx%O_nZzla5|wen#FKd-X@^QD-zma?*8n61mahEL0!QUX-E# z$2qu?&UOU$oTp@cJk$RKoab+huPyqLEgS^$A5F%O3i$u6$@oEMcXH*D;&Q=hT>HCn{ zIQnuW*9AbQ;Jy%`sQj(yT-_V}Qll6I@YnI~1N!mB&W_pc=3qdljn4P|twx4Dufy_A z+{h9-k$z)Y!Y;sLVe>>Cp0sJ!d*@g9JPzAEAVbIY!?)C)SrCJ*u`MmE`giYnyd?VjcV zmO73mjK%>JM3u&*o!1Wims{LdjP^f7VZ_|Iio^u!>X86j0|gib)(z9Nwd`vq>NWzC z3-6HO3hNLSHt@}FhM9Zm#qJ-78yz6l+pHom8&KB4AYY&y7S65dg_dE8x3INr8em2M zA+K#?Zw-6s-ncCGNc$%|_xHa%D#%gh6i+GsdKhb$mnKQP-q51OZn9W>Myv;sm~DFu zJALvoOHCPIAUG{%}7M#^c{bOzWh`rfI6z0e{nt`MI{(kM*I zSGVLNA;dCjB~(i2WbY0nk(ZmR!3XFqSvmqcPI&eijDK7;`t&i|J&xj)(*Oyn^?#A! zF?N7pC?^Pr5ERDAkC7WWHM6Cxk$M=0s-Bg;M^LA5xe_#_NQO}hp%OyJ2anYttJgGJ z8zuexFh;e^;fzx+;ZhA$#^3D zI2_;&z8J#^C$vUN&_N@Azj6K`n>6HLO7q1jQiC^x@x3l>B_-gQX@$r&&o2TKm$Cu37!f;lC(p!cI zK@!7}S7jl#&6wW}y})ijw!B)c#nvA!%)MpuvWv{Sve3X7#M~R@k2Skt0j3+^wEZK@ z`g;Km;`?Bx>h>p>uct!}2e=N6S(RBxHS)`w?lQ95xvMqP^{DlT_Nq!n zgrh|psQ{)cXGc!85}4`~1*G}BN`(jo2~D98;=#x4`L=j+r;47^)a6mD1DUdGVUT(~ zqw?=xzoy51q2VQcoBBB)Z(n#n-;b^}-jPbE%B#T*QqLqHsUBpigwg2ko0+I_ohK%f z_VY*0XvGuUn4`*&x6+Y^xpqYe-~8b0DM8+#wu7!fF}=lB`=>vs{sC9)rtj zIIs1+2qGKo(_Mu{!r7GhWYjKbk>Gbm+4?q#Uh-$F=@uyml^`OmZndJ-0w+w{2NP z_)%kZD+20MStkJU@fE zl~{8f+++UT>iC)VFC zL+OLk1FH)tF5r3-nzjp!*hq;0*hq#N0X7n5x=7P@DaXb}c;Rf5vo-b70OZs6smMw| zu={Wgi95K+4tFX@!);&7&gdJ98s%*@I_iFH$)8~N;~ET%XPfW9HROEOQ7I~P*q6b< z-mY&XMGY2vr_%N>`>ixA6Kj8i-PNklYm(N6Ju|_2#fgHOgwm1;EF=MO#BLpt?44LG zi@}D{$c+gMq}0V(v^+ArFI*jM-)Iwdq-*O~mDE;AO8`;sCZyps&FhE1`>@~&7k+ey z`y*y(NK=aJB@ZddWY(cm2}i{2i)c2xHL52G?bQ7aK^CAAM73Q7#J9sWE(5l{uI!%B zHLmEZ78c%qxNBHHVIILf1G}+icRXPiN>?Ok+FdS zUb^_9zfYnS^`ZV7T$B6x`{0hFemJ{mjk_AEYTh#S0baY zWk@1;oX;ADWDkk+1G0h4(i{O{a-+njUTy8SlMs{9jUC+|3)@@$PARC7m8Bw-0x&EC zSu(!G_sW+U8hPYY(72P(sYJ5EH~SQhRC+DG3IO1@7^_rKiiTPl~w{v?kw94o1qTqqnj_i&Zu~4Ps}mRYTP0i z3&@Vm>9KPb&%BtZo-jz>jhd7c8}1r@-|d^x4c7l=qWefg`;-uwOrrVN!YW!P)urr( zlDf*&{!RTMG@~UezJBzYLaZHLS-Bkl;3A+MJ(ro}QTE|ZR@~#!`P9mtricepx{jE& z)DPMEPKyy)xRecgFne(2gbtB-NTjc)ATc%k@b0AVR>@|JGVy(_>27~Ms5jMFv5>850V@>!p}guB)2y10Fr7T!nv`)7#4ta)E8DmP_e2& zc`6TYy9BnjMtSfgqYZH@aJMu1i*MW>JAb6!f@uJt9I3{j8d|cdwA@cz5H6~2EC=g1 z1Q$pF%*K^(l{sCYRlt>flz; z(HG8!0pDtfxV( zo2#90G?a0Lx77iZ#_CK_m=^B;ARB{4C%Gnwk-B_9%94L3+eIHLrJa=~}aRoQak8W3Vi!5aB18Rg0hfdRUIk&Ob?Y6{8;WfMWw%Lx@0brHs%s*jr-fG}=iU3hd}ib`zb3}=gt6uNeBde5NI0)r zbmK_eA-yfSN!wC)woHLyEhA#h5_Zsssfk+&+8UwHk-$$7&-27cAzI=Fsi-4Z4iu>B zn=vCX#<0h7x0cFBo^cS?tviY?JQxuyIm*K|9Ex@b0)MTJRKj%C`pMhQqF2AdLG=U% zy`4?`{!0RWTsMQ~cTmg_N0`+|mFL8mIRyxnmguF<^OK4C&FrJ0DcAcZ_Hg{_EikvU|_H zpI`B6!-2dzh_G}b*8^=&t{=~998Y~T0u&LA?{4F@&-oU1j6Z^4AoqPsDC?K-P9_T}c+p_Dj>ph;;86al+GNf5rOlR2Jh) z23ws|0T&o}>ad#ZX(om(BxofGQ%}TsdXl?yvMPG*#s8%67L~AD;?#o6$BX@9Uf`1y z@`uX(7tWn)9gPr^@WV078>32C?(B7RQNHfhKs0|*12kLre*Z4|fFFWrzE>wuNSZhv z0h<^A*(QvG1QZ*b_)5jWJbePvO>qynr~$!x1b@K_8k}6r>BSg{p)r;CMUX7={8`_@ z|KPO$p=w`ZAykC%jv-hO`xe3ffcp*d;l~Ro7F+o9T77-lOy}f(-Sv)vTM+vooAmkN z{ebub*3Q+4e&-^;aAHaSHpvlpco9S>IJawPWmZyf_T$bE)RlFjB=PVk+#>(S=I_|i zU_^yr%&#N|%z2>XKoWk4fTGzXp{ihypa`5rfgAQ8nD!s0wgwlQOOH?E^&kf1Gru%* zoZdnoA3gjxP>_B;dbw8-pNc+NzqdS*eNnqA7)xXyRI+Oe_6yT>yLRsVBD}2{7vBEq zqlv(0R<=f+aw_8SacF&#L=`Fm=-JnI;a|<*o6g3n{rFd8RAd4>zT1b>c}~wWoa4@{ z9oo;8^W<&s_8BGawJo=o1Dns~1x0sRyl?ltX!;JR+I5d8kTw#~&5tNG33_S^9q(CE zcat{7(bqZ}jML3}R)(80qnWxw=(NRk1-}VnaU+FGdq4EX$ZUTCdx7lsvE952dCkgf z@6X4CEGB!eHHfRz@uYzm7C&Lnw5S_u(}Lb!Q+Ge;l{{K9(TuZ zJ|Yn;m&PB?V^IDY;``dH}fLDt{^{rd`QSY|Cxt66M*A;LnZ<&hjdn$2IkF&HwSSK zx#vcd1YQB~BL3O8|3Q*8+uoN# zz2cvh#y`%35Ayy?IFa29^^NKI;N}OGBf>DkSm_Pq*Mmm~1^4H_G?sJT%po0vuqX=3 zy8V}U0#CfOGG2G^3Ng+neIILrxT)L63jm9NeD?9q>Jgu|K?!Kc5upsxC=}!aux(HQ z0eN|-F~G`$xyWaH(TA~zYu|9+fPDM#0EiLuYy7$G9=%avct(HBaQtHbfA1Xs^w5xx z#%YZ=#GYP!W<-^{BM&0g)IE8`oMPldTov*mShf|tApz5zVGy1A4+p63Ptk0`a|H@4 zAfiA7W<;`5{2z1-Ki?&Qq?T(mSST~8O~_Ur5AU#6`3?R**qMrDxj8q?9cN_0^K9BP z(C2F1mFS_pobt`Z{u3bmE2|`Fvhj7ilEAmrUwE+>#6@&0^Wq`6!GHSP->z5mNTXkA zQv@k47>x`+x`X>~qs{?=7PTP9$tk$Dr;5%Vpn6L0gje^5+-lPduQ<9z;vP^>)P#CR znEzU@S~+BBOs9>XUJ}a?4|$Qu!!QHS@Hfd@Uo>y2Hg7{gu3wH1EtC0@Pi4f!f+!$i z7zOp;i-#3ZxviOdITcj$swJT8xonlIplaK453)etnxRcK4EScQ7!8`fxAqkcA7tzc zqu)1tPmZyc;wTku>#E+*QDqh}W&dEEklrb3rw1R*=-)ryd#A9}i-U`PG8(rw&fT~; z2urK@B%E@kq^gzWN*@&CK9ZiwL;ig5Ox%p!ZRmfi$cbstUw9V4OLm2Nm$K!{^?|R> z625z6nqi{Kj*n8@GTw31<=VaGc{@5OLLy_!=D&4b7$5jBIxE#rdEkto=(tx~dcJ(2 zr0%7y0U4OqJ6hbTwLv$|P2jqlF&}IzjNHzq`#9w0HumEAk^S~M)K7j@cH64fCGw2+ z@zHU#%X9{@R4S6~{!^FvZsV!_Y?ul6%?<+v5lnRaXupkzi=IW5!FXR$Fi*`C;zr zP2)Rfjcrcrmy_;wKt6_5Wgxsc93?y8hd(O4OD<^Azc6e~c z)`*-+6LKqkb|s4Gc5lCK+7Ophf5$L!RUCFCz?4xHaAp1aQhAR(<+-tv@)!s}0a8w>W# zDLls=H@yqjfP8HmtQxx#a2w%DB5r8+{bz-C7A%#iId88oDO6td3#gN`ZOL>DcmUWf zgvdeBkAeFA&Mxwvk+vrqTV0B3SFLhUsOhWe_ud`~2VVNmWR(f;j-y6EYNn_D_h&Hu z&Y6yG=u*GeA3iKwy;-mx@~nWxP$|>N%R;=;o*xaX`TddGARLPpD3DjxV`P ztU8e|cRX;)s`@}42|mmDbSGU059aYC!TqfbCiSu!AIP0G1e6D;;n9tIxdLt9C(s>S z?Mrc4)Mxj`^hwkqR#jn8P4{fZ`X%d;sC`ulNNzSf%86{1`6&pEHxPQGKkaoI9Rjx} z_#2)l2o5Vn%Wg>6I%OSd!e6y^u9sjK1u9tJqF8P;2u+S08E~8rC_Gf}71b|X*SoJR z7%8^pLzeh)T<2_I6=kyv#pw**WTd=VRT!q;ZGli0#gnEp4eF;4;FQOJzPJ&7u|R;o zK-YB1DV^v{Fj~^&X~)|Vr}gfQ?8J3OjN*;$T-3*wN{GGxIsRKf)E$TkRYO!a^6vi2 znTl%nFXB#OkE)S$buo<;-48h5U#B3!xu3Qa>Aow~sXcYK8RN-li&_`Ut#&Fe#ZT)T zFjn4JXxCh$iyuEhy`N%LYkfSPYHlW}Cw*Bkq!SY?9pw-9&iZYZvh-3{e{3);QHX@H zvc|_CrD9q}hbMQ1qi z`5oT))w!Az9Dio8FCIvk&;YCW>mGgBqEadCGU*Kg5|{X59}>U7I8w4j_5?i(hg1=o zyjRDUp>}0u@I3cB7by#`B5$+(n0A$S1OYiJ!MS~d4Ms?ubIJ-@$m!l)VV-~oTGP+x z*?UE^U~vOe!)v9XgFN+oQT3U}XzpMacKxpBSFEk8rCXO!#ny;ToFUAuE9_GjvJ3^i zJjJ^J59{36WA`hsG*a`%09aG0^}y|$EtUxiB6yS3bB@j-np$RXeV4C|lGT~o8rhAx z)(78v>hhzrP^qJ}iOCaKsbIfe4=LLCOk^A;$(Qjj@Y5I3Ws6 zLvfFYRX<4!k=w@KjyalcRVTv3HZRZb(iF&R7slUU&qD(K%%04en$)*~pQ!Eh^9K3U zM02}Y*PUO7NjiX(T^@$hkiD+E+F@QVmhok}y#wnzGh(*CT4Rq~!I#s!xJK1;o>UjS zk`fpQc6(y7TESB65W%@f-!8v6>KsJ>a|PvR$P9 zVL#BEKo}7XDUdtF7y-!GG|;XDM(Mzhm_=X9&#r!!wP3t5Py0Z?&wh(TwWLNw+I)Rg zUMJ;hNYAlUtf)=jF=gU^%7y+ogSO}Hl-02WJ~zRXA*2T4QxA;CGmEfU z6DDf3@G$T5^y8EZ{BMgPrjqOjM&j`V{Ha;XvQsH)79APJ(r>O|m~hQizxeDY)dMl% z!nDeM-3(#E)n0-3nmFS+37ljnm7nnc?2f@=r7o+klTFK^Y#OGxP8AtjsWfiMInjU) z=coze99!X(!BHi`UYrnKIc~-aC^5}&q-plG@2l$3o^0&#d7jMleS1-SI8y)IB&@7; zQTNXA%tvo{f$xl4ZdFy;^{(K{>2g7M;R}|>FOJDFg`tWNh2Z05Nv@s4F748Pxv5pJ z8~->ggxjAkmFs?OU(g%uh;jTm8}hzh$GiC!V5fcEHl_-%=gazYRs|ZG>CKqV_nF~8$7^60# zlks{=iF*HTAbh6dYLkI){k`z<#vpDpgWs}4OI>#&)UotoHR=y<1V^zef++JRGRhaA zV3h@u7iam@LZdg$-YU9qR|-^bjUvK#6ae|$GDNAL zo(Z-HxSWqN4ywo}7wM#`j?AE4q4x=8u!KCxTaPLD7BKX`O}6GX+-$yq`QMDmjAmSvh=s_c&fc?@^vQ{i1yHVP3No&DkUeo*W{>7Gq51#sUK}Q zM@TIqGL984&i|>Z)C(2)y=62{hKw34+^e~y{xx!-pzc%#HTfIh#AXjqBnPZz*<~8D!b`>D*exJ+ zpORpTsd5*hBnM5Cf@aOo!i=P6RkE4|g{I2K*>UPQ7u}h!c8Q!VP)_Ix8d}hq$8`0G z1hvw8Me|8vQLfw#700`A`A}*OGK%lRb-_oPgl+;3M~ZaC z1v6d!Bd~bSCh^T(%nOYCVYPggRKOa^n+yys#(LEI0!Q^+ZFBd0mF&3Z)FG0v_Xkhg zr{8OUdJ%WvD|*i^P4bYzZ`?6k&RZD$xQzja4=r*o?@;bL9^x;s1rixOd z!uUqAQYBwG_}4l)$|Mc8VvW#pdvX+sV1<08C52AaintI}9jR*I;FscZr-!oBdAJJD^#%UhL=S@YB5e5d7n=M-R{Ic9n>G{8j{Hi!RJ8kpYq7g)4eLd@=DB6WCv-?(Q?CzNBFk5}`a3#5NPOTwoO8E| z`9Zw+b4YC9P?o`bW6WVKf59K{?4Ypnq!%`f8{$W<!S%b55H`-JZ0wu z$6xy*9{iHz(mp6Z|6DdCB^SWh(BeZxHqt)P2|1gNpnQ2Slzb4vVva{9B4jThei6j1 zHD1AHX&jT+bZJtp0!0-F|_^7--W{GA!|SHEW^udcGGS3De(V>}V3EE}N5*(RJY+qEJU7OfYs8 zu^);QX%8vluCt9cZB`^8l*H|c4`bW22y%Np9u9PS-jkkHb(A8!R-Cgyo&k0$-d=nw zo<@@Rn<&5}<12c|3Fu&eM>l+9i~bD7HRsME&Nd3bxg2P7LIO-hDmgac?5i`%(Ox7d zt(!52SRyc^F+p#eJ_yg*s@d|zW3!FUarCfsvhr7jxzSv>AlrpRR6>@;< z>FvZ1JBZ@J2DxQOfIBo)CI?v8(BkOY9TyOEvYBca51~iHIiv-6*mf{3(d~tyj+~dz zI2O$Fms`#_Hr&l)L*C%XM0kh}J^wyD*YVfs@ZSK_=|$8V`577VTZEgh`o!IS;QgG@ z+3d@3u4f?gCc6=xDhnMuGu(7572W99E0#p!Z{1l>_De(9#=?mzYZeBni942bCay#% zmOGex={pW%I}+tV+$y);H~!NVr&~uyL)Qng$`(2TcXM3KpYH*3Rh3zFh#8^B`R-=8 z8NMYMCo6~T^im9$)o3*Z{qDj%rUESDcPr!^?rn8T3MFmMM@)-vbcMP)CmFq!sRy69 zzBMv;R|3Zm4xoUm61;1K4q&#W&Lt`4zZ+{11%^F80&I6baCC|vH7qH*=%eh_=fk>_ zBOGm@&xm2f`o__4EYE|BnN`+KH0e&zpaIRn=hF??96$VPtn_J&>vi!gbmM?h!QD25 zAQkALO>%qlK9JYgmNvJi^vSZd)9q4$>up}}?e_nV`k3_00;K;R0kTCP?eDr{J@sLz zsufvK3<01RT9OJI%KZWX91#eMA-wkO#tLwJ{zgB{fAX(gD-`ns2ukxA?nwp>fueiz z0Ga7eoikP;w_v@H5Jz^f^JCwF5hLY+XbASaJU4W?_er~7JZgdYBUy;m`>G)D61Q$v>8;R4XF0eMJR-PR1Y49 z`nrQ04F0C~nU1oRO92`Q{iP3hN~u~>MoN-NxOnvYRagQ?eZK-p_950)p;0?B0{xfS zZ48v6LU9Er_f>DD6ni;^=-+ih<$u-)`jW^%?3brR3aSJ`ko6`4OH*Qy2m(RyfEt1T z*Dv~gtV14v9AdB?M;;A~=r4qiAO?z9Pxxu$uz{uR9$aPtPPL1#j0hVncyTOOSPu>X zINFnAM~3ZoBySF`)YUJG$cyNbA2QD2|SfXs)M4P6X7MBp@g23`<#D&zuBj zepZ9PiSh$gO%YvoiEN!U$-7sox@C-#_-E_t-`=(Q?Rm%0SM~4X=kJBgr9E-9EOJAN z%=LZ=V)a#XAmyQ<7#@nVejufe1W+%?S{{#IgZT5~)SHMYVXK4xM?D$~>&Egxmcm%v zSyt~QI6wj1;)RL)rQUz;PhRc5N5St{gLijXJ)$uePvhYz*HblFL)o<&VN;!@7nmn{ z)oG!@aZZ<)32z)hHX3o?E=1$o z)Dk$Je4_dpvP|BK96bk(i9V=Rc}C@X5}~=TO%WViOZG(t_%cO1I8yUtnw?OjIN@V< zWSq!|QliDIm!JzH+4vDwdE98?_~#HMXKqeAvjus)NQ=~zJ!*GBK6F{!dj~8JCEgwK z|4SrnPzH#E%BcSp2_^P>gv8+hDXq?SUG+_w?xwMB`Y&=Y6-i283lk)IU`3zhHATNH zAGzpCdPCU+*fXEQkZp#WpGmEq77IGRak`s7D0!n}3#E3}Yz0d0<7*jcI)p3JTZ#Tr z2nq6jJriT$D)YUtfG!CEnUfIwM{&T1JRJu{)Px%2+ZbPW0A1! z{xF=^%@SUJsFOvY;h7Y%uYc{l!2bM>RmJmVisy@obWnQYH+qn%FHC)Z3d+oJ#e4p4 z&PSebGQT*WAWTRC!{i}Ilz$WyczmZie}b0PzPUZp-zp{NCSNdf0s3R141nHC$r8^W zgA4W#)g1tL&wDJUR6fLu)Xx)n5%nyx82ndnxWoaEC^-;!(bg*Q00n!<&m*NAbCe2U zk>HO^bY-b|XtZkE!nI$3lW?K`YC}8eLf@YAK(C#T?QMS1{7b`Zb0iH$o=LZGjc?qb61DA~rga$5F$n1me{#`55A@`WvKw5fW3htKY_$#P&B(V7l^~8jgrkiAtIGZnXIXy8LOXu@ zV2BD7cK}$6=E1nzxQGU&N)8Nb+MUH(tcr%QUH^(Le>Int4Wr4<+qO}hIDr~t5QM|# zRrI+3YF-;mc&-8Z_(sGm@_Zut(=?!EW)zzXy z0&uO$xr=tr5@h0bUyQfKu&>fPxN*F2;g4rT)}0cv-t{@gd@(+MwaEzV$Pr~5abcSS)Uvc}d#%&?ZWG-eew|GpiS~VgRwn|0-unGNr4~u@b<3~Bo{m`E+7xD*lFaTD@|H_ zF?ZF z;K7~X!7aG^HzaS~bG}pe-l|(&MR(6%Q_ajX&)(~|*8cr#1wk(mQ1pt`*^-Ya!#hM| zMH+^nIYjiY{$7p;h}S`(?kC1qf6AeR>^_Sp_#dq7lTf6 zL4I#!!P{rpc3UyX>HQm3;8zI!_YDc=*pjgAI-~#rV&oz4i_iSTik>MxWA#4Kw7L7hl~V|m zX8gaNV-@U#WRYUzeKqBD2r0Qnd%zz}_OoCW-jn;|?I$NN0xUr4{Tu7>t_>XU75NPO z2?WrDdy50yE=B*|F1ZkYUw{=4&g~v-nUoWMlOSRLOM+|$N|5jrNYostG7?Tguu5Qw zAQZrp)fj{}N3SUCv_Ebc;gP^B__dIL5;E}A==!lT98m>*8=7NUXiXLy2Fl;>Ju&cP zwLYYXdDp6)e)Di%!&M-2Zqn{waeT(sk)@|xkd%YTi@Zj0cVIE&RwmmC>w$6U@w~Qu zv(;?F+#Oj`V3X?HH7U81B{DdTH(5d?MprV{@f>+MDq}&uh4CScYYj{BtR30+p68(N zySzoLSC(^qEkOIhGS%!k+Bm$L;@U!48s| z&3uMW-ygLt&p}VO*Qt;s93+#v`!_j;yU%VH7+$lb0l5n7hob?{`DqJX6Y@;i?mt6D zN|_V*Wf-vruQ&V_r@pWjy)dBqnP?o$Mu;6zhZShqn`GVchh7ZgTzkM4+%a_;kw%gy zsO(d#ov?pV*H`?wK2A(BaUc6?0xUtA^%MR`J=}yB)Jj!_sqSZ+TcVHKu88 zyf=RiLd;zJT;Bl0&;&?+G*_!-%ZfMB0^Ae_UQ!l*LmdkUkN(oXmj&SJ&|UV!kgxLb z$FJ5!#~+JhZE;m4lUR~ve6RyKgR2M3NR;0td%hMr^Se8E1N2jgh~;3=dn(hIi|YP? zC{cDB&?(ndQZr#kuCjaZ*OBsLj?mvBL5&K2hJ6o~$^l;d4(=-iGpHO0I`Fgrq6(8& zq@;+t`wX=qDNY%0>?cRu@NtO!T|w$^gc2<6Sai1_Vn!Zuuf3bJ;15J8PKE!6pd>B4 zdnz0{;<9_j1kRx#&DG+f_OJ#K7eZBnz<5I{31=n@<9;)g91ZzDvDN-El=kw)t4IED zO~-Jy->RJ2ZF0E^Uk)7;BYlrjT<9HIB(EpY#{$Sq&`cqx*F14a z?Y5fR+||Drje#1r-HLtX8mT3^7No{eusTIu2Q=`?PyPKhkCDqVSn9C$_1)5W$#JJM zX)Gzv8&7!zrE<(81Q!cd2m~!3B8AGoFj^FT!sFKu+;NDPj3h(M*J#W>zys2o{*@eL z6^$~V|FE3?l@m0QF0%Dj6h-ADUcTyT{f@Lsm}*sc>H@vLuOQWh)g!B`Rn+0MYns&5 z9WZ6fzN*_dnd_;Kz7HX@#{@!(-{vfu60IIhK}zVx6sm>_5Gsm(D!Vm)B*dKVEjXj* zhl}YcINJ}GY`t=XkJS+TtRoGn9{lScG7)nS&KJli25B2<$lceZ&skGhw`P~)Hj*l0 zet^_D3f8d2nS^Tus}iD{45v`1`_QCtrc+f~4plLv0(>HKZANo&7*Eh|&jwRVTti4Y znU+mK7N}TQQBY^yyk0+$$UHLo=u*g}o#>E#5w-O3_rvV%LvFQE%oow?$p~qv_)bIs z>zY{Br;v|4cCt;X$YHSmB|#Vbopn`%qhakNFwmW-1|sgM=paCGU#c=-Xm_HmB=RDg zvbM)1Q4Z4^7S$Q7Djx~i1;30s6uspA%+Gsjp*)#0_2J!>L8ZG$H`aLe*?BtlWC>sWMpLT5o$JfTniJlTlM)JU z3T4i&BH6PxSpuo0_R*YLP~i>);r|pHD}RcOC7HKkL+PJl18YM)W!byzilzm2V5*cW z(*`=fh|P#B1ZnR4v@dT?_1efDMgOGD5g9Q|^yFk*W*v|n?Vp6@d8etX5-t#4+WzI? zzU21aY?|)KN8-DkDz7H;dm^Mq_9;OXY2d!#@AlwAYI5W5;{Eu=Tle5UKZn@L(ZAup zC)fYLek}lI@*4$-b3e%bY>;Zu%m8i_C#@2cnsF06>AOiAYF)Uzjtk)mpYl)Y| zwM)ttFUN3F+(iwBM6?vh17SY{CyN48V1b(v9qtF!yw9;zz)h07?Y}q@Olgy-FnP%L zyHcWtj4WlH!9mmYDkJ+7Sbm_VA0aOcT=CQBstOXx$RjjQIg=MMI=By1jXkmjX zqLwG_*}D%l((hh+S$J0qRq&QwdDosuMPMpA-}hs=Uun@lJY7SJ3cAB%3E`ta_ko^M zA&HFt1rZ4r{(y*&#%~}Zr&<9sRp&&rQiFkG^?@&+Yk{>fI&9e=LPdZv@?DR;<=9fK zY-ENiUFn1GBl;aAnyVz>j(RJG5 zaXB$X4F?fv$y!ST1A>TLyZ88I%vaeuDyefB>+Z)>^aAo16*l~97|RC)MPFh-jDCZN z5S&Jp@2#fh3mYVK50RU`9gNC{Tf*MnYQf3B~2hCqMD(i-A;P8RUOaiS?6TeepE~ zrDUuMz1StEq=Eh2->PYeSpZ;=0$Frgne4j>0`S}Q7qQepy4jvFaL-{Ato|H(J_D>~ zivMdD?u`QgeizdOf#1d3(n7?4$;eM<7GJhs?qDYnECKSSv72aSq~C~{VG!Q>3-6*q zfc=GN{I~wX`!T-XEF%zUoY^$WeJna1R7bh^j9W(B|CeVZrY;>z@{JxL+6Lo@2k77d zNyfiG<1r9uEUx^ney zHpU!Z{PVx4_RWOPj`cTM85lHR?L!{cGN6YI>^S~zJkD-{=Fu_)cH~OvNV)x2sd{=g zS*dn4bp#;|WU*C*WsGW=|1g-q_Z&nff_V-veRh2S4~Lht3H|+!ZYE0J>!SHxBy=%@!6qzXLIY zvw8asIB&5Rk8cZz-C5BVzLg!0(LA@c>(o~q;EvzkOr zpyM@?Io&Hn62)PWOu0IFYJ5|ol5+mvl&CrBd!A33i}9{|i}sG$L`n}are`!S{Feun z%T-}#?>IhOXe@m*dR0fjmtAEk`Qo|^YRdy=3$~Q!Kdd0M{Fw3aDvgmxt3fwnvo1V% zW@m!qJEgF1lP>-!ndF<#Cfq#sXqsa*sd#>Bz|-9A&1bWOo-7H=y4?7y7f2(fL4um3 zX(qSrHxWFqE^I8}wwWzF2sb~SfhX!mxP$9Q*IP;_Qa^Wm>ZWn$2JCoZXv+8|#h|Z^ zdpa^i6`c0<4=4Ee);+|}oF7s&Uc}2_mqe+2yry_Pj%&X2!{EV5@y%Kz#=4fjU^%`f zdPeB^@D0%<#y9YKPky7eI=jVMarK(&G+-u$MWNYD4~{HwrVpp)_Q}+GJd$Xj)6Shu zT2h6zC!FJ!U9r2fwx!c;pc%_&9qnC7XXlR{Mx#`-BF%fzRyvNO3k}}J)|G|l8^W`J zDV$b$80+GZk%633!LfFlv=d6atWG>A=Z)SgW&t@vwwco?@JlFew{h-T12AX{67U4;ps#+9>LIT!TFJ2 zI9399d{m4bXnb@+n)X_MZdl@|Kk0bqzwAPGWbNyn^2IumYr18Rr}0G)XHpt9=Q$JM zGx$#s?hlAa{>V1L;4g=BF~0XVs^%|yGr2POQj2Ekw#{qqZhWn@+3%5cB=<T9eU-(4D$tz6maD#0zx&Aj=?m?*)nP}jWRv7 zcB5|lx4dpQm;h8++^q))@ihqw?{27M0Xr;_ZUx2}^`)1~*Xmk6B6`pmMbLCPyC)xJ zg6?R(->SPTF`u-ko_L*8om$}8Ah=Pz3OX>8%0JgKZgBfXT`)a8yNq;OOd}7V^NQ~( z8%>Q`ukRIOO@KkKCSZk2M#qozJ9xXjcV*9z)6Yjk%VZLI?BM`0Qfv&es6{xQI%;Kga!i(97Fp z<7nqE(lLHCp|r;Wgg&mrjjk0@A7dF{{$dFZ?G8AwX(ha9ktYV4u1svR~wA z-`XMjL@B~d|9gAInp?bn{PM62N32LPXx1xPGIZ)a2_f~vX~a|_<@MZxn6x=&DM25VK}fVe(5!e z{1gPQkBw)mkAY1k;*(F^ZXwh-Y}I8E2o%zHln*CP*SiH&4ZA-Q6(eaJGI*_Ka&x2y zH&Y?tNt|W%Lh)V$X@GGY?Pyb#3#sJ9Df`r&y62C;^%cgZKH7~{EDEH%S$A;`?K z1Tr^Ib&GsZ;SzY7qLk)Y&mL@zQe`%3H4F-6_btc(l_Nu+3~%hdAwX!)wlb7itkuwFwDiqq_8 z=|@TzVnsS7ta9HK!>&lf6|v&Dx!Q(9+3nV%rK4gRk>yud7Rmu4Vpe8iI(l-t5{07r z;)=`5mMNj^uRaZ-SBD=951%YN#HgItq|;QeqdFJl;YH$)1wxyr-z_VO67ZjxcC>J{ zMFku6H-RN?m12I@0WHO3?k3h-SoG>8o`oy@q5%?)bF4x4(~);yeDQ~sJW?RG-<~&5FhBu;>O}+APQwOYzx<3^(>o! ze3Bm6Z-9eobGU7Qu8cl5#{a$0i^9++pyay#aa)y)rKh6N-NlNoqg?D>Md~QZX^ma% zUOm8orXczDzyRK(w=^nR{qo4e(qxs+-@GUnOaFpd2pNbbIZZ||uJ)*+gI@umq;B|q z3gC#4hxvf)bdeS>)Gun&OT$8T7h;%mwML#)rBRu&!AzJ~{DK!nGa?nXaWz>fH(CWZ zj+UUSCEpCyiiVo?{gmIxi*C`bLtJsqBH+gSiI=Qf_@_WI)T~Yu~)t3~_ zE1n}rU5NeP;=ThLedt4#IILM_|1|o9%#UJmew!jsVVgc?cLdL@;=(2Y&C*(IG_;g) zO0aL9X<)|>q3EsSR~3f^3-n351d!fpnIXS9rr(Uy^QI5lWP_+cv-FXL zwDQM~aJk<1uwh$;IX?7{&Yz?(td=2{Ry=5k#y;XJ_Ilzd`MU7P40KBR@S@cN3g!R!ZW+M;G`Ao% za?mxJt9;8^YEP6ad`>xn$3SV~MS*_m#*f4<@5G}({y3|1(50HQPN|%0^#>HNl-)D8 zLARt#N--HM>VMm)=jAGwq`}`PjW<)ZUCroI(@Of8p&L`bW%Dt z{3*#FXEMu|Hd^(Kma;jS^75AOAhn;gEjnD)a6v0-|F-{Pt(N`NX)?>%xtd60cq^0q zfwV}QyP6T;(;svM*bW>m5Rn}`FAO>8%0%ZKdDJ;R zh-cFRyMFVCRr4^pZ+$>Nja*E+av2RZ8r=#^^||+$+T}nuvJO|J$1f$|oVPdAd3fb# z)=Dd?D&x7mG7bOfqaw>!y!)e4nMAlX^Xq2)!A+JxXfv1CTR zNob?3wdSX)s)TIR!DQbFtnQMt58PZf_qWF9p0@aT>I|& zKJ%*oz2#S2n`*5{Iv__a;erQSK97sxTg%`+=ZzAnq1{zwLpi@#T|Qa&@$kK&EqDxa zAyIPfuf)0O>8tQvkA|yw-le3)KYLoshFfk*Tn2}4+s<8ADN#eX1&H+?414>$8IP#3 zN9`8FV|J?8#|dn1)x%5%^GcZ`s9MV$0Md*SD1yC{PJ3u^2BbHKKMvORWGSOU zRU<&*9ia8)6-870#BdK{VMT(N5REqnjX|$YDrD>rCBBlTFVGTqAkUOl&n3ko2jxT5 z_tLbNAgT{!OwnGmWlCeiGn;|s`1Z@kAAm3>&8*it`}j-`cj4CH0k-!nbV><8FyO8( z(&jb9^5uJ6(P-@;e2kbwBJaQQYeC$UiDUIpv~DnA;PbMO%}CUF^+=zI z7`n>_Y9RfR-%&GZ0MqZa;m>3+O(&7_2|z@%yS6Ga<(~6ulIGz2N?cWlr0LOmm3*Ii zIyka#(*0>QWAzgDV+x7S?RUYo31b-Theso30;(eK)eZp5l81HkuO=De$$VIg1sVP$ z=fVaIsbs;?(32_^Cw7R^c&y+6GIw#YLL zlAms7+}!WVW=^Mqxb7z4r8@_wYg9x4&x|hb8jd#HoofW#?e! zwRZHmTRr0^ecKA0JrU3|ciMW|B(c~~-WsF)yxQW+LvWRE)5x!}p629zAXUC&F-1oo zHQ4|(%*6}8wDXTJZH=r^Zo}*Pd%Yo=wjy0OGQO|fZM566WaP`ds%4A?4+_+lS+T)% z+AJ5C1sTl6Uqrh&RcPEBS)O0Q;+Wcp9e#6NM8xYfi7Oz$ANSSRQ()_@`27Nduz zCXM{-QhDrYS_ZRmXhr&h}kF${>DQVxSl0L3MKZGh_$+5 zS8*-T$+!o(r#`xkSXh|}$LqwuVPrH|O=9zKc}02^>>BP$>>Q)Mx0QK*1vO@ntP~Kc z#7rldC;feJ3d~m{YMeV`RPwh;_9YqMK7Z&F@c!_0d6YEC-G_b3m_DI?H~2?lr7HD2jKfiZ2EGObb#92Ha_vCM>MM2E5%U?a_jGYTguu zP%6@`JlY%PwC}w5o3sLwADb;&yVb^(Wm7YA)^rS}b^~;1cVSo&b&hM&CYr(7hG+D< zchwh;nVlg9+f?o!S%)9HKdmZ7vCtP+0 zx%|q{9J8c9H+M4JoaNFb-ENO9n_g^=mM+Mxd3bN-vt-fDKl_xi(XMQkzUNi!Zj$@P z^a2_0V(Um{mEXkg8=^a*b{VNwm1LZLWJX6gcCo}eP=;QsKX3zhfO zAIGJ;=fl7?+nVy}t_xzU-S1Yn?`JQ&x&p#K(E~ocvA$Qh-6D7v&DH0Rmx`woCycon z1{Y>4`k7%{1=Uj>_aH!vfW29#o+Zz8+i!zFAf4{kFjaCNFDA+(5c!88o<|6c2Y;jg z-%J4VBaGae64~=SKHDCSC63e~Z&+%hIg)zzx8F!wNKfAJC+cOi{CO6qON!E91j(K_^K*Z?2SaZ=D0k6WP8) zVvW!y^`m+lM&z-~T9u*lc{58!n($QfIRj<|Y%|P$^>#Ifle>}nObk8lFJ{M(r!6YK zq(2)kmL z$J0y(NVhhb}GHHoS9*mJmW|9p;uQga!<{9J14x4YbZ|NL>@YHQ7q zJl2ZnanPwvMdD-B~32_1P1fm0^ zZ{&@PDwZn_b+6m=+ygpCl`9J@&NJ~>gLKN2zLpO^(RtC1yz1{8syn7OxAhTYp6T%z zn$TPY>B{cij zw^xEHYRIKqcb~b%QhfUm`Xb zkG}X`uQiM3+40k=!D@doP{dxMQsy+=o+-LZx?#Me`laKsX*6<8`TPju!P&l(%Jnl~ zL7-_z)?-rUaaZCi#tOvNhgm#@FW`^UX|-`jA&!FzdWHh(L`!1M ztw+NGjf~|6Ig}mh5|(yRXajDRwAwk8ElqMxhvQ%La(?rfM>8_%jwz5(+W~Y zJ3wQD0lvL$CW;)6qOF8QBume)t8ok=$;U1hu1xHTp!j*^&kp%Z9PS#PJE<7UmEQ~4 zw6W=a)X~~SO0+avZ*~$KVBWgQw>5*mMWEoeR6{JZBL_v;(xExcV5->74^26S0)3rh zD!P2#*KJ>X5w_mPXGYa{INKsKPK2^0SRSN40`|m7bH-WWlR4td*4_^h(1VYBWvxY^ zuV57QQ~k=hIdo7z$M)d~3c-pvpk)&7P51gEe<5*D_ub%PEV(u?d{NCJYm@WX`*e`9 zmtf;Ii!sWg!i)z?GKTOM+J%4-aOdB*Pv&{CN_q?9Vg9c$9-tmS=z=z#hI>GM1o0m# zb8bjlv4&aoTnd#nB%PZ08-BoFfR8v=6}~j6!8Jl~^G_Ov@wql&%`DfOtj2W)M`>&pBW;(z4IXMtM zTBMAy2nS=7QTofV#$eF=B|a* z^W*bUx~k>-@Qz~29%+`KaJkRuKOwk56+WxF*t6>AnTpRrMZ*(qBXgh$_J9k1M*azY z2O{`c@krygMnk79H{!4qMdU(>jKq}L1?sQ(+w{S~_ZqBC82CEmHpg_yU%4~)1_^Qp zZ#FuHj@T3wNZIO0VYvMpAEUz!r3UI93q33KKyA|m^{)`>c4ncm_%H+^0;NO-Yg+U# zu_=^$6ZN9@K8I=O*)rc7VK4RG{|~b1=e@-Dgf2gr5a}_rWg+Y}GRfAY1#VYlKam?hSfBF|q20k0-r-K?@ zauAL|f5}-}*Q@jU0Q@}43rRLp zser%a>M zHXTV2S<2p`z=l_P{DqldyF2RDO^uqR5RL;)W`I;3=3i2Dg8YpXMJN+SREx2QHmbw^ z3yaRIwbotQU=Vr6VT<}Gp(FOS4q)K?Nyb7!nC*$nkvR)^dW*&a{mZR>RgBOant*k_ z;xNWv1Vov}&Jq4+O<8Id>mq%v70kE~`D{2jAN_dYD| z@=kv<$A>d2#bYibSJJ3v;Z*)3z-I*NlFprXI9PfQ-dk;r=8B;c)cZlW(Q$Wld4hYQ z(piF4p)T2d%ljO^`|&I#CqW@|#Tn}Rf;1KUV?t3*u=e~Zb@9HViSl0aQAO>OP74wY zdq9$+)2GI=)2GDkCeAF*NWQkOtM{9VYZKv&|L8~IeC1CJ?`o7^g1Wmu-rveSfL<3U zTM(XNjdk33fAlzygaGJC1VKU;Y&$yW5fP>mxYGf5<^Rv}k@8?l?GLN}j+WV|YSjOh zXzHo)*>QKvV*?khx-!K6f90crmN)t65f|%|nJDfac* zFl3mfoF0uNeQ0|cuC8cK*t61GGo28<9_CxToLlbfK9=wrj!!UhU037B%HMFNcyE!A z+Z{got>ctIFg>TS!ELl{I9;?uKomI2km;=b#BZ>&_w?{1I#rGvD0 z0mZ7@`5B@?qBl`B1A(N;PQV`H|5)o=Wxi8i(FAfW>DELVdfc2IWmKPy$z;$2b~L*B zy-KfL36Z0W*QATXPcQQCaDlzI4!@#V30eyA`*Y8>i~F#oiMDy{-zH-s>U9`cpcmXl z!v`p@!TE@HcGF+Gp9_0@sK2s!-kj(ZPPg6e(A(+w`IDb}opfAxoMu?1)=b5ck#@S{ zhIHLJh(qc!{lVIL-${!%tnwYEN%qGt{4?f!qq;OnwSzrgwTZ3w%f3|gDx)KeGx({{ zyMDlsUSVKpnX?WkFspU#-vmMHh+Om!m@aOmTfpJ;nNpp6y9II0u9%m+XmJ|~uKOKq z1W8Mc=u&u}{Hg2xZuH3gKG5yLuhKn_MgYb`o^pzxr!ml=k3}DCaXU(&z7GZ!DG%7& zRp54f8bt+_3usX!67{qwE$S$eGN#+@O7M^9d7h#?@f=JtmfZBY+wEH^!D8{@JBcY? z$f}R*Dn}{SGQc>?OD;~J&hY&rZu_0+eN<-Vk>dv1Pg_+B7Awsn8}m#f7Xh4anK22DQUnquIgsa8eDVh%UMrJ1PqQVDr@D59x_9>wf3<@?{d|n^5v`#dq?LTN2s77N~-g4 zQ3)S-n>X`~n)iN$B+-xN6c>r=j^tgN9pShbo6|+SJ$Y^X06fLV29wvl+tc;zuo}bW z(_-Xg6~gHBnYrBvdRP2>wf}`b_Fp&~4-dp;YjwGd>`TD#zSuD7GOiix+SNe@i7IluUG93_8c9l4DZ!ow@_$@|Vp#ooUd*tSX# zfWBw+Q)N%=cS;Qx=l`8jV_hx!f2Y*+{4^~rXXPHtXf{#VB0CmE|1{ck7=x0ngOmLZ zYbF`=P)SqS1=Q;0nek$-;FR*4sn-kJGlq^){Ex*Se3<9lAAWFSsv0~B^s3~Md_fk4 zM&?!yfI7uu^P8YB64hp^K;S-_rb4k_!nQwTuIf74zGVcpczHGl-TUaiE6;S#da^bV zzipW=LE%6h&%86vN%!FP?Hb)!(LH1K#D^Nr0id??t7iSlgH79fEqb}_j+-Xwk3TLALVL!CWpT)I(87|rS}J+L zw702eStW&Ki{lDD-v!_Ybvk0a%;F&jNING*t|>QMCw%W7)E30t4m6@qUTGypU3xTM zz1;@SdW;^ZvW!C?$i{XOamhlTPCxDPfp8KD1*D=s2vRw7-Lm`#K_7Gw#PKx}GeG_> zKF>;|L~V5!g{s+8-IeU>X)#k}*LLA{{jkGi_i}!uxIBT+pz#?X5F8Y0c7Jkr|^cW4#z#;Bl*;=qNA0YginR4vu_$1Aor@ZiuxFDz} z5Q-E9Dj=FIFR#Gs)l6a~zoy?^XPuRkiMGP4pm5e_r$143J_Vz1s?8Ki9M4R4PhG?C z+YH@uc(LwZ3BJOojRMvoM00_Ue~TNf7}d}rwvjl=Ns~g?-OxS5Vx+2ij9x2Uns zHlIdmUGVWTmIz!%k4@rp9%I%a)EHxf=fXNx1fYArAFJ*sE38RHAY4`LSVp(|p~s+z zQzo+^v3Ec@6Gzp9F=TV;gMTXUCZzl!zQ!k#%px=4x2K@4-P7Z;PT(ZXeJc>WLJW`eho0#O)kAwXWNbYoTCPwy1nh<7Cud!VpdzKD zi5k|1`cNd1oV$G8;oi(4yMo;jA58&DEf&X8X|QzbU~hvk1c9f$Wiv1f zfWZl{s-l}`tskKj!jpAp!D=G5meMAz`baj)CanHq1m$AV!9n-2)Kas_6y;idTt2(H z0AkRYVDizib>1)Dh*;)Z#$!#kjvtl+{mnwOYvt%nlxq>%fHxM)>uO`GsXs}>0+e8c zNvF>Pp~sSMA)A7s z5wFn~QXb2Qu4Z1gZ=O?Zlrs6=asz*PJ2uO7#v`_J5z2Hr&HE^*gzi=wqR{GzYMC7; zl&A;1T$ub4Kab)H1t@mVOHsiC5F6;PAyDHKr1qbEyfM{~FRcL`hsen%yVk*@)Q>2@ zDHCLvdBM0w<9po~^WMPBz+8hD{y0E5zp{7OJx@8&-LiW{4x7UBd7n#MTJl&%>kTj0 zb7^clRmz4)(&fm#XXmT2f-#b46vBOukspr4K}wJGIc)_I&bjHxU)ETvS;Ljlfv zLJ5!WiX`!FAc}7TKv)5T&ifPe7R-BPKDlQB#VUBSHhz|$6_UI>LRW^Y`x^%>~-1mW&JU^@PoSfsW1CuWO=~A zP~Vh%X0z6@qaX51Zlb@M&uWKccbUOrTk#22iGuvmct>GzgaxO-ec|`OCt@#FvcZ7o zqooLgj-@-xh3lJ0yDVEKvZDlhZhf?0Hk&0Q@A*;}*IspnCa8KvV!|@|9ZgEvMOcr4 znHgQTg8|$g1cpFjvftA|NwBId%@kv=N|FbCKprehyxrHYL_J2d$hAh<@}qXvE)!11 zFjTp1{)0r@f*emGub9K_SW3icT0+PDZc6p`P_WM>oNg&V-Ic;F?beYCw=x35+v@%M(IJM z{}`tB`N@^!b=JG&NaTf|QYH9yFUhUztf=;hjp3C$gPi_JM(3p!AXTs4!c=a*4tDGJ zC>i)TZ8bvQtfE`r;^_XVg(*x!41J1Vr6gLDyCIoR&8a4;!qw7{%^bU^67?AVyFMOX zJ=qenf&Y#0W9~C}fp;%CfxFxpnW7H6j|OL2vfMiA*L%d)}& z&f!g4zFrnL=pG0oe`e%J=Ac+&ITT75^g!4iex9B}MA!s)>3dhKRhuj()ia7aG%xq} zUS%+#hWvzujR(1hW=olV@y8Gj50MDhA)ZH6fuMQ2qml~0 zI@1d$5t#=O|Ga7BXB;gEydV`q&4p3=b%Iu!*DVyf#Vx<4xw=X~!aB`P6c5+C6R>f3 z&VDBYHEy6Ey?K6WnPe0;U$)<2xNZ)!P8o|i_|kUwbES|5G2Poe>yV6#sA*9T zYdun3^kymGgu7Bg%Na=vvXT(D@||ZL2ypJpXLaDv&TG^6O$Uxnd5{*!^@m&)EWeOq zNq-^(r}_}$#?l6G9D=C)9ysTrvNlsZuG(K@i7BNkBNSCzOu!FED8NqW5(`NP8RIYc zt>EVr`lj+!qGVaUby3c^nLGYocwIrRkM2-7gc|ToT~Ef&=^&Xx)`MyLRSM0k>afkB zXyeo!DorculFnf-mJqAQ9{R=67J(JQsX&(bs|lCeS8JH&IQAo3S^CPhJoJK9Q_gHG zb2=oI5t0<+R7V#ttc5r*RBKF&q~4@BY-Iaq5R!Q@>Ge3rNXcVY{X~PYLHD!OHpfqr zU%~UP4@U8_S1oYhK18M(8|^&WP)uKvtb1g2UtZc1Z3x-Y_$2Q@c)wLa?9@a^N4FZ_*z=ovsmi8NQB`j2Ds;WoK{qQ zUC|C|0K7&_zka$=9ly6|DC;#G&qfZheA2~#`jL|<%O$XP_-g{-^Ln$Flbv1k9CN<- z$>EOWab&Uoc=F);UFI#md#1i#RQ=JNo-!9NxB3a0$oR?0c4n($8IR`{)k`S=aByfj zwA%aB$P8I_VB3G+oXdEc%lN22vS?P$&>V$sYdF}gsIO}a@*_6cBt98q zx?a&TZd62vm;suJ!3)s{2f5)JcW`}XOT7~Hh+vX99h8}0J$^^M)S{lQ!I**KnubzJ zf<}rj@y~ii7nVQ~{ai)@`!J6A8s_0B zZ;HG+MN1WqvwJnnVhr~WLbmjM{n=7>0ht4zdWdeyCvg=x*-sf~lBtuR$SqhX1p=t7 zyO3e+*&D1dZc=i@{?|LoF@T5+GxtUb;0&va&Dgex`>q?C4`dTMnEe`*M(_K-Q9QY0 z?XZ_InV37ku(QU2<%ZsF^`$uHzti)X+*h-~w`oNVYB;lu%PQX`)>s@3r^&tscD zZBA~_?uQkJjk>88ZgJ2G`Gj)v{e$?+9Z zrdJxINvh#tSW_4CFG}30XzPDS$H4YRD#@u>B9s)>Jf9P{>J7dX>E{~wm2wp)6gd6v zBgzs<)4|&MIw}{9hnA(YClxv}WQS-wDNr_MkF#Htyzy48DX7YT1EA|f;BBMw{D*?< zUX|CKi>NAW>N}bl1p4VW_FRjR5*-RweYNgc6-TIWZo9V`MlU>fWWo-y?mkG}yOWrH z+A(_tm(oU8p>GlcQK_W`jh%*33HQ_ET{P3;;@VTw817g9g`6@=J4QqUo#D`Fu4L9k zl027w?T{`%&=kMN+f@wzh4*+JBcw22zI;YM${2vFSu+pPO+eUfOJCjHvE1GwGpD2{ zTk&z2SDU7a4vXSJIai+4n`>UA7$e3@!l|7;OtBzU=9@M)%`P-&v>SF9Gh7-=*qQi; zryuJD@lFzILGgy>?hA&s+HW2PJ@ipHRlxzy9l>usf!N>i$r>OZSzlK-yD(KVrLLV9 zxiPg@1C>p%j#UA)m0iw-)jVwQk~I-C6FwQTw}kJaErjcSe363P)&Nv-R!qxOuV5Wg zfyr|ENZg)gZL~Rsy>n9trJS}WTiF(AIe^@NPZ?c6@9sueFL^%l+2|^opYn2_m~7|s ze06c>Pe>XJd2zJFdYE}dJd`?DJ~_hDh`u;|M#=Hw*<^KAAoL{iDf`5C!LvuoC6 zZUt^dQjp{9ltmv;hlq;z4YEuwU-+J_F`#Eg!V8E7B4qJ88&9Fue%4I1G!Vjvph+s6 zXk9JTq;x!*ZbT@bEwp0>PQ1gqeArNbTF6HmXt=!Gd|higW#sWFZuwGim%+$1O`$I4 zQzOuZcc@$Ee9KxOKN!~(D_I-sgS}dvkAVExzl1wJE?>j1DN+DWwawLPPiEn7bLRC5ZvBP+JnQWpw)OjJNrJRPH8nadUZCN3W1#&+) zYmA3wF9XXCe(4i;771;QNyTOXn*h1No}2;jJSrWU!|N+0sEP}F+zlP zVJ~^H%wyb4S|7Q}JtuJ_kZ;nJHv4Kxk4A$|NG=1#(o7$DQ&b)7M3Pa}q${ODh1m|n zPnu#e-@u_w8B7Uv+zTVjy zW3vd5U0WgOCgx32=aCg>-Pu!#&TD2zJrALam2-zZD}@&hzuQx-)(I_8Sn1^I=J&nc zeKcIJZiNzR5u_l)9H!Y(6E_W3V++flq}hDC+uJekAJ}b>K70LbxYh>7fh$>j!an9#f_P%O-5ne zqE+GQkiH_%=_yDpkkzt4nJ}btdZ>cXJ!^y4@Ae@cM|jANZg%159@dJK1jbBzhGAiP7gJ>(hY9h?_r7w6!@*g{He z)O-s2>iOE(P1%Qzp6&YzA_G2fpN&R~#3D=nhZ%CbuJr4=VeH2bBzta7^toUCRR_QZ z+@M#ZkKB+$v^8K~Zv{Ml&&^EV8|C+Kk?iKZacnj&a2Z{N$eu;sbk@s?J2yYAdw#O>B9D`0)}mSKwm_^8^h|dv$?>GjWE!_=h8< zUZv?8Shq_PTlJD26jGC(+7iAg!(C3i>~Cc#I`DT4Rj*#TgT(~{r)S1U7NULvSjKUV zk`f>vxWx(&{Zy`^Tr_gQI|OD}Mz)=^x8TXY=`>b}{W(Yc{9w z7U*W&E=s5$t2=6aj&M9Mgzpk4A+4$X&nyOH21={pdlm?@p*Mn5G#p&=h3}frzq*9) z|7v#w;R3sZeR5|12oX;GMAPe+m);Wve9aVvHB{ZZ>KATNM$O@JL^H^@*90gq#@bOL zArN8^luQpjVfI;PGHPwAO8aKR+f&Oqr3in-9=J!{7sa?>`{@?qN+?DUtk3XYAqz>^ zWkqYR3^vb2mw(;$8c9wgU{50`q(dZ{5`)HqNP&>sZ<0?o_T@B+{lbR0*~8vv`UQ7O zbjoVwqRIV<&`i-`LU|XZFKS4JC%Ezb#8mZ(`SZ=@9HnlQ#LFG+(35gtl>}e++=mL}!dfpk=(j~!%Y@`@5l*lAKb*Z)KvnG;HA=JS zZlsY8>F!3lk?!v92I=mUZs`UE3F$_C9>Fd>7_Eq%$LmQUW(^EPdcm z5;03g5tULQs2we#eI?}ZqFmI~SW2&TUB59hO+F@Hs)DsLm2^-`jlrOp9P}P@I*en| zUxnuk%@B;Be^M+joK*5j0B(c?Xa7eyk$gNOL2#m2@Dh>Pqgf#8mY9kPJiSz^43w+fuZ-j$Cj&8G1_?#X+ow@XGMaYL zaFy;XXPmPhCkDEn7Fi^h!qk0QtGP#&43pLyJ{9=V4Xb)Wm6npJPG{$}b|&T&Y3z;l zEh*xyW~HOetztHP(Y0E1XDwYwV3dSUNMxmAcIMZx!R#&b#lhb%`Xs~tTRi2C;$`)z zk1r=$eAiuEGQw(-#Q4H|1Z&bq-fR8I8B=DNl8aEMZlmXJ`gub(&4XNqMuZG+mFvNG z+3_Ihis6#Mi}$%p4vX2K)H)S4V|8S{g&#kA4EJos9VvDxA&&dB*y^fAmSJNIGJ2*c zESzA5S5roDF&mTiDk$k^{o%tat>48nWLS_?zu?UWddJBi1hU!Un zs8l6>f`qxqHiGhe`XFYR&EU+4Q*|DGlJuA0xBzwQV0kfGue+EeCetR4b^qEIa@teJUZkjnwt6mQ<@yxrI+{{ zY7eXe_hm+05w~$oXNqS>B1a5;(*x&XQohJ=n6kUV~?_7kLHEQ!D-!@yVmMx=+#2*8GbUr7HH zX0?S$f`C)z?sMqMu(H!r;LFD_&dLWIiIRn>$RyEyLOQ%@E$md!m+1dfK12PJYfZx<>WOk?=FqsgtTx7By zS_2i{a&e+N@>noosNixa000C87#OI(-@*|7_yhng zAG08c1zFzq6$}8ZZV;+;FG1hr%~S8^RSuueZZxn)ni=n+3mHQ69~Pcerttqr4MzkX z3pxN|1i}QOVVO;p@1Z6C@SAWdKBf!-UFcewLP3K0w#ZLNfH)Uf9zf|-4+-s(&Ur#C zSekHT2tPaO@BNKWkMJwfuU!F4crBUtNrx+)C$qCzxZngADXjyN@H9u?B>$cZr$|;P z7g*lYIMQj!J$=-qW>8)~0s*94=yAt-{~FuhN!cxe4NAyDA@UT0639oxP{@A{0wizq z^0{6@U;yoa3{-MRK!At{8TsuLa%rl`chViZH9-Wy=gOkSCaaS}y`5L!-^nGt0zD@1 z&SuyKMeyf)CqO6-IS#!Ceg%3D;_b&Le)vdLrgn<$zXIyd6(*3Gt3~qXp9Ef&=!u6Z zsD}c*9QspWc!qRqYH35%8iyCg7DQ3xAyOiq2(my2ON>(zL1_f&hh==b?hxo;u)Hf6^~UM* zE(p0tT9P+Th&MC_Pf%$qk66keh;b7h5)Q~Zbokcj}u z5CAZUclxsO+*g5-xw4ZnKU~go3CEH4ps&F1IYF`HvvHSImEqF_vqVU47-9hu5M*Ge zpr8Fj`VWyU;(~REgi8`=jj#g@^@zVBs{?2uFu4dYJ$@f%;J_azd&HtnOCHqV5)jEF zl|WB}AAtVG*Oot`c^n>sJWlqH#hw<0s#RwCyOUtx{{GQyA4+~P8}34)=@Ma;B%uEQ zS{M8S1O#)5o|XqC44aVb$ED|W=rj8+o#0qTcL0*pQgddd;YfkM5J|K zPXM8Es9+kw>8%47GX%B-0$ydau$!qa8P5NeaK*Rt$-pvaW$o^a1p<%gVuS zq|z$R(s+jd_x3c)YR9Pb-^Dl5hjG*C-*9b*rSU@ zQd{F&-0MGc+G8@kkH%OKk%EZyV$;plC_jL3H2%?nEt+Wp8V@5YwQ zODBp9DM{9FLxtg@1>VzH5b!>u+m2a`{NtV<^b%ayL^c5DGT?{ym>muT57~R<@Ar{q z{W-lOO!=Dm@Nq)!_7cmzUb>!a^>L<^;RZAbj9)j-uvwvb=CW*IMG!Vw2$qv|Q*YWI zFCVQLyr^hjJ`VBk=&5?NKdMb$j6Dg)SAwZ2KvrD~ggNOz7wab1Lg%sEuMIGjlhdu_ zXOQg2SJ7wBUl}p0Ypd?5G`G?{v}0DiDFJF1)YW_Ny~^cFSl#PRlC5>04g1LH-wjvT z-A%PmVGe%uP}UGj`>L#X@+&KS66?hc*{pi=a5!o;IKw`ctFko%s056NYfs_zE|Im0 z49k@RAKqEEPgO0(&KF%quGF7O8lw(A?dx!(NChiLa+&Feo4cOEtv=;g1{Vu2fc zZw&k?_3_-j8)0}&c?h3HAsNaS`&{qmWDhjoNBgA=V6q3b%au{SgLKTxi$9(51@a#v z9zy{P$ics|@`9;ZzbUG7UcTYhk{gplZwFE#=W`sWIT)c^#XiZ4&72<-dFgiXxmgz6 zBfjy-1em3o)PiL|a+z8JqrgL|fEqWR+O@p~u@o_@rWL<;b9E|ulN#08zx>;baF2>L zj2%WZtQKSyn3^0w&0MLUIz{og`Rllj+tn)IDiBC>hxX=2*QJ8}p}ZB&_I?(|vlS|u z0OIgW;v0KY0AqnbH6XMvMab+;B7o_H(CuDrIXWdPYwvy*0J~au;`v$SI#NNEiZKjp z!pmqfGwi4Fy+TiwktP*`Z-UDqDIB+)U=za{nkfzdI{;xsfNi8GL`Q@c3j_QB##Cct z4#SY7XYj6RPb;b4o*p~vCh{42{)?Zgz+s*s%@itd0ybnlm?mhY_%4pOot(V0AEd}j zV7pu_iNyK1gaRz^SCj$(P>uNFw^!?#z)mHzY63dpvXm}y3mhD)iiDtwAV^E_6&9!! zfT_xjS4tw;vOf66*2Bm{P!eEMG6fi1g8UII!e)+CECYh%6Nj!3T^lz#uHq75C?OLG za1$K@P_z9M1*me-lHQ>Emc?mQ~*>VXaX?g2K`HMJs1ngEjosW zv*tFfEXm_ywm$yV3IJrLZ%V-N|C z8iy(73s3{?>Et)cgjd&L9p;c`tgjQCkwhi)hYzKwqOl1dhic`AE1P=mwcjg`7mqU; zr@r28?{Q&-3L}*%^M8>^Sr(Ff@BV>hqXqegGeHx?3AL{%!Kj(iJ`7D1J*hTgFe9@X zV=BU!2Shy{mSjh2DJf27M*4V!Me;2ridSte_FmqZr*9Lsrjf5p*=cJR-Eeh|E`8Ow z-7fz{NS_hH*w%R>XEGw5HWSVyoSod|c>Dm(GAmK{BwF9d|e#vOELkFJI2y|gFT3*9P63dQq=?{;J;8l^K?_ofy zj{OheuazNRmb=QI$>?kjdH$PBfvcw*J`tSS5SF-!skNg`H9S~YU?FW4h1BeITtrQ3 zaI@K@(3W(p-7sF}(%1ZYux{77754MJPpcIsH1js4Z@Oz)_n45!uzFFVgW)VAsnfot zFOM0ZT(moHvHn0OUI8BqSAa!j)D2m|a`!YlMCv$IOWIr{i^kNPa_89bm5U)!aPM*z zr{){=^jiHXwVmhHFmpT{D_s@&KDoA#;pyDzE^+Go0-(uNsF%JiB$+ICr;DVu@pIVo z(;df?AmS|h`9nbtpBvIgbNT{fq*WpBE~<{%ZJ$qzj)xB?9V^nA7xESyjt2rQ>zX!h zhOF;4f4(khV}ykrEtEzNG9fA+%2(Q_=1pSG_4?B#L{;u)1^9XNGtLso>* zPd=KDTs(~S>2)>Min02lw_I@XMzI{DxHCJ8xF$r6uE2YyTe1|F?h6*4QSH3u8 zqPHB1UYpO|3Q9Aa-HotvgEJ0c5>AT|Pm5!4njEYM1H3 zyT{VBnIUs0vX&)E+_y|SnlIcpr?uJ!6av|h-yHdCBq#(37zn7}x6groRsgVc)W+TJ zRZmbzh$T53bchdU*dXX2upp3b@ag^mmay}!{kfe41J@EDpw9{KLB;5R&%wx~NCoYb zWL;0U>|}<-+He}jbaPUM&;67SEG1Di$~ye%(T{}* z*2q!0@e`pvC=bJoZvOCrKnkZ2zG?z(ii!;jPWfC!j zxXZs>SW{WiES5C`LtLmrDm~UJi90vf*JicAlt|Ml(T^=pXO!)tA0JzNdz0DEu%pV^ zgzj2t;zX4W7eE5iKYV`?&`E;cz>@h7nwoV-I`?9{Ktu_g$Kr}!bhnA*r{hG<0P<&D#9bk zUF<`Ys?wR4@0#T!%>~9;E`hEaD|=k_i#$tQh~iJ{1!+311kVMf-@;VYWS9qW8Pa`N zJ$czV+<0S=_wJNXCkIFgnzw&W+N$GXgWP9r*$SRxH%`Txg;^& zLn3A$Spnpv!&x1sl=G&>&|&bE#77NTd9^i!#quiUVn!jgT$<2An!ze!noWH+?Edj2 zwArMT)9#$pL#eAB_sQ(40aG9qH#y=&9y30B0DHPGrLB=-=hp1r9jXtUM~#apNA(mq>_@VP3-%wJ5D7zMS=v zXlH2aKo?3}X#NCkuxN9_eMMoCB)?(+*F*C%xSkMQ*UdLeREa%&G<2@w){Y>wy&0`| zB{X=cj$_z_larT1Px6K7r8}IK$pVjFc=U9qV&HQI>srSp0Z}7=syU`FeOLvXsMJ-- z3d@|;GUs<8IrTKTM!GX~njEW^@|94uWVN_8yn=+9#;KpFF^LxSD=?YrR}|{Qkvpk zV?D!lLuj{wte!(6j15@_pR^N>8%d}d5R+7kX@3d#`8}q;CAU#`uCj`-_kCMKr^-$f zXX3U}9lsG$jTpGM;7X zbm}puu|F*bEDmdLIsU_dP1AAFgwGr?RquOlu>wO>kr;j~0=Ps7u}~7=1-!VE=}b|2 zC&3OTUC(ufO*4G4032Cu5far7R`CC#5h!`inyoImvGMMkdXeYJgNVJ$5|G6dmavea z0N_EO-5~nniF`Bf?}=>7683s3r0v)pPTJ3%?Ji~mvd9h3w95E5!5Onkg2!@^AC{(*mKhs zybGz{Tt-D^^5c>e_(%f&50?mJh4#QL-jYp{SL-Dj2>)_I$DF<{?Vm#rsElWCKroEU zT!#fEzz@ivC8NE}?2tJC_z;L-(7Y><^~QU0k1?9LP%Af0tFDU;s1yE0sx#UMsr_Q z=yS~mxU`!C z$4xjys7g9E9&w+jWm=h!})Ge3BfMZxnDRG%Yj5Zmoi z@*nO?3`t)4@sioWkLxFYh{1QPTj)pdXHXysCYyUdW! zT6d;Rw}D!@^cyh+5SFX{{ND)Ikj|iQ9ouF9<+*&t-pf-Ehr#^Ia)Aa!k3&zxK0OBT z0EsT7etNzCCAyH86_t;$$RM3jKa&{>kPxB#y-nX$3zx`XzEYnW5>$UlE-*O%;OIGC z6}t6+BNxamY!94nRt_)m=)RHoU5@<>0YjPPofkew05`DZ zL(=Pdcb|wK_sO^^H%K{8HUJgvmpXhdggh7}Xd;MIKN^|kPu`&ETv!qDMvx_r%6=4>a>gBJIG1vnV&C~`HmqbuTTlLh`cZ)bzA9q4m`zegVEtllqV8D$hiHZ z$`@56+KBLa!To+Jy3$PXw6R{TJngu-XCPL#6b7UyqI{t$bm`$P-^Y>bdtz{BwkO3= z_*j=NIkLHng?<^Kl&xEWF!$le)u(2Z1z1&?l>f-r3P+rTZ1OXAWW3{KFLMniE|Tuo z5WgzYoQ=PG68Qaz&C17j)5}Krb?m~c2wnobxdigQdh%T#@Y_9MI5>!gw6n50L$tE%wjwIs5l2aFkI4C;ILeTUBqiI- zW8&R85Yi-X0#w-V+!Ar9gefYA113q8cBu7LFLZ{F0l{~szE|fX#T*1WMsqgzJpMpw zop`dJbTX_hr(S}F7*V$%jtv$k2wn(kP6AKcR|Cnqxgu0i>?pf@^{L~Ozz$WXH=n&q zt>}D9PT^XcXMP_xcNIB^-&~PVEC5{q7HAgj{+tkCB>@|**ojC9zYOSn}VxyROf8taT}kwWYJo7M>T~*0@BSfIA|v0eS{-b7J`n-9>!9 zRmN0#<^8N=69b4T)Nb3bJacH1>AG+V*v1-k3#~sMf^mnA*WjmFfcGqP}{t}lAczK$9ix;{KK z&DE?k0SeZI$s+r~0S|DW65!LV^PRSlzOWFeC9a>YZjBHfarHiklfGQrPLcg|Ro3)q zt)AIu-Hz6=7%KJEUR3df>TR~aZoP(|fuZQVW(AJxrE54}F6Fd;ii()A=9Xh9<%O9F z!nK}H=O!7B@_8Csi`h}OdJK(v`Fc*s_UyUU=i9cd9>Tp=aMx(wjjE4sYifuyk~%S{ z?QDuSq-?FHIFVSMQCc4e6DQ($=q8}F&9du{@G;xQ@f1BjOg>(*x1M~k%GI1AH$SR+ zn4CgN%I0!rs|vKS-Ezo`N2l<(Dxz7ko&+e?c3#5OrBjUzRI&NoU7;obvFHg4d+L(D zn)Nr%rat@A^!z$1;qxQ;Xm@tq%sL7w!XO3?5Fq))C-YXS;S+{ zvi85C9rUAP#Wti%I)zWfbb)Lwl5jT1uYa&9V#AkjGe(LngU5&T*2|@ob`g(-vJUZI z&rtpY%5SM*kI+3ji9P_KX+HU&4A?6yeHCMO&A<&;%cyuA11*Y)g5ZG<{#X_Dj{k!c zO9Bc*4e_s#4FsQuu!HP*?@p6}GtH)fm<>K-Jm9bV3D^U83$%$7zG9*;F=XmwQ2#>H zP3LFynR3@ifdP;MGBBzL+|U1>H7=o3IlQC5r5xGXn27-&s6Qes;n%VAR^M)*Z;=zO z<$=~L06&*LK9&p>D8IgfPyr#LJkl$$hEM_Y7J)1gq7W9df5c+2ccsjGU9Qr65}*fU zcK|71z~NsJmi|8?tT_u%eFfhFy#N8iQSpqsgvHF|9X=(aN2ho{7Kfbw;Lu1Me&8{M ze9QqJQ_`;s^nbPGex2W@yKjB!+CPYT0WO^&P@sW+f?X|Atl{CFJc0{D)=AN~as`AupCee&~(UWH7g5NX1|5LT3@ zh#QdN2=Wv8i$k4$Am(9eNC4H=2wJ05P$2sJCiJGb?zt@si+23TVo1i4076Yj^AKZ$ zH?i~;EprLQ$V&rbg?T`nOs)m?s)zo?$yTztYF(Xa`r|h1(DMRWL4@=Ql(_#tL1=L< zSseAWq`V^RzYr9pa1$oJVUr+U0^xw{w|Y2gIPf9;M*`+t`Sr_-zh;>U`67^OKp&g$tnx=lNMQOa zBqW&s6%u@rd+QnT1QUJVRrXO%;^+H#0P=wnLjOj>klneL&%xEG_W=1sq9xFbGteGg z4V*`@!JymwZ0G(pbpE%qFOwzTV1;U8T71;N*zR8mK?CLh5LNr&l5b=Qtj)k(3S|5N z>st7ah7ce%h^t;n!_FIdP(iBJw!Y*g@4g4IXmIFaZ4 z3{O${NH=&&jW3IJY8fx{=rm7@Xfmkq%yO!%59+`xhG3{_rr&}$wvl~Iozcamq)vy1 zxKO0xnh?3sEDt);%o>?Ouhw|wIwoAGYBNfI=u~FGxI^dk$IkgzLU{06g^}LQTT*c2 zX5Nmc$^T3zsn%=gt@7&WbdvgBZ^X$=|K{oZffgE6?s6OYM`E2JfcMo0Y?^AbHWm!;Wz3lV_XMrL$2BkG=%^7wMIcOTO780&7hUTFS7nhb6ltY- zyYk_iH}xT_niSjE95?3Ksi|SkR&9Q@c7J=usL3Y~-O6szifG23jByn~QEc!Kc_%p> zjXuWx#3v5H_JbvK6^L52$?S;&AMUE>dW6(^lM)fFm` zQ!l{4fY85THY7Jxo(o>KL>lWk5uz$@=9)l%`j4ZN0|XxgF&Y{X8R#bEScAX23u_aG zA`ToFv&H1v)hd0ryL-yL_DleJlMn(XN%@XLlmKbwH2tl`9X? zM0Y~LjfJzD9M7$XWC6hiLGXhzIy>bH>{3Yc<7K#g(Z6!^hfuREUJpZDF(C|KI41V@ zdT$=%xMH=KM47>%U4r3!SNZLQmr71thIuG)rx5GVCTJLrMX{7BPmGqJ_;S-7($*&J z&AX0cUvGewFu06$`v}*EJaRR7FiMjbH2IDF^9Nd!IK+fh>SJ+P3)BRO?L|LET#C=O zv%2u{&8~9s&0v^v=#^Jo!q~fa;r`kj} z(8BJhX*R34T;f@YVJIsDfh9&=wn*hE!`YxYsrWqQGNfbM*3M)sMKx!L{y|xBs5iNs zCZ2Prp>i)oIU_vBRobj}*BT zW^As|J4|`Csx@<7Of{_UP(nHM?4xv17~RZ#Az5{8M3VmyN-!r4tE zXsjad3_Ly--4i%+)4s9VMaDwkvxPo!)%>dUZS>QX{x9Ei#EsVI<^_VW-XtL{c1$%= z&Kp+d?6uE!yC$8x(kLD*u?mzz{Nc;W#@6--uR@W1(wk5eQLmgW;k0q5C7w+fvXGKo z`^yx0uF3;5mk5tq;u8UgDIe{WjR{R^tZKtHDA7q-qH{m^8a$0*GC&euB~oI!3fhlJ zFs(q0BPzD)a zlmRuQseVB!;V+I2eX?#!qdu~3th{qWUta+uz&f{jQz<@D&C}WVm-EhH9&=PYk!bmf z;xz1`1E=smNtfyDn}V0?jlt8O(yvjMES~>FUC04cd?#(s{I`e9C-6hvc|QarxiO!9 zACjN)Y1|s1KmMjqIGOLx8%L_%=z0w-`ndS$Jg&A~FO!RpC1zMxEbaPmMg%FNtaV&- zEG-`s3f1(cxK}f4o79Vo%CQ^P)XwW*fGs4;=+Hno;n>_}(yYfcwO)z9Ez$&~axB*F zI!&GG47+~q8e&>Le}9b*GR5kbCkCzu!U%#50uNHe4dPgWQ=O<#xbv8gSKR5do!G+e z%ZcNxYY~~@bwzS4f_0U?%@}Bemi)+Q6h2y2fDol0x|8fjo)Ou>yRpCYSh!a1u(0aL`^q1Az|!SY9s5f~+sYFcRUv z1BH&ss4CSGTTjNfe8;*saG!eWbC+t%K6$=0?6FM!O;pi` zWUAmBRQ;s2Z7!=Zh&pITi1@Bp;ifeq1sUmT`&pnlaVRl$U zO63xl1uF!m9QPy-`U1*5uw8J4=v0{eGz*hAH(X*pEL7o!P*#Ln1&ISq2&EgxT>ZCz zxsR>I*PJrwDo;uJL{fyjB;|_bTIgZL<7bvKPl?Z)aQQ>4D<<=Sx>)$tk0V_xjja@r zrzk(uWh_IQ63QJ4lNB2s(GsQ#rzAyYmS4{@N9?o&dw>dsquKIO9Nj{(jr)MV^~Ljl@f1Dx3I zLaCbXS0{GeI!rMQ!P{LiY9R#H?#waY?aGJ2TQ7l*M|TomboUL(Wr5)_g{N<;qo1BK z?GFm3o#Svm{S%%4#$Xy0TFAtDzWvy-;`_mJRLkAK0EKxKna;>SgVq>ZT>nQ&o$#z8 z|1dwr=MNw3n|muWZXk%qQn&^fkxlqN1)pW32B5YCD(Z4>T=ob&&Z}S7qYI*w#Z9ji zEB~?|u_1nSzkPe;HS7d>$=go6l%~&Nm&sh~+AnbaB_k$yN&{m2t~)41G`z(@x^_ zeX<#AuJ*KX0tY6+zdhMDS2shRyl&%dbe42`!!1Fd5TcyG6~S+7QkvAqFVzP=B*I!3 zG*&P-%Pm`l!Sye76Q`TE71fxC9*8ji!isN$Nt(wwDtGy-gWu1U~0 zYZ@>uzVj2sWNIdzN7t*KSTEWZdi}u)eWs#y2~)Sz{nZKzI zMrUT2iH1-(l}6gr3V|sO4epQW%VLo7U(;6%A`>BPcsU~D(i0R+5|L=^MqV6Au{tm0 ze}&3HHfIMSASl7mkr2=!RaZdJLBrpCTIcfJW46F4nLy7K0WJ-7AJB*;`jtc-rQ+9o z{KvynXVsN5Q&Eq6g~-y-Iy~35{70XSHQTrkFuR>NS`@NfUES{3lS(`N|UVG7_;SQog0h zUn#?E`9Sx9zPPbB|F5O5FJH>yjM5Dq7-@gaveP&yMQJc_HoSwjpn+8O6&@gbb?UL0u%Z+D zzPj{)pF{_`NH~+Qe{u$ z>}T^sK%_tm{U!|r01H!6pCY)*=!B{Cg`j!XbOa)=MFvu_$WA;$hKSaPKllS?Llt?S zX>F48rg4ok%P1KTOWRUUEyqIGE|xrF{`geCmcS3_tK;=Iw5ouGpo~SKdz1xg${?~ zipst2#r3upH9bVN=4R!I2cqp>W=bL-zAv&@Yxa6?rGWq!q8mHit4Pw1{ugKi%%CTvV-U?q zOVxeey{uE2xaEb(K^cv9x_FgTq|4vErAjcRBn_HJc#q4pm*&D1zOz^cJ#XHe$of$1Z zg;9Siq`(cdCjGDFgQ{F=#^}R1n=6wgfuN!O9jjSd69RZs8^9#wU?fDR+`5b{ zMIUy{c%mJ@|B6FuC`6xWl2CxG2~bChP_HZs_fr?FAW}u93Hu!smc)v1BW;ODz5rZ0 zp3%}uU&|));>w8e|1Fz1tE7*kZkooQmU>+~T1vmEtR48Tm!Y7Rf&e$Efh&lIB3x-Y zmum22{mjyIvfI^f?hEPB{Hu)(TYew+I9|djtmE?%4>6e-xQR${@u{`OKKR{^up@uM zY34o;)wcOz`X%k?uT;xO{9dB|5>on9@_JpAYubqjC7WjjzV3XPIu9KRU!~G9x?X6X zBsF=4?|{>07&L!cNG3lR$@0b0NkkZ3@Z zBI|-PD?@tMq1Wf#&>a4>9yNkywH_4 zZ^5qS?xwW*bB6Ld-ynt!*5?r9wPL_lM@XxQs4CndjOGW%1}u`mE-y%%v^-`2b(`!; zKX4qP*Xg}$uU#a+9NSrK*L6>fiYZ=imt0oVYCv{(ekTI&3@(B59@Q1P$AUZWvezX^ z<3)`tgE3Ws6`Z08P650k6jflNzD4twM?y8DejL>{td9`XO+=~jW)RfGsmLDzJ5;bH zQ{+y=^AWrZd7gYn{GQhqvrTPcfrv@;(7Vw6ZctZzXV127>YI}caFxqv$D*W z>65N=06sRt=B`S4_)>6%!IMJfF{0*aNk>EhIi8c6Klq#S8dQlU0Ge=>!LuaKE!58~ z6mh};CpeN~N^t->33OcGfWAsR%3wHAcw{<=lJjwtoLF-r@6m5*%iV)ly?t{L+_xRFpfFt$$V!d$yN&j4lCxo zaIC@rr4hR5hS~t7t}Ulj1gouUj@A|4M)oIpO&N|r;Nj)f%WHmAKWsAmFic=Evxr%M zSu<)-sYDrch+CCuj5qZS8ekfS--9DMsPj6~*L=z&Q+8CLR1O zC?ar^S0CmJJl_pJ7UU@D5;3JBZg8i7NrYWf_M?$Xf zU%Qx2)5yVTBu?mDuTA45 zM}`GJ@@PX^;b)KqjQ7E+r(kpc3~9p_E@1QEwYKU=u0T>dz%-h`wIqs&6&)ZkLaDv=qs9H+ zo6lR?mcw{|R>-G=gFuXmCPqn`h%yK;_F^0;!Pao>ZVr8%@{7+oh1;ZH_L(bUM4g=q zU`6X&Ki(?ik(KgZ_Bz~O)p1NUnKJu+w$v=R3H?;h-{Sp3j)%S*U7T-)?U}PwsaVZ2 z_yF#D6KGf3GrGXA>L%it&ygof9;Pyz?0LF8qU#gcLD_i@1@!OzS5$~(5(cJYwYoas zz{ls9+x#8v^2nS6M*dOY)be>tT)4b&6yxrtF4YpsF8IOr7}{O_0NPASYEJ&We^*x1 zJ?G{$p_~?0n&iemQK1%>Q?2sG`s( z)mIkP&|pJ3{*$OWvO_m#g8mwT9bvAh@)$DJ9=#Uwpg-m+k{MlDw-v3YW;hWnzPI_Q z67^9)qIV&)uA*SV@+8jx6^Ruyzag>xVceuH)XFTtbt4!Mh}P zooKp~^zE45jix1>FBhf-YLD)HSvYirX*X#rz-lpH3~&dBm;8BCWoNvrFGz?}wVFg5 zyscELbfxH&-Ake{w?sag;<6?KF?cls9%&0sqezzDlsWppSRM3 zfV#mmM#^#MK*aawf^wt0HQr3qWQWUO>GX&2HaL@{`UO~Htj;HK@2RBhirSwS^i5aj zb&$(V%)H7=67R8e$EPkhUp*G!j`W2!TIB~fH)ew`@gb1groK(<+}Bgk9>8jgWU3ro zus0{N>9gK~VG!Jq;9aiQn-!Vmj}_TA(E)!1e}@~-AlN4KqO^W=)`5ge=#CD&gJ?Dp z&lF>vh91JS4a}p}G}X0iY&8~Z z(TIPkFtqW^gP2m4v`JO0RO+-ZDZo|i-1&H^-E!=!Au*cv%+q0&bRjvm^%(%%B|b`i zLgX*vY5MVg7r=ddY@l3y-4H)%oD<>Raw! zF_vKoU6|En8*R?UNIce;^}faL@vr&3*!IPHk!j0P=FR2y{BDbx4qF(?XDBx2cif?% z4|egnnSM>?O*`t?5MgV~d$_LTWZx5{cq{UeOXGA?bQYv^e(Ln5Wck7pmZ0ROD5#MX zvz2A2hDptQ2(<#|^to^i61>(U*4==8ZSozjo7$t=(-*II4dRyTzrvp zBCQe{s9bd$x6IK_dKgGvrUL&P-`|&5_^-8Orzp=C~)lHCS(2@&YJO~^3=%=sVlI%TC-fkg8{S;6JczzP~J z^-r_@Um$u&(05-FA$NVTKKkmH(D+74iwkW#>%S~E8wtx~BvMRlnrk}cpR>@`-#&k* z9YO+*wQM$kcv5vcAk&T}V9_j&CKGoVi>S&ZMs5 z&if>uVlsAf)P`j{c483A{&YLljJ1+P=KJ1z-6;Vr9imfC@)w=+#vo;99$TeZl7;vE z^YNmZ>CvT41cG;pfrC>?0%;}PdvSS^kI`&7_y|vn?fTgo(q3q{OlN6qCo65_+})Zo z`=q-fmqi@)Ey%&o_+`)PCJUKxg1))@{a^Swk8&P*p551darq;RP|>KCX`@2y2W0v) z9i(WUfD&X!@~=(h-G>yrws$3qG6@g+Hf=cv-;SZ07AIPkPco(dJ9)R79hvi!aY7SK zT=k@ea{1H8z5RPaD_pVKBcG?cyW#-G{1m<<<-u(@nuChpAz##9sLOtzj_@$JO1 zdEK*)F?+VZccDbbFh(;yo|_ht0$**e88pD$XZ*ZObWLg+hxQ+xLYol45hY4u+#M+L zlgLGzGV;3Qb7U=Bv2NXtGa93@usJw}`+;Twso92t#fBFn>+}!ns4uK63VgC?rekWu zJtr>gTrZ>E$iY>C*e5@D0p1%C(VSqP-G+INe58*YNoMm>r_4N#Rqh@&l|bod$6^Du zPl^nOof|1+j`Q6zy`54#T;A&5F2yI9^?PD#IRJ*6;zFg-!P|7E$~I=$T@6Bxj|5y1 z>xF5${-H`YP%FS0-wcx+nUN=VE^O@ifGm8AJrOukzKzM@D6Zv6;Xwya^g~f%E#QYyj|ulno*^_?5`A!KG}kt!gW2|Q$-Mnp)rir>0{11K z1`cbw^qlrUu6HF|3J$)Zy0=fcvhu~&MJhDO;K?4XywMzFr%K1cjRGG z?<%-Hgp{C9!yGtWMEI~Fd{U`ej1yC8Yfl%q(rGDXE_aVd>}}$^Wq(drqzLm|kApQv z&k!-MR3=kTz3qh6%fxYU#V{Bk~ z+){ZoP>RB7i?aX=+jnx$PGi|!_v;OK`dFhJk+swFgZ#^!0Pu|4&zPC-1q+rq4%Igx zKj0Nt&Ncodz`E9Qp_F${t1RX7*^;1+<5OWXk~$wSWogonzhwz8Mb8Y5Gw{*d3=53| zK);3v{ zx`jVgmEk)SA2Z5L#3YkqaeNn48ojHmPM=&(W=D5ySpKwRTOSCgq3uFxQ1)M=5# z)UWUx#3Q&2`k}((%u>Oovc#RJInt{ayKWfbB$~TQW3q&&#^BsaN{JoCE7H!}vetVv zPjRb+&@9?x)N?=~l!;jUX;1aH4Go!SFw=tSj{@4oW(PS6)fXMb=4Zr--=-K^zR0xA z&uorQ+YED`m64gPRfq~;NMyKF@qgkztDEXfz(eo$wt2uXtoVDJV`HG|@JJxFyM4Oc z$a>P{zu(j#DTxLnS%zSQ^_pzBC`{b1yxk4&`<0(?a`4WC8=7NLe;9Sxg@`ltn1^d( z{qd7E>1vP|Ign81Y=Ak``e~Kdls015`Mt5ydL&G7V3K$+ehs}ALL-3InoRnV?#f`h zh*v~BK!LvC_!p*!>Vo+0bY)whj&#}O)6iG>tfNyluYRBV+|nDv@-ktMkcEciU#d3- z^UNLLKtVWNW{B)^|GP)>9q~_t06GbE>Ajq_o%kA6TNl``uk${^P|Gn=L6~gX7sr? zu{@ad)7c%5oo((F^8O#X-Z{FiHrgI;Y};sTr?G9DjnOn}Y}>XPTa6prcGB2se8TTk z@4de}#`o8H4o3Fb&ps!6&9&xSQ%`}R*T~IAcVhG81?jasF-8D?QP{Q)mW5TR2`Xe-Xr~QunLrKb;rnvU0W=e$gL*LQT<(l(B z#&xd1hptS-M<) za%%0Qv?ro*{(|G&j-9Zbln-{bE0KA?nYMl5dyC^9HyOuCmDb1J_Q!J#=VLNft*&OX z2@2_SmHeUekMAWs|7WHx`QFdU`ZH51FI2>08UHLG*#k!pigoqL2M+wvMDvjOC@hm1 zekWeDyCE_EreA@+oL>GVXFIL&!iyg-%@tN z2?Dj2;P>+vc5pmF=Q&q6AV4LY5a6C_lLhW~F8V9K`=s=`a(>)HndLG+GaglpaeiXS zPm#7OZQK0g67dccQXQ1mF9|9rsfrcFkh}&}6Q%-Ooe)kP@=d_weqpUCt_kkR^945P zfK1C&xnuLN68}SZ)>vQKLnGhBm};f65$!Z23?!NDsKH*B4}x-?7&35z^*fm32^;zm zvQW8A4Hp3mlel}5F+1gIhdq+V*q)F}5>Hn{eiPV!2;d5us3$~^mI2!X0$VCrvHsRk$SV6HktaS&#Tgmr5?HkRrD_dM zLidRjdJ>DT=d6*SqvNiVY$!*R4W_Q!RlB;wh4LYx6`|0=8`oSzOl%;1goT-#BDLD)$K?BfZVHhFZ>CHjXseBKC5Wc+QGKQ>AB#?cQYubapOJg7Gg`WRr%=@2c3CcO{G2-jTx zSb-f3tU%&>S15ksfKDF%Kp;m-Hd-K`Y+yjFb(cbyNab%LREO_b_qp7fa`Pi>BEkG%(4O6EI%KcQ8$KRbe!ku^yjNmEW#UFN}lw{^s zMr%9FVw~QMvawN_WhRgOA`~Tg_d3eo!5XL0meEZjvLL>!WjAYI)^UC+-i7g=cW+$F z0PeT72T%9S zgA1pY{O8m3l2N+!=d{E|^1QBuJ@8dQnh^s(Rbt>Y;W7*eW#9@!5*X&H;mD}cWBr1Bi>p(aZeR( zVL?t)9gkFYQC%B(C5wIJjB#-;eL+LJCODy$(})@f9}(6A*H!71e2&M)9MFOSB%(bT3Z181&hnJ$pnPOT zTwY*Lv?XUMi!dvav|D2pt85SQZTH~v*1C>qa=sBrq$_uJ`Rwgb9|JA)x(YpQ6%|2& z-YdWdF-4fLGW3#*KlltwgPbRMm$kx%hy!SW#)MZjx2ZREy{R(Tv~Q%7A)jKqBxiL%X?6b2UKD!znfMT}RhB ziTp0}+icY4HCykp$x8;4IJl|%>}rwS%JXqRx6$o>C4YuVF(52{td<{Yc{bcY67uyK ziy@d{XkE>To3IXmWI)e<_RNv-cmY=t!T{~Y zWMf_P^gGW*o84eaL(@Ge|0D0jRe^eu!gR5_&Op~azk32PUS#oYjs6F;1!XUd^QF+^ z^5SE?j9prTTL7lAx$S0*IQ^pSdVm=_YZXTM(>DY9A{3-fs7jN2TL-jsGU-vfw@&k- zuwtI}w13dc^)I~U!#{+Fh z{M=3ir&CIuXG3hOW-ahirHwARx!egG~_ZRkWannIYbQ{-T(>1w7oK;|c zK?0pYR>XoZAq(;)CjMhPmirM8b|iv+-IV1+M`bN<*4G{J6FRgxtuH9Tk=AhkOxr+& zq1e#po>dOb3y|K2v?S1F$rU7Am=!$tUp|>-1zr`&b4xkGP`oLsbQBM7mooHL4`Kh0bem>^I{3H}a5kN^idp5a~6iff~v z_~<}LiQF-nZ^MtjF9O3HaERTm*VlQ9a(K3zsZp;A7AD~rWvp7VFr)9NHQ;n0GQcpm z;iRSCA=>%U>nt;h$W~4a+#F>gT|@g%RM3B{)GW*$%|hBf+^4mb;07Uwhj7D?SlaX8 z{j)2)x!lg})pM$|2g!3UNdR@&h6L{C-))uPK~EGY{W4SHtDFc9-1BhkHNpR0CfLSS zgu4+UP^3KSML6~qB$|S{0r3*d*&%pNV>Dl9@>Bdp{>KS!I}rNocbEGf|HZPGzvSg8 z--~U!2I&;+={r9#IJWl+blb4V>A@{~V%%V}3uYxE4_@n$kVrzK`Ueu{eZ+^biW4jW z65svMCFqf%{~8-QWdcoFnzaDA;3WxHwQItEeDi?+%O~v-UfE;`RbQRrc*V8h?|gZQ zk%qvoe0c|T013@p;|u(6Vc|LQutO-&|JmL7MpyqRhIq`KDUP_QO)OZ#`E@S8PKoPI z%?Fp!^%c!jAj<@K5FZ;G9MVt75E~In2J`v*0i!=59|Ch}On56yfmDzaGH>kjIH*5{dm!G?7N^Aow_{8@^HR5x zL90Evge6eNe(t&1BFd8{`c74%qKhnr~9qxd6d6bk<5r#=t-spkcf zqw~O!zrQ4N6NFI&O?*c#c;tF8@F|;ep~P=Pg_#qXPvGt6BID%j+w;XFDkS%3Fex#% z5I;j=Y-mV-Kf~PjnWWZW0zQoJ?_N@-zd-qF8o((b3GAF4C9PWSnFo#awt)*sal^sM z9ZT44vDn4Je_g~fn3?{;l5KkQ;n>R|L)t?IVbpN9$s4^QlOy7#IMNxJIUMcSKN)DV zas}hv_A`YjUmx4+G%9~`R{xlCwkK!6GW`Y|*q3z=5 z&X_AP%t$m;_VZ(oVosmEv-TBlQ4hd9Ob6X**j3Cox0ox&=QFR-F7rg!Dij3wh?=hD z@uZwtT$S#W);_2XXfU_)`DYkT&72QTJ~1$=Zo?7Y)Y}If=+la6j!6Zz5R1|mh#&&9@FojVh9&4 z*YdZb6+793&P&(+f*v!7nz z692W|g~LlLCab)q9WlGjDv8to08n1pb*Alh1vKB=u+-+q^8aZ=UNc*oQUUAOVBwMC z12o^e=B4nOs9aUhg)^mU&KxZ=cs|ijM=UT(*Tdo*uy;~#Vz*ne82t=C1O?0=f$B(-M4aE& z@xR>Sb%v_(`#S8ZG8gbo_Ghr`r~Qqav8D!vZY*c)_KtXb7Juh{gsHS#z!dOzCg{di z)!yusKuC)G_7hbQ92uk!3@l&N8N~OOS@k>PgEBadYU@hAUCBaKk4_YK19>qFI-vP9 zVY*6Ew;%;@)l&*|qjo=0T@;?i%vP+03f4zI7rp1_yVo(Lx@fz@g@+L7o`Mju+@z_3 zhZ0#erNRU`g-3INGG6p>a+6O;_?zdm3eSyY?C0 z%^ZYv*V|Jul$*DQmOXpZ5D{O(T&P2=Tyrns#0K!(!EY>rT_}g_f=E+DT!#?k0ArAq z?pWCVm8*89=$lbkzRP}$P!x4q@kHfFhdgc0PWH?>Jzb%n&tdKeI07TyPn&Ix@3DLy zs#jS%t*4!Hm=Sh*ADCXB{gK=4*yBJ426JD8@B~8Rhk`ci)^n1M+b?ChuX2vAh_Ji@ zdkmzK-*~b6kGRhw>b5=LfVP2Inr1@t738(5*lIpmL93lta~YngH|9H28RA%oV0+Fa zoQwCpL8Tf29Ub^!8On%2YiSJz7`J5}P&;|) z3|J~_rNKO540=*7_ulJH$q;Nwnw*M+$C4JhYAPrC!%3nj2cnaRNutPf5%$EAhLeJb z3I3eQJ$wg21sd*4nhQl5t^lI!dov|?+yEL2TKJAy5H^;dGFW;ic z_Hn;IFv#(-(%q5zkd!X7n0}d@?IT^3{;mP(j41W4$a*C2mmhk_UEa%J!zbbOZcCMSE<4Tnjckv+GX9G# z60of)?)hBq zo_NCx5x_8l;@vwj(}QNXreQZVs)%}feP^bWJBVsZI#JTGI|($)8h`LAEE`#n3(W9^ zAQ@x`_8CnE-gT7LgfFaEbXKbA4w6Yz&;sJR8don%c~I3LwYn;4iJTm-svr&GzwZ2a zh0Z#bd2HDj9If*{|IBh>&U)Ti^+WeteQ)b0RGrmLg7LSR4!M=2lUB0nLX$+}OXhUS zH;RvVTKjr$A0l?zm2?1Kn%A8_k>|C$yY@P7ueqslh&wzXDq9@AssIo*;y4+W+oa+l zH-6NW#j)r7^)hZ&hzL7Whg+a^29!kdUio zGM;gTM3btkmga2rXJMAhgRalaPN2>j(?_mD`vRVg4-MC=pO3p3Q~6+L`j<>MAvAx3 zs;Dl@w62TumTooxZXV^ecfT>zhTEnWYe!*A$Kv7ifqgPjBaLo2|NJV=OUM0m2Kcfe zZ>9Oqp0pbEA8r1F;;2A(@{1pVx1~qd^u!Y@gkM}Th)ZLYttOK8WYpfvMYq8%UZS)Bbv1g`Foi4%#=-UWWLK{|3=mvZbuu#?Rl>CA#Q7M zmCm$tfD2sf){&0*qGMrgNKH`vn2uXLz4%EfTg8R0vz^A)-PVhB=lSaJuGJR9#q^$3 z=exBEr?r=uew*b0)4QJ#CJSO|Ezluj#H>T`ECFN0^$W1b4J=*@4_4niK2Py{C<#Dh zQ8f&NMf4BYBK`o4xU&2WdD%)gbWRk#l#lr4`nnnL3w}`(W@pOJ+H2`JsU*~cLFXaY zCm{bw1`+l}{sRG~0-yrFn5UU7N{m$-ZdDuQF6=QrkGzyJ($`by1lUhi!ety`mxWTdPox7Hi5 zD22H3DH*1F5&*_Datkb8!t^RwMrJt8zBq=EsUT*+u%Io+>3CF-^zs;E=~`k%L?*1J zLMcTC^U3kQr1p+q$0ZPBzZo0PWAR$1P%1Fbq$~k?Rucji8mz~ci5MQ5CqKRv^XM9< zQJJ7HhAa^64Wm+qgvvc$))p2j1-tEGP#$E5ADJGn7$~I7Pwc zF$jmEhToEbko-Z6c{_M7mP&#pXuvH>?K?C2w@Fh!fu7_@d0A|<#H#O{l?CG^|9N#o zgK~E==VBfPa05riNLW{BA^h_s$G_N`^b9&SgSmmg5Y!_>cAQ28^%MLHtOhwBXM?>I zpJt_=m{bLNe_^U$rzXMsj5bCwJJ%RHt^xEUM^L0BC;RXzG$fGt53-8>j9wxJnuiG- z$D|C3WDW7}??pQ@9lmkU5c#9#%8v|6CcYE;2dyMH9%h-`6alkhSD*ch1N{C0E8v8j zKfnr2_1Q^TaLlk3?jN$^?g`HUo{)47@Pstcc>?%zkq*ItXEoS)tgr(yiT(>##SV-J z01?%1U^Vr#>Up-^M-gmJ>P-{&?YqDw(lZz^#2DV@m|+BR=Q7YpDh6{C|HD;>sT!}A z$pXL7q0a}Xf0zY0h?(F&P(>p`4xB_p1_7Jz_qRR)M516;5&|V)$A#VvWWV9mZ&c-Y zBO>S~J^1c6|wRPL&ZyxbHS-VqWOCBy`F8aBrdYGX7DIrd`ioXf zjc?iw}D2(op1M0w2*bxAGs?)l&&vOMGoNu0Y$K#A$UF*n7 z{)*Hh7(+}fwLn`M#Tw!}(JeRwU}t!&1p_2O30Vx-8E#2!(ihY^d}Ull%3nh%Qnmxo zA=+VAnWL9ZmZTuC&`=Wz-?FPP}~M zNF`4K(}!LUMiV&zH7{b{Z(2XdHf8Yoo&}Oui+bke*E>0Guez4LSB}2vHEQAQy)A4y z**=eE^$Aqsyv@~og}9vkZu`deExeBNyig|pXtU?$z+#0CoQn7|lq8ofB?QUuo+zby zgfc}4IQF~G*>fGKWp_rgN)nK|&xHGR+4(1IsVLE;@wzJ_qM!fToqRID@dYO#qWBij>w7$BhLbM5Q~3c`ft_uey9pPfYEMY%vzM z5VBOrsx5BCGtwTQ39+MP-}d!rPDVYWf0~pl8HjmQyFEpVCrk1~Ti_I^P3hF!kFefa zo2ltyV9cAfmKXZ8(8pB-Ra~YL)xXvib-nOcK~*(OD{ok)TznE-?oYkQ8>P!i>JvS> z+vrrj+Ih|-`esP&MV-UkuFv*cRBaui?tN5UTyDpeQK2tFYe${h6pt*TzIpYwc8#Kd z|Gqfks+tvhukICFuPs zUW%q^tuCB(XV~PDd{b_%gG)(PnT8z%V`W|t#Y6RNigmN0J_njt8@rtuqBGI#>F)TFBNo3R(j3?=RPf`O zy|31gL=;#v^Y?C;l$G6;>M5bU(PrMygE=jo=Q}su*G#zGkToE{u{<1-h5>^%0Uy&+ z+p`25wVHWR+rLq9q3ot!19%Ax-lxTlN$&4RnI*#W?VEg=HjJiA8}-+cvWnqK^|`J? zvf~$)lAYIZR7%gpYAh8V`s8u8qiCS+C-ZV6~O*aHnUfAW*A`bVubbL_G z_w?-Vznf2+B#%v|57R*>rwDk(7g@f}uw{smV~r76-gWEIAx#o>@c_`isw~!hN)eE{k!Ss8j3%?EmBWPFUu#aD#9tg2S`^trM0+H$R!6*M@QO`CbA52< zxorAM_oZ5f*c8mt3*&B1kqig5Yci|a?rkA~kkq2IW#gBEI8^zm_;yIBs^KeXt-U**WKI?cLjf7}DI z$S6;*56qs#wOr~fJ^4DMCGgD9VzN$2_i^%rBIzRv;q#fG)7si2|CD)L*8fkLhp=9X zdD(2!qSnJh8&=?ENAY;0Sab=d?ue@XXy3RjO|GpqoMVXMwZ=x8jb$4hKxR^7Ws?^3C|rGeItB5|vnh-8h6Si_qp%*6e+ zSaoFHC06!$-bHZ+yTkNRo#^dq%ImuN`uf0bWA1_sQVG>`kq6p%J&Sn4?Dh85VOm+3 z^SqvFXZJ314*I5 z%w*|!QLq`Wh6q>9hHWx-EK@8M(w83d;K5dBWo5}8X$LtocB*pI36k{mxX+wb8D;_R zR-UP~cUJB5>xEqRxixsNMCem5*=GqdCi6sP9(_sblU`~kYknGCr=N9UfOCY5XEbs- zpSj7lkY|Qeu`jM$;Xo{V=X0PJhxmC>bw(c;{rAx5IM6t(A4g}QKuSyL7 z&=Ts|r1DSgu1_u_gZxXGIObx|i~UZqsk5k?$@d-!99`wg#D}MhlHo1$F(ihOQNhSX zkmzt8S8#J)PrXUsAInU9lCXQ% zjf2cg`mu1QF+_TJ9@n8@XhF|+gij+|oiY36Wv@$Lz^>~nPdC+TUi1&vN^`Q}%Q%Ka6jGNR? zvZO?ujszRyy6M)HpINa`p*bCGomm&h4YO~4D7Km0_)oc~A5EA>kuc2OirDRGa|$lX z51D8}+%akR0Y`dOfJT&b)70oxfId|N;yEZ2%DY`p?*^ngo5pP%#7%b}jcVgrU`=+N zZ94cws7Y4E@x1cw9B+QX?XRnbE@5q%9ll-GOwdXFtgRag3=FH7EUqgLaHGNDVbSv^-z8i z83NuP-zy>p&OGB(@0xL#d^m|tV6rGSjC;dt-kk3|{3 z;O?)n4WifApj@YPS6E3Pzr91PyN>X*6r^}F?2J-2QE6_cfBTlUd68nKw5L*_nKSMp zVwt{nzgv0THSbZgK$2Lpc5PAV?qQ{&aMbxFN_pF_quW(|t;v%6R-I_<ZJ=OY!9F$=in0C&kh% zDm^nCrB)Er$yVBRk))>*cgFQ)g?R0WNcA48kxX>BE`Y}EC!I(2qBdHAZS~IX=fT%o zQlby@s{4&tqeLp-w{2hB?v#{dLbcw8cF)Qs;3k=0UJB$^O;VY>NNymTqmvB0*2J!} zDVS{yzF~%yRT4ryE|)~yPJ$KP=0K&NUb^KP5S`;lQ`6brZD+@L!RNU~>tcEYDYzeu z{@hh0L}E}Ftj}AVe72L=dgIe`lcZwwB0IE+&!Vv0A}@ZmL8q90j>`qC0_9s?`fVIP z$Oy99?;wW@S!RkNoPGi+h&bM`U`e(DUuJa(GdN*MW>E9slSZ1v z&<7$DN1TGF`kWQ7)gz^agVa?Ml9Pnftnbr^8xwm1SNk(97SNTcV(Y*Pp=o^4i6JCG zl(}OPYc*1v(?q2_m6|M@3r;J}3kH&y?**(pS+4D>Tgs1|JmUbSDIag#TD#{|<{#VI zs+B$bc-Mupx!;p2#1#*z>{>2fH?Sl;(_Qfgy4l*OReWkld_FHYCCImdQu-Psnn*H& zY#Peqgh1OCyv8zceunGawlx5?4Csx#U_hPKjOY_JCS{IGl^h%CD-=GF8&DoR=kEGl zom_^%dDH>7I!iKl$!SP!S`(U~A%%~}l!_=6o8j*%EMiYsVCv51HD$WPwmB!6#((io~OdiF7Ey0FbHcKDnXQ6;Nw=tJ~584Ds#NTi61gPcqJbkUP> zM(WYp$9Q8{CoHMs*C;Zvcv7jjLWxzK3T;H2*)YZOp&564pR;D0FM*}QdStn%@Gzm^ zqM)Q8M7E#{XG$~AIqL$9t$r5p`_rkfCIK#|drzAoZx4|cYjn8eMhjM=?=iJS*%rbF z071HrEt(S}<|S36cI|a6^6@@J?SO36Y6TJY`d~{SootLusyJa}&l$Wx77H_23X2~+@S;@N08DYjm=EkjcQ@^>a+3LX=qZKb_3uz!;wc3J;{@91+-_e? zs7dz)2)|wX-1OqOAjoVNEr~^X&_8dVNNl_oUPk1-^`2$HnFpnSGJXs99?JjB#Kpsx z^=4;x*b*}~fxh^KK=p7vht6Ac&hFq@9;#NwN`>D24V9;_Ef|d%>#KIOj%zdP9 ztj$|OU`^aY(AaG*Lxat7lBM)lg3S`7oPu!z%`(K_>&D0vz1CS%G~*x=ZJ~YwW>^S4 z;-iSa4TpB;EUew5V_p+3Wb2%^qn4c}*ijRY@dHnhHE~2Y4X}9ds z{kY3TJ;O)J4BA86d$ou(UAfof)+>ef-gn=8+Vu;Hxk2?x24U0$+)U^~CQLyI-9|K5 zIKKiTLqLQH6TU3g`)YACijk(%A15;$nTehJcV-C|roC4RX)bjQiPAu4)*lA*&B^+0 z_2q@kvM+!}mM#Mg`+`au!azD{QoFhjJ<`ZlTK10Xri8oq-ZUQ%N0{6BV9%HE_Q^Ch z=6d#PxNHzJdiS$x0am%YXIa!!u9eGTTYqf?&(9>51&!oHf06uKkcu>37a#F0c1br^&&oBt#?ts`m))dkRRr|am?4y#8qg^c1PquR$$Y_Z3F4%>$P8^TDIy(E zf|hD+=S15MvfKXIqx`*Mv{9dhzTtaLij^V^^d(2cPFcGpc02s6L#B&FT!qKHr-+>Q z^zMCdcW?BJP4Vyd)Ny|PR8v@AqsVYMjYpO(APG5p62W+6QJcL_Co`yYk+7<|qGOc^ z`M&wKVE)>%_U$hTyXOqLTvwitK5OO$`F1UAV>BYdy);J_&Ih;Hat2K_kelLfqZ|>w z1Bm;ym(#0L43a0xOXZ_f197baxjF!}cI(x$@)8XxJ~>l*oqRtFtrl2){&%Mw1kpX> zbNjze`Sta%X-&hJC8pj6{$d-HSuc$cVTPpW7^^58jt-_2j;IkbOIbs0vb)f$BPt#m zN=nKaP0zD0+C&<>r_mi4;xuJ2GCiIvp`^Y-KT<)ql|B7^1G@L&VBTDZLRd}0ReISH zuu+aZxwzsem&8e!(>e>-c{U;vN)*-Fu7&9^ANA?vTIshc-V>PJ6WEW*)qHfnek|V; zKoYlat)h}%nlCGf4>5H*&ePlW7+gAjq&$eR&1nU?8kA3p$KRT?r%#dw#0kZ8#c;z>sUMROj1m9tMNc`p04gG>6Q zloP;oG&zvR8O4AP`LzgcenWQ?3Cj%9NH`UF-w$T?mgZmMb4-GAY=!m}rF1;`d!}xT zf5b5q$>~@MZf79l_9)nO5eew8)vqpSAY=KbC5=e9Q9{x&Lyoksy}@w+n<5Hz&@@4c z*cJm5?TBVPxbMO6sP0~WA(U4`KUma6uYT@v#WKzC%w-a+5 zU}qFG912p50sHsrcdL|e=%zjx!$?f?=l2RK>hqc3YZUd<^LW{e>WSikrFdZoqt7$xVkCz5G-&-Ogr=#IwbA9&eK_BXoXfgK_s`~Tw%;W2<((1 z!I#TQfmMK(f2XN|t>7oESkQY@b{Mfa8`NnzY2qR74-^2lN(r$gxk!Lh4S)$6Fi-Om zCB|@0VI>_)m4p1>ebal^tdBiJzZuqiujFR)finT^Ib{Tm`HC1;LE1=imC7IYiGZs-^%9I`)ufVn8ZX6W)y4p| z#8Tj<9OoI$lOX=;DF13Ki)nqQQ4eDNgto${Y70?R;IixEm^gENP2}@(#ruMq;O@))yuR^St+Iqg;`DnZf&&Vbc)ZlQXaf{jx%*7MFu6m!YP^q2q;XW_Be*SW2Wv@zkP{o>7 z6gFDZMX&sI*MBr$z`SaGU1)%O=v#<+CV4#RPOSaV2NT^z)~ez2{QXRhHLbOeiOQl! zi215g!Bk?2q|zuw603Uf=4s7Wv-F^9$Ry_m6k8`CxBf^`6o!wWFb`Yc4T0MJzZ20o zU&-$tcCr+ibMoKa4lbX+oY%~67=;h_>6sKDqb`Tqh;oqP#YNrUB2w3y)!VF%ez$ao zc8o2%o-PR!V z?k_FIj-^WX^26Ys;!joD{-bXEbKVCKo5iDVUMn|7=L@p>0x|R>o`d6)I1^_RcKCPtS$N4s^14@s!S~{xBZS! z&pTmwOQtg*jVD%Adw3*fvo}dNFENBR2oxq0!*Z-Uc_}-^i+y*UMR9goMisl#g-80fp%SB91JaO$hA>vNcg?B)&v@KLSz*0t( zJ|9ylqVp)dWIi!XE}!EeJy79G+q*vRx;urnx7LV?Mo5+PA#D@-I!u-H5SRBSIp5-( zp-2WZ6OkRDxdQQp5eY_)YjuW2@!%lOsim0_S|g}Tajk`kf!94$SvH``Lp>t)2lBqq zeceD`PAcTO*c@zd`1?PH)jvruA-AcIFBky69^Z&_e!3>MAgy{&Y8}_eUjN0Lgt24U zRB=A~nkS~BeU-4Gn*-ed}d2x1J0PRNPEg}>XkuL8?k1Rj9bQJy>NjO`JN97lad-Cn2T z_`H0}(fYbmrDG}edlvN-1_I({l3g=qs=aidPf=8z@^<=*i7>)A)SVNb^f^BfX_2b^ zboRb(ZBSOK8cR>rev);S_L}S)s0j_?4t-zNfYs_6E=QMS?$u*~KA4@P`j{zBn#{8A zT~SD6KkEOPk#4)8I#s6IJ!uNUDK`FKNnoq{EJCHc*!aJ4s@74!s!L;i^I+(I)Uzog z{mBHCbVK+Up&KaaP2&c&2P8Qk z=O#DWkKe8Vs|nY0LanVw=GW^rYROq|mHO(H9GNGChMm3FZQlF~t14y@v5A${P*T*> z!OTK17%SQf3+}NDf)#OPtS3UsR_g-NC|EJ-xU=V0v1=CFO@e9M!K|%7n62+dAL}UR+ zxBV$j4Vrp3$wfOQ_rta{XY`G`0dcF3N;Nb7bay#Cw_*F@_AcXlOUerj&1B7ZJ^+&A zpy|O4sz=_lB5xM@XUoj5QVPf@$En~Q0wEgSZW*jM{^i{krq-PkUrdjls8Z$S*CC`z z^2AeTGrF!8UPgAE{-YOCsx2D567Cs1tUe|COj7-%P;m*T6Sc3;pcOdSAC zCku_+!`Mw!bCf%Cgz8CwL~92Hne7m7eChS4L}(uBpz26IDTpZMnWoLSCKWqge&^!r zK|rV`GP#mEw$34+&g=E~G{duU&9iyy^I&F^QXbTt%pby5YaE}|#p~g|If1#?!$v7@ zr3np?7#Q+Z-ND%z6v#q)vl6Zbd#hSGi2CmHD`#p;ermTpcl`8CG5+%~dcjyzk=HQY zo=jGR^NPmf`Ng^Et;>N-Ik~f9!i+YFj{b`tPWC3b(DCOSM_U98f40JxQPK8Jo+7~A zEZ|zbQQ?uh+9Bu;$R+a0^J=zDMz-kEI}^CeJ6&kF@MiPE-p4WM=Pmfo%j6@PiWN@V z55epY+uWt?k(}@~S-Xn6(9JT4J)Y&LX`QN6XQ5r4E=Q@l)NKO7+UE3Cqg7X=TR${+ z92Yh_W}Vi8Fg;`+3oG!jZIUux_!_%yaEWi=yxZ$@S7dFEQGm+1`>Pv7xTCAgnu}|a zGWIOVxelepUMp3mg&A8yjLYTgUId?`08u;E7XLS-^UZC3Ec`X7duG>|ZV!vsIIC>v zBi+2~ZX*UcnbhLs&&t?({Lj+(c^^LdOPUcR6J0EIeCg;y>hdh_1MH+dPND9Pr!|<1 z-mN?9B3-+U{`6LEY4>HQpVK}I8j1hj_#yhMQi<0h)*ats)5CwPC~xmY5h{YZ%1bYD zm>nZQON-J^Iv&@2;%Ww{Vn@j*>s1CLz66lBSMS#y9j+T;MDg!rEjBY?4=pRB_E&`` zZ;$g$>f$E=I&BC!t?!i}zTK|2UI}qhUeM6Sv+1?S@H^?{$A9U6a@AU>f~VvRO4a>< zU;eDFXUaZry_y1exxW_xT#k&U5T+&;_WTHTC*d59r@OB5$?UIfqf+l$x4otcWnQ@& zQD40ES$9)QmI9jTVK@&OsCJ4B_keFEQ-t<3y2znOk-tBIGB!)Nwd?sno?a#g_Gl)S z29$_Q7g%;mIGSrAE*7O(-&yuEl7acW!eNOVc(`C>MTgkD_G&~Z@N^**zdi|vP{Pgx zVLU~cie4EkIaTG`D8+eN%kO8^^&_@lcRrniC$Tl(-}&ZG?$8NXsX1YJl{KG%b^Ip{ zapw+VHL?{j*SK6N$*FfQ+vtZmQJFo^adOl=xyRBm(*rv`WPpq4V_O=vH!M~UPrhJa zSdPO>qKfl8RI`?++R|)}qMD)5r2e7Aq`H6&O0V3nVeI{YPRdo%&5;DnRmJDH%K^3;fVuNbo-jhCC82m!{F1%H_lDR0Q4- zZu1$N8>3xOm-wQ3OQ)-Ko5U_`?@g*?I+{%GF!It5|Fjd}bbQz{ZFmoEOYK@uy<(V2 zqFLy%dFcO`EB?OPFEZ|akV%H@^pR`3#+z+BTsNQiQ$+ZG zW#}1$pn*+)$NC+f32f|L{hf5XUi}JX@^bZCN$_CVoe}9Ahx3eRCQ~Xjg@2eKDKJ>s z)kq(9*0o*-s5MOjskAj#r+Sl&DUd=7A}^|xLKOCk1cH#UASUl{1Q+&+G4>c9juxGv zq3tYV%Mjr5;>!{+XCSRvfCQ93JQRsGP@w{~T|RVL=V|_hAhLhj3a}^qDK96N1w5b- zROZ6(=@Gm6yn=H|1Vn{0s}KDj!wH;{VACBeD*pgfOgKvv=*wUN^M~RDb$BFM%a-I- z4ggy?;CIweFTfQ}Q>0`s#K6?`56&gAfX4L?UZG9d19@|Ay2A`w9$wg9krJnm?GrIrz;|LMXn4?o6+9eeFOtLN zTf$09Yr_&ZSUw$UoMS&>g4|dWDjd)tK@vr1bkLyaJN?I5fb=2)+93h-oDir|4>Rsx zK?pb~!Dgj#Sq*aqeL!|5*$#mVhQoTh*ezJH$E9jNYcKoR7B#T{+|CR-8nnB&z7mYCC^7> zZmEWUS{7+#5^~&`+?~|^EeC*3zN?fG~ z^B?1g;Ce(L>gs@U4%9hb0F~3MrfFtop;cC-IOT(l(vNgHnk= z9&Skj@{I1g|3wBI^!s9+Mi2$j_#UWK1(MT}wf+}5ZN)uT2YfGR+IBoT??Xuh8EWFk zFYsibe`F`zJwI~!G!MCGg19Y7qG4Dxq5sHE4nspi_D?7{yl0;s6Jda&m~g3o@H zAqBh#fX9!?p9y~(3O*{YG8qr{SWxxsKNH4-JEWh79JGPe%6ZJuunX;n4&s5V6Mto; zCS=n1I(g-D0fH~2&DTVsq z9w%5`9{!dnOa7K9sTT=TfF(+fZz_hRGO-8@P;T}C9xwmY)WrX(sW-?!0Bq)hP&adU z@nRAVV}{oVTDTlX2oURw~4 ztIg?QXVToi7nc9jyqnmPqwIJ!5Yb`t`TFaL2VJwlzG+^wvVH#erVmuNFbdrhJf;x* zp9-Zg=YMkP9r^1k061}xFwC*|8 z2J??N)q4Gyz-xI4P5p-_4q*oVkCf#I)kOVd-YE_Q4xPOn%c|6!bisadhx^n`D3=fD zoyHsN#I+&iS*DGPQeLGi+~7o`?d=m{vHY>&vk-PZ#I(a20hW~MOEg^mo@PF|P{S#! zcH(v@rs(MQHlD3>t$LG9Rq1UE8&Qx$cyH&H9I*uZceDVy7?T7Tg19r&9=H2=}-= zJ^9@L|4QnL%DFAg9zo&^dl7bk5GECbw4ZWr;trunsoo@IOS^qAS?l&5i_YBe8^x5= zpc5$qwMXo^X?io~sNI*e{YgBhHsZ~?wsIUG-2Ub&ENv{ug>WI?DUdK1ksB_ zna)Sw-u}>bJ+2-oB_Gj+Vm|Fjn}{-ps^#j8JhAG0Kd`8_nrzi8$m{GnIBdGb%jTCSE z{fs>S)A$+F!5LY%lU8do#cGyADQLR6t>w%RrNvA3k$#P8F&5WhNY;NYzoKPW=+b{l zFBRxg-5*r2zmFb4=b(s)AIcc>5s@B8FaRL9BtZf4XVT;5Ke~FL1Lv@F#I| zIQFhFxtNc2;8MAnVK$#M0T}xxET%83L{~qgG8$|a$J>jiO$EZ8ycU#wth!l+|0S8K zmK+R{SYFr_PkY}(Kykl^ftJMO{^V6MCyiIsVp@c!xUiOZo;Tv9+L3a8TD(RkZc!G- zQ<;b%t)udA)@22o=ajNXxn`o=WDD%$!>1LU?@;T!CgvkU8tn6=elW!DcwQxkU24_% z|M>dKfH=~%OWX4%=ihbLW2F?*5{>pt`FX zs(H_Oj$C24r&QdS*3E(GSNy_%hJ5Sx#IzlQEc?`1ZWg;GJG``#j5qFcxO4p-k%fct z3A_J6>vI^PPd7b192{tG7k!b1tCc;@X4o23ka(-Jy@r{pv#CkE|@Bi zGTkoHN>YX+5uA{v2GbSw&%^lr0?(!U=Sxf>5?bPTyNn#8?sc*W3|v(}BL^R6ZL=G7 zgvgVm3JwvE4?gyCaCpj+jNrxg+n@fT_(&oFiTq@*G1n(Y+v)Kolbn z7H>URk-b3i0YTm{vsf=^PZTY0*qRsoi=6fwC7Wm>u{g$P{Ry)cW+C8*M>g-&C>C`a z43EET5~xRztG~AHM@YOfeH1wo3H8*n-o3cg>zzaHnK~_bLpRn{ddPG&6Tee>!awC2XwI3xTL^@+dP({_Hw;xfWm_c;uA^|j%(eSd+^ir*8JbY|`Q zY-}B5#8w*cTj$72PDv?}nBq`uo^;AT@pUKdYKj_(j)7Cu#fh9a1H+VK*2j3fR65LO zW`&s%C*niuGy{Qei`Wjwef#zj{DwZ4iP`3H!5LPQELXO7))ydWH3%FgKSFT@>+Jk6 zm{sCAeqQEtKQB1v|BNjtZquV`uPyaXfk|>5E}d<)gbx84H_MT zuP8TTXo`z#p^k$wQ^x_$l4MkNg&qdQ1kM_NOZhwuZ){`F9u4<$rr)|_RjmqL5KidkADG5YAu^dAO;F3<9gk20OG^aE|dfU1&TBP+IWyK zIQ~#GD+&ihpb=e;33TuZ)U}5eQe)(w6J0^xF|^eS@WtK}U5(HV9$c}^hE`q`QZYBv zkK5uqKmOuU%CkcQd1pnPL%2>AGb}uLlQo~}QzIEi;m?VNF$JyJa^U0wCnQdI7sZq+z|i1iJ_~5UmbGE1Jt=FIbGY?+|m7 zZdQcD)D;JbM38cWetyBqEi($cgg+NBFbPOBcgYL zELd8gj%0g9}zKFb&#siCn9vD(7V2znGkdI(9?DL zOUF^JGa__wL0oD*q~AZV#;I#sPM^BF#Z!R%)^T1eG@U3kCowQmmm`(4+nh8H>FO(2 zt)=Z|{XbS2O8@Uw#u|^l>cwdS@2`Nb_Au0mJ>PjLHNP{`PG>Mx-w0wsG!!N${n#bj zWNFBy*yH+uwEPr)I&BGQ@xXQyb6u0z6wCEM81}qqI8=I0F7cD~?V>CFEf*i){8fda z>!;=T?&;c(zPJEzwglE;o-BVtKfvYfkQ!4!*Lw{`K!SNvHV^H=hHS{ z+9qvpv6))NcOb8SYgSOYY-+j1dxs-elv3N;xbK3t85b^HD@Y+NJ2D(q6+Lg0W=$~{VHN3T+f&;6uuS*bfEt(7b6otk z#%|8@GTcPlamSS2GD5#jYv#uyzuMlGm;yDQRPJ`6%heiGTbXz)#Vdkh2rV}rGvJP| zv9b}}`uIm`GWsMI*Sa28@_mH1qe4>D{P0-ck|kJ~<7B_E}IAN|R;khN@lL#gkv;7vDpsK75^z2%( zYko-V-A%Xte+f-Wv~+PKiZ%o!3`-O$u1Ee_Z}1HoepwvY5gMw590!Dyw-z)oidc4j zuwVEoVq&3o2oYD$lFwOWgQ0Yu$Jt6r9*i`=frm7{;>n4E>hV;W!bh=c`0&7z9A}>D z+5SVosMz66ZzNM5tY>4y4YKt|wFupt12jm(*$f

_F$U>ut-JbaE(G+`$Qm={`tkzuXXZ> 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𖍞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

GN(a+ZbVp#t1d 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

    N;a-A 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

ujiWn!2}h3Hl9F95lR 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 z zC*cyDfW0`xx-*yb0))A{OC>B?_Q!L@0U_uFMb0i2=XZSVImCzoouai{m^yaR# zXO%O)=2;KQpWzO1Ohue=>_jzS)H6V(i!2H|Kn!gt=A%;I2R4mpIc*+$RPjZg zC^>WaE_5A^m4E=vw%E};a9_=~V#@P~?ca36ok@`St=3j4OUX~$X`?mKZ}~)4)4Gye z4z|l_hF6ZRZ*$Y7?@trznjYJI-nlYE1bqwk5yB^cl}@ZgYb5V%XjOGNhcHrML!gWt1wO=Iwnr%B(~V@F!GpeAr-nPi zEp>&;rSfABY7jx)lg@vcA$hQ8zlW-$(NTX6nA7Q4Uzxl4qOWwSYswxEsh&Av#N<&> z88?b$ZWhhYw{nG)k>||3Gsn`rsY%`Z5#6|S%iVb>a`;5u(7}H-iXx*GBt8-L#5y`3 z=Mfq4czhqlRlVm43syKYrN@#CJCoaTnQ9Mkc!XlJP35TZLEOmi&d`DMu0*G7gtht0 z#^GaNxn>{F?&gZnwakF}t;zW2o_))h>Q)La1Rv}fSPsQ{>aQQVl_b&4Lqamb0h8mwyzK+S_i&^1onD9 zy~+o0&hR{l_h3JxF2O9qyZI{wIo?sr0`5K@>a6DfLJ_)T`zoM1K^$fd4GJGGN;_hk zAeJEUfi18^xmb6V+P8o$*7JV5Tg#APUMYYIre!qE6L&}VTFP( z)%9-0^u6>9rWKQgYB%tI1rt0pZ8GEZ`?_jks*=1cGirr=^);^?W`%USU zMdy{HdFLd~-`d6O*UQ5F_w4$ut_^ob_gJs(tMd$nBWm7$)N;|6+l5Q9xT8f2BjYoY zk23rSOPX|N2W_-di{>k)n@G!(Kf;g!?d}Wp-V}eyh&u7+$<*x)5fC|-n7#$9g_+K~ zNX^xYnFJF?pFf@80?{Kt<DEHSww9T8~pQkMWstL(a4BM)%ld zFHCfq@AmQQMS?#clUeZUfj07oNq7b`C%PQ2gXM-d&Fo`Ks#QpxO!1(ihb-cvyN`mJ z8SH1DZVic_9l5mFHOc577(UAqmJsqLi{8*YbhYLH4Xb_vMnEnA&Y){4R{=(u)q*$S z4)Wh*Ye_wf8|@RurbHtGS6Q=R`%?8A`(VIEdRvZ@KC$)@iK^khlZl88+fSfLwrlTI zlGa&A9vcd!p`sp*lZu_h;cvjfyc3o&w3V!XdP{i!WPtorvwsW^!D%I@Mln@$?_S&t z`e>3c&JaD=Ry;u!?x(S<)7Kw{uZ~si3F^7VP(21f``}Hl?J@MZ(#$0}&v-?`M(wBP zjAtr0ssc+M^Z1zw;?+|{8W=ti^}6vLglR)lf-_i=tIv<=|^xtPMaQ`ET%5ogXYcOoPvBJi_@dg3Oi}H+1LGT~;6qb^tGxCiPLH00;mf%by7glzg0Y43 zbmRrUaJuus$0%pR7L@*4kv*!3E4y;FcTrN@LyHf+^rSdPowc5NsZ14>#?|mhqxj=U35ULv{#{fDAPca7s8&aMJ zR^iw;4n}djp%tWuKD)GG!7Spx)u=`%)h)L=b0G|GDT~&pbjPj_rpb~)spL8OkZT^S zXs|H(%b5#Dqw2UGwWi9`GMkYLg6S5#7y+4@tW0&F+p(0FXTe}D-_Cd8hbnE>c#caZmk6e!(jUoQDWnW=*g`?$Gg~Y^c5vO)X)DEgwEP7$Njq?w4q0^ zy55w_N=5W0^riyyCL`|NrQ;bRmbT^eWKG2eavwF;7z>8_j2?;`{_Rt|yDnpzqs#6A z-T}1<)>Y<0aK847VsaAFF)7a2{s2vpEThd}r!3>5V+;(QJc2+siaf$~lV6e?DSQAe z`}-cTa;eL<#Ti_)8alrj%@4=QFA~k|j(qyt&4Fr#6e82@R3m%U!fB>}Ex&i%6<>Vt zY8z!!m-xs8EHEMT{}r5xIf|wUi8 zugce)*O1~Q{hG-D2{ZihJ4d#!H!%G(=o&EtOgV@aC=9|!Zji3Gzcr9wM3IS+yed&3 ziQzm}X(&;^#(^~?pB++ofjcxpw<`fl`6IumY!5%60GCQZf%4jTf4;?bz)R`jSVK(N z`*arg<8^hWp^jkt(o-p-Be(N8e}mveU!knrG4V=<)aA=(acZ55K`YRY=G@<71^^9S zHbY&BS-+TKxYcbO(Mt-mQW#dk9U}+RDo`txx}G4#LZZab0ZF({fo+>D{gjDpqz%U> zyw$c@QVdu3CEFP-`pPxIE`BJahq~zAmU~V`OhIg#Z0wAC3$xv>S~8U*;uAZ{(NM9S zE*&R?eU!MIn|(I;)LfsqD@2)s4B42>_gK)oxeZCu6XsEwH3KFksV2c@k}S zs3Xxax}U&NgtjnL-qHp?y7je$n9Xvl1rN8Dr@!skuw;uB11efdblser=**T>M`)g$ zEMh&B8k%_!!au4F^6=h~xPLKsl)9NS)XNnsmI>x8B@>TLV=VUrEnNcW8*<_A~>dYk-p z4nR1S|HroVIaa5s*sXpR!qO{>AW`-Xmv!4M>`w)cKiE$qb%fL9d6ke& zdEavPz9WHoQ=*)V_8H)}vXx@c1A#y30UILvYn$o0oI7?N+Re(sb7jeLl_D3`^O?$% zFTsfkMqt&y&0X3v%^jeAz{hxk1~5XqgI{`Y`JD7FrwsQS@%lUq&OiYDW{1sJfn*60 zZ>8!O0bGehD6^Ern!`X=mP(T@ux68+2OFm;GMB6e8B z+TID$hvumWThv?#!VhmpIfCOO__FtwY@oc_kod8qohenO+v6^opx|7eg)kw zg?&(uY``9}PRxna?b%qRBmHGqqc1I;WjBQ}-=e=y&hFA#);;KG$7%%cK5ZL1UqM~< zGHj{z%0a#qQ;&V>P9iVBu5nbIxc#E%-d6&byM8LoE2qmm*AMRAr*k-|^me+t2=jeu z$+AeS%A=VnR^@n6j%&2L>)8Ft)B1f8jZC4b?gGWhjBHwE$G4)=?-ESQ5y^?Mata$M zR%u+hnm2@2@rHG*7!J&MbhBDfcQx>P_rQiXVE0Csfw11&1#?-5P1Td{jHI@jx@RT8Y7S4^|$`YezokM&W(n{A}*8u6@eUkyV`A-N+bx zESz`NNE zYLK%L#EW zV3C?a#LSe``|(RURAMxjyuW_8e2!$bz@AG-o7D|Sa9|KEDtL=4&CFaTY_A>UWr^Gp zax+6GHq~IaZ8ZW+`! z2eD?Kc)i%1AtZP^Vre_|tJS_H^~82qcu*6n6I zl@w#=F!LA2`^3c%dA!^;LS<_`zf<(AzU3n3fgu+Bz+KgdkED|HK4=HUx>GHf|iwnB?$u4d2{v0eQa|0@gC* ziDWD}rl91i7<_S&bh**+Y{ZR{YFg_Cv2!{<77GS42DB6~PDai_mnj|$FsD!-NH1M9 z!A8Q~<075seLK4vFytW$3M0b1`>f~TOXJb{=7|e4h_Ik*g^YZ)^$LO&&0jN~E$AOjV3-;^_6i;6u<+8E1> zmq`ayhd>WOj?TJ^;NH(>#F{HZ?DrufnBfp??387KHFBSHPglY*#+U$6+oeKc>*D#9j%AH)J(~I5yPR?v2Vmr-w zr4V*Ar2X7oqTT9E4796y;c5_RJ)?HJ`BtibIwym13d&A5k>*+5`%cPmTCF`Q7U1L_bUlb45mO)jDWI5SdSpT zaKC_nl$^WF*;2Ywk(3bUff0k z-DJa`szqsp=?nRI zYk?$$3|h{+AdKSwo%=-<)nDFrLsoV_*3ltWzF7%7g+)-U2TNCYH@61Vtj0Kpf<1yf}_f?s7;D^<0){wB)6kjZr4Aai_(cA{FnXM;40LH4%I5eai@$U7{{}hy%$=nj$VonNbqd0AXFY0ZxCtx5~mi=L0d9-}YNdnp5OJaPtqYTBCwKhb%ppQ?7Sha&}pgTU_cU%nMv{lFdg8+lbEmV?s+t zDYg;5qmLf79#hc~A)8`>Bl~!tFqNK5F;>Gfun_wF9t8F3aJb^8s_4gODYHXMKij-g z^}BBBMMUa;F3GRn_6yJF6qxId8j%?KcqBx)!J|`2iRbYRa-{IDDZ9x1m%S zRElbO(UP9cLPG$Bx>nGSry(bk&0#4{kdCs6a5PpZZyZX6v?fck!u0x|oiAnA1A_Ed zxho(??1tb_3;N^`>7-(SG!+r(1#+0hU1+V|cfY9e3Zt`17`y- z6RXv9;WeQz4QoC;N{vJ&k~)gnz=`Y)UpaOrv+nq5pDAC8e6f5sV4|{V>3Hf)AXjqL zNmgIK9;O;Z%G{3B8(VvrRVNIX98H9^O_WQ_$9mvXMxFhtMo$TF>v+7OB3zH!0VD;I ztKAn0$Ac%q5BC7Sxzon&>s}9OTZG+LEUUrXmt1+9yn*r5wFMw5uvu5~^#v|E^mVu3 z`J8omaX31S&W6&_+adPLaUVh*9vuRk%44sAnai5FUj{9J@ z=aH9Vb7ZRWfoTmq2gt8KSo}u`EDO+>dU?pSMY6=Cs4lh9~^;U=` z(Pm^y-W7I;`S{7Ngsv4ch~EAfF>p@Wkkes?JnN6m2cgAxzof*G3*XApMK3mdm^SIJ zu(G#z>l&%{%=bopQzawY;L=p{yB;5+un^?11~a;H8{Fe+YyEB?dauU8g;d=_l|w;9 zGLMpLRM8SYU7a96t0>?=y|%%@(4XFDDau&Rvp*l{zU} z?3({jhZX~Z-xtswMx9>0nGL>s+d4~{&qEx?NAsW%WN&s7udw%=*{DA=XC5c601DbS zTUWc=k0Lq)e0}-)ez4$F>uXGVx)IhW_eVO#&pI}#wh`sH+NJf0I@gZ6=*kx^2}T<2 zvcl^K{hQurCZ9@{2P|~&^uef0;v6*b2?rPaicBh3G824Ra|o zj%l{#G{$T^j}5LBGE!@Au@@4pIa@q?EfBMe0T zb=MBCIDN9eMVr4fa};;$of`(z8)oS~{(WjpeN=e)U`ex5u)!I6u~p0}j9Na72wOm8 zjuyksb4dBDNj<6NbQk)YhcNoxlG|FOp&lW?^8RiRdj1`e(^vi>@y z?pCY6B>V~UTn>V|V(7&3c{Q(TAC&5FNM@k%Kz=&DbZpM`;N_8&F8{*i6c$7FJDO{X%eGpzX9k8x zd(y7Cryu)(NI=f>#ZY(tM(7>UrrynKliU4I1DO$Sttx>Fh~+3H-#8uS>J&w9RkL7K zI=J}}edW~57=JEAE6EbILz*(CtAcRePgo-)JmbxGiQjf8zIw6`8%l%*eVLctYaQW6 z^0tq>GwiX<(Lib2rcUlSrXZ+9xy73#xq8irG0f>sR=XselNbWo+5ChZeCImD_7IAS zj!*zG@J%Dfau|{(DPO}kF&K@wwWa%B))UIlG^$|CMAIbj3R^sX=q)Um9%DpN|5?WW zyQ{@UFy4|H*Bzl`$M%D|YoR+fBiR|Nyy}$Twbg!Zok7SrB^is%Y+8ML{&=&&X_{-8 zY+&)eA}Z|#XS3nWR|%S(xVQ|RTWNAbg1DL&;S)obW#f#s@{#qvb?ZIMDd1T$Qs==b z18nli2}k<`X?)9gSD~E6_z|Kwg{xm^v*PuqcOEwrQ-vH_PP*@mDHNds5(?`)RtYYL zD&jA_r`WX)GF3GvyO8jV=AviY$x|eTmTdjpzMo`Wis^3fF>#>B>OZ2Vz zC!$8Xi-cQ~8Mcd=weWSHCWQLPdlXC+jPd&nNf-?i`k%y;O%hT&5H}diu@M-u#>os5 z_^-wHO%b4oMe|v$;Y*zkFJ>p`xkGGhSf37iS$~Iw;x2nScBJ6}OY%&1Xm8rb4I$J3 z0|DG2^4A(aSbczo{BUI9P`&f1qO;}4?0Xoz5I_st2!Xt9p_TU9`9NOxd^tHSu}RU# z_bekIoRw-KU=|L!$E0i6m}WMK7UXbuhlbx&O0k@WKGNW=oi{#9uwfn2)ZyJXhr^36 zd-8&YVZR14x1XVR%ARo|Rqk>3qy1yYQ=w_O^ZU(7#@`Cr84zE{1AxKCE6V|V#v^7L8Jrww*Kv@wMm zvXcSKZG#Uf#q5jvz9(`V(AGItG*%DrSAg_j#1N(tB!d> zmz%=pxkBAD!$*@_`w$$H)M;edh806-Y$UY@DzCt7EGt&%x{y3@h8D-S^tM&mw%UJFhov zFzCD5`AtRLL^V7NXr&dtQchqJ8fHNsM;?5;+IZB-5>0LA!BDRy69ig}3K_zc#T~B> ze3DX!kj#s`zrOFIM#%z1_Nr81w?(BT(=#AW zaXvURHpoZZrlQ#3)6)uh>=~hD^KrA{{f7D4J303KK)k55vJ>8U-xgjnG8BIn`=E|_ zwNN+*0_`yz*zmoerpAAbtJM?xqmIW)n*b(Dp9+dwv!;qM{+^mm9RhxI_;ij@nzSv9-eeQ+bb z5_)xMYwMkN7xO75e&17I5()-Qva!LYSb;pBZ*T2_d~u%+ad zSOqr1`rWsmnH)x8X}Z*AEb^zFKrFf8j?N|ieTum7iAGg6@oH&9>^U=I&d7L4LR0|` zTP`O-WnSkt=^?GHE%KynbS*BrzC;(AcOs`CBhZ?CS^25B5V1^-wr|-`qeO+W>sTT6 z@f%4o55F|eW2CvqO_|tS6`FeUI~MCc;$rLLVG55=oSQyvC&|Xp<*tb;GUg(hEgx3j zwZwM#A%`-R8y!LT+c~A!;*HnyZLG*La4z|0KG!*Ne)uLEkjV$e`6;Q_@`OefP=1jV zl4qS`n{JZ_O+hoIO?RYud&Fkj{DYI)T)BLo`+nkk)k|@H;3h=3JA@Cb?y{uL4^H~P z4CmlUohj$EKIB@kK9OAvFEvhElEtSbhfY>4*Bn9Z`J)c+F5vs4gX2-vrSUnlQ0!uG zY3lvEf3`60U0Q6uJ3e-l2Ss+ak3V-yFh4c4>jtG;GT74MX&hHw;#?@`eR2-4+j zQQfqKXmT)y3kVHd%@q_4T>Fv(cyh4I0$4Jn!Y2^m8Zy7pUJu{^E2Zmct@)X244n*# zo%zJWA#4H)MO{j#;;yOi$&b4B&TK;1!~o$uuMT*q|1#p79^Jf_xEhS?u)2*~ReU@6 zeScg79A8`)Hw+mtX7Ec4qBBOkJ@A4t9=M7n##quj?15?`OIcUVOj>K<1yv`}D<|xg zKXY{9yE9)59dU14l31yf7g+T=Wx~tXQX9M&lY=lA;!^R$UMF`Mh^O%e-! z6enqka7TUc1enGP->2-YF+Zpp;@ks)($L3H9QXm_YW)snN;fXUMMeTAn1nE`&rQk> zAJ{_=gc$s_!CE04mLs%DvFt;!hik(9)Li|w)e^^=&lsyWd^Ppc>$4kY5n6%;p#T?d zEu$z{RVaPh*N;ByCeL#B8yVeLfTlfI?&N`rxKQQeHnJ=^Yg@=qF=y&HJ3mx+Asm`= zTcn88^R)G&F*4H`Elw5emQWKk9V1a!T4VAUnAbyP6&k!WAEcJbKg7vq<909(3mej<+dTK1N)`T8F5&_j+LnxNKXyf7}*h02;`EZjE@{Q_5d~D;UX8Bk2 zjDrLY&xju!2{3X1`wV#TAtUxb`fhdk|E=#n|3CFzr+?RXvnwkI=c5;hwOy`m`mzrY zNEjZgOuT&;hW8?&e5tBc!7P3ltRfW45`86x($gfB5S+l{4if?oOBjl#Ug6GQrBjnZ`zk~V` z5uf1VGU5ug$Ak1s!u?CF?Gf0T=_&m7x32rQg!`A!Yue7bcU*bT9wqTEH}&JmB%SQ) z=7KhJ=IN85i?-(p*Em`j9r7pQx}GS|CqGH>Sg3y;H%Bif{Suw^gs&dGzItRrs?mVv zw3gk>6kDD-;-r(Oa80H!zD1Ag9(N#@Tw}!h!1?pPbljwOX@!H5N2V`}5kPC;+t6o3 zcGf^YoQw>AcNV8|>U3ze&lbUMxQKyNgcA7~g+&}`1;NyFc2qyom-391RvTUhOa`e4 zFjwA7N6p-;Oh^19;-aPh7I8(GqyAeFcfO_Kin-T!NMwdA`98BB;<=e1ur}rn+sVGM zd|C@|i>cqdS}2fiML$hQchcf6{Egr{!(HAEJ%+H}`ZMM1$pPFhZ`nzqV(1U(b-U<=bGO*TK;?wG}c}#@^YenS6 z83<2nim+oz^I-sNrR61z|4_iq$+?C>xJO*v{Mrw{4lQjHHsNJSuf<74SL4IjX z&$H3|uGYKPCdV`Dz&ofjgbh!}vlj&va&6=i#Qlim@u1B8;}{?!S3UJ17^!#YdxzoW z8%~5h@0=OUkWL6V_>T;`Jjc{00hGeICjP)}-1RMMfyT#sLqS+B0tv5Hx6ZM9k)Xsy zl>St*7)HWAQ~ghKi@R$MF#W0C+5}t;6u2$^VNk=3G62^2@3r3A_!^hcfQC$7TT@MJ zUY@IXvz8zYhb*Y2dicl#hCVsVeI4#uPS*{rKc=Fkfp10+JvALJ1}!S*Omtsqx$Z(g zE%)2Cx*5EF6KU;JNF;B<^t`!Oqz=?0K7+f_AEox0$*O>_pAD`c9akc1>Voer)VT?aF(LE)#HtN|CbcJd1YvRd@f*lUDPBUIiW@HNrOpqwz!E08L&j(ZoC@!k9&F$X9kLv#7WH*)jax zGba<1gGO4~PY78?p*Z;Y!Q0~#YHCxElDo{v;koC+13k9BuauGgZ>>*Ugs-o+WNlKL zw#?)KpXVqPz7x=Nhz8&BoEoo09dz|Q%`HR=d|Nte&!G${w_awr#1V;V*q8gp<=m-y zYK&&;h*sDYt+Pgn$^JCX7Ttxt=D*97%hZ9i_Q8$^fPimtkmf-c40|?za&XxkyQ!1= zB_6)C*6Xz_tc+2Y!7Jx1hrydF=RNjF>=nqf&df$;{icA9_u`j+H_R_rNGue@WY23@ za9>7m4Lo0TADqP{uZk%z<+g#I7n%&)jrKF%qmMJ`;^UgPUlb)VZLal4f02b*zrCgspt@F~yVo zvjoyo6Al3*D(r*!k$4PO1hWm3-u`S!t)VP;3VU79Ca3x1-dGY!y3}o_6k|$WClU}P zcuiv7?Yy7LkL7Ep6)`Vz(#66hSxf6zSvGW_qn&>;P$h>Yr)12oTSv+W(sPaHaGQ*n zVQ8o|^2P#7by*Krl7%ByF-505Dknd=X$M6-ovcK?xrBKJ7GovzKr+j>raI{5o0e2^ zs#1)%=bD4<&<2v#2)j%uAaaw#_Q8PP&i@e9|G=YS2@03rS?|Y-8!Jh73w^mR8hT!B z=?ZMxV`Yyi2uHOsWCyY?2rcV|fUFDYPo^@!KHXC!PJK@xP>+HyasH)ZaB8lhOW&Uvt$Us3dtyUpb@~mkO_yo>+IYUjvu+Xd zyntzUQwif-owL*LrPWKDysE_hB@p@`l7T32RbC16Yni>@-CsyO=G08iR?`Zl3yV1o zExV8C^%|BDK%(A{w9p(4SBg7>p@q+`sq0IFbI~pz*MMD^rt*#lk&MnW*oXZAWiu8Q zR1Hw}6~H=O@;q6?4Q4HC=S25DvF{2x@V4zJoVIBNPg;#1hrlK#&VZl`ldXw~e6^}p zA(~Cmt;8>$WOMAD7}p4qO`>o4Lm*FyUeg=BIe`A{+|zu$#b>pxp*8^GYeBoXF!nB) zFFH+MchgVngUd{7$ycg1ic^aKYuPa^Pj(~RpZ=S2Uh9e9b2bA9IQ8bxzcAf;Y+<>o z8v2hm0g-wiRAI0#{z6E%}+_GcK&iyi^w&&?}+f z+vM*91&htDUA5|uk+#-5+%LSPRW(7dx%keyI#<#8vzOyb)Z3|wVBeh65ZDX+^c2Wn zBPs{?B}!Z8`;!R10as#Osfq-b^fE}Orn9&WQ%QdvvoObAPH-+MZeCVt8fobf1vgcJ z!<);#*Z^n&*x!u&c5)h4oCz`$n*LHFnjl9~Q(TO&#A53)#Wk@ z>KS$`rN8O;=HjX{V|CV>bIyJ9^g9Q?kokP^Ap8;WU?uN)oA>#i0B(Lq%~%fVD2OJPsS zPg2T_kLD#um95t8kKPx8uV04QK(vYSFWzRNCc`TsM?ro2j2w09ug?Y}5vcFPi^k9T z?EqNFJLr^z4V9j^v#vCvmCh_>q!<*V+Odka9TU8bBn>WeLyzgWTmLo0Rr`8P-2lVv z2aeJ;LjU~Olp(5u`We2mf_gRIJi^gYUKQeh4j&*dqm8HZ>wg)vKwidwE_Ma-GSs1+ zofXstfxHYIg1LENozCUq-%EgF7Zc>yI%wycU%ZT88=ikK0rE1cHV96D<6TBx)vF3Q zQ-qU;MnTcrdgEv6S>Xos9rn2q%le1c^kk#TD<@cLC}$mh%7 z_ihFIU&$g~ibX9&x_>a|9v1(EUL&DkM0gRjX1^v|mw?86bY%ds@h_(c@==%%T0#Qb z!s`b?W?ojL$ z<{?xkCa3oQY_!*<3G!=Y{g2OZ zbLK<8ciCD($En<9r!IZ3>qzB}kQCIc1f~Cp2osomYjx z2jT{D4x+HkLqVv|8|L-`)^V{S?aO(Hu*L~O8$sA3Dxp!7iG_~@Y)ZJ6*ZEt z!isA@Ol(ghA(fUFQ3Wt%*TSYCx`6R+pX%qff~d>f@1u*?#Y= zU<3MR;UMr$`}>u)64j!CuhAAn0Bi0PK!HB%mf^=y)FkeFTyxFp!jNaZl9vnmi1TO6 zC>Q3&f2H-(3nPO!Q^HIhg&Cs4^P>aa9|K;%BiqHY9<_i{-cuKVYL(ubth705i0E|# zTjEN+Jg#gkczm-8pQ_(h3Z_#VyS5kW0H%mWDqMgr6XJGx?V~#aqWZ3%(>-@Bp-$B* zM5pq?iZpywvvGy_ue&Ac`>BGtI{f=#TnK`pGmFTihGr=7%&W}W78-3sbTS=gSSa=W zo6dYuh1DZ*A2zcc-X*@)v1s}XolzWmGg@AYJHvamV)Ld*Sl|%YAZH+w1fdo-abeDS zPkre>cN(>dO?vF&hO=Tf&PcI43v1F?Wd(;0*;h#QfLfF#ToP~zGeDMqj`jTFJY130 zl^Hs&zfS@PiF-$aCbD-0n+_+;{M`tJ$8$MBk%8nBsShEN^F?>gn%^k~fvlpa7QZkMi;eu{pDuzX}uB<>IozPX5P3S9>s zyqmdtkeo91xLX&^M)fYO<;9WfX7mUTSrMs?4<>$ccu6&ZOb9*8YdiB&w;y^{GD52S zKENcHG=WhoVB5;MC%l3Nh#Kk?EL3c%V~q~!q{?~=xz#Ax9U5AV@zO`cqwCz43$A8? z4#9Rr7NHmliL{;zeOBf}w;ed&^+KzszKRmiMT7e<=`onA{CM`zke>>!EyZ_VXvY z4O+8gI~eh~(7FtWg&#DJ5|YYbPQcm+blPD~_lH&+e#K9#(X!`VX=u_5P1oUbtkCko z{F5TFxmPWIRa%}&jh(C1`K#^h5J507D9EG>E$>?+_;W`&16|W;k$7D`s{T9^FBRhH z|D6#eRuiiDj7lrfH6?mDBY1huamgElUQ~G|o@Iv|^bQ6MnSxkGC{5!m0fK=AD`Thx z=*!tIx9L<8zw$((s;LtF;wJ?f4@L?p7Qq9qjcKC&`u{N|NN>sKvg@9Lw?T5h^WlII zq}UYf8K2xj;!U)#{hCK?Gqv_jTqOQ;i9PXuetc-`PAMNQ<^1Zk=1Yvbb9sx zh9d`kJrk!$E)E91OG0j$xvr3(aLl^~d&bxC$VwW~@08t|qi2V_zQ+wd++?VKzc5KK zu||(;g{3Vsj~+#lQg0t{247kAO%JSNOkDW`!17z{ypa5XE@6f)&h0Daep-y^a=+ad>dirlqYP5mH#9n_17>=L|XPDBVf(tOd3R9f| zGyNs$GRMQIdSe!m`$XtB1A4bzwA2g?T}{OIp5C*^ccay`JQ3GRA0~ zXeW`UYNyYfLCVYHe?6N?{e3obrQ3YIcG^=8PhJaw!U1M_=plqto2zuwl}|_RII#H1 zgEo^eEO}Na>X{L|mJeq~cMhn-lRgXSRS*flA*RDW3x0A#L-2CliimYPpagHtl4=<7 zR=50$*_@_lh5%R8^?gy%gZDY3TUNb(1fWtt_QzsvY*{^MD~mY7N8^lMX{L`f11BH{ z)!PRT;hqg6WJE4u?vjf-2LCZjkMhZJ*vdBdnVM~e-1-(>i$e*sL`4gD_4!dGP1J=f z0Dz!X(3PD&Y?TGAX_3$O#deBsR2I-r$C_B`uC>hd&T@cQo>k%-H4hT*@rsTcLAtr? z*EoFZ4jmn-D1rY$cDYGOGwoE{r{iM~8Sr+o9`xny?-T~Wd8wdYC3#Zcg%aY$hKiDF ztJu;+r@88(tuJ0Ce?wU!Za1Y0%}Q9*``@(}cRFKyaWwL^ehZ!>GyVnRSR}mjd=aeJ z!ws;U?sp0S?j`^&x8@jR^JuqtWhaO{q;)E3lhI_{yMUkkg8~`ncG$zBuF}skvd3_k z*sK?;l^GCCw_T z-Es?mB61gDIkvi!jqt^W!q%stuw=g!qzz~)%P`vF4)I<0x3RV&@is}cw*%`6O@E-F z51_i9nl~&1@E^B7>aa=h)aqL_WZ=S93ga${uZ$Q|fm)+p#VlKV%^b(0fDJt|bX$#X zaqmN4-z?YBcDE8KQ=~clqrZ^wR;^(^5Q62tU&qU@I;_mI)o37iMB;~9%H0XP#k|d; zz8hjR+4&8jWnHsTDF=)f#OhAGV71e*Hxn%^bm}!g~rT=p6Jdk@HOf zWUUWGo}PZ8e_udz&}DP_cV{88^f$_RoF7$UoDG@Hw{EunM2Ne}NTL6x!I-Uk<8H?q zRnoHIvGF7AZ~k&-CwT1@TP`WlEgqUB5vA$z8!Sl+_OVbm(iiSDco+GE*m8$_quYVt z$tSGiGenka{qYp!RyD6HSa>;ozxRmKeX1lV+VlhYA6W({&>WP_ObyRtbTRg$gs@Ua zN}B`~CLstp_Rf7R01dH2qcAH*3*(v$e?y-EnHL+F6<1&HtLz?6mcc^)rJ(#G zkG2=lq`%*ZzeET0${{G)!(7%#4#ZvQoIVLF7bFP7(nRI;!q7zV|0*&Bwi#M^&R%^g z`^6k(DK6}18isHmPq|DRjS|MqWjoQpt?wi`)u4LKW9w1bG-L*)Z?|w85})!WcYfu_ zArapcs%?1o0|yx8{qrLu=BC6Ve{&}|U4}ku?VXjI_2Yf=&`ZvUcqU^kP2}SZLi+RA#2l5*E zY8Sd{ezaJ~x}}yHgQ9;*3>|?bh5-%Y9Lz^5^wNw63ey2| zAA$_UtZm$5Mo=!{ZIX^ZX{#Ps(z|vBE-`MSb2GJG%6Fgg-3G!^{e3-7q1(j z4z0ZD7=C8BxxmaIdRg)_#0O9LsYc{&Vp6mlJpT`G6!|fh>Y6u27wwTg;+;$Sgm!-| zPK$|DPAr9Xm+rKhBSX>^$o>WVy#Kl1dbuTDMxZ_%h?^e|ppSVC$ce@C&=ok| zA1FZ@&Ym#Ek>HCaHd_Y__V(uMF@Uj+hvi*WTc*}CGnOSF;cWKUU0U(RSiS@^1SU`- z6W0jphHEbdMrhap0fh}L5<4V~q$^rmM8ncTk-MFv7}KoUMV6ik?BDAMah2h$a7#lp zk*5&(tkP4=4nZ%nJArM4ibwdEjrY#`b6`gm;Ef=Ec8SEC1LJK>M;fo8KV6REW^iR* z@wFf+&i2um+cpJms~h%LE8?%V!${11YJ5#~q9lkcD7qdXl?~k9@vSVlQrSym&TzjK zGX(KhDdLVc*c3>Py%=}ut#(;#LSjnSfHkKbj=jtxU_ytenMo{7q}W{{|IKT^6&Y$r zMCcC>_Ki8%#{!Q%p9m83)@0hOX_wcgMtz7L0!c`UGIRjkC8tGSXdCPt#F?+h^=Wt8 z5)y@KUI7%Snrx+aS;j$bK2%VqmJrEpYTs0uaT1tj9xPI>Gzwij?wB0vb(kka7~mmU zGK^U0KZvI2=3Z~;WO-|MmfwAU8M;&N3{LWI{YFY@w9hCcP5B7hUDj3Ju1-|SVF0Li zj^RIn7&r5`;n`JEO8*Tq;$JTB{j$XuRM0nC%C+e(5e$lh@vrW}eFd&qoB7VU?=eL8 zT|e!!9gRsFHnWB>1qm?sm%YoOA^!zD>TyR5yy9|M|Bi#g%v2I|FW}4<3;87LPStym zM>SOqtS%&pTZjF(>OzxD=)yK@!T@Yju{f~xbElI-&k6Ui)3`qA;}>r!*2$~GiT1L? zXZzRci=BOX2f_kHyjgd@Dm}98xW}u`Y)}I7O=6bU1k20uw-cu>R=%GE* zLO&1Yzr|iv^Wqc68ib+HZ=33sYp5zvMZ|-hD_FZJaNv=!|R)wYRNHP-KWc_t~4w0I<_1eo4LWb3t4Y{`J6Gd z8F1*vmo()kctyaXC3&!E6S+^E%rnAmN#^h94BuO&e7 zrXPG+5U!uau_9yxf~MH0A!K1PklF6oKVz=eh~ls>18p}~sumaa1?0IUj6}YPQ!IC1 z(}HyQGKO;)d_KlRR*Vd}06jN+ckPrRhtIhWZgh5da)$nPD7j|7=Z91{yW;)-{m3}{9V3A$D)fSZ*V;A-@?G0wiWjVW| z+kO>vR%Wx}0C$<3Igei0 z{WI(56fwnU+@8J%kXBjeMV5gxX;V3c1+DtH0^_S^UESzdozrrnz7KU5!_l9-7*8`e zQwNp196q%0yni1D;N`@N53yl<{`tnhPCT6!6FJ=$G}6oDwhTHP_-uM9$^2>>=c%|v zzJoDAFT%j+kq=pDm$atK!1FK}Cpo-^{ve)*xPjO`I(IO7Y4tmF>{|7t6HLQnhoRk!yC^VJ_a@>%D?0m#?xeCWh znZdti38W1!Kve}@+nWneHD$KkJ}mYYbTmu2w1z_&PeY2Cra+8)T@$J zNFnjaNadEaR-ikze2>wF$NQ_$kzuJcnM;@r(Ca$=+v{rgR9kk;#9?4%V_;RVV1&kA z9M8moq;C~dn2AT|8fFVLr=LeeZku1)??h_6B@cAmP_YxY5M2^mw{&U(!zI-l{82>= z{MI^!ktuE+*TF8C_8RP3l`Vml3wUX$Q=ZavO|aEsdTdc@~#?!{1r3N9_^J{K59%F%Bxnaf<5<>5p0*Qeet4@hTm zS)UBFLvrMVuqZnBB(#&XU(pwkXaA&A=WMOHAiS_86Q@RYWPdvX2A!zn!Jd4Zvn^%I zqLFA9A6Mn3ppG+SnRYZqtDKu#7obdYY@v#G@BK}b5nC5B_cZlNI&);gCt1p`#EwX* zAAemaPnc2fyDu?%R5N&fV7txyA{zTlM8ulwDX5e6;yR zZw%Q<^+jETKtZ0Wjsvh#S=Pe%7!r5bI(ZUS+(8Os2~ktFDB0nt5MkK#nK>KZEHK zxSFN#-^U{iYa#tQ#S+U2W^iIED%(3|ug!Do0_A`Ms3JTXRsqh*DAQ`!44h~-i;Uj~ zA~2I68@i<%EF-k*Erm{>$uyBL`!G}I3FlrTYCZ=so1j%f&P!1>BE3LB=*F|yIzYd7 zRs3m$c40~6y;!ehr2Y~qDub+)q2s2b&dxja0#>W$*dSF_uPdn*0I9^%blkfeY+_Uw z{CD($yb^xYq{BwKAUEK-y0IjTM%Vo`@YWU#bBngaFWnsKId&Ipv%Myld`dGtv5}j; zbfZjqUEghCCW)+-97b4<%bD*}s-Wjs5K=W6TsopBiKvk-LtvzW5-`OBQoW+hNET-h zWWvz&k?<-5y^5|@xQ5%?D^)&QAO;g733vS`DNzCxGTPo#y$h#uGRZxc4(AkYXO? zuaES6B@z`HuT$X-V$*Dn(EUucJY@@ajv>OUI|pm44AS?9Jlqvb-OBNF#+Fi{jm$w0 zReF$kQA_?rOh>DT66n2Nt4zKG0#J|3kDPkM&_FX|nxrGMpLp|W_?l=?5 zmjMN|A9Imj?l)AOshcQbBwdVPH==<0IJniR%n*&tqsB}1IcKS@hkl7LkDv;;TBH=v z7uxA=u>WRwxJ(DUVjSo-B73=MU$_h-S*&D1bK+IoN~`HjDAZrm)9U|3{fd_}8D~)) zlTVbYvIJim-Pl_S?m(J11fglb#1ZRe6`+P4B|8lpC=9DFXE0p~)516OB2Izi zVca(8I8DQXS27j#1gI@_sVX+b%Mpxy&X220Dv_p(L9oCrp2LT$nb##LqPcMX0by@j zqG>QZ0}rp7L?YY){Mj89oEcMLh%8M@LHv`ynuaYyA>L){Dp7jfKI(+pRjX_^_nd27 zaG2e#%%nJ#HhO^k=zKz$#URT{+Ov+#AmsQ~a91`Oqt2v==j2c(Ar+(Bgoh4psp<5>jo&#eO zQ=eLzdSw(k8f*A=MrQF#u@%sUqsS{-^&sxDCsmi%DGd4)>;EhKE|?skC>WbP^aDN};GiXN_x!GG(Lzx=`YEdQ53*vav?KX_yb=nrNj2py<1p_(d0 z>>k{@YBx{;6^ln%!9(JuEmKt!_qL%eoS!}XW2Fsq9OTOfJgxW$5tHp^1|O;1 z@7QO&>Gg2%{SoRcLmY;w6;(vAYpMy~KtImrYr<*3{LF@2n{neatQCwqBjgG4)oF)I zkWqYg|KIey{4j9WE zWJcnzJ(W4_i>aJBWoWOBF2nno(&8vzIFa+K1nH=Nc{UtUxp00?;WNUv#uFcov`}V$ zhf&kY5ye$VcyE3i_J#|Y%?6YBU9$yN8EnM@6^82)ViC*v-d-Gmx=o}PlD~YyX|%%P zwc0c%-3sDMC?WWX{O=MZIkZUMwoo6PD_{xIu^jJxD zOWKN!?j*b)&`H+FtNRITK}s0BncJ(G^5sK3aV!!sG0IhFSiC=*JDhUJsBd?hSmZ?O|~b9TW02jUY$JzzKDJha0IYhQKz)W zr=rVEF{1RUN@SnBo0N(cH*#MBwU+EJq5~R0%EZ&~r zA`&W)B8sh)5{h`WR%^vzL8c&2`9T;F<0ga!!LM0`{u+hzQ9cq?Rp;v(`1!o?bsA++ zc42j(9V)EEd8iNl^D7u@H{iGE6Mlm?0zYM-RvqsmO5hoqCzO%@Zc_rbx32C|Cj!cl zl1j(%vvi1U#Nz3hP}A<`IE6cD6ywK++-!r&h@IYiEalTi&$P^Fu>bCD^((VVEsKI6 zK}sw}o}yNjR*!keJ@=lp(tA`=C8r_#ySTL$@=tN=@#&S98g3M?Sq=)o9H?x9+K;mj zFypa8Rd!6(m>P`VAlTE2IOflQ)VD=ET-VR&tZP|oR%O({dS1ieG$UL~M>caRAk$S6 zC?nJ9v?{^^yHab=|8qFW3qgNVLZ*ZK&tYwc3l~sCtO5Ja(5%)G`fF#WYW+XE%v$gh z{W%<7GYCvdfIc-$ip{sfz+aC6@-))AP~T=Bfm_dNPD6Z~r5v-=--~}qSX^q;F9R3R zC$65!>X4{VWi;Q+Fr7GaB>HOEVw@2Ud4!u+b+IiTc)4w``9> z+5denW=>$zR43_s-xaHaA^iFm*cYwEHy4<{nbD#Lf_c+ZX1c|6p*~Y)@QT4+a^Z17 zm?Z8Ccn2pp0gYLXGh9f-S!Xy%OI2+gjV;iB`Jc8xEiXX&lcQ_IqRbZ&@ZtHk(l0;; z$JE}qhl+FCMw!>69|cx#Q9;-ZBHBAV4ocP#zgSuxkxJh8GJ(c^{7F6K?0rS9!+TwQ zavqEL((UzRg8u01>FUzIa=0ug@CvZhChA}y+Go9SEFSAzCnSNQ$ zYcsq-A*@8Aq#W9>)RPm;LRSOu@SAsf)r40PsW&pWKbGHI^pzl`(i=Zt2@~SasrEIs_ zW0oYK`W5V@?J@4v$niQ-Ke9H0mXStUG`s5jWZ0o1;9lDkn;?YK;F>*%NmCCSLngCU z|0xT3b>MnAc*efFf;VdN{B@TA@=EyjUI4uDO^J)eDb@!04=-t>WZPmBqtOek;D{NIU1VpQQabCI08(Khr-oSW*C@ z?(xk{tB5O3#!4MUK2#Igx-BmzinjQhmj6nM$8<}gJo%8YXsilX%0O!3o2(k>N|+lzZJ z*jrDTbxCyLL6AEJn!VeEA|=eU&^nXs7lpe@HoCmAa7393;T)*ZhPRFQE_*??fzB&% z6HGysmqi6(8Q48Pp+3(p$N5AX=%Rn?$p+++i3!tZD^0KsHT5swhs}7C>2fYW z`edecFZ_H5y0gsqww_DH8}7rN<|aQUBwNJeN54k zuK3xn9{-25cZ`l~d-sK7vtz3}=-BQ!>Daby+h)hMZFX!Y9ox2@-0I!?fA&7--t*xd z@0X{lRy`AA)f#KAn$Hh*Pj-sLYh|x@{Md$$Q8ZshMXecKEeWDGv>T=!v-+BzSJ6q6lTYJM!8>G)G{vp6x1_N~G`ue85-#9TMnY@b1aAo*~uF>dlj#?0A$cbM^IBwxsA!Y=R61cXn z_t*++TNi}I>Ye9gy6#Xv1WYU-+OiSH7hdxV;%Lqz|dN!9h>vy{#C14bTtjS@yi$M z)42$Nc}OqDD@T!5cdg)%stzVU9#YP=tHA~qJ>LXFYjW`?qsAd5OTY7#2?R)AOdcxPwg_;aTuY=o~MP^?)Ulc-|XkuEr=3lIzQawI35Gs z`f~2Eb3aAUZSZx}gYLa>#c2~}9(>xOycxEgTh9GN=`6>irO>ldS{$ICQpKwPBKQRx zU^*u?(~X!R#S@#GWlH_pRby$*YtKoyW`SuQ^8*MgG|2EX={#n1yI{DA)`% zo3g_;506!blukCvKdxxG92uL8RjP?cU~?*F3-i9v&A#;+YxyY2l5r{z0aB0ZMJR-> z&;YYFuqo)@?dG#lisPlg(&RS}kPMT#Rap!`N5q0_?fl;cd;#?uN&oFOaqd)h3B1WEB*1YmbY5lcu z&+&k$ZT?N-x+M;=Z(riZhTDD~i?dnQ`E2AwcQK?MOZZea2%9H@*(Uq>Tf!n}~5P!eIeluOd%m!8`I|T&T zRLDHwmBR^>pu!d$_gY4`6NYM<(}G89OsD|S&XX-QMPj7Ah<<+{bHXLE*c&1y_vYx( z$cd_5yyejA96jIYJQq2|P+zdPL;6o`THur?doe4pCwB2dZ=p$%7Z-gook0z3Pt`iR z&Jn`=X-|Acuq$nNcMXx)=8c*Rq_drqQ}67y9EY^iItHpa@dTL=gcl5(1Z2b-g8-h{ z2m~Qx|N4vu#ij+l4^cs#7{8uE*D0;d*F@e7c7VBC;pQ%d*V|?%a8#nJp@1O@utffO zjAFIVZiGpWKH~+Gss@$tVN{ks(@la{O%M(^#KAsv=9;FTBcg$Xkrqq5ACY zrJG`1CtbK>#N%#1o$5i9r)v`CwwC&|g$Y1qd|JCOHskkS+#| z&UM{XT=HrTAp9rs}#PN1_{rK~4 z^e8w^N%yW|CQgyu7~bq{QEl${s$$3K!@=wMMD^sXQ>|>&O*4%hK2ihMj4_G^_H#oS zB05CL7rTz<%4f{h$QsRoX>fEg6kWd%=!{A{RQ8sdJWR(7@O;)h{$ekTEyY<`uR&Jr zBbhG^=17&Y{Tdy+pLKW4Y1{Efkq06zEN@Ep$9Mm%n4&X!0d3})5RA_n4_J%6_52TU zQCD<$0$Pv|Q_aYE3S~v)(Omo-e!7x+$cpaYc*OKZI>dO<^la4d%I&InKf; zQPL~>K<+ARt1916VfTnU?e|SrnH0wu=tUVzQqsBS0nn@g!GfCe>?@fTSWeGhMuG%S zsj1P@un2A0`RusG7H!`4F?u)-Ov+~)z<82V(_sHStfEZuiJ&+z{f~f?KHwKcdT8=b zm^a7xyYVXJ;@{bIYLk$Ex*H#$2I5G~&V%MiRR{Qh{(jwzON<2ONOkN%;7D!AcBSJ; z?Z?^AD$m+##qW-)3-W>>Tjs-d4?~Is8Ei=C!$-r0-fvsgR_D>*E4&gpF}_{5QswEr z;T1&rum89tRXJXN(W}~O*!Z1^4Qu4EwvY@#*$Td-0twr7kztim zZ01~3YbR6Kb6Zge^krfHk7uw&N@)Zt5n_B18-n2%L7}A)XAekMew_*WDlrA&7(XbI z5IR37eON(Ez5rxF%!ReXr*c6|=Ls&7!kG}=7|`Qn^HO~lBRDnJJl*k;+Eb5HO|6pl~%hVRPz7n4D6?Ol<9-; zU;e@WI0-LrGNGf2|LqKn`uknIR-4ZsZ{Z`Y?*BBIbNlvppDb3uGF0HdU4z&BX8!mH zXDP)0gbORU`<>m84INe>ov@$-W$RwG%k1^hNM1$HwUPZ3qN(}7=eKh(6KNH)`JDK2 zQ=#h3%j)1UHcg5VfD1LiD7S!AX@hn18QGT!L5ZNabpR!wS{O7>VlMYGXc>$;^uKSMRSk=`MT1^e+o(k5#XfQbkRuTo7HRKCk3Bcd4%HXtE6&_U zp$+;UBlsVOi{3X*Wi=ZOTnJ`+e@Hlxh7|%~Zyv%-2JE-?%3m!Z)4vLWWn9=i$SI}4 zzEwiYhnyw>J&r%k7rhYzA^braB;OOr9S$P!88Re>J@T^+l!;M5(Wc*L-9d1;cj{1+ zX)<*{bWs?-G(gz2-!TLIzW4q%0rg?_5g-PkaTas&*=HZLZ{n|p1~Akrx1?Sv!et*#4-uy*ethr=Mstdc}ii*X!F zze5y$$bda640-X4q)PC7)I5CH{oBpJbhpA(I4_Y`oZ%8znq&{@`t;L@Fy2R~spC7bY;<0gs4`gh zVSuUqbmpknxYX->oKnXufLve6{PlLuBk{B^_lCr1*9F7POjgb^FrbYr9~2#7zaYJ9 z&UvnheQLna8klPfq7tSWgWT6sfekCQrYn3r6qFc;ac8}zX`oGZ0Uq;e%%428A)a{U z3W*#NGIl8$w!>)%F4-ESlFU;&6}em%o)avQe}99=lE&bZfont$0`MZyWicK|%y8#T z$}0^kSFe4815#4Z(ST-K=D@pYELYgDcEkx&72Mtot~GuPRRQ2iI%! z&I0SAQK7h7A3a|R#sSW&gU6B@@ZHXW7QyUtRKpfasO@$r7Wx2{BR-vC!D)-W$n^`3 zDkrg%knf>rUWI60+6;Tvw*Ip`N;L*X8&RKTJ&{}hOeAgn?wIbD|(NmYM)PcoVD2IGO(lh%MWhV2&?Q|Y4Sv`4L3@+02 zQcej6faP?w0iY!Xjy&sbs>mXHbFNCkljf!Ni6M|p8i->LLV9(Ql z@69Zs#f6psoMCa}5eZSE_FhhZEpow<{40{HC|8v9tZCq^Nq8Fs(j>}A7y_J8f!RMs z_0XaRF4-TgRE-EfXpJzeZ3$tK^gh)^CyZHQ8ZMZ4vJZkeZn<=CQkv1t)cGe`1G2u% zOU-~u;+RzTry6UTKFLL0$LTuK?-1MOi{n|XKbn*+&aUXJ9&>WCnCf1pz#o-+yeau- za!Ie8i$Nc)IUw|LF6a*T&kOmjMVD}V*3=2^x^?t@ovd{S6O_*y1Kk@T5)_w^Zp*?q zfSxDvx(HaGOdns`ZNls|yAl)F!}qlTXlQkkmx(g|<+JrLt;Mqr7nPYCtwM{>*>c%a zb;YZ-nG#rh_<5*HbA}^y2u$$FWd)ZY1VqO!iwU!11P#)lS>@F7jdHgK(+q~*TJXXQ zhVL7+Z{CG2Hm~p7SvX4f4tz@}@!Wh%_Bm5{%J=Cr=MoOuqxH;IQELrurC(wbBc3%^ zUN=rsD2K;w?4YSNMwYo-f-ovmfXR2(58E$y(Q9qOnKW(fB5CGJUr32H9U*Ic9qi)j zT;#Eb(}snd?{kk_Ozv}j?uFMy8t0AD4i6VmYwy9{;$5$#4QV>+0*%+?745dQE5?c= zJG|;&pKAjVd-^O9DUW--Ki;@A_yL+)5qL%w=aW~d?v&cL%m0ZAi7$*{7d>;|%l7r^ z@v!#p{q=Tc_7Vrf+7WN}EWw5Hz12}k&?yVeG711Ps(OJ>}pLc%!nEaxGq7oy}bYil>E5Ymz+J$J&IRQ&Q?gA*mx#h={GN8oI@>HD`j5Sz)QJ z-C(_Te9IxH#DHsHk8mRJ_$9XI;w0-vB1bxJ)RCG5HOY#aExtez9L zyf6u}=Y}X-N0u--O~+WhVyAN)DrXifx@$SUs#T}xseiI}oWEjInlnr) z@T06A9=1-UgE}b24?pe1q8X@bA}#mHz-#Pz8E#_6(XCm9w4}?7XB}E?5$Q%!gy@wX zAKGACSR;O4()Uiw&1lza@?!ZY!8%JJCII6woj7RDFP&5kGVFAB_RnU7 zyV%epge$4e{~l*Q^fd%*6?jdsjqP2l^nP)y-29SSlzJ<9t_wc%>8S$PQ()*%X z)P$ky3=|{-j}26TCY46Vi@lb5%`llDcs&4D_4+0HPF?PGHX7VpZe3~1>GIj6>bDsl zH>eNFB`@T$Z`h)I3}@&S+%-9a=B2t?71`IXZMD#;8q9mrp7zQ93jy3x0wt5Ty9pZY z_vByQ+XQ;<8_oaXw-E|*ZN}EBo-WaO67)BbDC5tcCMqR#qU3-qAyNLOxA~|5*W`+o zA5s+bj^!O(ESX241{Pchrt3iUfc=N!#&sGCN24m17!@smMPaYpu4O88#R(v|S^kUQ z#sI33Ppm+!)Y-2`H+97$^buZZxgx~3gm!b2cJyLFmP63lVhZ-WRNDl_y^$hC8+6ow zFf&FeSaWA|KcoI*Ht0jHTOBOx8}u7{S1J||kBBH^ySLgUOFKe?bHRo8aQ64|9kvN4 z5+j^9Ga=8KRcgP9%vi|8-dPD{9)v216`Z3}Mj>kyS8Hbgz0EAe^(pU=M$B;>CvzWW z&1jt>=TS5!TGox>oPzE7xeat-WgdDeal{d7p^9gl0ItKYgqiKg4*qB8jqIjWw9qLzoaQk*i+r= z9iZv`uSG1+?)vx50oWw)84dNXh(xQ2{Hb5LB9~Wd)*2bwp;mmM(sdxgW;8}5FK1{- z5nw>hzHxTf1L{8NB#juUx+wc*sZHV5V*6+YlM@@Sw?~qcboR&Vii_>j&co3~WFH-B z@(!Lgl6@|rnK({()IaW1ZrL&FWz283geOKUQc|Q`37d1LoDQdJQS6^e?D~l z)|kTi`Cxy)u8$1RK<8f|=RVX^P$W+sEOw}y$pyk10h4hbKo+o-!Z|^=D;%TE^eTcct*^LhsxUTx?Q2FropTS( z(h;eF8&Gf){2+{hp)A0iWg5zIV~C0+{|@_d_c?8zW8qD<9`!AHdM+UtiDN7KFSzWICJ;+RL+DZ@bP zY|()e5aVe8)!a#VF0Ap3e zixJEd#d9uBH$pXNUXg`g9a{EwRIw7tk%fYP@WY zFZ9B`+&Fj`bU>9mghfBwzk1|~wL~O%CDLm2J!+dBQputBoTI^5r|yc1vM$Jx2YZCD zJ>p`_#$_WsuKuV+d%kpu9lw(0$GznzHeU?Fd|Y*;8h1<(H|Z@_BLq4+@V`ztfydPx_y0f}I`KW3SjqrnSM7 zc#@fYwTvJ8C2?mfVR;=#DWV6&Xr^`_fnVa5onQ|VI&kJp$7fBcXP_`Oi*2@L6QoP9M_Fm&h_$4T0|ZE2;z^ocdJ-PVNrJU8jy}x7tU!?z|Tm#>t4E zetl;*TweV;pJrf_JM$y$<5oy*lxBL#GO=yyonqTsSY?6)P;ApAx0jD7!q*9dPu^a~ z*%uz3)LXEoNCi_#m*ke%nz`HJF8w` zt?N4N7NZdUx;-#_qq_P+EXU3Nq(7NujFsS*Ox9o!buB@4%QbO3fdFxM#%UD*PpyM% z0yi`@PP+?2{9xPVA z)KyiNR;w-!j%SMC`6ofrYB#tOe2=D4D6-Ugh?(Y|;eKsYToce+s)TI~hAek4rq~-p zPhVc0_7k1r#?7l!FKrm2K!J-7fcOsG&xVl<##y2!9#Pc7Gg9OCa33%1h4dXmH_4q8 zghDES5_cs4xYDAf@j+|pca{6&hWd|DXja_=K4poQ7g4aN8HX8H0+DC?V}Z<978P`j zAMLl5hvtkFC|jC<+EdS{(KR~8n@pPU18fIk(A#_IFNngnv>IZPgwVQg{5_6x%eNCR z+u?#5Mb{PLU2|AZbYH&wkTxB!PeEyxBRV2fBu;>Zuz>h@x78Sj$Y^b<2?%0OjT^CT4b>r6_Ym)LgsFaV`;c*g(JhFc;Wi?}i+@+xn_&uHd?GTf% zl$KhR=uEVt{AE5=1-j;+q4ImgC?G8#rZ%zeN``ap3G&J)@iwxeRgHYc#zSm89P*S_ z*l}F|eo*g+58+H<<6MP9H2USvJE#(Ly}d?k3;dRXm(G)svJTZP6c6vOj~{#+(L7u> zVy7#*NQceVqybsEv~B{#-8vaz^T27d=5f>B_KHn)Y|p>s5%C=|vzp)@7r02r@?WB7 z_`U&=CO&$3G~SKTxpuLYK~5XNIUp&qzmwh(@=W%xCcfeI+ar`82CX@oO?DaWs45x3 zpLj9F^SNPdq-*~M_Gso|Q>~*m*$hU=oGI40~H2h^+h>v)+*|psrOgDR_M_z1$y}f9wj=9{RO5BCN0o&_0)Bi-o^Fu zTCwfH_xA8;`O@RMi!p~`?NRaM7PNB}P@lXaypS zRRXK;udM*U(;q;SdmVQDuiJ9ZxJ*ZO8ff}t#mDLn zTtK=k3=(7@UkEr7EUzxoZ;R01MxlRx86aDk^gwbTSs*}~A5siNzpBl1@X0M;gjH_9 zc-vHL9yX6tlTG`Ht9t|MyIsRO_aM96Fg`&sbOHsRXlCp;800 zRhw7B>e7>nftSOcv0Z}^1|3i((@+iqV+F9_E4=jXGVL2N;DzIyck3XR~o4dct8e|?Ss z&TSx6gJl7pRzs=){~gw>(|k?NSm?lRdH>x;2@&S6%tD}PweQryvvz=V*{{5~f-pqr zyi`Cx_(LFl*#5a}f%*U=<^l-<1Jck0cmXr$J|d``ft*&ec>s);+pu}r{riz5l>lT~ z?UH#D@GRnQLLD;iXF~1b`g8Mh+bRG z;R}ko8Giei&Z;m$>R%#ZkJmvmN}%cW#b#U%gUnLDc)J29>o;Vj;n+M zp=R78K_ONeW%y_N+zhLC;f5g)mfP`s*n#F<5f^b^0ZBPx1?_P{QI0M7#&|(qMA>e^ zu9?ErI7N-5(KSUaZ%}3Pla+fPEH0x&cxz7txY7_9Mq6c3kc41_yYmlaZUenz{hi?g z0go~80+t8vJsTm5;}(UZJAwVut(U_X*9WH)qBwz}0Dw5xjcedoOLp>M2XqGY?>Z^G zew+E7g81i(O#Z*N0hh#gh~hK}K0=eMW4U*>$MKdr^EYc#vcfMb)3}ch8?TJj9LiE= z23>WZvL>!2pOtQ(m#Fi2R`+oHbUS$}EU&xOJ7{l!jOd2HN1ms9802xPFB!PHIWyd} z%`ceaowx#dzw+?X&KF_CyBq3FNx1YlS{|pdmyzZQ!nx%yb2ZEjghG&=;F90Kg$!gV z`+p>J$LYBAZdfOpuoW+-fcdxGx~=C;1fUOY3-PJm=jEu`6lq6LB70R?Yp6U-l8=e( z&_zMCzRfYsfz7qVxX{A$&|>lMPdX^~hNg&H2*M++1`N59(V4!^MOsn572q9Pn{r;i z9Q73Oq28^`7LwAe)V>X#HE2_{cv0@&U5hQx&XZmnT!V@Rvlq@V^pT%Lc-xs;iEnAJE$5HMZUJi9r9oBSUuQ<-r;jq~eV~s>G z07;fb7RqiTXK{{UjM#bBaG=8%NsaUeAl;6d7v7~ywX@Ov|kG*a3AB2|FtT_F(s#4s4A=dc=TA?0CGKI%sNIP9@?F)|NM|7)p_82jW0|! zFX~oeg(%@l3P+lug42_QX`Gq7MgQp)Yjv*RcXeYaiDTy_Y2)~@Cgeim&b7sqYxbn$ z(f0eCGEbbadYmwi*qk}{sbr@a$o;k+Yd~}OJoqY;b5>2qugJ~Qmb50CDgC-ieS5XbrAx$!&AyEdq*+^7h>wHB72ZlB=}!vz;i zd>oIHnS~b|PR^MKS*JRG3{t9*c!N>8gPC7LDcwWiG)82az_MCq)`l5b&cgQQR-j2Y z!QW--rJCO0G)>Z--Hk(Xhcuv$s}zc%+3yrm3UzLru`n3?|Eqh?G!E$IqyT&0BKB$llsSF9uR!4al#$0OiijEc=5 zi0Y=60HDHR&{x!~IPP@U^CswGdEuewmplXI~Ugfc_n%}5&*N3*hwZhxJ-h?|iN zWZ&yYPE)01_T3p`IUA+_#;4w9N$br4A3iwb8 zC=`<1zL0^u+;D&!U|H9l8efwPT#v0~1!`;hcI@9h0CKk86Gd6IYzg~d0spnEmgrC! zqZ9ZxL&O&Vhn%^5aNj~bX!W6{v_EI_|Bd7u>bNP5acXPI#c*mf9}bBQP=JYdLr2q? zPo%U*x*0;>8&L}T;8Lp`nPBk^8+cRG&M2g5uE5BMgi>Z+v41qkisjN`%naZT*6*k_jz(-?P{a6Nw#HafQa93yrVV# zQmb%pd=dwl_^NnSw6L>w)cHhZ4JlRsus(c)&q>}Xi^TR{C{R_pP(!j=Q!>g5#%um1 zs!HL<(UEilT>mjfGSfz@s}TkZ)eP2VeK3+HGlYAv%r}S^eN=etVT0WSclUPQ!6(yA zydSGh{S|g43A5n#qCf20GKt?R7RJ6IY%790!u2BjG{vU|XZWdICG)eQ)ASy5Oho6K z9n#H@FC3R$0r|H~d_+uSV<_LIXN|v6XGT*gw?Ok8(Fb3oWWn7tlN60m#`#4AUX8|{ z2ChyJs6bXWJwq*#EVN~j%@KtyF|wCfz5dGHMs^gp&_NNI?G{_P(KIdd{Bg!tCLuht z@_ntn)}feYKSL+73}J#LY4Ltm=Rl2#ArmRDt%Wf4jVw;(xQ~MbcDe7?+L>8x%UAEf z(l&F$BXR9@gzJ6t{EQ9?TaL5z=ZhV5SuX=$ocZi*p-w<>gv}4x_bgi4$y8aWD;6_f zxLfzA^}R}p-IVky$< znLR1P%7r}?*||-$XvOz&&)F{Cn4`5N1z>>1A4~B$CCZWG^7gDh^Ru+2V<$Ut;#qTy zfm^X?;jigraiQuWtU9bAEXgJ)MnAD@TaXn5KOe&5WmMg9C(#LVc~5(arl#U&VT;^^ zGcjHJ(-ygfP13d%r?^UZt52)Dz|F&sdl7Vo1wGbsL}W;n{`q8~b!~RS1J_7TC$eIt_md6zFKyqPXj^T4*I1>cma$#^ZHXvldRW802 z-B1KBH$uO8 zWnOh%Zgby85EDwD#-3PYUiB?q62R9clwDTU;}_bHmf(kJZOg2D>cAWnCY0sZ_1P6b z0(u9|$^MN!pk4ld8vfP#KY_RM=&ew<)|g%445%KBaKS+wS{gO&!?uU%y2RfTJZ)qD z6+s|9@$;UGAcw~DSa+&{7C1{M9}R+qm;bnR^%FcxXLrD^4C!YUL-q6+lL3!t(XG&O zq#*O;7z^(koIq%3iSGz{{I&c0tO2LBD1nwM1%1=}ViVO$oDENrdPWxsS*KRsTM$yH z5DV&QCz|a1IyWno)?WGs{Ty>%7GCPa;DABUS9NZ1{x#x0>*6a!+6LfY{z=b1>tWho z6X7EZ{A)@%VswV$ju0*F$96B;_LFz4K-WRcfoa~R&eX!(#`IAF7|D~~g7SD# zE##d>k>o#5%zGYI&8uWSYln@$w3l;^{LY3hieR%KWM{4A)4tMH8@@!Zn12ZAatu`D z?2h`Io1O6Cz5zBo9Fp}ps0AWwCmsP{;lzBDT&H_3vA$Bt@G{IK+1IXzJ#?M}7lgG5 z`>p}Hs`3MI>B!aYa7uPoEqzbs#*=bg{3OyM4^XREt&~acTiDn=Tn78AD*HetBY9`36&N`VpnS#m9?GmLP=o?(rR{p0|H#-Or2Nj ze^8?;#J7@>n4gFCamYQ-0}8tTcPZlx7i4>(`XdUpak*O z$~Px?YiPe7eT{*3^MGTJLdw{caPF&X#tPA~Vj|=*^&K#(6-SCYW|#n8v9>5{lF%=? z-^mT!h0^fx35_V*r*}eColpA4fb}5y;6kvF7zvHih>cQ)M~0Se-6pz~=u%%R=dF1N zvIux&L{0|hKa%Rdc|G24)do)UeInXV5RG^w=AA7VaTAR!@my2)-s6zpcv**rC0mqZ6j^Y3Ifb*QUP z47=Z@H-V71P0xs>GC{HQ_9x$n1=J@oiDO3K0mCE35D^OS2Hm^p4mpW6%WOX4JK}vQ zDATm!2@W9gvq-u?!)RT57H8o1fd$3@`Mdj^H%(09Oy&E;2=mkD0N7y-Bl~;YAtWOA z`@~bH6YJp+$bWkFfjgtcs+C>JbUSYLTZY>r?DFl|W{)A7+uDhv2wLa zx{&OD^0q`w`^b{n>@gAwkZPPQjmR|LdETKa{rlv-#}Y-i7#_`34h*sG@{{Yj-P$iI zOLL1oP#PYtt;8W?JfE#CA)6N&9|Eo%KAJx22|`coKWFpAmMFq=#X01FZBYPNxhqh~ zKIc!NmN-&wCZ{&ew>L+ZqDpJhGs|3z*26UO^P!>k0rKNs^Uu5)ZD|_q^|~x_mK`?E zcfCGO;Vj|n`6@MQ8nrlD1130;(mC3)VWlSV{;EMC#M;!c8!2_Ou&VXe3p2CPX8N1t ziltaF_>?jevtc!}RDZ`t@$y+j>;DaGA1!)asw6%8>*gP*y_n(J2}99VY`DOgjn;wO zgh>iS0A+|1$l!go9GLw91@Tcy3@gg>t2Wvs+$Vp&!P{5b46n(HU9EVP@;FSMDg5MX zxL^s6V`pS7A-p|jkDCMp#b3h+$kOHAnwkgD6|()OPyCv1lB2q%ZQAZfjt}M*_=5r6 zq!T#T>0w3id;jp(MDUJo$Ho~OrBLo|)&N4OGcaq?90R=$aISc_wT!E&bYcx|FjOztso~Qw=0D^?HS|`%4O`>q}!>>}MR7(UeKqGyyzb^|Vmj6|bzEGq z8z!sNuSO}!`N+}2Z0_ZJnMM)xMaA4ETngu_>`6w2cRH&yrI&mvWtkfsR%a;wy}K#$ zKUSH1_e$-IYj6?bhcw*vWAxl5B}6K$CRD#$^7pSDt|Na`AU^WJ^Q_BYs@ZlPV;9^?KW}EtSA-$GTLGpR&Y7utI_sJl*7YM z1Y~VbQ!sA{r`DZlbIU#u%F%V1d1|4F=fwkWe2Du6Vg=7Nm5n0YGp2WS$LF~8eOYRT z*7k9WA4JPwYfTw=2q10Sek^)0BkYg)4En2KT8vc_bnB{{ZEL3`ZEMfEv=pu=*?G(u z0%YR=)zk;i3K}L#RBqUVKRCgsF~x)GKozNv_lwA5W1EQ>OZT}uMvsDk=$hbw(c)cf z*I0c5#&WPc%!;b48oQatojb;frjjh(5k4?~FNi~9pFcsk4C{Z=EC>xjaoZ%Ad~_ zvLrfyP~dCLm_rwv46Bh)BEh@HrkF$HbRS;ovBIIK``fPu=r6Mw!!`xO&(N;PT!Cz} zl$_!aFAUYt4Ks3G)&k!O3L(EJ}j+e?q!mriYQ9D(fC9=jlO!OR}hc@ zHPi-uK%i_A^EIIO{yzm#&!G?hU)rhgQu=(gsDEpr{`Kyp0rv04=V+&YH&LrN@c+}N z=?*&3-x{jaY@UDVrCy2(4UZD4su2LP)nHQzRi6!9;e)tpm9Mb}t(&N;wtPQf0@xK~ z|4(+sKTb0d5W*>?LR;|6FxD;gf|ETr>@%q?G*^-b1Fb5P+jfB+^LjHUA#eDOMMop< zpI(}1l+RoKP$hyF5oOWlKQ;PA6FF%dtD{y5ZQ%fGXG&pNP#6sPJ1Eyo{gBJgcBi# z03rDfgmnGEUqAmqeWT)i@2b&69Xg46^F1=^RS`I?qQ1AcSPmsm`h^DEiwV|nP(hFH z9*SP`vr-$zz2or{h^(8wr634nlLTVgqo13EsMRQ;j<2Rc(oXpN(ow%*8Dq0~v_o~A zlyk{kUA*309CwDAK`8iG?_5bBY1F<}c8PyJkr>OBMqx~a?WQhOh)SATIj&}OA^OFJ zRhpU(4nV;aHXEIn+D8qjq1bC4!dVo$K_~tNgp;&2d7Ua`-PO$3a$@Z*7yUrJ2p!>{ zTp%;q6g3%lVJG_(H51guc(!lC8cVs4&C_eS=m@z6oyGlk^CjSr|JGnF?L^{3O_G5X zYOpll=#5P-7MMPlhm}g_b|iKk2LU z$_sS}wEU{${ny)%`a2CM5C+&kKT7bFx6BJQ-BcDDpc?q5wE2v(7*wklDW4 zH)0U=Ne#m4t4|@k_JX`mXL?T!^e8su-CbZl(5IuLL8n8`+@{0*SA#owqw@!%1#8n^ zpARtRjs3R)HEr0cA>G(iD;#HWE36E^f>z?U*WADGv)7sx(FET-n=N#iF33qUzTiYO zbOKZ09*Tn*1GZ_~UoKZ`oe2WSkIj@(7Kl3h6>5@aha5<34zfLKWFtj;T`>#X8y{=# z;$dJexP1WXy1)~l>5y!bnKt+emAOLkXDc*}`CZU4N-jn0i2docZ`)kzlXuzK70`ez zL>v4~t}fU6z?(%aii0g*hniqa5{+hn72L$mHn+Illk15n4eGij@ZY^6+GKjVHU*~0 zCwBLKAmeo}ABDS(>}pcOwnk^M1;u=nWDQSWRT~dBUFv|Lu#AtI&B3y}9&vh*7D%_*_!32OpYA1(8$*fH*eXfO?R85LkdJPN!aQeEQ^4_HNf~N1TqS zgf9IWJFoycXj>-RjM2Gtk$GO)gCB_+BHGH$GVJYT&2ez}7XtK}0KG%3$EmurSQkBA zuy40Ep2cMvgH9CPJw+q;&@qpCpS&HOPloqKFSMvTN7;s0QHvvfy!^_+-xt&;($KD6 z^AO;R*s;IF4oJ5?{HFZSo7td4HOH z_D};`<k(stmof;RQU_C&niW_xKWSZUE=f1pYx%{ps7qq~#_O?Wu zezrF19CDjBVHE0+xw4yGA2!##>6|ou_l`q@D=X4!lE|r2S4GikGFpCUO<-Qv$gm85 zN>+SoWv(o~YjwOjDN4#)16h**XR7J5WP+Pfu3*Ke_ zs_9~M+$oOy_+L61hDS||3m5iwB6mMIJJ`%3OYwYV&2J4V1x5?`GOIi#@WxvR4!fx3 zXMDVB>)t-&EL{91QW}{bYV=>f&K{<8IB+A+MJp@V?lR(qafLsryYU zrGNvc_dFvj#~F2PT^LbU1&ndi1TWZ>w%wf|Od|!x~ICXG{J(-*O&J z+U5W>Ai(MD zYf1_AUhe!$Bw+M>-SAmT6r;{$CJ4LxuOQQb3Q{~ats@wM6 zAy{y3hVxGG&Y}JfVc!_0$+B))uIh4imu=f-mu=g&ZQHhOqsz8!qsy+E>b>`wd+yAg zGk@ZV?~QmP^G9ZWxmK)PZ)5)pnSM)9pRvKCw+vdFbwV4CoTU6_eaoX@!RqLj>)-8> zYLzCay0qB{=E1X?3%0SFz_Jn7hFattWlpjznA@C)5lmVjoN{{TGxN8M9w>OZD6agK zYj}@d={De4En})A#6&I@G4-Rqa*!Q8;J;v(CjS@BUA~o~YRXYlp zMdlesv~xU+34aC--KyoWKHcsuhbiup4l>{p8Y@qtwr2Lus4ULURgLMiN$RWo`O@st zEKhVUk;$B~y@^9&4(qsIp;E%J_j4$wRKXa=&1Aj&uf-wVXu53CPmd_hx#NhRmwh0yVO1{;W7bs%}1}_ZK}Hku*2X zb^j$yMPzrcp@;hV)nuHceF*S%Csy`JzXqw_ zuQL*KdJhl#OM5y4_(#|BM~v!@1IHbZ8-*eO=<1?F`2kA_BCBJa58&{yYGK2@SOzfE zty^GB0uV3mnmnn&O}x-D{YLYPef!RN^XpHYp&JjC(+KETYrla|7dwyf1jDiDmxBjyq)b2Poae_PSFTKmaMFl|2UaF z!K>Ig-zooWHuqX+93rX7W7h{MY9JJWkB0B_Zaiu35|XH*@oVR!WQGq934b6*4sBkG z5~TK10jY)1n~{}A#$9N{0G@&ax+ zr8#1+HlN-QeuGh@J-)@91)Spd`>E@M1uEX}EhJ=Q9QRe{(-(U5 z*ZvMHF4!|k$L?tz;K9=FDmhVjIb+0nn@%MK`;39{tJ^ynyG&2f_8yD(%yyCB%9|(C z(wkWAc#5w@tSbEwn=)oHyukTVWB~9Fk_L+^3z4^nSh_1#jfLy3Yk#;RK32J{_#^Kv zBlv3>f5*fD)Aw*o6AwI$6E~y4Yb8Bp9ek?<;!(QquVQOG*8T4M2RudbKr3oHSKV38 z&ODO|5IED>HGQ#W*&b_5TWYo1$tDi2rS)uFrKB-|5BdmOsbaUYvo0k|N>PKG`5>{` zR8gWy&r6b!Q-Hv%OF_3^z7sfB_pfbEsN#^D@Nrr8 zG9uJ*jcpx8?+%CqI$t#?#v9s3?r9+)aYTf4(?W3&8%%T#wV^C5JPvO4T2MVXp7*-B zgK3bfJ|52sd-XfLR+5eUtPb;)(mr3mvsJ5+lb2L6{&=a)+|#8sb`Q38yOu0RX_C;s z|zL;rkz z9w-NLF>b>ywFfZ9qD{wf5-P@U926?IZK$HIord3AOGmBusP>J=Ph5%&*z^p5nFeY| z<1gn!39@Lq?a0q^Nsf;gVn}$y!73XyyaK>7%?Pa6HzINXwzhWNc53@koqOOr3%S@h zo{yQchS*knd_R{ZwHg&zY+rXS4(#D#xT;7{0EgKA4L5UO@A*`~jWlDZYw4p${gJHYAopjQZ4 zp34JQMatOex+XTzyKV&`OKV82iFfpBTK2qfQMoSC2BWqgJ;XZBFwl*+?A3p0|NdM0lMDV#>6R3 zl(@(Tf)$805H4@sd=1C0J=u1%CfRNBwftU3rdS5V@U=^^r_43eKo(D!%Z5ia02;n!H3fSRMW^l_Fv=1QI| zQsBZHHZx|snxrC-VA5=NYC?3rJcR$;6ifoB`5^ztIWxCnjCujf{h9(R!^-Oi{X@Re zKtjO2fd#O7BKlKB->bc&R!0fLgh|j#FUT=$$8335AQHa*XBp}9!$mJdh4uHcfn}Ii z<9`xZaUOMH<_pnPrdj;NypWqrAkc^!Z}B%E5MlQF&&?egFVysZp5vx9BD8KBayG-H z5LxgWDUVwY!W;`E0b$9u;32Ub7(J&kK2nMJ>oQm|DK8T$!kp5VB*Iw8LSy`kOn^w` zYcvESJLgz;N_fteiF*Q%K}&d>$sU8gN&fC9_hq_7@sH_}S~khW$!3afs)v`Z=h7d8 zCDUjAv*zsRsc0y#-zz#+)St^QP-dQg1UZIhG%nn5#X$8H_iuYN zhBTF3=BHC{Bt}%NP3m#$`J|7)$Tp?*2ze^8*F!>RJ3PTR;kzaZPcooz4O*PNP1l)G z^+KFCbVS_9zD8L;{mg|3`FxLtdx}*;buL`?pEE#LpJ*!zv1C3^u0^^xoH+GRcMD4-2d1>6& z-y7lw#ifyGevl?4>lY}Uc=03WZXn^~_^X!dSn^h9+O*3b{VJKhzyh3IVo0JOlJaQJ zwJI+#gHX#XTY5LWYu zH`^Fq#0|eOjhM+DN` zU*L9{M?!iwvfoTVsS^GrDjqCdLIRrAlIW$Sc2~Z7;TMxYV!|7|jwL^ZWI%R_fDdML zA(^v6(pG(xwtTPhFwNA=9AL-bKh-mPPNTnt3~NHxc$Ra^`Y1Y}UFe2Qcpea%y+MX- zVcM(fhO9(E`awvM2cshS_Er!ol0a51w<0#Y9(E81k%x4D0 z4{1_vL-pHgz)HG1aB3pVX2_>pZ2Xo3#NM_|=1549*49C?98>e;P+L(-E7Xmxay9e~ zs{SxH>B`h83k*j;r{=6Ubkn>I&I%`1jhj0(dA=K!>9O)ZNPAl7C>&qvOs?!@s76gP z1iN-Hc701h=;;7VS;@oP!TVK_=S|r$R|caZwft-Eg;)WnS8Mgh`)2kFAtX;2&s9`i zz^BJ^aqIzX7%bXDbf-~)f6W-(_9{r#CZKR@7vFuKB5I`RT5QZxqy$f`zI$+_oj}QD zkaWvOzI7zKOy}=O#8#$=Y%tp(2^d=AC#m8!d{O%vn)>tlE|GjSl66o)YZ#B4;gseO zWlsv6d}vAvw7ZJz&ud$d1y$|&q;>}N!@k>#x16{^AOgGWx;i@0vPqV36!wuiUUNsKsYt7@`Y>o-Di3W?i`el?`YS?q9E-5vFPpAc?4M-S`<{~CUKeE``S zJ|+x}le^x8t)(M&vU?Uqb#V`1p2P#ct?+ zh{nAczf8Vk8aC!3-Bt0c?#eMe@dd@->d&1M5*3T+Oo_4^K^slRcpDj>tZqezsV+s| z(j478L|fOexX%h>d_0*sT;QFYw%8d8$4D3d7(u*(R^FaGUcqD>W{1D^Y8z$9BYLA_ zk-XtSCCkB$qd2bED&8Xvt_A-VcbE&|%WOPkJL`dArrHRZ%@E{jIzvX9>1q3PsPdm# ztEO?&E24=-bi9dPU{Vmt4Joi9?M&nvNS@SHxl&=6dV6(gUgf}oV90I_z8GBJTsA3F zT4NqU_CB3%8$uSE+l($soj87eb6@wRx$5?ghlWntE0IkOR7%vg-G5sYuXf*&z>AcK zf0i#Ap@`WiI6(jHJy2*pvt`@V#|+fn+)jy~_WiD2f|yX$k@Wt$xdPl^WOvUwbs{3~ zl*!800Plv8908Dwhf=Pq#)2MAOZZym;3@Sp?0mAGbVN&Q|CG&}tc@Ghh#;2_`;#}n ziT(UktJ_c4g|v^B!Z8U7+nXVicWZB+!mIaM<{p~fcn;<^;>NA zuj*#WNOZyUOM@4!6@Vmu6jB~UnLUd9tE0#X1QPi8g?1eFs^)01(T8;(A7)D$N_)|`wKq}M~Za}*EVf1)#z*eR{HDjKeg7qu=~Zl$?go=-Z(}-yEv-> zUHeSvQe9SnDXV)Pt6L~Cj(Jp7^Ct_E@KF5pIH1-PmMgpGr zyruDRmaTgDxirxp`l!v*?fzW;_KF<+kRuQleMoC}C}tL{0TW;z4>-Vz`NZb~=6lw{ z4N1fw=OkS|LwN5$(NNYHTaGFOjPmNji}edEj*i|YAOw?IfczS}K+z9>gD56~9~^w# z(57KXAh=s8^Ht4upCaSI4W-BN+-j8bXKBa}eo}pEW7)Aet!58&hy`1@qsWI=aDq`J zNCJrzNPZ!#;2?IyC+0j6cJ^t939hj3exXhuaow0{_FM)t;J1zeSFo1 zcfW>-BEb!}rZ%x)-6X4wwVOR=%cF85IG$?0>cl&v3#?4rVuj=iV+h3d1?0tz%CHfJ zARa%Oy?d39bxyS@E15nW;6%ygtQFvmfw0dT6^9a_=M2Njiu-DzI<%8#o|qi3I=w>Y zW4=4E#{8sXfz~+R#dYu;O}MIur<-T%`^k<9x~$85Ll@eMJ^B6f;3(4w)p)qI7JBY5 zQVNZXeDeUly?3FLq|!h(LjXXuyt;r06X)9yOe;ko%?uskm-9G{wA(29k}3PAEhG8a zjsD`dv{~UfNAbsU9tsHPjX4P7;lf1iu~Uyv3YO>Zq2Fa|vm71YkLpe3bOR`xX};5> z1g_xJS}su`v8ndQPgGCsUN5k^Pn&T>?R#*JM#OPigxY}wUHGua8ich42qnfVuRbaX z!kfEeX5am=rk*>iD4D?z6^>WMB_Z&pgCQ|V?J5Ecek3sq*=>g9u@bjLX=Ng zl}cxE3qx*WFC+!MQv{vCwd4bP0)LP+;e`bnZ|ekN>V0TI?YIzB`=Xxj z$eCI8rma^ZAV5RK1OzJbMco8Z&^H1EL3g_i0hyYTkv$?%NW=z%>orhl zEYgBt-l;J*fm>hYnfXvk#8Sl)q&!lm5ut+FZ$YSL6+#K)ml?tT8C;z5Y3xz^e~tc= zayPDoVH=>~_F7duU`8+$%4$pW&<9YC8v{F}i%5?Nx<1GscBzuzmWUXwZP}pyRD${) za{Fvg6CE)Go(>!|*18^^gWKm88%Uc+WU@WFr|TWarY78_tBi;R4q?4K{wep391WfJ6v9fxfOA=e@yXZa{fM(VgdQ#KAhqM;MM>*ugu?UcC|ugL@cPyGA@qpHrSWZM*y%=mJh#KGLc4aJis#UW1EIm8!#GcLv6G*lu~9my%0 zdwNTm?=vFHv#?m|obB`KgY{A)kI{i)-HtdnnjRjH8^!SsNvB{)##7xg*-~BJwGXa2 z>EnaJFQR$254Ln>&sCIH_bWq>$uD^aNyQ$F@l**DL*dWXTFho|n{KYPnBu1xltpbN zD2t;g;^GI|;`2XIYzukj9u^2DeHA@5RcG>!U7bkYJDQmm2AZok;J6kFE5_R<*cS^F z1sAOx&PKE@8;lkgh;2CpZ9c^p*XCG~7gvVH=HM2sjk~*=$*rw3JFDyM*lJ~z&kkNI z^ESIZSYKVNI$w$vwHL!T*GmWX->aNBtI0Hft`|KfXvm=142bv;ke&3|W1S^=(Hl{& z&6lZvB(mGnrsYNJmXqOH&?g-mn8so<9Z+k6v3CpdTwRuKVcaqC0 zmT)h*B!2uYp4Blsaw4`F-}Qd+)_76uQX+D)W*=?4)L=U{OC*Gkj__6s>zc+OCOPB& z#m29@ACEDf#P8Sy)0mmg*ELB?z>XP98Q!b}P@RoxHXi6QlmmGRREK)YliP?^mo!IGBo%rD>|6ZjMS=JSe7W@012 zI6(kgTWbCkAucsu1padEI0E$MOpP$ajJlb)dr$q$wOg_os(-pQU`|ipxoEJwA47+$ zN5^UU#pREO9p1_0a!uS5GGQLB<^PtpKNNRsgWBW+-2{Cl?n0kM9Vz~1V4?|+jGXeiDwFX z30f@Cf$9A_oGXYf4^M2rNYlV;hNW`}nZJr*JWFbda&5DR5rh1lM>nAn+v5BNg-U;I z8kpO9sz>_6d8C!|N~Cp)WE+gFa+XnxN16bRN9x$%a1pFSq?Be~4hyOCLo0& z13P_HYw(2yzye@E#s$$C)N5uyWR$=A|@6tM{dd_oww=ZN`w}(est8t-}fx zFj})pB=TOdIyDYx2~K?Z?7E%5;yn$XhbzUA<0<$c5PKJC?h9JKYA44X$NM>qYopSj z>|%)pghlyfYU^8`iBrGh2M>S;zz+}rfLU)VVGq!9@_xS1y?V0BufnnQw zkw5(Y%Yt3;OjrkJkS#-ku?iR-;hP2uLzD+PNXKZ!?Y=r~y7rE)DS>(Ao_eFMPPwq= zx?=7X(ra|viYM%|g6F;1EgJp+!6o-cMPNHPeMeq5qmdNhq$u<+m&NXCY;vy!4*iRS z<>8{LC}RplnUlI%b*^AS`)6b~$vMkKy6Z;)+vs%niy`N@j?-zb9QX4k_Y%{(ki;De zKXn0!oP1v4m8qy*&~R3a{FL9{bf0E0;7 zqLw2ml1M^5(aNidrAW&uoENGN(!bH9x3Jj%L^G58t(hg8wDhW~-pES9ephE6iQ4EG ze=$^K=`TbZzEA={GZ309t6uJ25g2tY7?i|$yTVB4*U4u!1Q5s7Yx4}ThSpT6F4@jI z!SI^mBs~||M4ymzv>5`ng zqn!2b$1r7#DsDY*G~g%iPyY}wF0g;)XKkS~?1_)ldK-!VF(1~Siz;m$TJ%H1leQI8 za<`XiRg)Nc@fyq5i1pnNbgiV||vun`1TPMML}PkqWUmR)OlyVo6Ly%*C; zLoohw9-gG7FtUy$(&t%=H0_1E7p!i>O&zP2uXZu}`U>CW%ZEtmZMnj_0GzdQ3XWUo zc5Aq_DpvHBVYKICZSvRhpu2^GXJhI7n#=?8_@z_xi$_=EPxl(5p-STmC&NbzSn~El zytyTmZqT!OVYKdwo4NC==;CIl%dr|s!z#5~ngRd!g|F}Mn~3i_FxVztU=k6xKdaNG zv?KRC$qR5eG~gpRGNuH+-2{#$Mz{3;JJNFnDd>)pcsCL0e$D0xx`V>NeFr!J7vbT3 z0i4xd&z%G0`T$GiNi0=c+~2*MZF{@lD7~+)e=J`7Y~+6Hbkta+EBo~lYy$vLhc#;h z;ByH>ZJ*#@8xaz9ph(?b!u4%9VRl+I*4{})OyE+(lvV~khmqIRXBMDvrhC@K{pDr$ zrJb*igJgnI6rl0UqPfXPjeTv-klcV|UlLeb8UL(98 z$|!f0b=>>{YjgxZ%fibOIl6jqWlurfobYH*_GHH3r_e8aQODw__+XrFlae;`@0C9t z%1Fq6YqlRM7?uy-fx$^oDuEzvkZQXI6!Tw~f6kDP zH*Ox^PyatR+J6QAx%1qhbG88AVc$XMp$w3Z>1h4GefWleA;A1=BEUQB@naVj@Ub&* zxB6e}w*XFG{nhy^@lPE11?%t7D>nLHy{pE?e`4BNUtbw;9hEA;yI;m@wCRpP)TY{i zSVvRY3k1HALShDB?F7jM`iThBr+;k`IZdOfD?tIeF*c2Rzp6)3z5YH#`Z&0l7|Jfz z*0MxXHv(>gt}*nX;*hXNwe#;u?nOor8XrKdF+6*=`K&bz_+baKO#eMJWF_J{2A6zs zmsMvBKpkwEz9$Lr@5FL73gBgWm56U+$-2+<|9al^6!H9q`^gw$@;^L$a)to@PW2xL zN(H5dx(1*kFfyyOP?JJuvD1pcSz zW_j^XR+91+th&)!Gqj(k&X^eIoh3*(U7NqiD zrxe|rwBVa3Wq>-k;vum3=4rW3*g4z%NvGO5;(=V;>ed}d4+wXGc0KJNkT9AQ2ZBJr z=>V4!?34~C^`TPYq6m1h*vTg%ZdjJY)XM7l=O$}=db(_vCOM&8fFYmE^3LVX^!U`f zxaDO@jfA_8|G9Ure>M?Z@4V=2=vqC+-PJvhk{G=^p|=rTpYVBNP{K3eH3!4;x;h4B z{>(?KF5xIkQ;|rMlr-9%R1!+PE9PBv@p{sauClO{h(r~ZW$ZjV<*qKT>G8VyJ}s{~ zI$E(-p)aYXXmBCaoOOO6Wp1Qt`91KAqRXI@%hTR8)3bx~UFY5D;mp1K=3#N=m7T&E zsm`nJ)J#)LZSgf3&KPH^Qu(vtbj)ogoue_SV{1VPNHa;K?Acoy07Z$olpbUA8uF~V zEz$ks2V0mx(83NKB7&SC&D)~0tKYKQP$Yz4ELZ-*wbo_1B4g1X>1RrIa)HM z>ih1Pf(fd{#n=)a#Tt>sN5>2;chIe|@eYGCB@xM>{f>;e@kV~^Y^?6%^&s90CG z{|!E2X$dMd{~P#RUYhcgTioCokcW0m3>qt5u8Y56G+Y&MWNGcTk<~g`cObeV+xj@% zv3MoJCZ~USSl3@?vRtoo2#pO90`aa8$U2N5;;+9d_$m=(e&u-2OF>7^Le7rQmYsx| zG?g*BU;j;gF|pljY=ARC)r7@J&ceCDRLk7{7rqR;qQ_YE#JzR2leO&KOPdkZxI9t; zIb%!jO5YlFBULSMIh$N-TdF8Kg6hI*hE%iI*MZD%s zU{~X7JG@JTe?y(WF0t3Vn3bQ21E!32B?L~)u~S6e*BTMH$l8X|3@f9D0kyhbHYHk$ z-7kD~m?amoOTXPNp>!I(-k#e=24pR^3tCHRD?Ow3dc}<{k4MRLOszNtr_qNfGP}xG z)UdQIfH!J|wi1P^Mlm@)LL%E%6!~I16K@r9x#zEGI_+T?#ajuiCl;eoXCF?3YaiBq z)!+lx%$HxHJ%$<0^t^;d5=tK`Gj3cxAuf+fmE^K#>p1(lUZy{KYP~?iWo>Ng{SWGd ztxs1M6GyU#Fw45T3Mk5J*7MvAv0Ch|q)T}hr8BXf&>HT)$^MZ1l(|-?<7skbxlLZ6 zYM#Qde%>pkdu2)LjMR*%F#iIf&8E%_BTc#cm7Qt21?@Y{@!F3CttgK%*9#~NYtAG8 z57=3EC(-ChKCQLpUCig*TEx~ZPTSr(;z7p@3`@Ygwntb)gJ(ifmBY^~VHWfdG10-^ z=VA@hO^9`8{SXw_tm`muOW*MQ`8TPZ&`E1n#Y*0BUyrfERr1!l&N584Z;1_PQ2`gX zKZ2>S*s-;|MC;F33R1jYM^O8Wo_mfx2D8Tq9_(z}PI(V7j8$r253p?pfNa1g=$2sl~5VD!C%tryR6i5!VVAQHmOe%m=E_0W5kx&712Vcqq;rORi;$AZn`4_zFg+LU_ zp;hD61%V`xL2bXh^H4$@?6jAza)@9BqwCRk>eolN2ea&)t1)IYau!A;*+-M4y>DLT zETeg_N~m%*>7{s^;VP)WfEO=kVU^)cda#n`O9G2rv0;)rdDfFS_ zg3ky3yZ7ZT{l5p%F$ez{|0lXytqt&Z9(KaYKPxnuKl@PrH6G~>@MkShgA-Uk?!OkH zD>b{O#}$8N;J_7kuO-G6&kkGKZt~;+;e_uP4A$IZ0*UDXsMdw8Mku$*fVOgITzqUz zc7O?P0Xjx6rw03~=9Fj731}JX96?+rcmVniNVT5W`IycLmCUMJFc+vV+^;lVd8n$f z_`C5^xifmbdX9NFIPujviUI}b3;%fyzsJ1dJ>tk-9#w6`yu{)nKqYSD)xG;HD<-`e zwwG!j(|W6vdM^Rk7yv8&_(FhQBJVLT(PZ~fn?Gv{W@9zlQ7A6ua1`Yzr-tkkJGD@) zs#<9)fE^~kgEPPLeB#?-{rEW2sPpT)(qYoy6+>WZkG#DB<3JZ z5dUoK+?FbY$pN7m@EbSAw=1xGnwNGBEdb%M7HcF#&^<=T5BE31(n*xf`xEn4K4aXW zY(Vp&P@k>deGuL<^6_ z6UN1!vBISnnr!vMUC`PP{3Lz+_Fx_~Ee`3hvGLNwkCN&3$mgYb{AklqaO=%P^GD_a9VDkYrtbbRGglt?UW(# zU^c*E%i*h-Exc|4ui!V>XRO1|(cp1=`=&)&EO4WVl~XBmj{w%J0i%{tX>XL2Y6=mz z21QF>bK+LCbii9Y21|4FG%I-+=VdYV-YU=Kq;yFdhh#1$L!Pi1-L)wNcAIY;cR|Sq zkOW12(#qbl*|j`wq?g^TPdOhhR3!1|lxI5@X_@hyvPQoRhj*l#CSBAjAjf8weVw_| zJum09sKT{5$eI{83!BD0j3Da+Yy_BHApGpSC$t|d(g#a4U6*Wa8Ed~47xe9#NO+#x zA<*vXH6UIj@6^cPhLlq0ip*RZxZNgnN?2)}k8gy-{gxCVN=y5HJ+N0q-0RmR4Ex$!!NlW%5Ph82UfRaVe%Z?`_Ug&w`-fxslr8is zHuZKW;V-ff#lj5q!)ua$&1b;cW{1E@fZcv{?D>3Jx>BD9e1QM4wEl6t3H+k>;>!NY z9_X{F&O4-%+p`e1g``4;gmox&a5&My{DVSRN)b9lrGOSzBU|p=F0jn(PN?u#qayxT zrQU57(uAJ46!9YEq94VHVY|7jmbiEPTq9^zsb@Uv@9ihKMkT%qxwqTW~jb$4hOu1E^%H)RvVdxTu+TBqWUu#9%3 zbV%U(74*`Yhf8T}2_Vj%>Wgn;6+U>JaxiOZt-9$=%6;Dh`;9Z?2t`d8zQ0hz(D5g% zhJjL_Rs@+B_U$dywCgjS(}K_crrX=Pr0Cp}?~Ae-89nTU^e`iJImQ*l`f1z1eCsAG zr93x1ia%qlX(+xid=0WsGrUER)Lj^Y;a1<|c4;f5hwH`nhTZkFz(3JAz!$20?Nq#* z3}>ru&_t$SbPQJ}twf=XPA^7Va(Yx;w!zD0g{T)1c-FqVZJLsP1@#`e6i_O$Q1>0B z*jid!TkY3x@W0=qsR(BvE1HX~sVlc8y*#z0@YNa4&O5stFh3YEsA=XUuRa2`kY|3F z$7ynnRb@ekPc2bXZKV<~a<*I1Q+h9Jy=IqmC5NY(=xS&s^iR&j(kWw&a4^IF_srY0~%5(-~%}Fs;To z?9lG6#e8joT6N60!ldL*M$<20*YbzTdEZUlGkz7PN(bLn3y?624k)8;G?}>d1_m%fchB*NULNcih5H>t`(G*4T)KMRf zmdXijd-wfK@2JPYLHGWTDhh@TjJYi>CriD;70f4(6mMJ1j|3|TADq1o7Q8&uKKQXH z-8oO9etyu{G3>NQtv0}-PTf_EqE2W1;b;Ejx5q#=)VN-R}@j0RM42Xem5ptP!Hw;+z0*VR?AsouZ#h7CV zDJs6#xQ+>zzLc++d_0>K{HXh|Rgsen`XvG7m;U)E{-rWp$%k8FKZ&1Jmb5K5J#ELK zz7yPnlP(q_)(rK$GCb%6f^?M&C~{|JbB$;*qrWL>QGL)Kbf&b30(+o^Ds7tnvZk;ln;Fad+}e*g_WNOdG$G zp}*Dn4xV2sCah|j&k1Q*@4=PUT{?b0NjHUWA7=!`*M(zr<vaGSnk!|+88SFQ zN7jD0C!1eL$OKmodXZxCd0;*h?lQ)yfFffH~1;+S>jN6d{l6t~R2r^Rkv zy>|(~M~&`r*(V(&z_814<@H-1d>@h%{3&wsGq)kop=^jCy?I?IqhQ!Jqc1F88_sdF zXoBLtZbZ35g5;%jJa|(iiX>cx@Av{vM|DX6mh_JMV89+3-5WD<6yqa>>9&YvT5@SY zaAD}OM~?!$q1uZg`tY&KHr<{XyMedfm9L2sPrrMnjc@GVsH;AOH8Hr~L-`(Tzxt%r z^Fhl@*OVd)b+ay(4_Dl>_1vc^#wPE~kiA~LN{V&{+#t?vCw(vM{4RL0jI3&DH>OUe z&w0WfIMD{k;~~Y2?|8cJj|0KOG#>|ocXw~kcdzdErn)=Te#YiT>I|Q-8akVo@7ei| zpq)C30!o!Q^a>I`eLA_iS{c>HwkyIJ2zARJ=VP#4%CjyYHk)lYuMn+(KNYx-T4K=G zxpA^pM$MfCR=00Qe%O{pGGT$QNUO3Js@a3po0bJbc^ZwceqTyII@@i#3ciBD@(Hy$ zvryG9Fy3UAeQY|BGf5wsV<0XT2Akboh4`xs!toWkD%*nH>6eNy5)z zs#uZ_9#~Q*L0NMK0fk6dAOzZJJ>DthuP>XXSOgtGtJKv0au`J(!sc-6V+V$)q;Dc=Lxb!y{ zLb|3Puv(mq)&ySR{x$EfWEI_)4&@ZN$DAZ7&$W|TvUBJ_ z6W5a7H+46z^hL^UT>;rf8?uyf9OT7!)y%0f_blN zye@zvZkdR7t+ZNsazz`jxJHbGFl?Bx?IuKzR%;lYaS6#Y4rh@h*s|ssF9`0=KldGIn*S3+rx1FX8RYp-Pb?@ggsk1-i_dGB!67-d| zbSV$$7ADAeg&;M_;y#|p+}}i;Ut6p;&{jq0cxG34rEi3FC6l6oFTH15cWHU_*|iTs zxpN#~a=@CZ)DqX|u;y8zLiT%f-z415L7lyw@6MvTe(2q_8lgFD%yB-Ct5mq7d=F_z z{t;+#yiz_H0BkdA zQt+A1X~;eL$U0$#7xaaKpexdBd;=G?)4_NoAMbWYc7Fa}^8oFD_Cfw6UKo?0TC&3@ z+TeQ(01fS6u7zC|XKZ(jjYS>dk~oFU^<2t$WBon#?_-$IkgO**W*~vjg2^85#xPJL z+3j<8o!dB`>TANPdBfW6njP8o0)8E#HzgxPkyQ$erA_Tjw7MUPtsm*IQLql8juU(p zs6nuMb@$s1?iH$JUCxc)=03o8So0WQ)HTd!gxWwVf$W7$Y3+Q#FT|U?ezlx}qjdS% zcDoK|O^o{}a2foy_xV|3$77eiNm=6q20P^UtspN%>G0$BTEkGCG3ZnpiBhgn60Zl1 zy+RbAVT}mVfm8$VYeUnA4iEliwMEpe(EC$gE*IoW50ubzD-T2}C$%p;?$jqE6y?JL zeXt~-T4pFoEwz=^)zv`F-Sv7oC(17F=s)UXHy8NgaPuDCI0d|6z|1`_{XMcix{?KF za#M9H@t~9Y_31-STY)=_CESr`QtqZWKKFz1Rgz`>+?J&RXN^*qiW>Q+ zS{`v*2*rD9(^c^ga~(x(Wu*pEx2z3Oo-0d9$LkC8M*(R^GKzYu`Y0w-#n?uS4Y#^v zj>=TWMp4A7>ZiE-hr5YF$A{~iJOBH&mFla?(KU7BtFwv>#o?EcvT{dPQ`IYN?hH@P zX07+RGMY0%>&toi8!u(`Zw{*XC+~@xhH3GFR>8)odJD@_nA40Td;b? zrP$-BY3)L}{;i#O{e!|&j# zz%)VvEFB@W_Q@f%=e_{>)s5m_1}(w!v%nJ{73WVxX}Wnubn0xqF{#nH1XH+$4TH$0 zTsi4~QMH>I{r`cgm6N~AV#FqQj*Kb*SA#peD8u0P05TKLPipkkvs2-=Cy$>Zwop~R zETclXl`+cQND-~wm??6toB$2yJyE!(>TY87Xy*CvQlXgm&?B^&yh`79!TaF0mp(lM z8xZc{>gzgU==tubxCer+=tjTQ)Mt*hlsxluHVQPd58 zL;XPb3%36Zmp8Nc4=lln0F?8~+6!ZQrh9xW&58chpxGr(+Sr$7a{@OxhiIlTHJn)B zj%$YubjU}CYOb1s5{&;63W*%!6_lThk>dy~OUt2Mp$2!yhjepDqV*Q;#pUTYbHMv!}uTbLHFj%0gFEyqPcFqh@ca%_luY4Iu4y8X!NaL^&mP2@R zaW+6=xeV8X<(r8A$edQVQ>u{0oSArOW&*3{Ap^UpT!Bhe`IzfI!6EmeI2>ZWGWw`% z8{j!q|8OxI|A;iS*6l*CucGqi+$h?ZAYA)mQ6J2LVlRWXq`Wrb54F|>29>oVmT}@c zt)31vBVBTu&Z#Qf3PT*5J+Jp{m%CU;XI0jUfi4=~ozd@-&C_n%LF&`f$5B!RC5JuJ zFKoXrC&M=&Da+vD5;L*w2}S)w*$h&KO8d;ONVh9Oikq9I&c%}_pt*TiMMR9A~ zm9c%waV~2|Rv24x1XVU12pmN#T_tzJ5tLe|`9WynW1E}D5orGi`N4>ljjQ32=}8bjT2N`Xg!~y^N=CNL+DkvV%;f|@yn=|SowGG z{BK1c$Y)T~H{~4|h3434zahOH;Kf4JCx zr+2}EYyW%n;SA*;<`>-1>7U+(+TWDzu-qOtz~3Bjn|}`6AC8z`qD-v=dU*C@9CmnC ztK!@6EXf`dME)h;|KjbdqvBY)Z_xn3-7UDgYj6n=+#$HTI|O(4U?I3eaCdiicXx+3 zB)Rvy_b2PUzuxM#dd^hM>7GS1)m8iKy?dSIY!G*oB`O@K4A>b~&pBMhe^cK&yQsQl zwE2e_dlxGItcnA}7)v^$<|dSJXp#9@wBX9}$FB%U3#_f%J)a=5RYqih|?)-c&_pTIwfKu|Ma(POo z+zemopmo9JATR2H@LKQ}(DWK4$0sTU;R}hxjuhNh)5*`~DQnRGb^|O!4@fnm4Lbx1 zv6|J!4}zPc(OkrA0F$N$#RamrKmb|x15%QJ+749F!3LiIZg9N6e&66Yt%~0%vk;Xb ztu^(`p!SJWOKCU2jIpWko2T0zqeHf!W#{VP%7V4Gv5ix$^SA;gqV##60}sH&CUupQ?6bMSYcpy&Z6KDjdAvEX$vw z!yn;IS1)^+-;zE&>Ktvrg4ejZ*r;~6*%|KM&*?tO_A8K2m9O1DjuohhbQp?I;1@jq zsizH;56ABSRCpT82b90k&DRKCcnXfOaA{AX$K;l(W@WL!f#u4lfmpy?ceB;?34)Nd zPEXtQ-Oh=ndj-7E{?;OM-E?d~(gYlR&Y>C$eU1+W>?e~i5}@)}NfT{x?{cqvFmQiI z%>U?ISffY#SL?p#Gsy3}hs+_k-%*3+AVlu3EQ=-3w_^cfCxokCX9yBc9RbR<&oG3@ zwFhv(a<3*cks>5<0-W9Q{q!EGVTcgxLWqPB-|KgE_VtE|N|P%Z#@{|>wZL0IQ!!YRX%!U#vZdRlu| zYTm#?sAMIZlh!!cx7`OOwl=w$2v@0um*uV)UDMp}A3eV=JJdRF(wa9y0Ua&$ook+O zWgUb06pH}!sPs=mmYQ)$D`t$R65yJUXB}s=^+bP1bW$K#?h_4SMCSq)P9o0`;oZk+ zHcNfj%&vtP$NtVHbh?YvEXgX|&T+r~sP5d4WEcY~ZI~hb0JDoCzko1`853e7gxe7} zio4=HwI_E>1LnMgr{osj$jUc+{s7RV!M7Iw3ou*8>9l$q*Sb{9o7~2^4HC{@>P9~OP^=T2uXykHnA=r8Xa%8}(Djyf)JoM|vH<(4cuW;J zT1_t4Pv25Zqj-_ykYEfyzwVw~#=>2NX-|2VEAj&7JGYQa(1lycIHnoop3av=TH&lr z0d~`8f&`D4Js9ZS^1r_3DQMIlI{vDMvNV4yu8g8h%9xbnNMu3-pK*>lugpuJkQC|W zemq-bHEJcOgVJtUv$@UvGVzUO@J!k1>MHJ$e1enPy2brGBHyi<9E!VJ+o-8#CH&(M z^OB~Ii1`lI@&JNpO$-JVpMJj1nKe17g~!o|9vkmBG|^>P?GdYhQ^vigGu>uo%Oel= zv;Z>ATIM;LTIS-Z9sg@>Ve1D98AQQH|7%wUarBA@lR~tG53%So_Z=BwzOM?av_=`z zS7Zemri+Ad2Cg+ZbehdNF_j|8>=8STe%eAKbm{WM81IrqoKHM^yMnlY9WZNldFid(-Q4Pl)H3c zdO6kyyT~beaGHxqzQoKJn+U?^kO)cmV^AmkAVEO*lO;}9l|EWd{PDxAN#RDpHyFNr z@pP2!t>dEuiS9fv(?cVf1ZIvkhl=RypL0v5wB&4jU7E|MPdod67Ia;m zk7TA^BVV$ggd0ox8OqSqT6>Xs2;A8ozlRwbok<&=ddoaqi@&ToQ8uUh?+y}mU=O{9 zO7P_i@sZ87?($|qEPH($4uvbf>heOV(K;rDXU}Uvw&?vRx*k8t2g))Umad)f%pE!l zqB0Hsh&`3=Gdduvv=hFrX=Ti~Z}24L6v(#8E-n@MT&Y$PacrW^N-m(%9{;sH>fHZ0iGu71fCwP@9T1nnkb>{F*=sb9Z_Xyo56VChVV1w42A3G&mm!#&QHR*l(iR&6|JR= zY9tJ7pMj0CitMru-5=XTi+p?K8o z*VbwvSq2A`;6<5Yk9NUelIK6u3bo>s*?Ri1Rj|#+5N`cttixmc>s$SH{z7`=GLTE4 zTe+PN;S8R3O^|C<0H-08TRN2OVhuEi1p?D7(|~Vy?ICf}gdHGx-5+I)?-scqj=#Wg zalGWbSJ|(rqc&A9+Jf(+!Z!?6@bai*UT?I)ke*V;EHdaC{pt~_>VKTlTzu0o&G0sQ zS)|@Z|J(~4QDqfkATIS#LFr7xNA|(V!~p3=AP;a0&)m+3`go}OF{-O?^yV_!SO)QD zUlxR8&uBcvuMrq9%s1h8O2XO?axz~~>q$|(du)OE+!u95lnS|m?&A1L4b`R!Gy-Cc z=3NE!4ScN_yiK+01!#>L$fzCjt%3Ru>~{~K1%A;8=-aYCY`g2P9v~xNcIdWwEh6$? zQ7Isc8amKm9nhJHqJjhD8wE{(4)g`#0$2s-0{HE^M8Ol_dv^n}RDmjifQ)?jArs!M zQG-2i!ae|f^S6e7`ziu$f!^@P?nX9{-c<-@1T*}DfRFq-fh^wJH!1mo#`qO3MD_0G zu*j>F5!#53V->9m;n{dH%i4v@aQ!J2j${%m3=cbm5=e(WnWn>St&Yx?JNiYXHo|J9 z)yQR#Pd3zVQc%;r$6z61YnFbp9A;Si<9V7rXB=wp5hOzy#`J^dxw ze)H;1)x18x1y(~eF3d|^{Y_Dp1sh}C%27#eOL}jWd8i=c#wRwl2=?vl3#!D27=318 z-y;_R%s@~zkI>4n1Be!?+6N9r9|J5D$li&e>RSrOZKEBiog$IQ>0e4J^9Hsl{K&ji zltyICfC`D2@3m%|r2FwN&yoEHQae@bZek)(tfLK|&_4EPx>Fy<)W<9kDub>s=<_qc zL3kqU+sd6 zw}E<7b+vfVHO1f!i3zFN)y|h8TWwW&Y!ad?^~%p6##%+hY^54>^SC*GHV|>3#_Jxm z35k`e+qk6~67lf;c7NBQcE3UC%pi-b*%kltY4LV4n5De1Or7xq^nl*~lNt+pv+0%O z@OVE}^6+SL8`rOD;|9~Ss%N0~Y4|`bF)`u#WxI2}*Y0qdujHXp>uN{3gy__%T1jj= z#a#iJZDw0aF@~~gy`6A6`u7HY6^)1UxWcK9RPSQ{$;69*SSf`Ffr!cFNI;a-07(#{_ z@M3*W-1#JqSIzXA+$cJ2@!-+$OS82}y17S6gsUU+kt0X1i{ki1ejT&y!`<~duHS#b zVlIDUG1ENCl-FDF($dNo=~u_Y!b3F~8(AN6tVVfyG$(s#Boi@$jfKv7Ik!wk$XSF> z#W%BTm1$DLf8q@-Dzdqc6@SOx-wy8AxgRR{#G6`fpjls3qXDQ=`#b89b~}ou?o_j) zQ-kElch^2GXuRGS-=YbZ?T>#-%A*uh+yl2|Jm)4-o64oZ{jA`XU&KfKANm}rxy=72 z+NyMd=ScyGwv;V0vhGN$=9hw4Z5C=C48j9d!{Ha#(%TUtyH~K9oRPnD0kF%m6dtWl z!!W8QMxp4}JnypIUd$6nIYUyQ=;oI7{s+z0tjN`m|E}30NRpDjHZtva0uayVU%1^g zh_V8sN^|Lo++lS13bcgh1pn4;xtCNX2D_lT4H~gB36I`N>L%z(EjND^#wjw%>`m(j zXpUF*921xC0_J}#A~6$h#%jt%{V zdWQ0&8gQqah_wevl@IFIp>)UwGZZXNa}hs2+?}8FQCcpccjJ6bA$#V^D%dMg$zcDU zdTnI}W9TIZv!Gsu&RFr3=QRoN@mCs(v{)H_GH?j>8mfIdpGtbh9$e{gXED?SfHMtJ zjj7@_uq0N;(=bHKu&rrN4P?X3b%9}JEf^Jiq;AV+gN<0{{1)@-Y7UZ!hn9~Uy_@CF z)!zb;4T}GZaBIW*dg*_WZ5e8%=`_^_+%_E*@RWH~vBfpPW@kslW(^+j4sSSFl+c;g zkh_Mj%l`|EISM;~y_DHDVpphJvT=6v3_z|6qa?IwucOnzM&1e-Sg*nVKDJx@Te_8f zk9n$f5|_~)0Lids1jGk=huJm?Pfy1xq@UMD=ES*Vh%I|)dGw~kQ7;u zOOP=>R!ek`@`lKC*vnO0q0i$6eZGGj@qh2#!v6=8G3XT_Q6Vm{EIYTMMDU=up9P)OnzSEzix!D4K#|%NhcvVDr zlSxd*hiL&k*$j6%;voc#MH0II3JiG>om zf1@nFfEj>l>JPy3&rX19>ffyZ)zoj+-2^~2^(O+Trhe1u3IM99-{ibyfNJUuoB6Gp z(l-I9ru0n!D`x$D`Ex9lS0Q-lvU7)7XV?uOEzmQpo-?e9_r3jVBFbhS8E)dU)_unk z)NfL%&H8bcbnluzE)nGE?-yTRywMcO-=%}cNRU$mS*{cRL@oUXr%nck^2m4K`4m8^ zBjX45|A(}yDAj~bzEujhn@IEnK%17Kocp3(lls7sbyqI;Is&{V^lxbuPISN&{=Oll zF$O}H#n&Q=gx$^h0WCThwpk5~Szr*ZKnH}r$K{FY?$6dRoIv(KW7Qua?U6um2FWX{ zCNZC)=uv<*8=qXkH6J%N8&7%DepD&2<+HoJ{0~(JXu~Tfv!5q!Dksz=UYwW*GF7Yg zox?2&n@yqc5AdYDPG>2iEUmo87?l8`hKIq_4mDQAL6jKN_$m3z7_!E%&Kw}MP0`# zDj!}#P@-oE*|Kp_qR*w%gdfPSMC@;Bv{Mls4l z&rwBg+jLhB+~*J9_BURO0|mfq{q4rPB%Hp}^CQXvSEYUSlUC1)Nkw_XYQf%TgZ~~Q zDh{Pbjf8cUxNf&3dV};3K)DS?xpNte#%8!+-9+>pow~xm9q?hiac)(#y%V&zm&r9R z$NZG->YXpFHZ*-;j6L>MpeCpWg zk>*CCbHL89yl3eHXaBA~J}yZ%1PE#X+lN7h3eGx%EPMcz9u-0dpdUchK6ha| zqm^b#2*HQ~!*z_I{s*g#euT13>l83cYh7|VA$ud*{;56&*|r{j515j{+1fkmuQn>! z;4P@!qFa=D_Jg|pJu>(S{7ZECjSUxOgJ{E=>&tt)z(Cs4%B_3n(#l!r&S4hx9tR+U z+E8FPL5QK1mxM!acq^@S?UfbxZ_k$-u5O%dxq`Y?j+|dOp{Gy9rNRgWYZ*CjamUbq zfqfKUS1TY5TRK}r*m|PuF_qSlAg(E*^F_JF02?^giY5kP&WC;F1O+RR?$2^R9-HxC zIleBi7k`6RoE!^L%~jXb?snIq9LoHN24_#u!M2ifCTtvp@NV6$t3%o5qj?CJ4ag7hOm>0wL7aA*&G{Li+l8*s5A<5 z=q<#Y>9+{FE@aEkL_v+xt`K~pm)rkT#kGvX#Nmi=V8e?C#yD1Mjfw?n$mL7F!COOw zSz!#{^Qj|}xSP_}1jCN+!QeM-)E$hw{#mg4UXLKHh7uIhTXof0QEEXME&sM5YAqn%QPUL4tJKj9?LRTpU=x`7u|t-0%#El!1y6CkU_He@(n=} zCA`NMeVc$FF2c0FA)!f7qfC5E=8W(vmS|f=0D9wrlK$a=W+bp(hj3V<0&b$769G^5 z7vE1J$8{OcD>>OTvej!#k7@&H2UmMopPG+KV3qZGRGb37ps^~6_NMeK(B_(a(>{MV z+I$>5Jt-Yblw4WZay#7irzK7^xTRK-^W>~pac6f^R{i;e7HQ2cb~dgi3~oG8bX<05)J40rh*aOo!yfF3mO_eX6i)gNV}y-V(#Hoir*d^jnMN!3kdo8Er_f#L1$0@+;An z7cr?${hwmJvAi;PN7kX$$n6QDG48l|vnv2UkBF>UKg-2foqwzfhj1e*T2C094dXYt zLB00W^2He^2o2-5=`F_Qg5K)$2jm$cd$W@aSIf`x+})p*P3qi3XgDcmxk;PloqXNM zEb}-Ku{qYuuYm)x@hG;|D(XKBu(mkc>gM_)U@ukB@qpSnv9*wIFOd(=pxqd+2M%a* z3E%xH(ioz#Z`9Oh7T?mB)t*mwRhro~FTL96N(qEGk~^ZH$U^%RK~R;>8b=uiKVw2cFNp`O-i2Fv5w>`?*K%c;zoCE*cdzk^z={ zeS|U6i%PA<=k!JAI@n8l=i9nguv(uYvEQoiw-K~#OkFu?G+I-)7-1*(RjMg__)?1s(D(ODNk^FDT6TPbr&=|!$78>{6|2rX1mUcO=WR}X{$CVRcmfS6EyWiM ze$T}5711;nkf(Mv%UQWFx+GP%+V@IQR`)}OxmWj|;zPE@1&zw(L3%8(S9MJHtjF`% z%O{oCtK~DX{oDWFmV7qiHv7w0@Tje*mwKsAOkS$X8~B%iqC1P>Yfoh@y>__jYyw}p z<>ZNBjD=vox*JQUm{X?}S?h_o9o-4xW)YppQRKfgQ~Q5gb$HR_tqWnAJt|~2*Styt zp2-7i@0s|;(JuD>LsdRhy;T*DG{_^;*P4y@lwe&yNR5{IDw36rFiuO>dFb3sM-Nwz z0E^7dz5Gr6y~+lesyj{f!@(2)Rhea1I|SmfDEfNHqPIN0rdUK`<(#T zMgWXX(kgyw#+i;tkj2HdQ_+TG8eMP`>*_&pee)hVP49IdVcTkkf^Ny7| zpt+o4pZ5s)eT3u!5t+cGvLtB-R~?*ujdedo(p!_g_my z!zlm3>e7;?KVkMM6_nO2#py)^9*}N0B_|8h@t+A}dQYmi{MD6g*1n;CfolCLDGF9{ zoSub|z-%EOb)i*?c9mtN8B2eXMD}<56uaThTh&Wx%+-sX1Mu0jB`EC{*uaAboHGDj-$h zzW4k}K$W(D8Q$**h&I6WzZ;1q? z7M!32R30g~1XRr`m&OECB5WeishOP%7|)NTY$9ARtRkH~#&a03*x8|mz}VS3diJV| zA|vm+rLeQ31uJAe7$B?HVrn0e7f{+WmcjN5d1i7Z%ap3{$g&$Jsi zKHD#8MCzI#f0h2D9wRAkk!P4uGl@R&=iAnQm_qkcO1^OCR-UH}THl%YyeZ(FxyX_o zNC>t=w_A^J_If$-T81+E+GZtPOAfX~xNFHph(Krgu9d7>psfH6WOJB5Mj3owFd)!g z>c>BbZSRUhr)gd`kT#pWz8M_Kwq~SRV|w| zlgWZ7#+I1r8Y|TAnz+()G*jimL2%B-m;BLUekfc>mwnZppF;>j>Lfv?IfQ0whI#|{ z0RCh`mmbjL76CwmD`?%A8-`d)Fra;!lm2J$>t3TBugD6X_oUCB=ywceXHpxj)984R z^N~21^ef-SLAK;jplE+s*ill+=-p*rsZi9mlH_Hf7V(F->bDwjNQur1pX4a1!k#KC zZ9*hYmpXo%2J56h^Bw|C&f9GBje!Wji;#*gFYt{P2osXs#)+7stwT@LR_XSWzH#Y! z##a+Zh}<=qp#8!%!Ygc!s|iP|>$U9Cl}iujV-7SA)I(^-+xomApGY!A5_Lpz;w8Ll z|0XdT#Vh=RRycNPw9ZC{`O4Mkr&F9g`@EbxISgGtruO<`XJ|nvcYcA@XnA}1#`m5v z0$3INd?kgy*ZbjX#R(_!F($0CBuj7>e%YIX7v{vr6g!3wIf$J#G%m^yXiDBhAHZA58Ql2A&0J zI-{YM%4W=#d=P@h!BOidyxMZQ8^Mu$_+(?vaevA++7DvOXwKpH4TfW0NV(KDVnC&HXeViZ@2k>~eY-IY_&$Q z6c1PNT!|M&MGl`!g~PJz$YVh%846hW^JAu;_tT{ZE!fNX<-HlN*y!uE8{=X+!WZ)( z70H$kd$huZdlyFgK-OY;&w#3R)=pZuAEEiD<@|S}W~|(1aWY!@N07vyk&Q+4o6`tq z6KjZ$%5AIevE$#(D!CB&Dt^LLAE&O_($^i+7j35K?NDxk*^OD5t{BDhq^HXyg?ytY42t6RA`eg z1_QE(t00z4Xd-GhwMUP5WUg!7mSU<@kGLyq^Hkyij`3EX!>_emdIMlBXSXFM2vN+7 zkmF3^c*bqmCpE zmM8&F?%PLZ9Wc7wU{hV(-@U&$Ih#1s-RrdK!6|N3VENhR<_Y>5U`dK@mI2YwZ|?q9 zZ!*GHx8nWQT-EZY=#kB;_OLa`hlF1;j$sF*+k(7Gq#3n zeL5#KrbE+Mat-bC|J0xU-!Zvl>ZeCd3z9K|;2*bw6_l}4J)GeWMXu__?aPLctQQsf zw4qBuvM6)$F#e3vTQs}rS#HTuE@#FMXHFc=Dd7TMTZfTT%%4O6S`u+r?(CMg`qC$@ zdhhN>PU*7dvIALwv%o@Di32AY86q9&`js1mgr3wfARB5RIm&@RS zs%ojIG#&;0tK<6KIYGEN$G^}@{Vc`?=8Jw>_;<( zCxk?0nbyG@-OL~7HKdxwM3tFra%)8P7%Z5!bR_-#lrHZN(*uqvob@BeapM!tyvzElWrb;_v`MUXNLL10PU6O zAPCdJm5D<25EZ9IbUwVmzF-ZD;FJ!aEqY`QU9GNec{62D zw0p^ME^ozB9bIySQ8yVhweG8?;3kX@D+94G_Bb@nxcRH%m#%?Q$1bcp&G=!X#e4885fr^K31YpRp0Dp$}kf?9qu_Kkjd&u07 zNcjS5Q#QzWpu?r%^3Orz^k4EzKC3R+FG_Szo7}g>4P1}JzX!oAas&x@LF0cSkbiW-!s-3H^>~)P`&E#;)xYKzUY`mwkXND}j)V3H`Myh>w~+)XtNvOP9Qv>C zq(Dz{^3QcS!b?DC94kQtWv%hgzWa;e%TG}K)eh5O{Z;4m7$BA#uQ@IIes1?X?)U+! z3~YS9dBcGfWSQS!agXAj#ck!k7k**dfXnQ-WtWWcd_Kl-aOUbJkQsTD)B~Y#;QJ!@rW-B z^QJRox2k42tajQO5#B$m4tk_K?_gQpR8x$&-L&KEKNp`%Nry1sR#zO?e<)ot8fiHl z#TpiQakvZ_3BfaTvK@6(mREMaU+_?t)!d0!t)5R{p-_yD$6j`+jNvLta;O(a$*nef zdf3=D*nC>v4rL2(&3L_Nh<1DIxj*~>a3wN*s+LtaywACGeSO+_S{B~y^Ip6DG+8a<&a~Y#P(wOZX&0IyE_$~zS9QAy6 zhq-3toiTpaIhr(%+LGFd$O#=MOo+KoTmd||m_3sPO#NLP!;nEk4lz~qBd9wx>McCt z6`ZUqvB37|f`5qLXP-Y?fpUIV?Pjo9S@xs?W!4H9zA|ZM1)6l}7%?g{C6xji>vE%9 zbQY3mjsowKN~7FI5k_*ALwChKM5gfbd5$wv|cEd!s5@#DJTdc zfU!o$9H;{ll87K|5%0=f4xz`_Zd764*#;&)Q_oVo_i6`5_90WJTYu;n*GBK*1YQgD z(>aaOZH83Y!IFydWmlkbN19t-lO<5XPKFf%ph#sYk01#xBLNscbSZ*z2ok>j72pMr zf20PlKr)Ec z&?BF1#tmY@aEy_fk5-SaAO^X;PMR*K#b`0EJJLEov}76BwtMjz_9{2YiY zS{>Cmpb;Js|761Uzg76Ew_z}ubf8$y&A7ziOy(~SrTK|CTcl!ZK1M{0*uXo@UOV{Rb`>Uh^@)2q&mt=9Ixmxo|$_L`s0#08FICwjDxh!p{AOKjkV^5{pAgne_RxLxG2~ zEUV?AIF2kk40xH&QaCFEr-A(1uvAlz(lo#MDKix%9Mb@8g*jEw?6p!s>O!;|O#xkrD|1$K8Ch;G~#JfSU1acp9A0)LqwIsKn+qx)QG7htd2#$z4_JhXIHG&`sZ}> zvdOrA`Ua}q{~Yx41o%%>q%$V^cACzlxLOxXsKG)eE~ErST`6K}H)buOEhn;x2(U6) zu5xCf4#qVWep(1kQ2X#6aT01hfIP*|L;|^|SUL#ccwsk#g#Ngkgnp16^8A{Q4nnEP z!EZ)*16tz0)@pDz`_UK_xBII}X)utQ*^2`|zY_{kn0ZHhRUAXVZh-*X3Pc6B`TKl( z9Yt{UEk$^kZAv92a!XJ%XKIRYhYzv**n~n2%?cC;8C;U_UNba`8qhupJ__xOfcZz< z0L8Wv?AAM-D6o)RwMu5`Y`?*+sEZ<~ecc4Zi+p?jyG_&Y)7pIYUMod#)+4lepdz(w z!|W^DOkNS}Q6#1kB{c-8YdtB=G< zkN3ww13xK1?vyjg59tJb&k$=e*tCG6t-(fttbvF8v6L)!{r33gnfAaV9PQP9uqk4Q5M5q>uWsAvT>@{?1-GOApJ@XA<;mrz`3)>9+MmMEsNdtA3=-E0>+nEsRNP!^TOvKKovz-BC<) zaTBi7#z)<}JT>ug%l)cFS*zzmU)kHjRGxj%T#HnlS|05~96s{|RXsGym>2})=svL= zgZ7i`9@F)0Qu)$TUYu`vN+bJ|x6h3h)Q&crd%EWtEWI01dN+Q~!Or!^N5K~9T*6SW z)X^b~m=xHRO$SX!5$2oEs#afOZjHi|4J5)lbeuoS6SMi@ES7(Bf3e}DZuNY*PzvzU zXnG-h(TnV4v?u_AkSx~&O_fAUs)Zh!&jOV+!7!8ZWf!lg|LJVEKl_}0S=h{H*6ify z?sZeVX0;hv+wC=!uHUIl=6k1ivs-(rl$63d~B6=>VymL+W%lU+bDu** zWc6w5fU((73ou?bd92)BCn~pUu-;Le3{MMC)R=^)jWa_f>xT3MW0wzDj-;jH)mueB zqSaer_j!aa)r#&Bqo-K9#oFXGHk337(8cF6;Dsc@eV8;gIzW^mKhKLbzovJOUJ!R* zX5iu5#Gr$n3FI==>_lCI%2vfn(x{+9D^TEbI5xtkPzxQ4Z(u8_1GwB45HaMooJIB#nY?{aX#nVUG?*cqMEKbw6CmH)g6=`$peLX#q zMgvQ_+FJ(~6tugZ$u#e&74digZot2{m-e6lMA*OH{p;1Rm1pO&`mvgCFT&z6H?`fYQCdGbYsCBkxr`Lhj8F6!-ggknNx%%N3{ zZWfhV^`b24S@~k_M!wk$dr8+f96K#PKOC#J+}pUlA1WFlG#DHe7w1i3P$=ieD;}L9wHCX<#L2d8KF_*dSU#W$$e8aW>WeW3792TFvP8VAFZv698 z@Li^^ta{DUw26q*L^3i@6T4uPX4<;)&(*92 zH^##w5@ie10GnZ0fXy)3BszL4#Nl9C7+=}N<`KTbqmyIlKzZtbM$L}4A^gp%)<{|+ zi%FiHUIS(+A-e5NtDDr5q#{Am%7^s~7>Y>H55WYOCTs~%wFOg*6(93E+2^o`)cd5D zFp12()Vup$My*aqZUdvYo4UnR;D{FSiEE-xhSez(kD;V*vo`rB$9ViBT$1S9Nl;}% zC(~F4dh5Co8~WvED7Ag3cxS`MDrG1a8&)e*4-Dm+>ze$w z?J=gG+4l4eE^gSGDd(bmYq4%-XpI5;g7i`ND-rrK3j$TLoA+ymb5+Qx-;CB&=o~j9 zt;CmKsE@_CpcAug{A&Qfq(Sy|!)CwB>xAZkZhA&Fk_U57N^SYzezg|s#2zdUy*8*( z8Tw56C2eJI?PmX)A=~v}y}YS{-}bZ>k_a$VbqI)vd7O|)mrjyOdSRSUaJhQXsz5<` z<3n?y>hr5m00c5W_oQ) zrK&h3BZ2^bt-a;!*~YKz79#%SWlrEa%;hO$74iidl9GBB!DEb2f|x(_&6?H8;T&fg z_u;D#G#BIueOGu4n%%Sq)6!R_KjwFQ@m<;W^8*eJ3I@!|V;aXEd!#*PtT*i#12+6O zx+&?DT(VrVT=9!s3*?P2Ec>|Orrlib%L)#j|1}$oT*MZVJd7!7QuYNw6j9encc&R> z@-U3ik4s}tI{~0NR$%yWBC#e$+ed3TKNUoxh<{3zKw7=;i7`a!{fSw`FU-skhgH!W zC+!wXu9Y|;fnh+BE!F*D2E`{qiipJOom$>UVgp$5P~*&Bt2ReuLA}q&Z=h-Tj5e{wfirX4RD&my;gpovG>b zmyyw1d4@*9E3HRO7yU)15geP~rz`O0`nCfqw*KRdNvfs5P(rg##lt)S)+xKmtAN5B zq2j~XRF%spi5QU-;{y<(6TFjTZPtd)R}OUArScL?8vOUCw_;{OYlhF<5ixQ31Ph!f zXpZO0g6n~5f;wa0)re3&peSL#_ZdLrGTzgmARBci=>o0omB zIez-+#rL}Hpcj=Ug26VTUAA;pRu!opI;zoW<=)&BJDi`pnyg)O*Kq`2GCz7k<@I#j zor*rVYC`ih__4=p{PtPf%jJ5|z_)?$*aJV>^H8iTXvtnpvS&b*)nEu#g1F`&OU!E) z1h4s<3yU#4pO!)Y*m7h^y}a6a=CMf5>+2-5=g%s*nTA;syo%hvM-J1}7(l@r*l?)NJ-= zV7k>ybfPEJnY%en%Vd|zE4MDk!cNnCNf6nmo$vJZUw$pZ8Gl`ND_4BI+N>=pzH!x&Il}pgkM2eXn5gU_hGIFch*8I}F^7H3`#^idoUqgbL_H z=hh0E+za(xc20i`m%6zN+O|Tk#a1pj+evRrm3Aw(5ud>%8AB?s0qEyyru?r+%Drv( zW49KE)n&j@@jXN67zH6aDI667hiE9Z<_pSizDwqhBcC7_NEdeS7D$&pm#9lR$5|sY zEpFZ^D?2J=c|b#J%zt99!&;8e_89JHy#B<^PsFn!qGs#idg5#D;Yxw(;7@d%E1=AC zem!BO&MW^={(h#gY>Xt`F;Rtvt!gMAyIK!fdvOSu`OP~ieus|SYW{9CZ}v`ok{14A z_ThWYkOoChK2V|3+D-LyBD-u6yB;s`! zu^jEyWLR8Tq@GLlE)n|}D>|~92}V;Lo`F6Z%}(MWDYAyoF2O)V#ri-fm`T@oqk`!~ zS*L^$5EF(ANX5>H;X$GfCXsS4yOz1G<1H=U7QW`)G#_MTG#|{#d7h~cV2bNm3S&SM z>XJk}*-yK^+lPR=KeMI)pLtkWB^Vb+p~M!8?g)2%&4UOi3~4@(|4iTzp0 z5N~{oKac~Hf{0!~@_`{F@3?N(Vc6y1kaBkxTe7*e_UQiVU~qqWepLWJeWK~B0WW-t zGbfC}ZaO9NYc8WQS1&zwN^k70ybpIJsf*q+`lB8lXYx4z6c;cDz1}M)2F&v(F^O8o zPhxQT0*np<5lfX`BjlKkGGYQHCMC!*(;)bKgf6%8!^lV?n54u>QQx}!^rhgq`4zKG zJKej)On=xgA!bV<5z7M0SsW+0VUTHN%*5f(vb(qxL$etWfL@Yj_@b|ESypBCW;wZI z8+8H&th_%50q5BY3Rvm=CN>(-bGjH>V!UcJ>^?buB{hp0URWeo!yP8#M~P3vhdXlW zu}!;I%wy6cQHLwj{?5$J^YxUH;LDWy>%*6+<^w~SSgT@lUr)CYQjA*PG6)Vm5NYQ=C{H#TlWJvn?rkP(g-u9^k+yXhoCVTfFIW`6UK+rDy{Pg2dil?; z=G()nEoHZjMNT1$cBnPOXUZ+JcC8sxz>^Z&-qR`~RYa*^Gi{m8(>SOmxEoYh8K)F) zpCq35F6OKnLaCp4I%v}2IRvUcrLFxD4qBy8Izqo2)ApE@Dy8_w%2VnYiw>og{XCS@5)q!LS*B$1NX zl^?S`ry$T?L88XN?{a^ssGto9j6tR)MkL%sWQtz5A*f&B{DuxE&lPyNdbo^PqOKPI zsg?DKu^#UV`m2xmeiJ>`?Yr9kX4$jY{hLoy#|~uLoUfQyMrr4c%oqzhM#_rl@07pJ z&DvNyxPKd@l0tz8mCm;g7^BTEi2!y|+sd{ey^*gvMKQ2LxF)^z#D;sS5PBwVu#87#>_UTYZsMrrCP;rHUps%RZd-M;7GbCBTcTQ@K$lb^emrFpgRHg=WWK zi|=gK_AdK5t?c`ZCd%myLQfpjwyz@x<#O2iVAcRi4@szS~u!*sVb+M8(hqBT(n@dK?HV?Im zmMu8>(5_|b?z($$u;;#U5Z%fUiSza*IgYm6Rw=7T8(X;gB?X(IX!fs#qfvHUu~B^e zq)GqvHwr3=*Q7}j=z_g>6(jx<;SxWpDQwz_J;jPwtFE#mU6R(zkJVoC9Lun)jk3wD z{EsWJAyNdD(is+GbX>l)Nu=XA$SPZgMt zZ>kQP8{&2+#r8?;X0r6inzHP~(D5^qTZmEuo#{D>o8ttt^!?4}aj6rM4+lw9=-*0* zc=pwkL-qHkNbB)Z{I8ztdmGIL>I~MA=!mdp*Gu7CzA^2je80#9c<58n9WH-5Y_Cgm z>I{U^Bnjs%J0|k&+(;%fd>Rj=0W4%|wvXu<=EqKke}tKvOq!HD!=hCb^qtTD|n4WPWH3%$>eDHJ?oUiE882@P-2DFsF|GVHt93T)wL7`jim<;M_$i>E&@RN>Hg^U#U{Vk_dYaKtKwPsrcNsWZ={yx zxoIGe{wR{nP~mdFSWV>Vf!Tn&a(+XKbO$hAI2-awUajkh58Z1_I+WcxGFLv&4RZm| zA5=HJ#>S~lZ1Fos`K6pZ6Pom$IWp~+?+hd#_-E$|&77|SAbkZ-U^qmuBh0%^9g0$^ zxeUin??TrXX}bUjfYx*K0|}$v;VcEX(_G|_4Ra@eKhy0==sea}+=wElj@<9Jx*m9Y z$HiXCdP&c+dSmS=9;C>-uL@QVfg!7*_n1(%Os`E1RbEfEPnN5x&j3gLz-v>|T8sPT z7vAF&vN=m~7ppQu;?MXj~)7@m&4n1*HhubAQTxy-Job!sVoYTpkLj4a6oXZZ3PV&pW>W`M1 zMPXmA?8XOo9tV%wpBD$cb}Ag_v^07BJ1;s%*EEV~a-`h60&8SA$Vv2>a$-ouCCns* z@Vdk))Qb0K9>Y3>Hn}dDpY!9>3B^JK-#xxNV{STU7Gc|uNMWF_KWzh=Bi#&8zX{M;xHP zD?RBCFJT3=S~gt#8gXz`42M55)iba^MU&#qoQK^k|M z6Y<3DqktUE*VocEYIeJBIg2Q`c|3$A>N zVdmqSNu(_|y;0{sz~^14o-Zdzp!639s8ot06Tt&01t2W~dD%lX2cocSp3+))?iiRHNE6%C<}XQOU%lgIyge4iHe#`c}*XL;#OL88Eq{*M3)j< z9{gs36hDVf*EUQRak9@$bDyur+wI~pm0>gJMRMuG!Ox*JwzdOPFL=L$$KcRg^YI0R z_$#=Oh(JQV!(p&%YXb)TD_nAfga4IZl|L<>K;9oaE(! zbDFT#4-V9&YHn0;7M43e=_`=e(pReQ9}19^@Kujqz4XJ&`R1Yd-pgiQ=&rt_gZ-WUt&Ml4?nOc((~95= zz^8a@Sw4X?m>d+`xJim`8q;>JlGSEz#8vyKX=^o1 z(Ndb`Q?Ky|(f{+jV;~zemTA`3>>~Kz8V95%ir}a0usLSq7ua<;8^7F6q`GYwTjVS4fFA4+3QdNgE<*YQkpUpG< z;Ugq89xJb#(QxQL643q}M&bnJ+{~^~kCE0SEe@p;p&FFN$x8`hwXJl@OrQJ#`&4}z zu=Xw!{|{c`WKID>%tc&udourdn=;FOnE9tB{Eg!tAy_7d+0e!0+=JlMMGt^iTikVfOAxLU} zltHI#6cu{hw6hiB*i?~CIqxY^rOHK*MkO}bSS+DVrX3^G#+&0^v3?keHcMNmRe}N; z2K@()I7vZ+cF5es;#OImiCuxBG|D>}tdRr?xZif}RF6G){QY-)|G@|NVWD{ihcTSt zScrtsxIlT7F2T#r8Eyq=FRi4!YiT+V8b&j`KS(1U=hi5Mi|J*cq>O|jw;`$a$F13d z4$c-Ob!&ONy_l}p+9zv$sw403oW7apM!<}V<$e+{;0uElQCv|d@k{}3KK4FB;JtB$ z)Ap?i6g8g+E09V45|mxwH^mY_KsJ@YtbcW#S;YRBe}9-sO<NYK1nt(QH{6NAB2lM|kqfq-Nke8SKGgT{#VUH-GOg#Tv#wA} zCjgwz^bBhu+9M&kwst%R)B9IUFLm8F442tB(;&T!a&%bn>o{5`E~ykL507PBlbn`R z7esm!q)1z_<>#)5``p=)j$JdY%mO?*w|SH1lTQvStxn$>F!qQEGg0o%!dN2}zfD>` zZBZ?c0bephd+qlgj=G`mo5m(l!Q@- zTbBgF=5(G|+)9^NBvz-0X9miu!Ie=qPbzi-D+4crf!J$@?ORO~#HmLbIw|1>>&O% zg_pA=ECJrxHMVUlqxpiv#76^E%LC2~X(=<}rYAbDho|f1BHNX8X$a)m43YWE)rA|= zRbI_IZWn2jzb?o%)^)O*+vw-zU4pbfdD# zZ*TsG;i99kR{dy-=W04@QaB*{4Ny;sXXs=r?WQ!h^!B3qp){*uh`Q3ElGak8kcgVS z;nIlIRfF-+A-1lyas5OxTvxZL$ttC_@$-4^`OT%S4!eWxDu=hW(RQ(5cq?0o1y8G! z&T0B8z{2eDc2vY(eU!>^_m-^zK$J17rP|iA%_>WzFrXO=hEb#7plx(BwAq(XG13}* znQ~zcyS75vF8RshvdQoGOy#sB!<+a#oss(SxX;t*p})?PYyY~ZWc^#=j)dltf!oB? zcTjWA^v2l3k=(Pq$_UuPA$)-| zu*Y=^eUHr=Z2bk9CiqkVQJoZp6W$ML`&;k4ls^S2)Hi#Z$c{TGThOK%jLIbSP_E)p zHS||_lpbXpmTK8GFx_O^I$N4bejLN)W`W&*aEx@Fjk6!@Ak`6JDect8z2Gn%Vin#N z08}OUMw>ib_1NSz_HRDOyd(-j4Gop6XSz&px;W#2;bJcZwJ=%Tkp zPi%xP0$3bg3S^c|*(~di?9^tD{IN%b_(rRTBT^Sz1`PLcGJ$!O)_i;FqH}xfrcL{= zruTYqydKDF-8%uo^vRx1i#N>1sG6FeRaO-l+{v-tkr}dw++*q_a_TK21lFvIFYg_g zrp(LThd{dbJh>bT%N`u}CJC3w_5r8bv~r!ZEQR`A^K_DzVbDDh(C za+Bj@j&3=7O`{}FOSHc&d$+cG(#(c=gy+RJJ(eO7h*Nk;L!hYbR|bx)ktoBe^*)ti zm0G}iGK6@FXvJtb7F?<@+?if2(j{W9@k&*&3wjcx8UeKSRk1&9Nh~3pTd#8`x1w^V zpV{?Y8M$|54V=ekg}^PIH)XQ7S1WONEli>_G%8k?dbc~B`n1`)?fS5C1ZXJDQ>@Bd zZ#{T=ePiy**X|-fH5q? z2|$`!VrjanX&7$tI#=pZ0axn5a7*TvCq}AGJw`+R$tKNnb&0a^FcRSPUD8)VKG@Pf zd>H<+PM=c-d z7x)-Dzb=qxyy8(9wG5k?OOMdWGdXIt5(E{*9&84^PYcjJ$X|hK7xC|PS=KThkf(Cp zH0pn`c{MIWwg-A$6!>j*oxJjY+L|3x z6g;fe)bw-HlE-)RM85xgi9mcmfX8Mh2!85X0mU1DviOK7h@sUn>QEmvj1u~_#2uD| zz<4SN3csi|%8esZ{lyhb{H+VO{jsxCl7ujQs-h-3l}c#WK^!CAdu)-KVmb9Wr&9^x z*hU^}(JZBvsS+g=UxmLYP%V%Oj>@A{#K@6!%5l!@aE^jT#hc_`P)pE}|Nka8E_7Dz zqnV4=r|`pubF3slAMB<;_NJabvSs_r9%aj`l!uhk_jWk~vufs(8J66*4L!tTXp<4; z!4}aT0?z(&fSOH$W?25_DDT~_xEvy94h7*Tk03PPk~;U{@jIQtHseTxL&ea9|XRRMUEj9k{P_H zl}*Q=ou5yUb}Kty_P5EFOi2jLUc6`)){OeKu8 z*mq@_M8fnnd@QqK0xU!weW4?6uOvr8|7A(La0(u17D)kI0lWxBj!G?uBZnOY_#1Yd zufddr0n`tg3{J6&-z+>U>W`M5-uXAIu$X&i`7<<})n)1g$WZ=3Gc*}sKTYIslDeTy zK{A02-Tml-b7U&nDa702kjYWL^G890{rAI3s)!&Nq7jI|+Ykl8$p#Jru?z%UdVL|kZ_&3rO0I4c2L#08_ELCwm8a?GOYKWmiS(aS5 z8PEt<^7}yU^us;LiCV|>!-0sjv>BjpsF?r`-jX*m+Pc>r*c{`B+e;wZ-f2 z0wZ!NQNBp}1_ZL+fwHS5Kc#`?ja6Kmb zmy7xSUY6pQCBO^zie>1wMpCc{Cr!egK;q8@r5F|Oy^M3_e_X#Qfd3Z@Gy3z;2|}y$2gPAeey+iL z%Mkv-+~^o~?L`^CF_Mm-pku&Fmp<9SafGnJ*}zV1$dkan3sqox@7T#y!s^ziMM#Q0 zp!pjags0Im)3Ib?{K4!IyGV$D;ez2y!nJ})vZCiXf1$J8E(^VQTOd5Cf$;B%{sv#c zv^TB|)Dzp!=qX?Xkfk+9+$2{UZ&b6z{Z?#O1n;ZD;gWkvTkYi|@ z`X6w|@JX&a>-56bY2&##Re3U2ulcSa(;w6(ORV@^Q;7)6LroJ%3ckjIVvUhc%3oVd zzE(S7GQ8^{j1Cf|{{n(78AE@;Rq*s+*fW-#Rn0N9_{L>+h(tpepXP#mG0@yIT_bf*na~qk$iiqdT|4C% zDZf@|~2*J=7j1`E>$)xXeoH>h7+JT>5P#euw7Q z0tv}S5_=12!JMI@acr(D_0I6oevAc8YA^DM*4EdJ+&e5-hp17Y|*y(XjiyZU&VTgi{YCu<~^74d(m!k;eCi z68rvGip-MB;pbXWa=5B{WuEk4y|A$UUcd3I2=f#tSwVOm%Mlfb*;D*8F5hn;F9F(@ z27N&u+BX!yc_K*1^7j!XjQTiIx7i>6@U+^DLrNel6Znw=n8KI*zM|dvH28lS2{JK7 z0vv9v$3#23igTJ=JQtr|4Br)96=AhLUmScJg!oYe+MQKylv;klPEe2QDZPfGtNeXH zKg4Q5<-J2Us5Np)NoKILLoD%-7CY-nh&k+*%rk+i@6LOF1<%)T4J|6jDNlymUqpPo zl&d%|foGgy)gX38>LFX-_z8#viMj}GXI(er5&8TR2J+nj1cH9luY7VBK|&Lg3@>M_ zg`{%>>4~(A927qG&;pYg;lKC`9KiO#G*>ksq$m>}PZFkVHRann4}l3_a--n z{62kf?*wm|3p-vbF)7W<)& zlG3egH9V?a@ef1uv*NiX#4inQ!luFqm0b0^%|!*&EuW8Dit_0$2Z|T029x3n`v$^K zxYhepRfZatNKPad8tGZRJkKvG?4M6Ax|4fWN4?#a`JgkiBPTH@MA>o*)-cM#|6F0kf zr=^se2?3H#VP=o;x2@Gec)MZsx%u2?+)5`E#+Ba_(&MZfvgLQHJ&o+txGza01$NsL zgtzGyFI*D0Z%%HRDTy@~oHQ)G{e-Qw^KY4&T?)Oat2~0URDYR~4Uw~r=;(Ll&K^27 znaLALaO$Z%B@}sCvN3Z2<4cw8OG%LQFHu6`8vpdPe~=yiG;x0D>oehZ$v<^`)nF1= zRq2X=`dZ)gn{|2)&@mi@5d8uP#o_@vtBo-$uZ^E8H~hI2esR00ElAT`)6YHQ%1E0B zuiRn-%h1sS4;YctkACe&Mv`4l zf;oHaOOQioSY6jaR3HCWr5-KD%nky;F$)Ho0$u)GQo8&nv(KhpJ)!s(+opYJ(I{_G zgx7Plut5C(8c2X<%SlcIrV=C0%@1AIki!Lw)Q9*qOF7Z4M7U?aAGZp~yjlA!kjMWU zQ^ksCQj?P?RB>n0->((Wy0yf}0>nSm78fh1V>q8G1jKUL^hb-uYeZ*v#3K`&zsrUJ zV8BHopi6_?h9X?J!x_m=3{@%Oin(X3#ccCbz29J1xEsKJFs zS(430RFNrT*5na^ewNi93PFD#^$4u+-usB~q1n6_!^TFSM9fS?9o zRY)ydJLk6Pe}qUt8=E4~QusQ~wS#{Iyu9*%zvZZ6uLL9XFeX_K2FCWKWO(B?%;6$HShQ0r8D$zbFTqOS#O`w z&0hSu>FMvO06R;JU%yp`3M)ItW7S2>Tzd=gYRFEO*1umYpJTO71Cj;-ZwufH&x5>XY$;}0#u6;GRqE;UqlQls zh!Yo*7JV;0HfYVV!mgT8{QCP%1pddHAW0T%l>!Tv#-dCmqlqvcb~>i{RTZ_Cwm&j+jR%Q@EX)d?pn9TRds2VpsG_Ghd ztLfECdGofV>n6I%8%?J8L(wavSdzLanilu}H?n`1OnH3X+h2`1n zdGJu=j@++o=6;VO;KSAPr)O1>{55E5pBLJbz^`LadAJm`OgNU8bC_)99 zIw%c5wX9a#-u;|VASHUAGn1{d*vkO=`7q9>E|IE^mn!vQa(Cs0<}fajK%khsP|>Jwiwxc{(Zb;C6dS3&o|1Yd6DuV}SO&wFjya%!_b4KA7_~h6ci9wS zkh_2OG2h-Lq{w~1KK4tzGh{q*k!z#p*D`(+MB;{Ku?>H+&UAfw=}s_0nLpP}l-n{t z%`o2@0id|=QZ9c28eTl0-gln@fut`D_+Nns=?ADfj1gs24u1m3U%@@4=O6i1Ft7Fk zewz>psMYY>&b&SW;cb@t4bav!4W=!bLM^b8!ukr-^R94EUgh?Aw8k z5^X@6`i2KfSzD9Z_Z+rEjDoR#u>dd;;2|7RUms8s!7pJR!Af#-pV=S?j&{MICfS z!bVt1(9781xmr~nb-ekSm!y-?U`S1w$<&OU&k6@UO%#f6Y2dogTJP{{h%=% zTw#@+dsq+G5F_xLM+~pS*-rS>Z#7&B?n>pIy$gnE(7z2b2(Op71Ydwg;0>iZ-qu|g zIW`SCO?NL`oBNpsZ2T)f0tvSjq_FV zAE3xKPot!75K1-=o4M}@wIw82;*P`lhFDjq47Hblh9U?g*p`eaMr68lzBTale5w!81V8EDqhi)hBq5^&{m~Lc&w$KDKDL$~;Br4!oc}K=1$DopB|Yqy z7isCO9-jMjNqiEf3=U5mu>Gf_8Yh!S?6Y>2Wlv`{<+lWQOV`@+{~Pw;A+7YwoSrgz z9UV46@@vbd$=ioJ`ZDbLTHBOXx{ALv=QLf;vYY?Pa_;W~)TA=c7z7b-x$yL-8--J_ z+-SNjJV0s4UZ0S-Y!G3$7eqq3WXLU_%pkLkN=87Ld~J*J;0rliu~ZwoM=ibPGI6Y2 zPi`5iS$q_))>M4Al&a;*8@aSu$FR4ZqCW3xQVC!ajH|l0{}O*}X5-Mh`Sdv%A569l zzZ9*8-KOzQG5Y9imkhnkK6G4Wcd1EK=7wn5@9Q=@-r1nFQx6v#Ws*s@j|_UL6qAUJt~ z_@7M7RoJs)dBzT}o_c+?SlE*;!Kr{>u zJu_c`>bIZ_U|s&6dHBk@{H=v?GoxMx(?y{|i5Pq%XuR8r6g_(cKm5b2L=^ss%a~j3D?QpV8({Pc1_88N2$}Iokv7Z=&M|pp)o-YVP_1au2Gkd~<4@JIKl zrF*M0B5>qtFHsKg^t>M~w^^=V&L_Jse}1UHrQmz2*quYr`e4BK8!wdI&vF1SqDO=* zB77>dysL|8G=}e#{g)&j4!ZK?H++E00W8S(2QSb8Ubtg$nS9a)r2cTrN9mFR=4qs_ zznjfEW+kWfXQiMZ1^xE>KJ3*8Kr0Rc;G965ZOQO;X;Oi!wTsOHR_^MbA9a{x(0hyE zp9(BZYKcR~bk+A{ov9RM{I~35u=?94b*_4vPQyzuyJx3kf2xMAX5h2wsC|!Evw62b zK*FLdB247s89+|fH_ULoVZFKWcx?QG=W!y%;Aijgh(^gbQsMDf9vuxk_FN>&K}pzX zL{c@e55&PNfY4WOxdew~N$x~Irge_6{^^3YhSn@CEr#Dev3;MaIYA8?+{*!R=$?Gb zn&6N)C6*9Bzi((^^7cj(8>0(3;43=+3fEgjcT;CzyYl{26J26L>Uux9b*4&NvHM<> zl=k`A@OT2`mAm;DH5{^p{&NJhRvAc^%P&S4VB$FVEmcs?8Ih72Q!TS!6vbf0V2|qk zM|?&&ayHShWi>Pk>q(=H>9$}5#g}_&>tGcnaA#pdTW4F)zZlYk{e2_i@@RVsUe_se zWnbFt3{!1EQ!TvYc4<=(^*FP8Nx>{u>)TNM0S(mI0pb1O&-V*j&|>!An1CgKB-Z*{ zt@@Z+7KNo(S^&8&mxDbI-O^l>%D-+*OKwI&04X%v&!jE5vRak6&TLvt(qH18hPIy6 zH@A~7RS#8Jy`HwG>A%5=s6vJa8}@S=Zrk!ZaNQ@hQMMEc#tX6ILO@GNk-#ETrs5zK zY2Q#wS{yVK*sDr;)Tnl4PjX8rx+o>>dRwe25JIsa{DV;d@zah{-+Y8JUWuY;A}l*z zB$yPk#0^Ye0zmUD@GJ`gQo&Aw{DWOJmPlA|Y!-xFrmq2+jIrf%EWB33o!{4bbKERe zw}^a@gZ?=Q_<%IrDOhcuD(VjnJJ|=3q>dU8^kgF`h8FW(|;fgzD|dupNg{n+Aj@AI0Y_iP`kndPTAvf;#oD#}k{Nt|NR zickiE)~RVV?hk#_*j`FcSAD2a9P)7$CRPTnu*T+!l1MDEEMXYp;g({Mi1k)xP>SL> zNn(}--LauslPdMfOAYK)@u3=jXoZco=)fjA_2&z(vMlaRsC|jDi`K#t5mlw`G${@`Sf!Gxbs+=)MY;0V?`5-M*#Z^_dFM zoU>nwt4WNAh{6WtME5s4M{S*3)iMZYz94!bdJP1okBH9FUK)&TAcXThUvCVDrqB-w zjq7SdX><{}#FUF!r@ZfGfpIf3OzI(#08wN@8y;#p^+92h*tZAIUQmq#`QqdM4f)fD z^6A0gZunwkPdUuohDy+A)q zcoU9?5Rouj&Q_E;3YH`Ysu>b-P=_&Q9CX=V_QQ57Q>|NM@1qcZ~p>C zYkO&k&ZpB2m^zM9#ww4~67c<(%~{Xz%=R1qsucCX@XR-!vZ#DKJ4wQaDj9Lf0W`-K zgt-AZmZe{_cfl?)P#b4g^qImIs64?k|UoU|FGJJ3?ob6;$=-1BC95_lOLUUPX| zy`evJ{t=DoX@8T7n&{fP!g*$FQoERJ#yO-QsQP^E9oqC9{@p z+ab1`!VhE}jk70j>gfBt72Xj(@n3*kcNFap>D#Fh}9li zF^33u0yx=tJRZHdxi=oIu?g$IbzQU$fv@l!*RSi&HS3=ID#|GSRov}k7@2%_tbewY zzj*#c3A-@*$@Y?`qEp_C^mr+v$iXs-C&u?CJCmFP&r!lktwV-zF@8h50>jmtCPSpM zZh>Z-3oH1ryZioHz%L2g(C}IfpSoa$YXzg{((T>wU1Mli&fV3$A~zc*L-{_Ax0n$7 z0c2PJ@TLlBPR0#0tZD_To3I#sSuQ5wQ{i-wO$7}jT}p*>?QM7Uz>J{Hr|-qEI|6t3 zDId7Vo^PyOjnZ!#)X8s{T=Vku#8xf$wLX<^I4!fLajvGLvacG=hXCpzw4^@IxPw5H zn7U0!OC94A?@G#QR$+8D99vN64H&LIENt-Hv`VvUux&01JdVqJzTvw!dRQfF#oG%b zC$_ZVJmCutcCQg!jH7U$m#}Ggd|Z&0Zw_0&Po$}?JAzC{E8_RZjp$yXp~GH@C~Hm( ztvFCI-5o{yUVhx=mz*rHI!I+*zqsVRALmKVocE28_ubDP?OrU`=Z!5;>gC3cSdilb ztTF30{IEdib$PL@uaXINnOSk69AAx)ddU{t!yE0EZFX5t5YVg3>=ldc4a2c5msm^e z%f5`wUWB9#X;d3IDb}2FNKA??wv7?UndiHTjfEIn&?p*y#~Pec%k5!eO(-ar3jaT= zwAYzf;R3izjSs4>jV%J-4DJaM3U(I@WgRj#C@RbqtBIIYqM?xtjP<1EjabwQdlXm` z3d@zkb1Z0-4GXX&r~ez(NQM?R{}K3yT+4Tsnr%D{ejg71kvLB zTDmbR3?&mmGlfONQeV3*XjBZ#u|lWSihB%LRo<7Yh5x4tt*BfrwNh;u`n_ni+S6sw zYF_9x;4psr@bP()`u-q%Wz&GwT>cK|dGooU7&?4hBGII+z#>G9e3(H$w?HtJtUR1D zSbT+Z0`jsSg(hYK4NkM_?)nM=-S)-Bt9~)-=JR(()A~hLtPSsa4?uRmWLYDftE4fQ zxZvVc$XRYOHt8@$ggLW{Z-|)z1*^fs_DL0c@W$1)%`Wf%p!5ojtK@nE7Tk|S@TG&M z6OBcOo6nOr*H3WNE0bip2Hg*glEdl=zNd@FceJge3-`IKyMU4b#zb?@$KR3SWq&1_ zh}7Mns`h6pB7KleqCH=YNSzX^;A0XD$$FSS&aZvGYR~tW9!?`$RkLYXvi8=V^*W2* z#RU|lJ)nTv;3o+Ybt_rhMgJC_B2aMT;I_oPd9EFbrCr_A89j+LsrKT=a6dPIm&>Yq zbWez7DlB7CROIdG?PmDmd6=ZEe4ld$QR1NQlOFC5B-^@48z-hzcp!}g7&n$8}epyrQ<~R z*vpul9`eWKo?rM=ak9Ni`uV27V8bf;a^1F)8lcY|pfm~}CY(DDdZPxP_H)cIlOb11 zF}dsFG$?fd@7|a7zULAphmBMR-l7V>kxV$`5%!co28X~mzI;qs@q?e zI`EyoV#0gq(hay9*Ir$%MK>GR@Y2)W6&!9|leE*h`zNwy;KPtcO=XtDiA;`L0TPbmLTu>PZ(@7Qi7opp>K`$8df?@$48}QsGl@9|_y-#NU0I)0rDza+1e3qw z1R;FIhA$yya<|Tsi7kX}u8>>nhJHc*qaUDR0)fh3#08@+laxPMee^aapY_Y$5R2Bl z7w8I(B9bEb18#1T4~<41na6v=e0WAtQ5K>(Up5ekiZ`LOBVOrL{B|t<~#EP`g_&V6CJDvg>h#M9bB2P)QjdNikHu4#th|rBqnOxN3Qi_ zoHwZs?Rdr)_3?PtHw8Sojp~%CEyLNrHX=Oa)+L8>3@n$`rCq*@(_$A8h0;eft*UR& zo=iJ$LmsF~(t9}c41V~cr`o7$d)7~Y_v`tPI@{6fcHHkg&$V#!NFui3h(jd4kfM1erh816l~rYw`>5aKm< zOU##xexLDlDgPKf$`WQN-y0nCCMv}YjlN&2*Z1s?~4@M0< z$j%u})$YwqTih!_-cGBKN6n$ZKJT@%?H#^d9G~%&_1zs4x~9=Q8zx-hk4h#TD#wI#G(#oQkCSpTnvS(&FZ8b;4Q`CiCoCRE)=C?C ztq!UANRUvECPyxT3jx6zKGhFOugoYyKG|AulGGy&dK@-&_Z&NTo#dGX-9_oQ%(3Qe zGu=@YnBL~6xbuXB>bLA z54L5qs}k*1#Sr2vjM*jS)kg1%ZQPqs+=wG9Rn@CBO2^Q6ugU%kd?!wwhIgoocg7lb zGYZ?|hGT!Qh972zG5+`JKmT4Y8uIEk>OT0L%+=U71UDX=G8bOJ@y}n}Osg8rJHPzz zs!JHg_6^hWF$Z6DFREgjp3Crh4>wY?p@1qm*!F)=m{1_V;!|cZx=8Jl3@3(jh0ssl zk);2=GU0ij7UgJ!remNkqlYOCb4UZ`%YYw#NT?1WH{9^9m+AGC&WcWe=1q`Wx9sq} zm!9nZ1BD5nWOjkXjP={%RTL7);{#&k%oAB@P{jq6apWwW^FK@mD{;@KDXDZl&3{+A zK95a_8Tco{@;n&Yjwfzhj0&X_p)~WGGVW8_rAZYjsSJj|$t=z^K$eX;5mJ?H#d!1L zQ*xFOnEagdzKJ;kp6s$m`LEK_6c z%y(RapS3ev*@;y6r!`J65wfcBn(7Q%66C_ba_%(PCvhU&){>gDYG=Y&wr$}=#M$g= z#aA8LePNJuBry7sFyk|AX;*V$5NC_AYk9+p6lem#OZ!kK@qe{0y|d}{LV+c{p^$Ba zX)L~RF@YgpEMXi18CNpn@~i7vJ^4-_uVFj;aJ&nbp72n9pfq$eUMPH{S#w}C)x2M4 zo4d@{Y{ZlC$Bmo}<3`D|T&!nvK-i$!GnS6Oe03vz%KsZT(q1v1bA67r(Fy+{jghbI z5$FKi3w(xz0&y8ie4~ZbLlPmJYU@8S}O8*)NW&a>!}n zd2|jM1f*M^{jc4~y7U+i$U~=xN>4rOSlsVNS_lyMMOCW(8{cR#M#EkAX_#@O!qDO{E46X}>cye}>;*uKVAwH^J;*Uuu`DRd7#& z*?%+a{a8i9wZnuFu^{<~ezLXXCiyFp?}>LA>8UJPwRz-}ule47>8Y-jc3i2pieS6u z<0$_X_=B;raEsxsBW|#R8?`79sTr$9hih9fik8$2;Xz# z@j*O_Kv;qROb$pqnz})|hJt~)++}Bl+Bem5RSS~*yLu!$SyM}E7FvzV!_=xZ2VUxZ zhx7so;VPeWtHVAWX6m(AMe3fg2?n65Ai6pBJp1QGn`_U7Qq1~c3CDz@)Q+Z_box}Y z15laLj(B74Dpg0M2BXAbrj;LUzFb(k_31BrCM4CcBYP|4)v(5O=yx>*@x4hY6Zx3_ znaPC`g+3nx5jzLTt9zI25m#g_RF^2IDa@&`#>l>Du!JKP?~}RGcp}^Hj=Q8!o#0UA zh2>LZ4RuYN$SZgxX)f*GTwE+DdaF=XK1BxOdg+Q=Bb*plaY2~v65oBgzCM~Z-rTf3 zP4nc$yy>+Ogo}MhpOYo$shvnG zlq8RSo)iZ(S$Nzcv$?27$H%@z=y=ZFO>$pRyEg~{RInmmbe0BWkmIzZ%K-W;Ts!ac zn@S_Zq%A$si5w)+^ETj9V@Yx*Di29SWRLNyaB8Sk#H6X{X{RAEPnv!%IKMu+0`ys^ z9jpxP(H&iFvNdu6q>s14ZyWK4r(++Ar0OI^Jj{k(uJW?zJXe;tlm`#_Cm7f^G-u|vh^L;aMzRNe?~ zHuVR4`Kq~3C@Ex`7`485sWLsOC;9gpo5Brhl&m(b^L9)%$7QMK&JTxU%QDhAhcM{% zGKUeO0+wFnCHtvUIXhYsnz)WT2w4oD8Vrgg^%OMFR+YvYUuwtd_p*$olH^7_9iaXBf+$4L9Z%%&o+GYW zsiiCCU_Sv9pl1S{!a;nO6X(Hwim(}g@y*-pGT=?!)yzLh{h5Vu#}GThdP)ZGu6D87 zPCgQyrOoPgk|?<{wf+4ZAbXtayF+yo0~yL(S^7&kX87Wj20v1TD;gB%vQ6*1ACp^v z@>OSiQzuN<;>*`It$g_b$$eRsUc4JBOdFjLP1-*~^W1HL)0?65!7r<&Z8M!%37c3p zD$nsi_l`4G@gq~vOM08-s(a^dAZunLQe8`WN4Kh40L=;P`Lt&{$erDEnengQV`ePx zJNK~Gd$i1=K|M5=Ke3g9K3_?f>AeuvFT0Px{Hz$u6XJ!a<-)wO6(uV_xYH7~1H)3aXG9BA177}x7{J-XTEMdqx$xU`#e#QMzTe1Dm;V@|LC zvO`ubEKOeWo&1^u>L?U;A%wDS=1knJr;ahzT_;t(p|-7dv0uA(ak?{Y@`8<@oD@HB zBYyI>+0nYC950cH2!pXvA1{bs%o*vxPhlcF_n6Gi z0r-mc{?}Rq1|@)w^#c%49S$Esmxdzim9##Ih&~@!P*Y>cvCE(HpvT#CgCO|lKejk# z5%DYig^Q$8N59$8&f%HZ_mEnWjL+!>{v?PqP!?arVxsPZzYpL{l_;XFKR}8oKUX^z zX7MZkg^Q$eZcLQufFj8_RZu>IG)*3Nn14CRSyR?WV;D*$jLZ%w)EHwp zE8k5AoGcjMy^rdpp^Q{dX8g1s8;B}tn84l@zF)69g{3#+TAt*?)?DamxZL-Hvv|X{ zNpPZEpq%Bw2QyD3Vn`WC)^SRp01$qp(0>~w7X`9iX=^!+j*;2V= zZ$-`ldI%*+S!VwGTXqn+d1v3+K6{<*B2|4&nLGjG^s{)J&r-R8ph}^KBKn6a>g7}O z&FoiXx*fZzMLogK>mxZW3mKmD=3!S;E~xb z3UOSsHd6V7?Pk#dOBgEjP!%Ogo$3}`0d(7%%By-H8PgmmorwyT8QA@JGy)40EvX*n z?kum)i!4~~R#H3E!Ue}}Ihy%MhbKqpGe4SW3LBMDRefzX{jo~m`epG^ln==4Qg^>$;iMR^xr~J%>U8-BFg}+eLl>F{)>>kgdb$EgU}7iC zJMivVkxpM?_ssW-u%U{uGdcbSIG+pB2s;O&9qO|mlBR&}P!6Zpa1Mv7vb4*%WBO)y z|V?KnF0{lAI9K(JvolP8;aOq z^QurqeRAhV+QP-P+&ghIJZ0n$lvl-^!S{a?FX3Y-1pOBTZA^LF)LH4U{p4GMxeKzx7UZ-mW&8zo&2gfSdHNO35hTG$-!SdR@i5!U0cN?GB{h9jWn*j;fc>- z-G0z0zUgP?`ac#puD*HoF{pVIRW#adRFC$!BfwF9#w7~{CJ&1J)~6Ws^^?aIZ38GFsZTx{ulMEV4j{71#~j99<>ExBc+kEd0vO~GeCa_Eu{x0t7B zLVE9d5s4=qn&YWg8~2gALv+g!*x?KmTR{=8aKY1tTY3xqcNd>jO`*xiDYbHs zca|;y*RXN%IIzTdUNTawopAENGw2a@rwm>*>Z@nde0M4i2g!ADQ%0NqAg_EJ!NgQ+CsHK z>gS`cT?Lkx+YYtnIZ_o3eBIB%SLo3_N%aOUUFGQ19WdIQ5ELnN&A*# zM@n)3Gh4?bnD#mb=h82KV*wl+8XKA%?0>+pg?#t0?y+kAH1r4{No>37$=LIjYR}{cP^Ivq}n1*&{K2^M!U{X4qlv}QYf(ODFx`6 zjfYkZd?7^h@DOTBzG5rySOd(zoY?`-?YmKzPJR_!)?(^Enp|iQDl2j zq46d))9xm)pVI*=*73_${37Lg+{kTCJfMBZVwSBPjF4X#z+XkI>k}+$ zF?FNVfR<*%&KaQ^LfhC-M0-G316esrW8Lv(PAA}6k~&43fkw;icu`~i;%1n-4g04z z4#q={s}zn{X9vm)#R6h2q-sI}6gWp0?Jfw+kpTKsC|+JaY%=RiDtW0)9`-7v6$~&L%SL%O!Q8OKwBvn?2R>G*rLZ)ppu6 z&6cz>t_$u(RRcNXIH;ubmJ3P)LXNtECZ+6MvU%@l*-kvMqCf=#VB`Q_!EbiQDLm%i zoC(zKjr7W@wc6WW)Up+BBDA<#FH*K(mjtNmNj5~)+IR46b}qp-6nNT9@#Ll!bb8wryyOK5K-n2?MbWEGR9C6MSzH%3BZyZPHwcm|lY?WUm1U4% z$_*-yn@7kNT*VPp637B`>A<=Q7-B&@PkvCS6^gNL_V5o@G$2#;Ht0nl^9vO0?BV=2 zg)Y5!q>%2bSdA3?$vA15_{xbx7xbs<2>BMTM;SPExvGB15Ml8{bzR4x|GV~?xUca9g0UkowY^0K%K3*J;AthJO z=lq_p*8`A`1LV`kU_?(V2e;iXW0__H*R5KSFF8|yD?=CU0wPwr#rBh1ZlxfluH6K9 zD7iB#EIOYTBwy7;K`923lv@r?3s>0C;-6WZ{e?u$&TRIhzCqbCw%oM>a>aTW@Z&x* zs@zOuWEn7RR3Ubk_WM@sk^%XYS|qvrIfZBO(^+}ZxSz|2fvFX<@WM;H`Dr__v0C@36h^BORXKE)#q7joj5jYOjB2Dkh;tDts6H zU23gf(O%>;Wa&=q=b>C4+bbPHVaSvFtH78XK?;5g(W5?{QI6xcISoxYv;IiH|EKt8 zM(<|NKfy;@2gAB)MMc1*?`Q}ewO3HSWU z>dNpr=9oA-hg>||kRq4q0$OKoOH7)>x4Nk|2%? zmUC0BSW@}zPOiaTWJSS--Qqgq{PFrfeC!z0KU&=G7UcjwE8 z`^kU*gboG>aWVYX@NXT2xURbP`0e=I*X8;yvqX7n349A_AW8|oi6N^I{`h(oHc(5I z2HVCIX1C?OpJG+9PPND1ako5cr8XKsM44sm$#u1Qq`8HWgUl=msDG5i-Y*0Q&oIPQ zY?0LBp7T+YL!LQZ_LYj(5mIh8h+J+xqT+D9>^#}lv>uQc!#w1i$35OhSPC7~{tBJT zVB-XMoLqO@FiEDx|6iAf1yWAn849PK2ent-BJg}ES)VmfhokdR(#?gcaAc^NsseAn zI;h%UfdXyJ5%()`tmMp?%-b*|d2kcExw4&$8%V#>R`r~c1E#xHF*kKy4+||e7yR{7 zI=9PmKM*tYjtk$9u0i#$V@wNqDN8b^tJypBNno9(B{ka`)tjxjLP2gzaN`}b+tIFz zUuk;HcE5r}j2=6B4~z_bC!*6&R-QmrG{Nduk<%FhCSHtUSaw+L2#CgwVYw|YBEhD^ z-}C(PxfH@LR&`-gsH!#<+><94MjjB^X^13pUK{-uDto54 z?LubHn=M#qdfV5N`Zq@+q3Q;+ToA0W*Nr-OHs()hp?khk4S_7MtaZa7u?0D$r03^H z$BQK+{f8l!PLL_)oc>}-Hb)nt1Ct>d12XIUP=asZ+m#+3Ii=?@7xW1?G)Mc2vl*YB~l4clA2>uPQtf4mnvIzVIUbx>a5qQu>+t}t?udc@?1crLOyaD^=1lr}P?^0qzV7kh92v47wD0m^%8sGQh3R@kv^!+pGAV^1 z^(8Spx>oIk?Y5-kMtlFnoN$oK>uw|~#WdtJvh|chZCdYAN-tz?-!##Rcr35VbIvx$ zY|BP3d35!zZ5^=cMkl!x=4o}0QFeuDsqyT-Y(Wfcx1fC}d5NuUw@xo6E{Ucj)U*~% z6Oa_tAcaG~S!uNJoYn!3@}e^tFr#)VVMWK3cA{_0i%EtLBcui&G6?pAtOSZxc~i!_ za=V&AN3(ILrCgU)l=R~{DO_je{^e+aALvdBB7c$FIJ$xiI=^EUA9qGy7SOC;4hs zJtl}*o_F7Im)n+3$Fc)b$@R!i%C@zXG5FRaI2dzXr&tbbvNlbv7b$^rRaAH&*?~Pa zSjkV&NVwW^tOmmduGD*tfWZ>8X@G)3;AlS%Lm(Pd^Ex+D-LTMJd7}GvvB*YAA3=vb z<}7x=yyG41abB^5O~VE-kjqP&>WsE~Vpb*^SN>xWTPaT;w%W$^({yl{b;ByKj&8G& zR*i5`FPu{xn@-?S-&si+sF&8sPb|WQXAAEe`+@{>6>=fBq9Jf^?AblLlg}g-eh*v} z0h}#nA6HR7Ub?Z%kV`dicZ_wie4Bz8TWADAZ*cgsGzTf1&%SYGvUeyoe;iCkc(+)_ z9r&akxsmX4q*h0ATuE2M3E6^ABOspxBvNFp8UWP)j4`jd*(CIQR->j_RK3qFwCL1E zdUtu_2+@$aGo=Xv$05TA$wTj)iGR(bazvWW8e|WCUwoSXtHGu&ouuTro5(q)JV^DX z{vm3{4onm4hUL`n#s@2ZQo$^uwBD(OfTK>0|Es_|IDSP(Ya9iLUKpMk9t^u7x8yk- zp9&U!#nuJ=3xZL~Q$cvk;v5exCMJi$_=1LqZt%qJKWM!F!g-~*Z6iU`q@(j34DSoD(?P^-bJS&%`E-wgsYO}QJut1UcOUM z>r%#-<-ulbRX^dCE7DG^-t#HkZp!WbM zYK$i5jO+sj@!j}TG5QnxccmtiVdDqhvw&-!iEB+D?sjZd#4yza!>fDShf{7zoMIOB z)s@4fOtmC<%a#S?n`jQ0N2Jo20i?Oo!XHHN-Fxf`Q5xhDbyZL++Ix8tGaz{qyK*ip zpW7?oUv(+D#hIWtEe1%|b`eE$qk3}`MJRoUiPxCY_VeVmyf|ApTs-%SEo05PAWE87 zC1TRPd8aG*%@yF^^%sSDWb+w@UEcZ5eZ8yyhUH0zp6>XV1xN>r(Lc0vHLwyYC@LJA zQIg<1F4_XUlwJ;+8KWr-uGns9mQd<9lo2lmQi!1Pf62ABM>JruT(@!gZYRgm;n+Wa zomF%-KFNUv&E{y&#(AR!S$U6D%7I$d)5zUgWKgg_4{B|zCAqdqNhip3f6g#lSpqZu zq^RWRc3t#qg|l9Z-d_|!q}reyvp?0p!8aE{*l$~bvzTYbjU(8QCJ{J}uIy&t6=5KW z8EM>>p;{=maC%)w4`9W$3XM7~z4v-|D%}>t-tnBVcZ-g*bYY>@yxO!JTHjyOkpX|s zkAGlfpYRA}G(B`qlQ>d?Z(Va|moshF*tAmi4RAiE3)ve($+xxFuSG@8UAt21egoKE ze{pg`@O)W&Spr-ioxMISze?rzzuwzl@PoCEAP^}~{n7^}O6ieH<}hKA3{%`N)mYcf z$Nf2CCQ8d@{Hwe9>dPW-H(2d=MGfQG{qDfMQ_j;uqO~!R{#_`8n}lOQzvVR$wr}i^ zDkEdI`(Uf9Tiz*B+vP8&{`L6-AWc}Yb)!NsGIM?>llIM9;aH4%CfM43 zkzA8UOy7}W=l!;|ZS_{#(KS+%Lx5gBfymfdsRe)bY%pcHOd0RB z|MQ}cdRRmlg%}>3i(aQ>sej*g+aDw}e2Ee<kuTw z5uS&H2SZVn%)ag`kmDo5aKTCVj4#e`Q5Q@0sj#jp4;LXU(%4r3p8y?q>Qj)=dq4R9 zs!9V=<$?U)O@E}*)w83tQ(f347*taPs$8XC-);x#1v($snLwh`yIK0BaEyjG&PveGo*eSI5w=W0J+zC zzs<0-uo$m*Ba3~DX^`BksjC&9mQO(pYwa$#yVd8!&B>1R4Q_O$M@JdLxs-$vEam== z*YT$Y@e$0!_pi@d0|S+d}Vldpk@ZTBi$wVAgSfe~nwq*keDa|k@OwKai5?S$pU zBA88%@b>Fq@33V(LJ?LIFTax44t$@*DO?a zB}5+S>jv`Y3K3_)ZgK?8sIy>SC4yGG|Exli$^@;A{GUyKq_0f~Tfb$<@$JAMhR+en znWtOVE+eFeE5O@~eiqIVWucr7^UWEyH4cNO$is!@#FOlew6_29S=e_Zuhfr{0CS2h z_8LLv{neyc_A5ufUbzEOabP7}k&p-@Uorf*ut-y1dHh^-+}Th6Sw%4MfilzYe>VLk zEloZfh=^B6l2s-QoK1);;3un181=1qfeij*mK8_713*5f&IBo?0R6Z=u%NUikhu2x zhKpK+hTE2>SBHm$aK@*8P1U09g{B$5l=)RZtGJ=@W3;QuhIE&iWAmLQKIn8|& ze4OZ+l&%&HPR^wLrV9jGVx}bsECDv6D8hCtJi(+hy>)BATii!1JE-%puR-(H>AlnE zTYBSXx_h(({G+T(i8YRVIF_Tdw@afADJxr^;p?raweSg3F>F_u131H`3WW z%&Ud{>T7eqmw!k}wb7uq9r%IC0ZuH4g%_M0_`}QWVbIy@`9`0XrKZ)C_XFkeqjjb* zMPON@!VC$ub&ej8h#Qm1#MaTkV1FF-#m92iC_I_e#KHZ*U=RJRc02cRhxo$sUrl3v zOaz~RGnyGGNN9ihGX#@<#v>8~M^(X}Ir51(e{@OF}+F`zQbnWP8L9Xf8DG_1p8iqiFE*S=Xm*sO2 z8_8?lzMKjtx!}=R?U3`pT3;lRgnFAMhAgOCymh9!3*{I&bVeT=(z>OV# z^%X4ejc2%mM%lUJ{ghy^+MzrYN&JsyVr6=Olt7GTaNKage*aJzfK4&qdVs5JQejoc zfuMQ_p@J`EA!-oYOh`19kYHU%ZrCc3ByDyP!f?za)elGb+K^0*+L)f8_X}B&CBbC@ zgeAdADpQ`8Pwz)Il3$tBAdJ|VpvT#1m*J+HShXPs+PHsp6~p^{oDKG_;^T4lvF_(% zJY!UYw%awDslZQ3`jBxfjylSnBH9Whxij7VOu>0O9A_YS4w+)a=w*`G3mjAX%TkD8 z#v@9?cDB$eythQPYAWdlblGn|K8mPP<*Q>A@abQhz~_A(&TNFzw9Yu&Z+Z?)!BELZnD-jPi6v$@`yf*NrwN5FA<;H)*1bzq%I=FmmgW`@?|J_ z#s$LFJdcQz`y1a-ps)88u%EqTt{I*NA|P30UZ9!iCu3B3(0^7Tz6Y)R83ZUn6lEtIa`98c zLedQQ4$o`d^7IE!aWk2#Er(1J3YFOGfJ;Q#kt=sVk07Y`4&?L!kkuM<`g0J6)l*P2 z_vrJ+NyOa-iTF}vtF?ZpF#be;_@o*##tmGGmUi25cC6*d29}~AqgBI1aC9;glJ~wb z2)yZ1X8u^cUR1?JF}|HH|H+MjWdWQ3UieK*KD0qQTVXQO+V%KW6d%VQEX}3BBo(aU zCd$vb7!5pd?qc3~4&d+DoK|j5HE0arlfp-YGhvsdO*&80-g3#`x$H!r3SK!>uyN%& zL?^5{hCcdGb{xuBHqqn34Eur2SG?9A@pTNMGB4X@VO!k~lOOO|C3i&3m6}Bz!%wG< zD-aa$<7$c%u6-y6tzB#YjMCpqz(rz5i}QQl%}p6m`-wuJDs)) zZoE2}i9!+2ER^{6f{OAv@67|uZC8A6m}09AH;h=-Ra0{uA%axl=dJOt0dHIe$juOy z<~Dkso~!KsN&osw!g~{U3ykqGDN9AfL8D~4#pPg!92E$?uFBWh#cY83K2{3%ciE;& zq9(g8s%m6dv*11;NIvQdiBaGQW9m=#NG`NHp4%mj?#gNnn@q4~>yGGi0wd(@^b3m0 z{QJE7iy@OSr-je%!dSE@kKP8Va@3B7qv(_1TN2g-)ZA7JR!pf9ZMScx8goXWjY|42 z5y7lS`eCOLBPio-n8_nBS|sgnoErypkc{gm-{C4M=_q<`~-1@H%@sM%1srfU~fx#4L{*sMsws5!UWB z!8|4hOJdz|FEm)zUtfJ9<*`?)CKQ`!TaQ-anB94-ce`M2_sy%pxruVj+pCKdb&aa7C!YxguW?*M5lnGC8Rd&2&3JC z`H^d{nUtO^@-LsgVU%~Dy=%5wr6P?4=o&N&^rb?2)3rvOvi^%$I?;RvlIiIjiItj@ zT|L8Ef-D+oYGDEgqrA1@=l8uh1(S7YR3U7a;nvJ*Ur0Pr zs@<_)t6AJ^Wqh`%1tLk8(gfMPu)5sQRn#u~im9LSf(%OWaGNMI9NQiHtuP;tN74p7 z!~Y4nCQ-F+$$5=(c3lAo{VfV1^go`z7sZxZ`=F z=olVoSas===OfQYCOqIrl*+VaI*Py?LlOIx?a|w0)&6|IivM|?L9Chvm-e5{$j%W;+W-U8_{9l6Mwfs<$3vF(IJb? zRJOutYOKdPF{N{v7V_&40hRg;nouTG_U?kH6)wD~Nstu@9jWDDeEuiT0s(Ox)W!osKmukj@4V4BXEQkwT@-6L# zf6TQeZBec>gE)H0eP?D36Z)x0#(_uL#{6;-2Eq1K)s{=5fFF)6@r3-&tSu7Y>#FD+ zico*!2qXe5!XMe^f1qX+`SN<{dEwAW$g#=N%E6Fy>7{-ynB-yQ)$v!^vbSE^*Xnm@ z_x&;7{bRb5rXDE0L83q4u0pD*$SILp^;el5m`g>|i=Y*wdw2-7Wdt~=d$mnhJa6oM zEG>f4b^v?RT}^A)uvSi+mqLLoKg>Mj{#0iFRHpwlU>xqM2o``AoZRIrx?kD@CEo)f zSVoh2wPfS9AQj#YVM))n<>-oChoWa~C8swdZiuR# zr1Q&@wzLQ4Fh!H8%UHYpW~rv7eCIe$%at=1gq!I~_&Sv<_PZD56LbEakUa6r56E8~ z$6q8kn+GymN)92~SS_r892KyyyR^-`Z?ts^{4$n~A#S(Pq1+{kTvyFpKkInj^z#T`5vbTEA%e@otMXMWhV-Vd!YGFJC8b zErk1{o~|gv_fs;eOpl**69l6kE&I3GpL}u0UM`n!L6O{UBcw0amM{5mLz1s2=AY@( z-)#2!XRPy$CMQDA&sig-Av>$7>jfiBd%^moEecU2={wK^tZ6G#Qm$KBExL*tT!+Q| zDYvH+ROnuuUYDML+h-ky=bih<{u)dY4DR(;sh<|E8thHG0jbys7xoni%Z}A8i5^4G zt`Blc1KcmRjyCl-!}jU*(_pU|vRlU~PF7SH+vUJ(x`Ie6MuBDabr;no0#|RLQ!H@_l z=tVN3coLb7!6sjQ27R-F!nBf0%daO>VrEw%4u8hS<{Fo^{CZ3#*=PEh^rSN}9Qwm{ zC1X;+&64($7HPnbOzCi22_pm2ZkqveA6(RH>`D%a~P{N5IyT|B|#Ad~`sLh7T|CHFP3gCH^XCclM z{qhOfcZYDzM?@SEPEZu7N|~Dr;rZNlK1zf}AUh{az>N56LkQ2VV$40rq9}e1&QM{t z6>)?f?D5Z=kNyaQ>#P%dzh{G4z$=s5+9EcCx_UgPFc?OQOxGYD3Z_5g^UKBcqXFte zcl(-Z6U8ernHm?R$ZpO{V*{RX>jAuANM{h2AlrmJ9HJrrCQ~DYyQ?(Zw2R6$VsD-j zHu2C%gTii_> z*%xrx#IC1o?&>-casIMi|H!wT!tF}lGB)IqE+``P5oz>JObnZ>3lyHo==Q_ooX)zz z<}aufv}K3}jnNpY_H(*rs-ZCZs?HcDBumZ8&ilSZf41<_v)Y?s?hopF+RS@UsO&pX zTk9#+%%o~(rpy54REF9rI`1=VE z4@{7%F+#P`ni zF0S$Qw+BxRw+R!$sRQjE8#C$cM`DhK;#v|>!%G`)8Rd=+e|nE6V-s*TJ!*u`FlxEm zb1O2$+tZXJ#$k$Pd6(MPR_YUSmUT9B5T2NVQMAuEyWKpz1%h8TNRoRV(crQ!_qwlr zfeq859`|~jbiSYHf2dDaGL#y?Kc%Y6Vf7IunQqVMnJvnaxc8)J)M-~}E~MZIzJk!g zNjbYr<$863jziA=#bAxIsL7D5U{};$$rnYXctG~PE)KPLG&6EvePOe2kc*Kr(h+>E z9ppoLa}TF0!IpE|2;pRqHceBtH`_t148ZU^4wp&`V3n*^!p!VZ4gFS{0X0%fpQ^(WW2oIigGM{ANoYDwJ{A*p(ju{aX_ zs#)_6vXnpnGURHz-Bp`X731)AHOBI%h`8lVs#QrdPv(I3`(kQz#0YVUuy5iyLT1)l zCzrZ|A1r8Uk!#+Z{3$T<*UkRJ%Rg`PBD~LS0VYq^-p+1D?TA*;^aiR6MralTw*pX> zIgv{h@S@xM{aKdF*h(j3s`skmAj_-pzN}N4vjg)9U_EVnQ8)1*TuJ+m^1KGJP?pIrd2r`|h}Ro-^sBhHLcfK%8@@bWv0KsdiqKqO$&&(qPpVZ&;7} zaqlg=vxTed{2bG56Omikt5n(xM}f^Rq)l@UTko04;x-JTF`lPF4BoF zx7!e8Zf4TAD0hzRO^1#xt_yamYhe4i+dY%_);Ixo$Lb{zW5ANsJ@+^@7>{<8_oITh zl}XA}FVEa+r6D4W^XiqM(>I49u4rhg8NpY6UuJJ?sm_i zR_wDAaFo(6|G!@T&K%MVJi{_}hmY~Zy8e7zLJXOX*?8(Qvn%W**>tW=cG-Nq|L)>% z30aRxET`iFF`uO{ir5=runlgxhHOA)C(|IMP-r(BAgJJ2ESg-qMJ|K<8*$&{39ISO z^d=zoqCN1x6hfpIaRe8AN>^Hq{8l0_QL7XDiMrP9Ny4v5WSd-AQB3}TUeQ<_q}aij zAK6dVT=1wnX=;V>O9By@nbO{_z|Qh`P%xM*&|m1Hk6Wch7DFB@LGR!E9`hX|1ED8u zY0rpEt~lEx0vkyItz(5zVaoX#q!{=&s`ZNLC~Is=IsArN8Ibn~-A6(R$>@?lsm2yc z;0hW*%GdK4gn*H$Wmbcdsm0PyA(og|IqfFVrKv*ke-sOkrC|N`#x>Bn&JP|5i~V=5 zfoq|atHNV{bCj@ya^JeMU#=cMa-#Xvr*Jx&IK5yxnnNZl5)dCcn*S;SfZ2vSGohgV zvycc|R*v=NMf>uvBGL5t$6uYnLD~P3MoPK=OPyQ`s0+z+0&J7*-?_{6f}dl_;t?O?2(nNkW%`6{hUg%Zo|@lc z3*GTG0eEy@8{XccNxtLX`~i;K(QU%T(`kU`M2+m1-Yi*oSYYm&rGtR+PNGv()!P^< z(>);7!=6o`m{ldEonJt|fFkF?;CUQo!M5w@KMgTK#FLV?J}ni;${;&4Ky=FpN6!1V zGHuu4RzSO044Uz4Vq7f!Rdt$s$MC3Ak8 zPrvxEk=V(5{++r-VSbKs?EDUg}SxP8}gp&ATBHCj-I#(J+R{HPQH_43Tl+DDkDa z1<1+?1-%;3H+>1{Z>Bpfrg5(pj<>wF*H2@QLWZ|tm$!#9QeZQ8O;wgNfIL8>R~yUg zG5?#n0poDlRWpedE3CC;CS2G!ogVihcwHremYPOZf)C-`!O!ZHe5^o(-wa#zax&S9 z=g*Ovd}@RDXKQZm{R+W#>fq#yrT!SK8n+rhSBt3#ZbsY70@Zd6ZU*$d`JfR$7skb6 zU{MYIR%w8z=#t?-xx?TKto6 zpR;yd|4kv*48G*y`{KU|v-x&MPZGV*s~~+)i2c2${lL7e%$`tvp$cZXW>)%RG_Bf`$Lr`St(ZH6M2yS3^5x_ci<6solGni zN*xXRM4fh_07w{Qmx?zS8=6^0l_AgK_I;ovI9R5=!VFVb7AMApo6Bfw+NHUXFt1^Si_ERDHrpb4pcz&4;`pcQcn(2nki=iwh%Q%xz~+H zGV#LaEyrgBr!-t2Y+^D8k!nG}(zKM9?s(F+-*M|9iji7J*m0#%a|HDITbl8q2>nr~ zj!iJu{aYb4r)2A@p+c-1e0ECU-7>@k?j)#|+m1CH$8xrzRec`^Q?Rt@^O?S>04o;g ze0ea%!37KaPy^Y@-4z)<=!GGyHDY3Miq|KdfSz? zL`_v!6YqkSMfzz!QwAtJOlg@q&3BsRhJNICV=MW^h^e44QY?W(o(HvBYe~&#gN1A$ zKlLD5^S%)~nY_+7CRj!%Ye!V+^D(1&EM|VHI*hGt4FaTMlqqC;IZUGFi|6r8QYgE| ztq&HIh4Dd^L=;uM0&pyx<~Y@KS3^8l#J_f4K^{AEx^i^>qD1^5M*LlxJN3D@Idb1T zq(yPI0R+mIE8Zd-VSLX%wlXUV%$|6*0$*#!VwwAl2l);~sQ=p5y}Ys=HI=5#c|jDX zePnAsn6XG?^e`VwqP_W&Ly%K3L826+IdDDC{=9_aDbnpxo&VzokZvaIN=DLbW>yjU5uS#>)iQc5a$ArNGE>6%U<0toz( zBpAuB0&sT7WE1fyWNPG(HB~Z;USRZD)gklLfC?)s&#kTRR!W7TD5X3rhr&0vQ|LB? zbKg{|Kz^WSTyoii{=~fmL{(_! zTvx3d%eDhhzV6pP~(62^DdW2_bqmsLH z4{C609aPHhvkC61v&O$2OWZQ@m zEFyu5v8@#r+=s`J+2Jv|iy;)mY=sbd1qxiYg9tZrKyZmme|BBi&-R$LJiEJ9pXRk^Ph*i+Qb$c2z#WX>2XV3nnhC^E^YGtj^Bdu zo-7u`mLj30WknRu|#GCzx2Jppph^|q#;Jo7ugESB4iDIIrBW}N}H1Acp`hg}^W z_nJklG-$e;m%hc8xO{nj^D(K|vszoPZ)mih^4xmz*g6q0gm%KaUCuZSCA_!3zS)(t zxe~tB_tEW1A25*`w^N=RLc0Z~9pz@JWWYTT6qY1$6tAjGyS>-T?;ncsbMcm843i(PV z3&$Q3)8Pq7EYaj{Ii#Qol{vW)^puj=KPMO zag zOR%&SqFSVXX`Lrqr<`z)gV%u4H1u{%RBCDx!G1A%##;*a4(}#2vXi_97z}kh_8^1D zJ9NFU)e&pg*eAp(=Qy;WUwm!D^mH28a4=#)pKrSr7piL=$mwJH={=weUy>Lp;_RRF z+yl4I>A&8{+1bfR^K|=qXSZPa`V$ShdH1oT94#!+IL2N21qYBY?eBjx!P|1&#fg-- zBsYkiyof{0yqq}S;G^OJ)_ah;LB2?kqvPECfCsoz=wQaaX_@AO7R8?0zwuF2R^jTr zFP+xP_o$D5Fkb~+0`bW$N%-~UD(R?rA{-FDx-Iaui8iR+j(U1M;K62=H+{yNmI8Ic zX3c5X<3){tw$j*jIctF)s0kZ9niAnMSXz@SMa}7QV^43schc&f^GG1MN!eLLdj&p6 zm7`FCf4z-ZciR|60?dKrFZ>|2Y}*(mv2xW~5y7%ceAZk1Mjefm%PoA&l;y&taw)h# zlEJGk;VQ}}Yc{^hHD1jkR7UDb|5ZzhO``!)!jd9EH*~Dh@#0Bm;a<1jG5BIxs&beP z0+becX%aQcwn~Qdc)3jjD)HFuEf5lCC(F+-k(um|eQ)mb9y?4h&af4sqtrc$fuP_R zkThHHuyC-IY;bSo`#B63cB|-c#5y$S(T1PRty?8rc4wCmki^ZfxpkCc&iAc#x}PH$ z-|s67<=AZQW0AM`O4fZHeqG(J0uroQ5_hd{19nf0=}=L%>Z`Y52gy*MMZaO!F$SDz5C=Ekl%Op&4M?YYco#q{`*C93kR2dtVr#bVUvWjF zJx6wLy!n+Da}1Z2YgJ~2W^GECjD?JR>9;uwP!#2DA_@)Y4^$SF;)jQm?zb^P>#0k& zN*Vd0d8FDe;~Yur8;YwB#hgIZk0ukzp}|A0 zUm8d&i%Dm;MbU_jt$)0x=FImHu+vtt(e{pv>f1E|8b*8i!^v8sq`~=ghrGYjkAq2+6kxKfVXxn5G|jiH;Lc#)5LzC;TRmHJRerP z@kWD22#Of!6ki|;U#)cqp%L0d6bMwQ?i?7~9Ntyn-f_`(seC#y%N&pp$l;`oF z&0mjFT^CvAXHKbahO4&x-Q1$>=KK4F4%FZrUp)$w_n#KX#igElG<`ECZ`?_rzpGRS z=M)ckan&FfRTF`$>qMx8ZCT&ch=cax$^|NaSN@R1*9-DB-1+-o_|S{17DDo!xH9NbC>rNWwKKE*;jyZ|BN&Rp zo#dI9opOZj#htB1UFnM?5p&>!^z`t2;x_dB9cd~TSm2Uj>jglc!BNgNUz_c@@tW+}xGroqLJ|o&jg-y{)v@s=$ zQfg4AVJ7pe*Vy-p;a`AmX{oarO&(p8`}S-O0**o1Eu#u2U)j%W2e*9qr27g1~oeh|xB>#ZRU046kkZR2J9 zibw+qrwKnUp^s_<%I{vX!f0w|BB2^YmJXz<_?+=2&pcXxMp=S73N z1a~I{m*DR1!3pjX-0us?_n-ee_nbQCR^8gF-JPE9o>_ROcc;7O8Ocxl{i9K*$39m@ zNF%aG|D;q+X}KR%)ds1|&y949{Rq2@a}VSstex?29vp%8xmsW)c_>(@S?e1GOyI5E znNOU$0`q~#us!uJqSFouJ-@6ZpWQzTK7aY1(JY=IFY;gcR9a1vB1PO&QYYk$-Nl17 z&07Ro_*vax7 zel$(^jpzLohRsqNzj4TPlzzoCV=Eb~&BZc@3Q%ObXisjFQQ^*JU)v6@spubnvUP z+b}^Uw<`!1b4zaQRmL^k2^7gEpPJ)UUPGf(sjGt`{+Y7NTrL?Z>zl_!z~E@Vv;x4= z>40m*JlVv5)*!*)$w;j*lB|giB2F>b$;c+0>h&W?iaYJ zHVrG~U&1|FvO!I{Z5w|zm~aM=RCZpbx-f1ZbY#-6s)Ia4+!3Tr{?M*~Bqj1R^#i6Y zx{NSzNUw4$!Mq3_(-~$do$Xye1ZeySrQtZ-C9(NP!eiC3#M0zedV_Jckmjqwpu2R* zcm$laXVOyBN8Vbs^n-YC?%nj0>c+x_EWeQ%nGAYh5Wn1H98 zaB<4}4GOKM<;q21=eUx)eb)nj^5H@F({yX0rp_-T_S)8oV@}aE&;NTUG$=vMPnxu| zgVp-?tuEf5T8;vK7-q4Y)95r{htT2I~MtXGFILwr~Q715QyDGqVq+B`-&AQeIhn%Z# zEhy8J5pq8=ec?hps*t8XSX|uUnK!C9Un`l;+GUpYgneLR3#EN8beR2+`E!%7lAg|t zx^P{in|vF4GgFJ-*!FmT6>QCh+;zo970FX(cnKsU!3&Fn;A9iIJ;PEtM?HHVegAYJ z@~QEw*G{hIPbnILxaCnEh8MMSk}S&;R^r?r0H`bQZkkYU0m_?AwPJ?%LOmP`p=bWO z8oY+bIp?ESOpAZQq;{|VZSZ^S*J!Co9{y8AN>f*K3A=zNopF^4_Ae}BaOTlz_?QUj zDgzEZB~;#>=t=nEj3O9%dy9i?x1l8@&Rt3{F37)!aRb*!tvv#QkMgnZLSNiR%;;GY zC^w!7&^}T*N;Qlr1y;0l8&I8(rG$Ygg8n@gXcbf71n|kFi3DP}dM`tI{n-oO-*e5_ zXal7b#d11f5Jb!vShN3JzjE*15Ncp z$;ILvDJrHZg(;F*D!c=k2&-{REIZbPjGZdyK?Sop0Fy>*YTqcLb9gfF4dy9q5PX`- zr`hql1LSvyK)~DaYzX%xu=54LtCRp!7!mrEjGg#pt6~Y^X?gxWTi~TRW7vm!z~`SW zstFYLR3%|+ZUlXfD5YsGHsm0BqNOn62spsgTC~kpWE+b!pkeAJ-fqlaq;XWmRk{$o;^_7yK^*&MQy3J4)>50^R@ zzdvl=a+QMIZ&W(gi@$2-Z9rdj0jZpJ_irtDO?eygaW_l+1U3$vDmM;D2L#Qf--e;h zkB2;|RZ@^L#`qcg{Z=A1*moyIG#5*u{hn2IJ#o8pkIkt(PNowsw`a!xk7ej93qH7F zGC6?bE!==PZcOOaFb*_KK*;VIN4+-S*qNGc8;^((rLy3ZzhTogiB!2&ccJEK+{8BoL?ADVjo~Yd;y*!GI87;>$mypFnvpsWC3?Qp z-hSB}5VJ(ZZL-(C*&f&rM=EmO^np1`)@%d%+@@)81lEg<%$I;<;`+_AChMjv8swc$ z+=pt$;tChTaBsN;d|-&>9gli^VQpaHWs^FBw7HptpyG$rsfmQ3LT2WI97=D(?0*y9 zc;Oj@{v*Fsfs zpb1*;d*sAoX{8MhF8oI)kHzEQ!Zb75M<7gQ0jzvogwRppf{_^!2`F}Gsxj%#oY?&8 zK&rl*b}MlQFp`}M(uk>2_>K^5+PxGcHB=4ugQk8;Sl54{V_HMUpX?s*ft2|=esJNm zfl>y{v?!5NkK38{zvOAC)lxJ$t78K!Ss$B_(kld9teZn&y7sN`=1fzAAJnU44%P~% z>+p1BJ?e0;b9&YW~B}_ zqTB{}-v7|wDw$;nH(uFJg^@c-%x+2lDz!O!RJv?(R7b~+n6rU&c&S7bX>bKFEcSPr z;YRemo-(E1z25CP)w)CHm0bQva%AKPNsLpXC@(fzL_#Y>pq0Ou}u|E$ZviYiM)5r;s%Kml*C(nC*n1ASR zmCQ0k8?S7y4>S1sFn@c2dp&5TOFy@+pC0jiraw=fSJ3mH7J<+4%J%vk~4B*>T*^yqVE{E#INS}H)5@RjkEnGqrX52`G`?F0eY z4aLGnv0CJ^0W)k8l83LRuclHrEj~X|;X9IO3?RBJHr`p1gXd`t=(xoD*qEPu$eoXb z?*?_p>E`8pn@K8&FR44dPqPJlINL4^HlhJO!#M=>WUtV%uSYcHCF;;`9U2%L@WO;s zvNUA3yn_euEE(ptS3M80Ky zwu|Qs!Of9dWIPe=B(bKO9M>Pvru9kci#;kBt}Num6q;ed^ald9&JIbib`7Yr4J$bHE#O6Z{pF7r z5iqp+u(_~QqnZ@?hQ{s%#7~Nx$J{*yf(6_QHi+YUbC|c>CO-lZ10-C>zEn6qeva*9 zz>lRkqllDFfLw>_UiA+slE6y{czGNy$7?aLJ9|AmWyUXte!A(eLkc{Mm}W+*wG>?f z7dIn@XZo})H{R_0$+VY^$aIWN^R@*ehMbPde%G7gO?9bdFMHnYaK`E5apL($*MszU z>v9oo1gt(wm6982zJct1qdz|5$Cn^md$N5qtiT9Zhu}k}&@nO^%nWfcB z+fIe178vwm{`Crs1#(K<4s&-WnE4dyag?bEu;O2@4@4IjA^l$vj#|aR+9PqDv{oNv z&sNu4J3R^XJ=%(~*kzpqT$r2=lz8l7%USc_6>+nDVH^1UpT+uJ*SBH2M7OttJ$(XC z49P`@9@3VfKRW zu?494upfG}E4t>Hr>832XvXhj%*Vgz=LUC|ojkFBqVi(b^adOoe``M_Fj#B&dAGgN zeDQ5;jUM3cy0*H}A^eaL?wWCxIr0HNaHnFe;_Bl=<*3-EgHj!~4%0y%Ogx3$4u*eD zSX!`QEHe&$XTN*;{pl!szx8>GlzhWMJO~JC`M#ju1;{ zxMZvQ!rku3XYZ`w5PXjXcNVS})k~@^y7h6UO1UpNF<0S}!Obc8mO)LPZz+ zY@yS)E?Mvg;5Ij{qlA(oJyqKCACkO8^ z^8hZ!@l@a~slV#SO+8zWK5rj{|2TbU{n{-n>b)a@ zqDhj#p+r_&$p`RceI%0~Q&e7i?HyRsk>}AzLA$GHcNK*zj(N$A+}FYPFWoOXj|L+u z#>oUlz^xi{8i~9(@AJQlm{!Ud9{Nfz)`>sA*gAV~!qM+)1;gF>%A(4L<%eNQSHB$s#Ld6 zN>tBt<;5u_ZIx+D-9Ph)ky2Q?0jO7eJv|p|#W5$C3=t*nV&4*zcXs>W?;$&AJHp-Z zlR4(`LHGHC+p289pj&ZU+lSIY2uCDU&)@B6x^y2TE_J=f1=sN{;E%Pc`$euF_E+fo zuDnfEvOwk2NW2R4rbuD$zn#Y3SBTiBMg*A{$=shRCd!=f?m@=a4^e85$lNOe##X03 zds^;#k>;3N6)yI&s~Q8tePPuvTsGNm9Jq`43#a$IO0djIu7Ki}W-cF}gOJq>Xl*Xm z7S|L^Kwo*r?E%L+M@EX`!GC<;&!LV4d3hdM^~_y~EaaCL3C8eKv!+v7-WCG)B`Q&;4K(@1 zoHd^*N!F}Y%j_ym56|vC_~a6Y9T#h7{UmyHWnAQ}#cs|!?39NGMWPMv8Z_9)36Y@h z4)JlKb=TgaB^DaTx8k#eE;z}9xqq7O*rpxVhn{^|D&?BU-$<%Ms7E;m&c8!h4T15# za+N`XSmkn&=^3w9wxqLTLiphO8i~v0P1CWqKE*F9Lpn~L%FbXq_$^*5zr2Y_JkBp( zjuH$8V!7zTeyt7*iGiUBW@CZ%o@Jxd(v@_8DUdrvU_|9AK)0O|Q2497CyM?i(Q_vI zYUw)Nc};g)5$IVMNDc=EYOwU9s0|_-5ki*5O86KEzL@0K1!i({QTnmJ>rp2h1GC2n zso_gM2C<(j=k|T2F+d@k0xMZTH)!5&dKNb8v5`%0a)^qd|4YJpHsDQG4~}rGtI19c z6A@S`;kUtu6{rSM1p*U*jKpUj0*#DBh|l->&j|y!$H)Z{0tGhdkDLItLBswu?R?Ld z4(W>Ys@1<6Iv8ow%N76=QnPN^G2bx&WO-{}2miH$w0;;(aro%9XSxj)j%L4Xd9~Xd zn)kPp>>OGZ&4~CPowC0~%?!bZRO0AiJ7YV`t8&C1Fa{-1vwV~q-kIq7b(fEE5AR^YHIG3KC030+I5eFl zQ$)@l_ZLv2nVt{rU<}Ve6EJ&oQ*vND&Y)qj- z>=r|r=U-wn&uX9J`wnSAD`)Aa@oq*Vd(OpI!*U+~jfMqYTnD^K1F6G!yRkU7UxF{L zdze6;0sk+F`UCzqSq4ZsOMUClWwg-1$`U^NY%~EHVC*kJAOt#_y$AfCKQ>4&kXs%k z7evky)DT7jybdG%d7r~Od(OZ4RnW5YS3q~LeH$Au#Eixn%etkW5s>AreR`zV4t}*m z(pJSszd36MEK}deU1I5XaC7OO~29L89JEq4oK1mw<1H27nNXkqLl2UFxn zMHhI+OlauiM&={LY|5iG`e7ilt#v0rN}P+aM?ft14}|9Sjd^a0t*yH29 zmyEaK_by`SqnyZxFIeGxyh)eo#1c`5cj1c<-Hr#o0npG$h|e97ok^3a`nL%yjxC6O8r*e7M_zUG-lSR9=g-TQvFm!MCjwPP7nz$e8bHbJm| zi`c@2`uj)A<1<0dyT9Ki*I<}Bzb3q;gebhw1J#7oY6PVxzYIrH3;R56Uo{)=J{jI@ zM6Z0d?ed6=^%(PfWNFpT5RrTiyfI24M-0j{|G^r-Q_?AS2hPON=HV0d+qu!yBQ>J0 z>0!YM-8BH6*Nrz=Wp{3bx9L6X0SB7CNnlJ=!Z$^e)w{IlCY%G=6*V96W)h#|@+VgO z$RO>YWcxmfy=QyZ!=&*_PV{9SEy{FT2&4T0w>iU~ z74?&`e0bB2MV7@q3;}F5mUoYNq|IVu6jcP5eC(-`yt*X_@(JiB=D|?V4g< zzVn%LnOM`R;KVC1;rqC7C3_WIW2;l{rK1$2^E9C)&OE@Axx(G5)>w4U(2hp$v;WCU z?fx#UAZ%&}!hQ50DWia%N2RIh=tpjzFv7u+)Q$%xH_Pb!=}H6bRl(j!sR@Fo!Z#9X za^TiPiA>)Inz%?YZ0qORXWSj1@0%RY53jsK&*G*{dpp^RTZ$2NRu4BOa@Tl)KTeN@ zyK~))QR`N#(R8wCtt^YW-)jixW&vwz(zZkXN+<}J?#jLLNHt5d(p*j*92<{lD^grJ=ilX=!!eIam;6s#*j`rfYIBS9ke64!vbYwv!od?fR3m zinqS)&m38qGtNr0CBo`BsxBN!c;u|5>59|0$9+G5;&!~)ll~~4X@k`74t34YI?*k@ z=9UbQvtq9^NbuODtcp}zTCHc_2q(moiiFz6Q<+Dx#1XU#EK?QY|AP=bS+ zZZo5Cu#_6gE+AVqL6d(v#x*Cc*iYjauXb+cWDeYTGJtCoOIT*oW5TU$#n`xp^SkJ# z%K|JxqB83@!JD3ShV~sLX`aOi2gT-L4VnI&A+2T>aafCD^HodFG2#g_C9l!w(Tg<< z=ZeWo37*uCJ0*w;cpiQq5V^-C=)%;b!AF|bm{v|lPvB)bpzc2Dux?qIjWd8Avqis% zNh^$(L*hmtje$MuvEvq#9+{rvYb3l>xg^z%!$Bg6=2ayw_mprR>~fzNbMx4Aa);Ap z4g{ckU6XZ$?ck*8eC1B*bFooZH|#Zi;)a~$_FT`FFv->>mB z-78YFUZkexsGk*g(xl;sr0R5K) z`kcRjF&XzsJ{8jY%szIxZ%gRlClS`Q1+ zMLAF3!@6_oS+7%ipufN9WITIGI|9DyIk_e+5G&4zG)3QnLi-8Y^K*WJjDPQ?koXCI z9Zmzd%n?z=ZG587$k zgGXiIn^*TE>K!)Pr@;_AId6bSh}Xt#EMg-nRP6h>&w)WveGp%0y7UbJeSOlKniouf zXZwmr_*FqVFaXpUlW!L2BmBCl)6p3d27D)O)cUAA2F@T1c_;#3eyI@DFM)ds2W?St zDW_XBGv6zrFKO9f6ujj^+ZLyxaK3GX@_s^)@6pASuG5Q0um_4#O5_^e+vaD;u`eQ| z%!QoC%#JGUh8LD$yKY5?s|x=aETC7u#JO@MJTB`j}}va(;xv_ z4ZQl&KpIgJN`k7x4Jhz^#Sh*4Hv#OG2gBCzZ~a@*m&SUY?k`)kgbUx-H|muL&tEl% z7$ARCHbEC5y=wKBrP6GHADFr}f;KXzwg9WX9CSkn-XszH3Rqy$0VhFpL+G$n>$W82 zz?EupE!6z>u>7tmNDz~{%C{WUDRNh2-VJP#I15WzDSQfC16%`{s-OR;>v%b$HB8)ZUOy)p zDe0jNGg@``xV4=0xlv-0!}25`o(ocYtuz&ssvhe zSYqnZcUrc;TpfoaneJ1tfKv^Y`;_vgdtW$gUv$8yKog`=he9p%Gnrk6qifxKNaB1q zNHFHHGkwIyWLHzM&2_o}4LSW_yeljo%Y0E6il0hmGh!;ThGd#yQ}hUY;nfuOFQklI z(Ro;;R;)GKY92^VrYMhoxXxD*RgnR%y{9(Sh;?=sv!bz@|Ih30PI>nfv%TdoA+yc# z+$MfVJ(y$7mG!ELy>{KM0CbOAP=OLkV1)i)j!C*Sk~wWM=AM#@o? zsysbJE;w+9Jd!z&CQfR9!g^%<=MQr)Pe9)>&mA_iCG;(J2hh>@W*t6p3O+nWU~B(c z0{h1{6onuV2CDeA;{GBwHz9~e`y^Ub#0PFgPW4lWcxZ)0QmO5TTi*UZrh!m?!8Z53 z6nP1D#h|$f6&YyBkdob&oM=;mB4t4ekuy_bV=R=7HClFbIAxLvqI)OV2H?~-&NSx*|tD^ z^qmK331Vpx$?fjU_cU#)YZ`COwq#cl%eE|wFweH+B53MEoxr&3DbCeMz@PXqAwaC< zR}(|0sHTShs6l(0!t&bD4R=ea7f#}*$^vkCXq037su)WH)-IRwC={~QnZ6s3uB zkBymADANNzh8wiZ_|a$8dasC1q#ymh{fPV0@sD*7+zX!Y5y&B6QWvhux9RxgOky3x z*3U0Tw!N)aRx|&uHQ17_j2sNt{-*f7U-%QxGdVYG^a~NnPev49U+*)}C08wxSOWr1a4ksBa96b9qFFLqx5~D5CsNv0me_11$#RX_})MGUS2x+m+ za0$TMx{XXMWY-DHxa3Orv3=6&#MA+9fmOeri}ZPwJXpMX8#-Hs^<}fi*yJe<)%C-tf%l-g4H;S@IQh zmlTxrBn~7dC=>V*tmID&h8;ZXlfdO)5q{X<|AVO4*YQR$X<*v9_C@kB$BuJ)a|rwlR=iSn$O5@0E`Lh2pk`Q>%$+#uR7cTmLp~Kz?G;> zng-YI4osES$q2hYQ<%PKH+-L=P(MA!-ZuGwG;+7ob0qHbn*~vWS#0H6a-atz$;nVY zDU|cn$8S6HvidnI_w&&RJd{bXB^0_*4lw`Tv{FEudW!{IB$TaMFvJBSIoFT!XiM%g zK*MdK>d`%@7gzm`avKje&&R-yCx>J# zcN?%+*GcSruUAd+a!l)&FC>L7P9XG{o1{hfY%HYE zg)w_%X*Y!IAh2PPbQ@b?F4QP1Q0UcX4uu7m>Nv!z;8VYo@MMUf=E38AdJ?55ViXMn zpU$|Rpbq{u2++`CAl=hysO^`WP2o5~ECx`G`jWoWDK1q%%?&-6bTR$orPBScvWxqJjpOb-j`pYH z#{;j;63#W(=L+%NQF>dS#uMb01F0Qwsi zBi^Jq2ydYhh!(fVN!qL~gHSVO9anqd#E}J&OcBz**Z9GMNztR^$i|0dk1y1P1pBVh zDR0MplFYQyS;y&WbM=B4${l4(I0lnn2f}^Q=6CK8LBc^>V zIMuBwq#3%at(@%#k53y(uEy5RbgRxfGxE#%LEGAc&$rU+_y}BOhr6Qwi>==)-{uuho?Y(lBYo(*H_jvn=KCHb0pxWszm7T32VYSjwjMsh zKO_8~!TdVplLa$A$>He*@Mm*?jG%_lAgk;3`FeNc`Mrw#Gydi9vcYFTfh|6W_#J@E zl7YgpDM9-lfapQKHHkP1^{*}fRlQZe5r0nNy>`x*ES0DK03<{_%pF_~8}8!{oNxqk zKT3!gjc`X}^vCUi==8qq>d2p2-}#OA94fLIi+07b*TIV6DSq(rS&Hz*|GY7$5R4F7 zzlQ;ZY`Eo6f_5WAR;|ALc|;^49T+7<^bSJ7?>!3l@&U-tPoL65p=Ln^-Xp7`7StZv zeHS3Nt2{&^j_ zQ>l0^&b~B_PO;(9RE>|(vX+AdFcq%JT2uI4#X1hyQB!VTwwpejyW3*k-kLvt!uO8K z36!%G2Q!ToY=r+2L-g_SE)kik&v;3^Yf5`m{d!fO#Ver*`5fpSaHDJ*H{5o}&P zapUEzG`A~txbHzn=ixcG7=FLa}->XD(~atb+8Px#N|5KHP1ms{3-qF z)0(x1M~l+dW=_$~7wow(qdcmOzV5`qD>rglPg{Mi$e5P4n?kBwL%%PcsPbaq#8 zl$2(0BI)wAN8$UvoVL0ffFtZ5XI|due$tvdop;k?wbQvBji*v|Iu<>?M(;2^-;3_J z*RWu(rrh$uF^FTSKZNT?xDe_p2WC~9%_To=i>d%MQf!`bHMC<+41M@27z31^+<>-t zHI4a429b#gSF!w$u%AVQprJiT^b7sNqlVpmz;+SFaMEw&m&J_mbOy6936|TPb-gav zzrSqI-+Y6_Ao$*zr2DkwwcYtdej^EjkwyC*hhgF7sP~Ru9Wm4NpgquRo4&$?@&&0R z*c6(EM~%De2Q&jh?8c8?a!WQyoohySdsDgkAUz!q7r;o_;evqw-MO(Ov|e|)c8&uyBedr zVcr>2bb%1<1c5nZ3AWfLDkHH8u5ELLu-~NQqI`sQ-?Z>*(5vmlVc0S>Au}!(D0S*d zCOBZ2A`(=fEEin;>28a=ugQ7Zkn|do2)GDh(+fU>iU=#kVK`C<{W1>Ohaz=?`Y4qYm~sVU=p^InO08{o9fx`bZXRE5RzXS@cU`sc~6xbNxa!gJe1Rc-H{ z0P%Ne7xVKO;kp$BHbT0qC2dXU-rmu7Lr|Ba4>Rrik6zB_hsL}8KFUX`J`1UzrSThi zW@XGIo3qhWw+{GwP)Ne;KjNLJl$+@+%;-?G##Izi-LlJOy(|g1=S`eG?2zCE$E%Ci zU4O%w{oE^IPx2%TJ+0)K1-<|M=JTf{L)fp{&1Ew3`xKX+7t|?S5Fgy|64ABC@r~T2Q`}O7gh)_OmMXH@oqYK$=Xojyl(e2O(Y&dZIYL<`kyyoAd}e%0*MgrRjnk=W zpf2;@K~yfULp${Wqa~?cwK>~`K*wBqlwe|`i)GyV8M*0}`RjDyZ0X|LRD!hKcG?4- zy!}~&G_p^!&M~d}b*e6k*-gEWrYqxB&o!I@sFnPHh$Mv1)WZIs{?G0|Dq)2Gm;29J zMTP9Q9wcxd^UB=2zCu@dT-2JrFw9vZSw5$6g2<`R^IVtZcPP+hPiAEoLq7ceA(;qe-o15h#v&7R;$1 zFur$c?Z%J`hMH{(HKc!M1-fVTMXF5cgV?;08?2IZA2{nIhgrTJX6dt0qJLaU>$d6L z7ARR@g5b`qwGAvSbj{^)He$NMa>Nlp?zRO{!^v4rAC!0ofQ+nc7DYd^l*er)p%zl>?45Wv5sk4 zXW$oUeQGvK+uhQ5T|*!%_@Id%ENE?g#1x98@zToibeFpGNYlA@LRZskvC@7$<=unC z4uc!^ZZVWHIbl7%G~ygYbz)J|)1k7*H zOxk`NKI(e5Fy?k#@%*Vki^=;kE;BsLIEb~0aElEFIn|#o)RrAZ{p0k4&*HlrGKF-3 z)qiI7S2}mtEx}rFuZ}(tUhvo1{oc=CrXzcBYZ!JAwo%nT#YEV}tw6|>>lk4T;DS;5 z6dJQ@Ymkl zbB~c`6^1NLE8dC&`-1X1kv{_YbG2%kzEGFPLK@?8FEs3BNCwBRA;O@go#Igoqs?V%-=~o&;|2nuI~hN!MwQvvXtuG zuwx322N4IRRAwNI_T$e#(EYkCKKrm&#J$PF(D%Qd&euX5Lpvb=XY)w^n$6?8Nz#1( z;yzHrm(aws-6mK|*tNUO6@G}|_5G^60r^2X{e8KoR@IBgX%&IpHuA$C$DfZv6@g?C z)ityll_-;6dPp-Jb^Pz$l|BH~f;~#d_P6#I z7GpmbT=l}O*9rX%a6%tWSGEh9PJ3OBCyMWT^YEy9O)3}z&4&--4zdL*{Tn1nvP%$O zZ%2_TIgo2TWg9d-o+`7hqU21l3|-ZR@N>lle8-1I4%J)&c<8<^+HxEB`~?=J;*3Pv z;*-U%Ej6v`rpFb(Qa5uQ`7Fns{lv**mPQ-+qYy#Rvt@ zs28(T_f9VcGyooJD=!Z3RU8W5p*0ri58FZ$BnYqysQa{Y|4sdR{Lq{bP#yOIXuxt< zDtQ3EO_nd=N5P1&dx${3FDTtSNCLSjXC$ME@aQhu5;5;Vt)=*W{y25@1nat5g@r*x zM)vgufq)<+1OfdO2m=Ggsf-5PD+bjGQkh+^yk^7ZASb5m7c!!Kd>dO;t)wpQ9^F%P z9;eS@R$%}z^oA)=*GQUo4Xc9Rc`yUR!w481{*BMM9N2Vt^P75aTXmwj-GAC&b50YzY<-M98Iu5a(~%S{EE7R%M0z4_|D+`7KaPq6^;|90Ua<1cVRb zmCt;Z?ys^a375arx&~XYKebhspnqvV=h_<|(7DDk2^5nBGS}vkfe2-SA=?M$i$Ws* z!XF1EKGkW>bhv34)?J0DaD_qU=iZ64@Ezcg=5Le`?^K%4QFBV6?=HuAKZ{--(ZvUi z1zBv>e0O>fzv#=_!F_aXck|RtK)3dCyy3yAAj}U%;in{*H`ysjgeD@%sQa`?Or2bs*pDJIObWl2bt*_HD{divb;31B~TT3w|hTu{tm zV`KdEadz@%;ibHqYZd z1@EY-fZ|^tpt|lV1})EN&&NpPX10mhs@#etDnPfwyOW zZ}+fWkD+FMDUTX~`qc2qUzxb1EdTJ-pJ!0V0a}e~T|B*dG!>t+#uC=jMC*=G{hdex z$7hBRm}LQIEwfBKR#{`0O-KLYr6Tovy2EJ6-0oZaO|SZ5D&`@=Jj}qw=}(3Lr%rg5 z(X+N61=aeHT}VISDt5E#tpcxHECWLy>%F_VC8&dt;o;>?86V4Ni4v~&qpF9WtK~S` zr-yCSHC2H7B#M5?{CV*i@%y18{*c3R-cs%!T|YycD@k4PD2S!K*S9K0abbG75=K0w zojIb(RstzTZkXTDnHA82j;b>j{<^F8c|%AW3*C!ZA~m+^>h2Q#j)zKkyr> zE;8F84dWb8Wn$oO&MYoFUL?CMNJdpTvED{i98Ym$J+eoEzE>ds;&i;2S9bg)150{s z2?K+IObpy8aU-s}`RB0twaFQs>$d%{jk)3jGzt}izZz&2m;q!DTnM_eK`$Y^bGrLw z14k>~7h2J#lISfp*8(@k{r6D|R2&&T}{&y!zw)otCPH)_aB+KH1hV9y#Rd&c&3nOkHl zx+iiXo@7(d;#b{Ou8$;4)5bKFy<1nf!%ldN@qS8?aSA?hwSDq#VEmbsx?1#m!_L48 z_mJ@7cZGw@GnmAfA+7$)ozD5&zCYCE}tX1xuH%5}LNHN6W&c zg8JJetE<8=ab5nc*YJZtB3nS((j41NMZJ#eZbYIt#8`b(1HBsuoJhBiCrg^(&Q$nl zG)B+(c&+Th7omr#R<&vlU{-`q+4O32=N=bge;$AO^U{MCisfOH$vzqjKBks>sarp; z>mg*DW8ET#kMtRw;%!CX{;`Wktk}CbOe0FQo`T3%K8%a5$+~lZth@jpi z@ImoN(i56j`az&f1o?*-stl}{1>UEb7>M9x$*qm+W++(1FYg_{5Q~It0+)7tC0<|d zk8{`(l`(w3EW$cFN6NnIP(jMRjEaQ^4NG^~yg5nQ`lQl!ivL%()T zU$!LCU#_q}Ee_&5nSAV_p=shUbm(tpRZuN2>nNKc?BxcvSLH}Coo^GWU-Fs}JTnvK z{TAZVqrT{Q9s}2p+o}Ej_Pywb@XDDRTJ`lZE~Br_<>cLpRraTWdG|!|c2?<)Fu5b| z>@5s%cSBIgLYXILtnnGyWY&%aO=@pq#EFaq1_ER5S_F0^YS8}IF-W;5s zp~uK8Yg$Y)ol?@seelThp(or{_Uqz)#Kr>vJuCI|+0#J^&)R_yz4rXg3sT_Y4iN#Y z4*KuJP2ywfd@txbrLPFvH@miDy4tQfy4o$Yz|`ge*?s>+57O9|X&n;YeeronD-Y<( zeQ2zUSo-1sK{h3Ynhq3SX?j?O;BaYEh4Cz8Y)iJ|S4;nLI=Mz64eh=*ai6FgBGL@y4c74D7S z3LW^(0kjaluWCZjk*Nt)_{uVv)V1&e{k0u%6s!n{8KoAyk?|F6c{ zvUY_!q-+)4^$JhjRw(~;>5`-AZZ~u1H(qKKrNt<#RYQ$+PuxFO;oJ4mz#33tC z>MmkB!VmpNjkEocTi=n%hfu%LXom{tkVr z5R#}E@FK7*@jf@-K*BC0U+{)cC7_77cI&?2z!iP#9iY&N>~ z-wHne>C2D4CUEHTprgOl^_tV~Ui-(5Oz_%2P9sFz&Ym34tqyBaMe9+&L%L-jt$k;g=T0C$j#x>_^{k{ zoc{D_c5r^1Oz;Ji#ro2HqlAJnrFzUrfSRi|BE4|8)hp+;Z+~89b&rjj$V7i~7CWAE zwJx^F!5Gq{0E+ws*0*_TkgNInWBJNX9>(*$5Ak>uUAGLr!Y?y430`<}9Ba^WBzaSd1z5r*W)&MG`0+bciA0+C&um>Gq|HssxcHTQM2?%6D?COX z4~QvXg21r}OLXD>Wh611eNqsWgENnG2KKi{KxH0Th92`}%-#5K@2+3t-6znw|K0fP z!JQnmK{Nd>wG-(a#KCBqp6Z!BcACfEVrEo5qh*S=meq1Q1Alp%Bx7a;&);H>OpfS4 z?f=72>ytACar#Bajq<{}m(TOgeZ0~+&EbjI_#U2j9J~$*E z#U39&G#rQAgr7emnp1Z6|3peKdn5I+y)rx>A%LP?vi1P^-Lk7;K@w2b=iU6K_@CD>$SdFL%a$+SSFB1F90bz)bn3qwySYe*q1dygLPER5tKfwE z(kTfV4!u>y_I(C`Su%!6wq5M*>?$2qf{srHVkeM6?Zm zjlu*rz!nDXK)6Dlizj`Kb4A~+Jru+KTn?8)3=LxYF4Q4Vup5R5#ep~zuZ5OiFA}+o zH%m9GmCL0x?U22iXYQCz_ecrEL*-YQ=f^hV+!?4gl+I8Cw2}$eI`aXrGwC~2+p?*p zvXW<~xXa)?K7@y7=H{#YwY_HXcHhOVHsYIF?|94+-Ydo#>5YcO3Z;go^zwWQE8`MS zb<&8p8WOaGt+0kmoFbL4OWPF5D|zsDT1ASeM>BFfX|Sq1Zg+e97~su#Ia?#xsHtmz z9v_B|ByVzGn%_BDUXHk)T4<+dcqv4Ul8{logEw93JpYkAoY&2kcWX#ay_y}=%_<&! zgP}>0xkBvJcKUdHe_w4XvJFh%c{%h!D(dX70On!h9&WunR=i{&M7~`7I!b%*o`gbX zEwgR~V!{^e9mj3HhbdxdUvFbmHG|yyOXVvTUY(sEEj|gi$O0d&-0)Wo3~eltlg?ed zqxGL`;#s|@U{o{HhLcFTXFIFR?R8t7m?fu}c0TZ}S>K_-UHvNWBnd?SW5GSe% zY;vKxowCWbS4qM>tB(XpyxI^eg~bWXT`&b4x~wQaXRcB@>PmWY%`-gI*_x;@|De>N ztt~eC-shS_PIN+dMT6x<`>wHS))>D ziugm*5;l*f<7VXl!`)j(#Thi~qDYWHa0?E>J-EBOy9IX$?t@DR?(Xic0Rq9@-GV#8 z8T3x`_MF#_Kf72;ss!e7 zNk@E1fY$_^weJX#yleUTx#5--6NmV}{1BBd=xwm+nb+H+^v=OYJYOC=_ z@1F5gF06u9R}B!B8*u^OVb}D?wZ~3cXQC7|f;)a`fxN5ybWEKAL0Z{+l;0&U;D%X>~UEcIZsK`T;ta6tgNE2E$iF! zn)cJ@R*#s@ob1*P>TI$W=jPYKDR66(*xN{Yt*U_fu(qw9BU;*8i$v+VhdLa^&qaRE zD}`mC{@jEeXHGBDt6HN970>O4TN2D2{7b!M+_vv$)E(H@b?q}xi_=xcQ@3^PDks?4 zgPe&G-%|`u=pbq$xE&Q;x8{yfP1`Q_k|u`f4f+!q$tSiR6{}4yRWi&I5RjJz2^r7P zr)gX5R{0jmnJzyQPpYTdwwyaE6B z9b=wOR@1qpWR%+!I>rZ{7VHJKkzmK;krc&y^gQGCCbRf73!e9TpC2@3hh@qK=Q+$L zi9pUzI?TU} z@T{+mTarJyDe$~`L(N@4cEHZw33&}v+r-iZq&`0r>Fuv1R;$|3mjRQ0^~rWzw#Is_ zW#IH=y24%~e~M41C6G9QRBlAMuj4H|9@b+tsSiO8@CXI#vqTCH@)nD?+AUGw2vvA> zjhuvc#Jp?rI%H^?Iz$38gjkGmlgXjrg90MT5U~)a2xUk!5^E0LyLjR9BI0=AV}YM4 z*d63wsz8TO1;q1DwSHRJnDN4(S0M?JzYG=6vta<_#6Q@gvM8o_Qe8hiIazR@9Y5mV8=2yp{phg8G zz{0W75vjQr$~z_VNuy)&xIMg%Z|l?rI6psDtJdW8$$scxt?*H61^X@s)r3Sb);&k= z_E;I<^sg9>jEax@{mp5*^2M>$!$b0l^@@P5+ml57y~kkVMw!x|5Dq?sZm-g;)mJoN zwIb{2F1l%Y?Da*D0+*Z_U`z92(NCuemyk+$&Y>LVCG?9y%&K17VZ zFjjqeOax_qx8_Wl_hc*-%`~C%ts^mC$~cO2nVU)aRr>;Bgg4YmzQ)8vGlhq9J1x{{ z%d6ehiO~$n05ZzU8{a&^NDuy7zfZMW=&v5h*ujvxH5iiZkh-L_=eIxCkw=cbjHXU$ zV*u~t_ughYw!Q107q#p~*aAk42h@C3o%`=nht}k_SQy2feyt06EoVzcVO(}OhOqj0 z4Mg=zls&4W?JgBR|2XBh2Pb6n`>blvfae#E6wT5d6CiP5*<_f$(^^?}zrAB8Ye^gg zSZ60Z;7A`itZLAQD;c9wqb5FJ;7TrB8lETmiNMf!XEk5hr5rB`_q6sXWqQ3a;u zaEU%wBb4fz>BlR>aP@JDouDwQ#gW9^u$S_BOxX~-st4Ghj2gqfVr?STTCGa z?zymH?zts5ONNy}Y%zyXt{0!*3zzW8?j-K%5 zaqCZudxN828x7dfjm*Zvr;6T^9kui3t;lToaq6$U@JR8Q8p?L`34VqKdAGG^ZoW}# z{ntn==?LxnEyf_OFrn4XvS(bP1R;%ln`Vyf8jA-1_vHIUApAHlt_{sL*d= zjBl6b-nzss25C^A*JUKL9apy;BuFuF7FoH>s;%j@MC=Jqo+~S_554(V4S8V~|0360 zD9(1h7as837TNVG1`=}>&xYnot-c*{QPgp^e=7rODK8;o24LC5uv%xPut-HG+1Ucb zFCK3~?cBeZzPg1u7ustKtgv*{9PJ#TKdw@{$(T==xjdaAGGb*h=uF%qAiS8unbiN( z^NRR@ExQw11J3e!-1(KM)Q4VUU;Cc!uiMs?hNHtWc0vTUvOevP7xyO)DHa!qFWwQhGX3)IZ3T;CjVe8R=EjEY~c;(VKaV@9FE;{@6NS_3^pKz5(CN+oSQB~WY+$*kQD z>&MV$oU({otMn`w0R&B6XbTGY$~9yksUrcD+OAaQ2}?5a)}2n^5lkGiXgVBeGy`R~ z292Nv`s-<&PfqC3eO)~WB;UmqixbAZawew(2KfOiuJ4Ia{Rao3<02sM-2y&&Oqdod z=fC+(-47(fOLDpiIp1hIqj!h`TA~*XnsdwyzNE^YIUwQCBGM3&Y*pwM1J^faw_}epZ-D(LYXPtQKRC2@ z8BhBLdwHFDztt21@HwR;b)O6FZS@7c+sxf^$a(PQ8}o=Y`j|s;B%~Sm(RWoK7*Gsl zPfW-#-Y8dK9;7x_Uy0yybn77=Nobnx$Y0AeJ#rcE(#aqDi*M2Yuc5sSs9KA_`4=a{NM5ACf)CBwd2 zdPkr*k3@Ena&$!WCcUUXuZ-}PAd0Af|9dFIRxKyU)`vQC2TmRM>GZPDR{$XYb^CeS}7}G|p+*eAe zMU`*Uq$7E|D}G%%|In`|ta#&;DNM<=sPL-FgBbmU1)Wn#1p~XE-o9lkSOS(=`5PpH z2zlYhnuRkD(lZW#*AwCJc>MF*JVFN%f%^qK6?a@=TIZs*x&Cyy%Sew1Dn_sD!HHDL!&u+2`6 z4rL}x=->sE@ufz(s8GD^tr=rziHqbqs5s@R&rj)*Tq>uKCRmgg%aTpg-9ntJPa(7~ zi><~jlMldEt@K8~ifCau?J+t0b%K}rc`Y72qvX8|)6&3{_2-do8Rsvts^Q|m4~4hFSS$R^FOZHe@)D1B(@u}N zot=D89mCLGvlRjr3_P2)P3@u|OG#2+n<*Vde+HAJC1X&&vxJ5k$}VGgQ(5d#;kbYAAlnD7v0W_hSan+Xd89VImv>7TjS%&}%yoA{&XGcczPSCTB0IyK2q&hnWj3g@{Ar*vBwJf_H?YzrpSlE7N$(<^8Eu#bt%QsP6iuiFKB zd}dY^d=C3eVO_+Z-|Ifu@Zcb{y|=nZLif#?Q`wm zKrFtdZKTv!Z9DMgpWlQrOA!Tl0I=iB3d+2(gAr$AQUXC(8j0`YI5zM=qtdvlQTE_3 z|65E`UB(+w!>Zm-jQ0|ricVOP@{d{}IG}CpBRj*g@`dbP$gSf_HfI+Ln{4|rt#^$A z^~;h7k}MkgE_2>lNS$1hGC*f?QgeFi{|M1LF>uY`yq4bCajNs^;SHDtKJ+r2aTOGu z>3mtvcL1+hoH^o*GMPKe0`>W|A3xqzjqNt-HJZxB8C1$QOfQB=hi;Txz9&!;i`Oj-}*;Hs&oQt0r_sTM8zXtEu^~SZ7$y z8hFi6%+aVjcKdgMcAs14%{|BnM^P_TU`i0%1rS0q&B(As%L~CxSI6O%$NpOoZhAp3 zT8JUI&wD&X71WzLS0uWj7mc>zC9{UHki3K-&XXN-xm88}Gkb=kb9?wxO{a4ag7S?z zc5pS8^@S_MAzq^q92&l(Gpf*2V4fluquxxUC-J6l17U>ov1ni0(m68*h(-59@rYfM z+J)re%KV6@w-EFX=yRfm?bAg;Z6aY=P`vnGLvS1ON5tyMLhx*Ela--AjS;LF|KAV6 zz3F(X40&S4pBa49M2#4-w6tJ`N?8Bw>3o05IttYEpIp^7{Vb!1d%(8|gZB!t7wV)3 zT}JAMq-x)QxrfWzQd|JW+GTCo&6gXKDsy+N+^t|F;k{Mw)XiI?3OZIRmUh}beN(I( zb(*7;qqT2|mMwQc9~X_7H;&}ksIjwqX8Q{7X2hFo0M;BEONC`dyY$9+OV@p)W+hPvq1y6{X7(F=)^z z%Be71;pVF%CY1+c%oyUx0G*VurdyfbAQ>noi~$uQWj`5{&J-!cK%P++DDHGMUd5Qe zNeP-`4jpd3E@!j^9i#tK3TdX=gD|y{kGW53*^B+MbZU~-k z5h5W0lDA_{R?bMJxIl>3IQje$3+bX17wQzlY+h<#k1 z?Gv8OyWJiH8}Ig-_m{G6(qINM^HDFr1|W%$e0j1Z3BJ~!mn|rE@1P|43ljVoxd1Dw z@Y56sUAZLzv*@1TB`6fzH=|e1Ay4KOLiN{mqypsY;-$FL6z4|>zx083 zdhg%f;NN5W|A7aBkikV)yZW)E3xpQ>oH5a~S0vc?``MY`5@_|5rs4^(p=I;#?|v-H zCsnQ3dZaw!Pp^_e$lQb~Goyrx=RAAYb`4HsQaXcJv9EqZE}E|Qbtr>{)Ljb%>W5)p zw*iooSA;pb`*XTAYIX^DaS8!HCi39_W6Q^?HetYCbpV|cEb4UPs|lidJTMeC7il05 zMBdb1;;^@vUA{F^M)()-oHIQBSbf*#Rlkg_|r?VQ0j+O0>ZiC}y)O7|= zSuf3T3Aj&ZuPHiW%7pnh{Kd(Og#9?Wda$IEq_tWQ5;?h?63~>0YmO4H_p>ZH29(#; ztBCf3(r>r3ZuLs5fIN*#!Ds|mLLHuuKzimD?C%JTT(2r|DN$ZkUX-Ye%nKWX(Wg(#1?5^g&bC7t2qAglj=>PTLGu zV&8Sxy}FkVd5qG}=^j`xO^iB_17hGorWzWwFPv7@7I=i==KooDqxgffqq@mYw!f;q zJOmvOGtY3!4=lX=_7K^ME4x+y6I^Fw7GDv4#ni<6Pv`<&!-V_g@Ung-x05r>!ph^~ z74F|RI3_4UQ5s#e!lUE&n*TjI2G7vZ#Eu08?` zD}j@p>JRY^W#kJ6YJy(<2*~uu*|4y9O-074KIHAbrXs^@$wXBz)-a=tmpM;p|K0DM zqn@P^2$h&Y2v>HWYIe4`ksDiM-fgGA<()yhgax1)*q^ROxeZ@d9f}Mybr3=kI$L@^ ze>dZPDMw&_yfQOdBbBXhy&QQ78X`QzY$%z$s+HPp1kP5ps5Wf2?J!cY@*l&bg*8M6 z;zt^)Uw-SG9<0DXK|DpT`Z<|ex?|^g-D$-5StDTXX=_Q14|I%Uo9CRYW>hSi*5n)W+z=X`_eL}7 z;ZlO`fj?eX{>av86;k7&6pcX)3iDEbr#_gCZhWp))MZmt%&<6^X(>;UVIJ=kj+MpB z8RSe@eYzDm?=5rLUU_B*vsFHO3w%}c4lUq%tomYWUmc)e%EW%mG7$XfM^H4lv)3rP zL62g`ZcHw{DV*Yx*G_-mjKPET-Ed}|fjHAZusjDYAo?I<Dd6FWQY0Ubn(6XwhI>c z{dlL4Uu^pO#PGe2eK_`NVVyo9H*F_c*_|h&HcjM!X?4mQzn0nZ!^m^ig!YU+i&#QN z?R6g?o##^H9LbKQmv5R}Lt~ttpD(^!H{!IHAB_D)`HWX_`E=gx=aZKxT2(@jdh)+is*fim+{cWjxj>ca&2gUT z!Jf-<9+cc=E#pMQ%v7pe>&eeW!7k*mq8}oKQ?Pq59%@8m#;&K2+l4;E@z0&sRs&;K z-T5r`cA!ge;llv87l38l?|y7KJ5~VeOopanuZTi*@rIU9Al%R4#Bid>GWI$|O)7M< zbEjGBdfKXFx-Y_o(UzuoHFv^3?oHU3iYSgy~R^T^~6VBp1dB2AU{e zj85pSvf3B%BgKqp+J2p+2T6)Pmc*7NPLjB zr#ov;@Oi4pzZ`&=fZAqO<*F;p-OZ{@Ic(@3Z8wkn-rO#7syJK@hCK%oTzzF2v+RYy zU0$1{)(v)d{BPDB6F^O-1v684X;P`M|789-o%uRe#w_%|W&R7}#Rh#^cXFup@HcwK!HX=DzA<3ofhOTSD>%I?Y32#9noiKb)zYebAyfz!^iG5} zW8tWMLqCd;;N10zN=wv=pW#JD3UwcO$5vX(7x7|AV z3v+=Vyvj$5mJ+9_;VBYt?-XH`LFZ8s*V5EO%{BSYSZr zt_(u#JoC;8p!u8R|K{2mSt(sOqdpLmm{QpCHQ!E@bmx3~WE~)O_PtW|=##JUW;3c^ z)%?o{n%_&SC->DeaC&*Y=gN+oPLcsTNCXTOym&}6;q}Lyw{W_v2@sR?B&5gpf**oQ zKL$n#2h|vkGW(e)-*7m0O97rDurk|PBSm{L3X zY5O@An|)rUSD;h=4qS$!Xt=nnJkm1;b1h;Ka{j|8={Y zJhHii#CSEVAZSXV8XYcCsA~!loi@n7z~=3shecm$9Bta3SW#vxW7mOLML|bJN+<&z z$zrz2YNlAufO07Z7ND)+sFr^?Deu!qqE6-TeS5Ok{ z+j$DU=y1_O;7XJNa8MFCU{vTtK@j=<@3?+F|Hs9W-erw{vs3T|El36aOa?JR{kdoX zLizl02BLfUqx`uh{pEBcjsOP|F1nG58=c5TRF+cUo)iFW600bJ8-F*kBratx#=0fc z!ZKltP8p;aZ}47ZA~~zZe){g_F?{{@XZe8i?LWA?!1(iwLb4e1XuPz)qI}^TG9}K)p5)Yl0JKdyMeLFVfl!@U{1Husk)%JN__5_yr1uYZ*H1v7N#`f2_Zj)7 zU&tv^OE!iqNn-}V{oijcjARLfl-d?DVL9)Wgpuetsgw+5fmW)jezhh4!1Q^_sXCBu zm+&d(#H;fv#i&?PY!4|?Z$=jXUk>Q2G`?#7fiwTmXC(pt|AxbB2~vwAVS|ofpVAOT zyeC1Z?Mu3ueY;;(!`d~QVJG?mNc64$T%*fjpZseDnsX+oVHNjZnMgf< zS)O1xo0lUL-zU_);JNxoJ^pf!e?m@}UkvtdF#*KrrLfNq-tg{<84K+Inn|JK0$*|{ z{tI5X^NmN&?Z?re9Uibf#k1xMU-K$=5T_Sh6xh#d0@#JGm^;`kD%G)stan%bR5T1v zlQ`H+$q=MQAQaqd^%zv0LvMbFXmS~pxeXM7{np5jB&GP695H81k?8`Gx!#fSkxp9^ zo%Ubt2tfr7?ki@uS75)`hJKb4(C>9MudfKH{58>u-cfEs5YB-r6NZ>wo5dHt7CkQ= z=`e3zfKi`ycfgOicW;W7>&)Gm+K-<37L#E(cHF;ibj-K?@TLCW{!s{&BF=t5hSEXujKVwLg=`R@qu1wt7$5d}>v;|9!P7&pO#l355-*j3Ma zW#YKHcBoLc*<}0IuOE(-H`=VfszW7e=_fBgvPr8NU0W!qRJm<>FxRr+N=x&$`c<*? zb~AED*;kpM>RX_NIzl?hP_IflWy56Eu1{&NGTOSNrdc$kD#a$=m>Jn6LL_H}^Wkbc zMZoLU0ZDLJ;j9LnBj7t26ctFy?Jq?M^WMjzqR1s6%F-xF?;cUYq1)iiv5hsKd|N8w z4PhMv<^-|A@*;a6zPnQ4v@|GJIw;1*5@}vq=`c#7L`hg9rZn0dZqps$%L3IT z^nUJ|olA8E!-YhUag!$5tPD@KSld<6Yu_MKe59!D4ADhK+>qNQIup4{QlY59;k(XA za$*;aK4zNhR7USe#R${(-nXqZ<_V)9Yc<9QEkt8@8^mQMnj`BOJ^n8gO$Q`XH?wXN z37IUcFuxEnwBCO|HZeQ+9Ha!CC-*Q< zZD!2E_U2D_Zq2yZ3X2^3KVwc{WcD6R;sOCX^j}_%+r3@WG!k!~R5kQ2#Y?GUIqkld z9L&@yeTtKFHuSVExAa7@vNI&fCrmZw^)mB)jyC%322|qOF7)%bCT(#pZSWbZY-v=YD8!F1$cedS72dH%C%Y0VNQp% z8XkiC5BfzHK%c_{*W-hzs}q@PS+{wP9z1?$xQ`EO5uHvQ;`dHYIOPSmGxy$6MP{`I zWou@~nK-Yr60hGpGEOh+eV)%@Gq2$7CghYOxO-1=r#e$_=KW&q-F+RsG+nn)8>e>N zRy8ABhRAf3iHqU7f}4?EdyC(2b;`(oK0#VwH_qG8Rv4~bNM8aoOPx`~Wz1|Q!QOQ#MWTBaJNNfU_uL+p2n}^l5C#f#*%^jsA5?e5%zF3;wm>6^4AE zd-I&bmX>9vdVUSRi4*`CjSJzncG3e!$Uebs^x=Eoiwr)N19JR0$nykX1?7^PYLMEvfZ|ja@)L!1w6B*wJ<9m ze?(nKK(5D7|44-rmuh}KM!Bl_O zG(UWaq0t5)HqGb0tg-PQI6G#cjTUG>m_ZDO{E&}telUl7++m}E&Mw5p%V8GPEGH$w zBV`j<62*TJiqn#0=N{tSp**mGKq%HNhRskZk-e2J7KwnzK+J*oBU9xH=lyvalUr>7w*z{eW<5<@`{8NzR2p;1*L-8MKx zAL1;65(+}LP^NM^EllhcQc^3?3(<{i>2(pHy6NDJj z)M}CSqt(@<2C*DO7l7CcG~xaZS}DX}YS9Ojh@|~!q5cjkK(vPcrYgIJ|2?l&-Sm(7 z@Tk}CIrT0`AdZBe{t#Yy|5S;}41tJGL5GroOzTmtAT(PU^}fBk6@~QlpEt+Rl#&4% z%@-q8p_F8ETdp1&jLx^1IU#&rt?Gf$h5SW)x&USqqxV)+|KSHQ*+LZBbw~zsXOlLkv zZlh)b@sbt@Xe-H@+xIKF$h9HrAd@HT2;18G>s?GO72U$EPFh3u( ztXpy2I)1qqKm9HI#VdA8qDbHnXp5d`ysx6UEEuJa6Oiw=sy-p#?JZxj z%hB+iz3?_RQNAi~v`Mh8!FaRT5vKkMdkXU;T}IJegz&cW24?+1K4L#nWeI37aq;Pm zb~>l2v{ugY=86-3$=e;NO2SFcZ&fZYlvO^uAJBxfJC2To7sBfE-&d$1a}lr#v!j1U z6mgO(F7q-B$syw%jvJ@XHM^`mRFhFKk_>m;+&aKJ+5@cM+^jytZ*2WEmheKURuQ$-5w?)oP^)83e8 z(v$Id{Z1%-dn;}wH+CYPX@jXvzaRO%a5&4n(w8>GTL%w8?L%&$W28yYT>%R8Z$ zhuk*J+6k9)c9`^7I&7X8wSXH_Lp~oDbrI_i6hap<>qnR4c~9IISk{6Rg_KWVILCXE z-PgyhTpizMexlPg7SaD8w*kWwtpn>#&=wc46UTm(!x*o^Gm(N|Kkh5n z48_~^L2`d3s=Id!#hqVrNbvhLdB%V~cV0q-CllsV07oKfP>}w<%1=+4WdfpRBy$0`-g7wpDdSPV% z(2f;2Uv`WsdM4eri(T?fK71c|(1;8967_|D&+%HlJeRb_Ch-BE!*!;of~TUB>Bop)DPcH9bz+@l8zJZ<*I2jT0+=8XO#~ky;m~c?apOt6eDX zG-q#Yz?6C1VvOmM866ZSelAUVFyv4-M&g;2b`tE!>}dUEQRG?VS?6+emjqs+e1aTN zwc|*m2hG%0127*EZ|^;W+dLRH@X17~*OZ2?Y&Bs%NhBoN8-AGXwsX4MudZx;4H01V z#1A+>GxrRFggC~U@tN0t!FQ{8ltW&OsMrYK?7IPyneIMRR%{jTH8=KK-wMEgO@foV zkdmV3_wlgzMn^K_&B@(<>_5EU4@q*&lBXuc`CJK zbU5m?Kddhn!F0{kDl&gYU>DKpY)~qa#cXboim~E@=6%fh`Sxmp{SEMNyZi3s_*+Sg zr`y)CQ$oV@eX@FAsiIk$=@!5TbbaOSTEFkmyS;oQLraHV&$56zoy`p~Aq`YV<*HaK z<$51LCev2@c9^w=K`6roZ>MF5p1Mz}Xw1I=E57r^nL6vGXvoF5i_rGP^dp{If9A8q zb-?5~$LUR}b#Hqg@vhdkoadGIS)V@FI*B(I7sA|R?FjucwY>xR$yY1+@%)TTN$=H7 zmw8@RHv5KhvkfF(xLI8MBUs1s-XjHEmeO9ToyfTPWhPKAJUyvbewH<;S^qZ~p5jq$ z3Q@y1p5tYwK5b^_;xrl8u>2U4?1@{`7(!0v?Ri?V%4)L0Q->65@Nj@E~BiH z`7;|XH^EwG+|jz0^ky8snH?2tGjK@GbUcpim@^nweaL9oaeLb=Xvm$a$5LLk@JnxcPJc4Y$?9S-`%P-TNlJS}q&IgpBKH zl%_b8v!*U?)?hbk*SU>2P^n_UYp2p|lpx~hKvMp02{SAF7CC(F96G=)KhK=^d(aZM z^+T7!HFr*A<#kVrfBU$5_TFJ<$4oB8&V7w3*CC{XK+*D9A8U|j2PpH8>n-%@bx!uV zuH3Ws$xOGU%L%D*md!!{B7?dvSvBz&6Hgr)Z4{L6W26YyNDcKwGY&ZCFGJTB={}{b zS{)7#6N<+iKHPUWI?Y!t;2z-@V6Vf*Rk(iUc4Rv_SUi3hRrdygTUNRYYUT zPA+<*jp_~ZsnyD?KwlMO0HCM?uj4eJS+n05bj-Luk8A#+^HA8|44f3QY85Na4AzpP zbnUfh+gjLl3fX+!^HZq7O@!gZSgQ9sw7Qp)wX3KT0L^YuVO=J$?z`M`(R0fB$-L=H zx3}GQcUFv}u}52M3PX4kNgRhyA{x2R}!{&mRP z&SI91!q9tJ{@ML);Uw2~2bBxQ>tiX{ zr7)W2_)tmFF%8QE)kSU3*1F&`r`Wnvr&4y$uFNI_r`p|b69*sJ>;A`_ov`?4&TfIr zL`4=C=`?i73}K3<4wduqbxsbhM$X63d~n4X`xcXm(Qyq;mSzQf)y;~5)Ip1=T%Y`|tv4H=SQee&#-CHUPi09Ze zbSg@5{@t)}B$VOMl;PR${kxlO3-;=A-=C&?DitVyHVOqJaFpdSwHezeph2J!Gpalb z)o!ZlEN1O0=j(ZdsCO!pn`^FwuHumI5UQ>5(@53d`07Vnu~I0ISV@}zVki5zyxfm= z6)g|)pV|DMw0_PF7yfU8|4TJ{5A}QADox!V^Bq&Z-zmLT8w`lq4CHtU+W(j89r+HO z9&~Lz7syoW6D#OF(5nPP2XEh0eP@f9-vBKisuT(JNR$L!XIf{!rB*qP@8e+Bk?rHu z(L?KQVNbHM325hIiJ{ECa}5~s#f-(UZwe(Esl`u1sod*;yR^qtr}?4v8FVh@wWIgy z#FNxh#Pm>0#GhO|YQ{&PM1Mh)wCrmWIs%5-ig5=ge_Ij74^ZyD-iY6!U(#v+%ntK{ zTSE9tUZR!wi32gV0n)ADJDF#a^Kh`|mon~a_@&#|LZ0rUq9;OMYX$(kkZ$wGTRxL) zHgLpX#9*y#@n1cpd=2g1C?k~y5kTq^i2ANc>C*>(v2)2xzX*}pP_ zfAZ&qf6T;nIxfHA%A}W7f8WhDwMbjOoo6;-3*XvWlw6h zm0j>Wa-l5#GF8<4N1-Hb5tJMrnje7-wEgwGQA;Wul_Z1rZV{@iJM#TjkBcmN!Vp#9 zU!Xa(v#oq94e(IStXx{InZ~=X=uqAlwwF=xIa*A++2mZtyXyxwP_(RD^4v0S1OCV} zW^z#n-QZap#Up&EGVD3Y<& zOf;@ES=Kp4*VBdvx8?REf0f#6b=kQ6N(f8{%*}=poDw{b;LFX&!^u7nhV z@u|RVX8E>+BdF0G^)vF#10gn{{F*MdSyq)CefatqUph`p2>Y0vx+W)f^!bnm>!J0u z^~xE;7+)4{=ku^edsR|Gi}LV5uk^`BiOZQettNpy8e2Gdrr`$fc_;sBT1&nxK<7#P^aom~ z|5S;|Xt_Y&EvlyCKORe!zXsfxKE9#nBu+oU;?J`OG?I1wEtPy7e}DMhOlBXB-}GbP z7`jPKZ1~5}1u$_;MqZ3dyi=GS7Y_ACJDct|3qn~)-X%<)ola6)<#xE~4EyN6BtFH{rHd}dFBJ?^V*-}Zg?-p1Hmy#+M zc$JfvsoOWWYch*%Ciae@lR9}^d=IN?-N(ZwFhIiD?mnaH(Dv%^_=4)-BYwQ19o?e|?EBZiJa6Qqq?PNX;%-=pc`XJd}Yn*Wnri}Vj+KK13 z$R-d-+1&(uTsfk9dapQ66~(52=6wp_o$Yy;5r;TwD*j<` zj3sxN7~W{{#Ta~M?zfhtaneptt0ck5(;2*OP`109J!P<>7`}o`LteVj)hFy$%O?x6 zXmI*^UX0zE1M4clP4)TSUnvc(Fg==y$4a*%azYuL7vtB16koXmUeSI-fYEZ|7`ToW zIGO+Qeu-};+u6qpSlqFdQLjv4*5teRT$$HB+&G55U3HxSP181!0gS5PxKeDVl^U`s$ zf&@qD!2e5L1a|=M!hUQJ7}1-}kmryEF}Y__t=qBR9>JS+o<8V@MC<`@TL}NiOZMr* z$-Bq`3<=4TuS(>Tu1|$=WX6CMT3Ho@Cf{TZR8{N=l|r z*l=AmsPC~!&M)n^7Kg-Cd@H>rDi_D{^#9{Wjs|!6|NBpz!lekZ-j$b}mKL;U<#1?j zWc`Zl(ybpG(h`sPW!pB=#P0k#lKEx!=o#CL*I}%OB~$+Nn+31V*Gs5iC#AA*zBh;6 zx?uI-6VL*#(0%sXO4oMx&m7Qw z_S>H=(f%)$;Z!X%*hJ;jF_^i!p)6QE`<9u+;3u0(@JV#U?>dx&klhs%P07{f-H;8T z71qlL^Sfr{v^YLo{9D>_k8cWZN$~#1?Sgk~0=4fln}%tZG$z=BZG*p#DgKX2xcecui*2qyZd8|0a}BZ;kii;mk?%lu_kY5(c$$nyqe$ z#NeGCRl@C_EDZ*{h!Q2nFG&bakb(>3kx3DHRTq|79GHVfssCQR->jR8>SsLg?}CLU zc^eM>HvGeT|E^}+jJ-O;e~AZpj0s?kAsj6Z{)@c@LgNQBUU`#|+~@G~C#n+g;UK(GwZyr1#lw-qQJK>nTs`ksFK z1I2@1s$cN{>}Ndi{TUCwPRX9*VCIA$W9gAtg95_xS1Yh8Mcn^fakS}wf@+1{#~F{P ztN~wo*Zw}N7_$Xe1qL?5J+39ZP9ZRLDglwi1CRzj+^?xq@zshh@=Mr^-7*qG?=9&y z`xtdo7q$4|Z{g3MvEwW!x>jB{PGkt|*HsUh*V*2EI4K15yKI9}Ta!ojb%#Tk=YOm^ zvXwej3lkYP0(fmy(tRXO=S&9_B;Li}5(e{r2z z+9UyMM;ip64@LyjX;XlOUEVR>C{C=Go!g9urW?P#R%xJHCh?OF9iGR6FkrZOG$H=r zIIrd(n<&e>w3&!brw%(e6~|qV$G$M#BYs6jRv8a z?dn*?l`M%IVOnpE$;4BckB;Lt7H7up+%8UsI3B#59Sj~_Zobb9@P4s(X&o9G^bP-S zD{^9>iX2Q&N>L9z#OQ+_k?y#GZL!dDkyG59x4>FG`#ovMKg)_ySd-tg^B+gut5?4EqO!okG;tMCc&o1 z(*i??mRX2TjXY{5cNA#`RWxjKx}C^TZ=RM8c~Pjb5a2NkA+DhQZb?@E-I9Et07pDR zEfkHaEGd=Zq+_sbs-RXP^Z)R67C><{UB3^W;1XODEWv}@0)gO8a1HM6ZoxfxfQ8^r zaCdiicXwxzyCiv@_j%v%yLGMV)~VX+>FMs7o!RQ0Ise}|9ag8Gmp)FFWdnZXi0{gR z_m%hlW5$a4nIb(vgfu zi>=kz9*M?E(T2Z)bQ)keO{nDXjW1>{#0jfyBDGj-dQ6{!F26%PM;I9^;;a^n;LdHQ z9*QoBG&3WK+rnnIA`z#q25W}Y;?IjQ{)b!Rx?|_xM9N=23>I*5_J4Xhj4M6BYdJo< zHLm*(em6I+O+@+a_n10@_@hpGr~Rr56m<@X2Rl-Rz)cl(B*A&%yG$9zt*;PDPL;-; zkl@jAPVg>QS>9sW2^XmW3U4{DLyNUPsQDCs*w-0h0itQ>LRAR5Xup=FwPDLeHqsu7 zVWvH&foy$Q?nm|&hPz_nZ%wkG=OISq%@x&kzZU-R1E1+%q9n20k>?I5Dx_>}tUQ*M zP>g2YMgd3;e&)C=57@SF{dR{B=k@t7N%EH)WSKSO=q_usp8KUhfS*s&*l_vA^Bgk` zo?}>^=NPFC4*=v1h%IW*Yn<)4tL=810~hE%myY~%E++Os8S9r6*n#sb1%8rs=KCWB zzTAn0v5VqfJf~g7*nPFh-RuP%?9YGS%LHk6+jzw-aC^UY36d@evqH@~l59R#SPaul zNqO9^i`hueJ&a5juC(a!!+aM4!=I>mlrh)c&5mDxNm5^$&+MeeIU-{i<`7Lo@}tR! z{hA=@*1-ra`IgLzhAPi+*6eVl(I%T0;N*zffCjcy+Y?Rb73rYsS8?uk?#vKtC{u<@ z*bduF2!b`H@AD+OKetupsm-KVrf6HfX|atyQ1E)PTC(%nrhw!I+r34Bt>z34*-Bew z@`!aFC5@->BnKNzGzhan0NV1|a?dZ*IhcyltJhhrGbsT~h|sUhAI&B>*l35Ys9V?` z50Y)6oxpaJqPU&DGh1uv64zPr2?etM+x6;~?FkM;y=GvF=MISzDcFvGaHd{qHY?S6 zR6?e}%VrL16q8jhMvk{2bDJW$KlZd#qir4&lOGDlJQdx-?KlYpzl(U+Jdd8j1p|=+ z&xBe9&;H79ozYNW-?A!FD`z|9lPz1M{Ett&DIVkG~s$> z>lSIv?v)I28|_p~VYGsy?e5tz6+V3E5s8{4pIQgon-Z84=^v+!fp@8sF_}4X5mFSD zqKDJ%^H({U?v@~%$9#22;*<;9IV9dTCaQU$y#X_Q*fM47uEO`Xb6eu;gEiO@q?h?6 zUEu%R_^#WTeftN`-1>r6rAg0Cs-z?XKKC^d-pmRb?R?Jp#!K}5M%;xZWTJ9yV4`;S zl_>8~m*X+IlOn%}dj^Xxh)m*f+kCol7v&oguY+*u-mrcxIYR2Cbac3g8iUnRWUBWl z{c!~v_+ML*uyVTmgg3*2Xsq%r6gKiPV{8G6(3a}-38T=Jd(o6K&K(4j4_{z>_zo2_HWF7Y8~M?$Ju<*#kEx%Xk3 zvhVUFXX8dG7I~Tg0Yv$_HbSM! z??+!W^XA?3ldz{U62cEWX?9|pWDa9omE3$EVO#VBB2i+uOknUzngLuBxz~~>u}2*U z>`*m1Zu^zmJ9c&rdYj=!)nD|_e{uAkV>(fBh>vy3c(7u5op?c2Hy+nPhD(U)9D)Q5{|t$V3$b4TWbT1QKlBco5B z0$vNBHS6;ZIlRu(YLM#wzPsYdL*)^?brKif^JPY{y>ms;&D=p(s!8C!*b( z!8BrFUm!3sW4(VSOc;f@;z3qH1Ad4C&OM2!9AGQ3P)`>$Fz@}m75Kno^=iTAPgnFY9gynEcH`VBuc5UjgoZ>>17xS zO2u~{&bYc2sTqedj@Z}~^I~}&8l7Whse)#~@GRO4C-z*G-NcY4V!|QU(N|hP3;PH` zq_X2#XT62=)5aT=ga|F%T3-K>NQ5g^>@QuU#3aNkdwe{6JT0NZJToA-lOM}UqdHVy zBD8QqntcNzVXjyazLY6#`Gyouzl3~>qXoD^F+7+sW<^Izt8maVKZ!fRee?uFjCc@m z;{>Z7%WV&Ou+sGg01>zCQ-n9$IVUKPk4rFa1Lw3IKLUDmW1UD*h)Jdn^b1=DmIhYt zBBDJQ2<$+oYHSXaerNsEo9}lMI`=n7v$ogll;%~*n}s!NaYA(;&aWoErq+EN`MkU+ zB1!6jejv`RFjG8Ru05=l^0tq(FFs`njxpo->7iLI3r97)TR&4=gl;r0<@4w_&~*(otcL^MhhXNPA6#+(KdlVFU5Pw+HSg`x(Sv zMuWUUQ}&|lg;zNVYTMY0p|?B479((0SgS`SHDk!xLXkX7%mJ>YWr7B2Ot8Jg3D0Jt7QORq)>Z^&J}}&V3y@Joc-qfArkg#ZqG4G-l^{HVe02yWggO{ zYs;Ra=qw@dE_TA&pkt=&4pW{%3p7_rIB&1PWcevIz#E@BV_tfIF=5+V0K^X>in|(w zR;RzD$3zGt zmWQd-YORKQO~UHpC;i*>+Uv?D5{$CJof$NjG0xuej`agdC70+?>(q*G=dTvt8J*q> z=z)58R|6ilQggnK+^9u^yaooSBbdBPDYi}n%7r2(B)6tjx@qd!L}GW#(z$JXNyfa5 z&%O!cJHB4tX?{v}Mdu{=WQ`YrTlC~_%zPCs5`>@KXOVEhfOAe@><1jIS?8(85?0|Z zsOyx~#K_p+{m5n9oCLaJrMGQP+~_H!9SW8l6MX-%TXJqs!u4XnQs3?VWVb!`V{hGJ zprZOXwHa^f+cUZgn)HS3Y@ebyEyQ7jurZBj8e^=5ZuH(u@+}UZIo4^&A8E#NCi5Kq z#XAG>#Oti?q{+;u0iNGDsr~?(tZMf!LBHu9`Bw!l?{o;C=FNAO`*s5 zy~~dKBLp(RRsYyL_%#_dtR48iz{8N1agO^dWx{oJZ5O8=XXv&*vnk~# z<*iy)>8B`RqPTvzY*^CMY1D)~v>Uk`wAQ+;xDl_G+!XdRpfBC$ct0`<&o<@gN41j~ zmHWB-qDoS83?h29`toERL)+m6k4W`y2e~3I_wMG~A3q=VZi)A-=Khn`07@(Tp*8f( zg)JFyrnGGh{ySE~Q21|F15~+?gVt2lNx2Sy&TwpKC7EJlu=qcQHQ*kUA26r2A1CX9 zB)`CR0(P|hd5^Q<_MZ>f)x;O_=C-Ng zW#d+AP23N``hIhc@rTR2S>Wd~3K+x9FmoBKyBaHKs?u z*yuD*lmTlG0A|Is#H2wb`DgiQ1F9mcB8DY>g(cr9`jw&er{0wdC9?DtmK%FBn#QOY zX3$cVXR}rx_%NDwE6K^E)COhH3}49@ggx(7y1l~x-Q$vV88&SI@9*x_fG64CZ8Dx~ zVfzZFowP%q`(zBbC;_~F^-eaIH2~}6|7`etbo)w=kI$zdYXBBEh5wX7CbR#X8GfPl zr$l?Gs$YAMo(KHbVfSgus{%>%hM&Is{PVR7+(5tX68MTISwj7}WxuZ0Jn-r7O9O5Kr9Wlb@Kf;5l`bISdoEEARlO@8 zO5OQq!{=*Qr`r7IMlVs9|GD-{ohF~3_knK&(iD68Kpn*VuMO~R|L4uEj8j2STWZdm ziDumQWK%aV$G~|0!4ww_aQ+3E(8CfTr*9C@IyB=Hbba3+ok`UY^Zvd+dn{x7aPfT~ zsV{pRAtP6v6HJ`+Wd<3Kr&AdNMroESB}`67kPf*&H}TeT_D#PC5hx+K-scuP?)SPP zz4r8&cRHf%dHBl$VnBJM2sX{|{5rb_#B$49Kj8nMBpd>+x0~XJ{9ZG0GxTq)CTmb5 zpEaJ!SKck-U4)%%cgMW09AbRng=gJlAY~wjfeqR8$I6nzHqK|@ydSaF0Km>yc^mhM zrYXe+9+yN=*s~ZuCzRqNIkp#?w%#=@+*Kb^F5Rz&OU&zbXQeO0Nc=84n!FZ=y1R8# zb4MJ~5FC(`M__;jSdIMA^g<;KG9Ezm*E_y4JB`n!Vl+6(W?-8P_1!O zq2zmJl)r7*!-&W*d%#WQ?4|H*+)s8}GR%qBT(r*bCWFkI$)wj!0q+7fy#KaYlwMsm z!Q(Osp_u+aFi9^P(7zbRojeD+jOl(QNaZZG+<=d;ow{AL>{C4-4PK#vyc-=`gh&L) z->WN1NZQC?bop$_~-$U!pU)^e@p_oan!Z&ORf5iOy#yd{q4?f%N8Dso%bC zsL(q9_lW5~#WI`Y5Hn9pFpQzus4T(H6{~Z=$+6%@)yq5Y@$KJcp?|=8+Mpu)~PL_dJRV+1(TaxlEUO}n$WMW5d z(3SSgylc%pyHYnL&sMf({LQ{`_`N?i11B4$58E{R`W-s3lMO2{P_2e!;sO@H^_u*Bme$k(hw#X zz-|{P@b^anSl34lK(+>t1fJG^SJ!}b{Xbp7y8fTBS-`sf^I*SpePnB}u1~l|Rl3z` z7g!LG+FCQAI-m-LYvAHd%YLmc6(kb}pSL?-{P^Tek89gAcOM!nxGueI=w=#|`erWM z_X?bb%_|k+877P-l^_1EFySYxk5JsaUy3o=fsrwcdlr910?}?A#LMh5)5&|;2K=E3 zjg@mHeq;ya$&*pS@RQ3c8c`1$Fv^d~X4MZ#nAh27@zaWdxt5;uu2}eY2QpN@4T(B7 zG}R*#MV>|*+h;safIDxyd7m*v`Cxa&jt>Vy8~Uqt{5{0WbURj@Sjm)QTSN^u|iHxXb5mPURzk4w7! z%>WpKrIFvr09YD%t_n_wsdmEc7~2CkH71{eF16EbfMug~Z9c)%Zg)b`LI3X+{{LA3 zkm^7&q}rCs%hVaE71tkSG-3;w+#v;+Zbh9xlp;a)Ky=pSl7*+D(}m$kP}Cnod3TMS zQAl7=AG&LNm;@vzpdS8qT%B}>tM3|j#}$_2A;S`N_uEk3Uve3sStOxF1W0g5rTKUT zsxMsqo1fhx_`yVZ$|SCscK+M?DX-m&ojFv<{Z|m(Q4lPmUy_uI{N+E5uc3r$1-Ftoh+s~1OOh;nn z^Dl$GEY0GNFHAiMpS)O5rtU3B2XpB1a^4DX4t^QDPD-Wq9xk5CY%wgMn}^}SzcE`W z_a27*tFQ!SR8x`MSWjkK4F4`ngBjI-s{%8szx#ooAO5rgGpfJ)Xn+~jU*jEs8P(@1 zQVLowsG9?-L1Z@v@Gp$VmC3_DCV2+={qV3%$M&bar;JbR!QcC;xciY_+SmLfOfCM6 z72A0TW!xO-@y0>@#)zM%0DoB&UR{2rn-9LEcG>SjV)ecXbinSsHpk+Fx)?x__*^@2 zo~wto42>sKEi;4zqL8A zxc{3peirwitA2_5B+uf0Wn^9=jEDmDYp1!1J(SuhQ-CwP_rsk@beVwIl()zgI? zJp44;F@%gjlc@TS_A9imTMib9hHvu13nuK%0`3;#9R5N3Jd)KMY`7N8|lkmH{E(w?g4-F}Mazelw5RY~(caq*psH zc3zOMzJZ=Xhr~jVl%^U-#)?RhpfnU1(Q2|B)Q+`t83@$f+|0YKze@|-U4HqGx zCl?4alr_!9HWaXcr1X{Qs@ZNq6M+4aX*FD|swTZqi7sVPNTxY(UvzFEOWPSg3?*hhtS zh^~i{ht})I&#N!m9BOgd^U2MlE7`L?_Mf|totgJviL9Wnon5ZJ_(fl^dkt!+y%JMp zy)+6@ldDjFqul?E@eh5$?v>fJ@BA$>SbQ2`2e}nut-|9jI}kBaqK{GCs}0@IopwGM z>xYAS(p?8aP+Is^Z4drveda`8k4;%r8cY`{DZwZI`F-5zz8f*BlyW$9&(QonF=|Kl zq!53qv27byj;mrZ8f#BEp)xEYYi<_jV;}FmypQM?9BM|~hzrUZ9=piVjhflmBD4l; zNz$1Xyo$2RhlG^7On3@L`Q6vtrsbNBuTw8eF0wh{rposG`x`$f#^n^(RkNI8)X>zt zIA=N4Sk~eh21)R~S8+?nGf=HXtM$jrj>B}4V<)$5zRibRk1u52I|W3gQT#<| z9zQ%#lphT6iWhNXVr`|FzIk2wT`hVZ7TAAh*wi#$9;)tALlj-{^TrlRf*A1|HCXYQ zL!2qhZAYbSE0gHr=R$S(lE*FHv}_UZ#@MD*D+Q*_p9?{xUkJ?Zl+a#!2Cc6ScXu~> zA76coxhc=wVkL_7cljPh>Sq?A3CVJep5Q`Se7dz_np^mAkAamP?G$ysYncDT9;XEn=Quq*y8mB z&egHS7!3Y}b-SxiQp`;bZLR&tJ+EkzzE*ivv1jT>cL2SuHe-5gv0}ZAYm3)EOe1~Q zWD~UqGQxnLkCt!v;R4?ND?VE8XggaY5`>A6nU~Yh=>|A1Tv+e~M@?kzl{JRa6>Ged zY2DC#<^81U^m63(5Xklu<_%vVt8*xR84jjKw|&;&Vq8|(>>3bJRf=yh?y!g9Bvx8t zc_4|^)9BUDx1Z1e!K}s_z$TvNd(iCUIHS}`<=JkSN*`MCXbM~s$tI1KZId1U@>%A{ zwDpS0Fx_S*M)Mxr?C1(8cisO-TqxCtXpS5NjKI|I;b(qzgk6q8b>qZam+KQ5=SmWI zPS^$}zy+G9U{;ZsTI_SVD)mMMKU2`B)&3h9RO+7q%9ZR+Zc0n40jCwCq!kr|-4hEH z)3hpOK7I?)Awai56X6_$Am(UzM9<=PtF|YgFE|9cbFi?n#cPkc=DEq3fkLAuf$E zVe~6D*M1B+ZJp9>D$_T&7M{h4Ioze6m-y3Sl7$V=?G~p)z~XvgXG?}*a+btaqR*bI z>c>R-%-XfXiYScezA`m;T3MlM45~Wg2!GjX&uIRa7p-p+>1gmPolQxI;id6 zew3#iI69ZDhx3iTqp^&)$W<}RZme(%V_LG2m~oF?w3NTMKuvMph4<(DKK)@X`Sjr< zSG}>hDcaN!y7)Zt#k$eRK6&7LwGuJfDM@}Glr5M01Wdcg1Hjx+6(MDoZn5)P zR#(9Vf()-HXYFcZB13dx63h9VJSSuMGhtNyxiH}xazJDKd6}lOoa09Wb0-D8t%6Q+ z%X(Gw?ni7)4Flo4y*lLu>!7dP50Zoyk;n@&V@UC{v zOI0N`!g(ENtO2Bb>WIe*v{#OW6z#G$bDoQ8T#e)67An+LR|9m!EEl;=3A&|a9}H({ zK!AEv<~q`sTh|T}fO$1L)AM=4I#u}!cQ%L17aH#SsCieWwAu9@cP-}{)j7w(RG2rn zuAUQT<3f~{aM4+xjaED-r#T?gi3Oix%R@|9e(3xy$Vf!A9X?VSpbI?Z$G7#qZcHPePfBX$L}IFs$LMY% zH83g{=KGMcwmY2cZ`KQs3v4mz_EV#4EX$z z>6y{3*{_#6Yabm~?MT^u1?rPdzfWpiBvCAZa#Y@2JU)<0Qg`fQU+mdPjAgBIHHole zp?Z+fk;z;lQ!b=PV&a@hT3 zok*us#62=VklwNG6Jp&=v}?p6t+~QgsW{oC#o!dnCdpCnF>xac$lkWeK_vDJiop+^ zQ##t&SGYTV5+Tkvs^6=fc5KwtmvUnN^tr0K$DnFBGcG(SGUG-};)Hl^nh(+Q) z7_4lac%M{u$45|N%FH*p;!Fd0K37r0*qc#kyq~6MEzSrkc8&0a1%EQapLDVm|dMJb5>y~v(H8v89iK6i*ZidzwO+= zPSwQ!(X@QDbit)HxwtbqyX#qO5LYa%kRkWle)K|OuZ9XSYxjHKu)Z@7PtWYjV&T~^ zg-QZxLSqRv)}B*!j>%MlM*87@MfZ?&$EWf(*6@gVM-o?NH$4Mek|eWW_icp#BOTX| zi=?PM<4yN*T%kEc7vH!KPmLuxOP8Z4yb?3LvmTTedX1O+;<`sNT><0c(Fp6+w45-76ks3k!6yj4BTsgN(OuWZGSaaJV_u|3+#}{X8yTIY)#8Xsi8L!RH*7ERMdjfx|y zULNS51==cVeVVr(`RKH{QSud|MB2t5mlwO`jCE!)?F!K?Zc(3n$%t1SNsyv3_~>Hu zq!>SJt?u~Yo9y7y`lt=t7_gTgZSKt*Zw8I6BOsD?qvSm$iB)qp_c_u(6!{T|7O@8p`DQo@5yWOPh&C|u19w8AZ`Ka>!|GCd&%PI9zsSWe*9 zoyP0YbZ7MN0zJ>|?zesbdQSBZx-tS#<{op)#MXL0E@yX}4HJ|%S`7$8502iUE|>K; zZw)Yl$R;En&ue_|)-_9x65Uw5SA*HZ`!L+1I*Y$>DjA!*kUNW}bGnW>{2LV9OL znaYgj$M2{1M^EHCjT4?O1}*6WK9$Z>IcncuV|k{`*(|N`YAjto1W}i%q15Og6gvg_ zW8}Dr>=#tnB;4yxeJ&B66KIA`LH;4gqjD;6ldJquJrvXnpLr!;uMe;jI-GF95P0M~ zy1LK+%awlUqz)N#o#)OI4{;Zv;;`qX`-26ca-suQvB!ZeQ?(;iSs4yjIxS|))|6(u z5MAC|ULAGO^b}T60o-4BJoGmnahmw)X6Dtsa3kEj+`I~)ZeQHKU?RHxa(vzz;GrcL zlII2R(587rCgR7MnWypU)l5X8o5*y*@b>JF12#e=c(5dniT30aCS!enB5&|bYu^9p z8Rq3{9B$QYx$42_J6taiJ9GANjVnUyB?qscC+f*H-HI;I@(nWJ6H!42zVpqCQUiKj zB!eph*lAA*h&;>1nUvRk^d&JlnYvgd(GfAgkZ}!j)7X0==S>}k@XO)(&lnziupgz} z9Z6ZjZbX05pUP|38w~pcEbX6BQ!NJ<;+{~CP<1to>&Qhm_<4*Y?HPt^8Fqq&cBm~P zu{Ox=(gZ;#qj5eT*8~;AoZQL|GMJW@k(_LSSY|?fxp}>M(W1#HA)6@@TenSlPnV0w zDW?mpz@=xy|7=O&EnWvOv{Kyj zFm&AIc&oJo;;i1)Sg0wwc(u`P^0)3O~*8iiBC=nC`Nw&w zB=(`RVMxG+g(pXhL`nbb1g4NE#ySViy6l)9^R9cYdHK1G*bE&TlyGHclfIF)m~Y%R zD06c@?l7u_ykm2}Kkp~D>tk7RS*pxCdB-J{!i-WBvF1iwX2Q($Y9Iu5xspr%by)k=%Z2v-Sq5pvIKsiQY&IuZ2MrYI|A z8|ND-M)NqgvW_?reS&819p3BhpOiVi0lBWfNm>_z-hHwAg6-`&PxI5Nfg{OOKJ+(- zYmFN}o-L~p;>~22v~Pyy|H$mazg+jSDRAn5-f~Bz+Zs!nDG~lhaQ1vc0oEA7U#Wev zlP*X+ItaUa*RP5_4W)1~>%6UdO5PjM+Qui zor7~XTcQ#e@2O~ih_*6+na9+3-^oRIKd3YbKT)lyCEYsJvfqi|i3I1X8Iq))^I_cb z!5P%quXSLxf2S1}AG!=uH4OY(4&ZdSs1znxv)X0{^~Nsg*)32OZMgYt1ic>S{Ztik zkKr+6`RJT4YB@6X2}aLA(>YnxG`EBMap4j#FKM8pJly%aPO$t4VWq|8&#iH%>^K?& z@!YKKoH(~}jN+Gp<}ivo)aSEB9{p{z{sqgdk)L<{WHXa&*pxM;&nGBJrAEsP^j-O( zV_*g@Y1(?>Axd>{N7j1SG+;WQr;WuD?7}9bW82+^%Os|exM_*_hp~R>*S@t==YOdD z{M7gAX=CE)%6vU9mE@B2j}go4QBthK)TScnBvBv*bvx~x+{ZuQMr9Sn;lWJOLBDha z`!FEZ8pZuuI_tG|K@rudv$Mz5^B9owRenZRtFJ9T0(g{)R^B*C^gA6B`MK` z2b>O@v;3sd)ZKy&HmSDN?j70oRyjBMQpF_RpU?z**;w?mkCLS=c7Jby;N5#WDf#eW zQ5>6)kVu!{+{);=zWu{pQCd|AlPCHG3%T-+VsaKTA~Il#7UICW_sA3KAC8=X47ixg zCq=ZhuoOd5f@b0e8XZ;m5i?j80+C3ONLKhhl`ZwPSju8}sI8E^KWWhG3cV{^GD|C4 zjOVJaXb;CDkaFDNq=`@c5sZnAn}Jy^W|v{>FWuibB{{MezwBvo ztfnU4t<#_9EptXRS$?>TX8mAXJFz^S@3^VK0e0F#;L^f50Q|YaO<|ibWTXIVjAso; z-qE79r+Z|gL4v_l*yj4w)8#Ps66Aq4=Rz0t^ZT$Cg`sSgSVu+oCF3tHc?;?jYnO7F z?AGafi!U_hPHsRXclqg8#Nw?_dG5oCM^;rCvoeCKBz27huFo$sHik^}HW^&*JH0&T z$hSt3VhcZ&7@aE!jS*5~k|oa@l&tyR}udJV^#w>`rw{4+XM~;`0=SBlU2F zj`0->tGgQAW$&UQB01F!K%b&o(r-(y=;imA1iH7sKzAZ^y4D1A^ zPcMJGRG^uUiC10JDA%~Ig|FBc-uuG^rMA>;s2|qwSa(J7jr@lBkw(X^sSpdL1g~LOOOdO-{iJfl4^2!QZjeqD6djYxP)|&17|9cx?2rhnAmVw_3KFNfH6_ z&N5rJIr|X~((W5`FW7qFS_Yzzmk5NzKuN3icy&AUHrq~?Lza(xtjZ3 zW9MiCvqx%2x{|SwQ4)O^+qx!q_(VYyo@vO1Cf>Gg$@JyZkE3E(ErqAp0yB&65SKxu z50PUT-+T)H=TSOYi3`|`xS#Uf|M}WiS*G+*n^~o|TK<@KN4@0leeQpc80z7i6XrDU z@pCV?5$N}XYrm~(EN{BfwyKf6chTCT-jAc%)zf6@`ql3T@d(LF=)C!!)H)Al9HcgO zM@`Qji_tmk{CEn1>T7E&+l=(+=8DT`Ch7)5@wU);6e$Wx$vuR=PRdh;D>%;)R!K7F zAW>qcvABUBj4##o69@0s8HqmKRgn+VCl(>--pSeG*8JdLQ-8;%9Ij>6RX21~vhldp zin*KW(o8w0b7wKLpZ7${tM6%4jmfb!ZH<$kn{)icgVdC#TF%r^UgfwFZQ}mz@j534 z#-2y;$LoZr#$fshkyOe9ty7jCmUU0u_)>IUd6XXCXI!orojW)R=+h6`cSss+&f-h_ zgGR>(zj>mh*S?6WZaspnG+Ze^prbw&0m^E>jbEQPAJ`9Q9pHu1u^&3A^&|Q9)@N>aZ!i*(@lkqsVAQ&d z+xg<;<9x|M<>Tx|n&r4|m0|d-Ci@nt&z8|=<}NYb!6f}F(cHxQZELv8?ncc;CeX!= z{puXr^P8Vkm(8M;kR`p(5-+RU%S1y>AJ^oCKnbF-*W%fSfKC?x9x$IB={&XR_HZ-u zorBsYUFg%&TFGa%A+`IQ{`w|fYe9#72qm*tOq5ZpwHTBKOP5Sl4vEJP`+3v7HW^wz zQUN1xQwwk2xXBli&~-iN-O9M;FVaz(vi{eXKYg)jn*aatIf5wvyYV@x;LNe5o4y^6 zM9ru+9`H{jE5{lw-Q3Ik1TKNxia~5=ClES=nq7DU2ZM;kPwczkm2#_zo9%TS<=!MB=7I(6|}N@!XZOMF`I}h;y(IcG1WZslH42StA^4KF9pp#~JH0GfAKI zyPUCCQ^#86!6#RCMyv7uKm0l>AZVd0P)FKw1Q3SlHJhIY!<$B1vO6L7j~$^FF$=&F=S-J+&hSxM8$r{6@<+lWB3)YxV?1< zL5nW&{lWtCy5JR%FPV@`XqicUkCUPI{6J+S&iPw^0PWS7m3t-`oZOjlIj)E(3AuL+ zv>bXrsPyEV0}_g1-a8b6ACZrI19Ag$z-a?&14^B+2d)P$;j{;iPpr6xfp1m->xCS8 zG-2om67p3-a7t!!w6CZ~j`Ryq?}NM|yds>DGs$$2bdVyy@rgmcf0aoV`7Q8_PwYsC zp!abIg%T??!m12qRnIt1S4YX@xVih(%8qAby)Nk<#1FG*B*$A@FO-UV*|0jeE%K5g z+>WdqUr(YK`V5fx;r2lZ)dz`z0twY86`;%baYutVi>x7nGe3u{`IXS|UC+(v$g)0V z3>+M@YS;ZW#?}hhF^cL1c8q=nG}`xdCvn95ifYwqTdQ9le(=8rNzS;12qYh{XCXDI z;s~5+$7Tv8iO$o#U_qZgcQbKrE9cj7DSI(dbKM1dgjyr8g6z!&{ak>mX?J;mSa@R< zUa#M+5Cx^94CkEFE|g}iChzTtUlhLm+ z=Xuq@J)9P*`^uOJk3h}JthE%T8;eCyndpw-J$b_6ioCbl%V7NH05t>d=g_ob4x+o|9rzc z(NE4+W{!w%B0#@y zZ%+OMe9H*W|0CerFt&%!81n=&D{brylP$I=vt)tW6u{Hv;#+OL$JY)`PuyT1O3^{S zQ0*touLY;EI^Sm?=kjCU?{TixbyLFA<>b-lugE_~Sh+@?z2$Xbt)-_;*pHb-Y@n#+ zu;Z=AscQ|3r{d`3+57FgE}HN2^1DAS40vC5H!h8#1h~xYaU7%gd@cPRrTlREZc0hk zE<)*0DI_zC^}Pr~(@I?UY7^N+i~$bT3**#k!sBJw}0RZbNc#+WNih6Q_vZCsyi%%Y{*t0HgjOE^vsc?>u z6RKtNSrM-!Bb|InwNCDC32`hr1)(^m<}~(?A9nK11`gs;RR`FR-G9il>K9t3LNap2 zg39X*I+{)IrdixU3vC3h*X3@jW^a;2^pEn-b@O?~upgNqR=li+?#wmRhP%#0NCVI* zjRK-SELYSDvoHDL1iH-&VxbSD_f+II34dUSB4u0D&41;!n`Vao2vjEAi8G#Hw;FdK z*IKK)XrI|^duPA$_M$?$<}D7T>Xy!Q)T$=xtJU>W5(QT@>!*kzXg(_Zpt7JB31a&94Z zxIEk}nU11HGZS>jTE05Djn;fuSojg4gy;I5CCnRD;Q@^Z41`(Ea$520D@JQ_>S{AU z0}&w9roY6W>vE~4gj7V`+ooT}!g;u{TC=){pFR394D{7Xi(&6D>$+=fTqYQq%JBY@ z!^!ewX{8Z``qoEu2RGM->S@c7ioV+1|bo16*rb#EWDNHr8$1UY+!pn0N=3M zm@R@D%VV-`u;g+i>A)1B#)_f9Fs%vURN})l*D|0R_Iae0mFpznbe(NGgXDBu=!fXU zz&%&7;ZkqA^|XfTB-`gRZFMCk0cde79y;`oWJwne8fZ_9*IMoY*Gb2XKaQmC++a0u zv!a+{Yz+=ok9>fjN6{n#hdtU}sLo>O)o@M%rmN8?!jBH91u6aQzYKw>*)6S>RvJ*e z(zQGuZ_;PH9#Ox(Rr0M9XGtNOe2`^aTyrktmFO^f{gtiVnnt#UM`fXzC_Bf4h^>@Z zZNlUBV)ud{ba@aj9dQUyzZq$AxDr)65?!*&SIBy3n25hEa`cRtV%0p47 zE3>-CQV<}}T5;MsXD^+V5`IJWYT>cqRO3l^BS`ki##*&FS%M1*puaa@+vxmScSz?G z=?4RCG>z+@A!b{5I0cH0nw>{Q(dpL|b@d^@wx5UwEv24#6d!G#=m0YbMD2qcwbBn4 zsnrn8uQD#$P+G~*wB7Rp%Vmsd3n}aF5&7sVwuog@F6Q6dyEgQU*Td9QxjOd-3u?HH zLF-Ld66oDD?Q0L8zncTndCb-Tsl6Hd(%%xh2U=Ksa=X(=PvucLL|dI0JQ?A7pj$A0 z+dwO_6%XjpUB=!#AAF!|m%VxyFZ#OQPa;tRzR=X&#R86@T{B^o-^!9&ff8i_r#Xun zDEwKkxz9nGT*t=!AhhEty&1DvqvG~+koy~TTg0eRX_i>*mlXdgh$K7H=mXF5 zG5&4q3zn0;-U-*Jss7mES2vE_lpE=w;c{yp2!psAweZV(X6H8c$!H@kSWftYWDmzq zb{IfC%>zd;Hi7ai3}}A>=sg&$plA~IxNepk+ZcSjY3GF9fw8GSGNw6La%xrXSCN6w zb4g45CSq@41r+cmt@>4SqQa?Kk#f)u>ZI#gGqx5TUT|ksz9Nt3b>zpZiJqq9C39VM zUIznflpYz5Hf%dM%2F<6ww;u^Sf!S-X)}=%w zx=$WB7z9soQ9!L11CKE%yAzwb8MxT0_Y}%-$&XE34_L@>{v0(R0o&`_mpmw4Z#&PT z*5;+9zkVz6ac@~APHqpdZi3;x*l`|!wcKchT`@%-n{Me@LbST=H{J=$Ady%)`??Lc zsl>GT0dMcp`K&Zj*LrHAs%!(LhYEX?IZEqznB*SEX-ULwy)?o3eqxqwMq!5TK(HEH zwtHo>wV#b}NtiL6*yAy^s1FA{njkK8b!h+7Od2yXqd$pm&9?npMD+}W9bA8gD9T)I z)tS~UVDQKs?Ari^&23)KN2RUC;bISW{D(QvQ}Zg0`KT+tyUx175*Kjk@-ac4{k7^* z@S^O`J?64vl16Fk)Qi%}C!SQ*;O?%$-Q696TX2Wq?(XjH?zfYj{k~`K@0@YZ828WpQ*_swtDA;i zYgW}$5`uG1NmF6_U`N4rc~|#_G92<{TV9iB)o&jY4ViV`rC8{7pnV|HOv65x9%Yf( zTq2LOK~TMJheTa1!Ocl!Hi^UQq-T&3M>uPga(-T`LZmo`A!d0ghq!;y0XTL?8m7 zldnKU7~810UmIsFW5d0$U=s^FH*V;mQ{S?_vZvx0Q?zZkEucy8{0cI3y_#KSY zA?})v8t1}p!VrED#eBm;;Gsb)|Ik*@p06O|x@c;YZ)6+s{Wa8lXJZR%-Bu%RSVq;I z|HNlu+U`=uISc!q1k`^q@MW zN{&{&Imyp{(d%r*P`whx#|CH`#DU_0C{r`{OFnG6^!B8gR}On)%pNw6VWhy5 z8iftynE|8tI_51+e~kv!N!!bgsfqFQTtl%wd!|g)v76T7g?c+OTnLaUKbWY%L;i>t zbyWVH?K)>|qqXMG;jOoG>+$u4)}5EwUrux^88 z4GgAN*Rq@&WL=J~aGkBcj8}3ms6j+1J$Nxz7UR^iR)_FVwAqo;rN9c#NM-d)tz*Yr zsiRoN^Ihn-?2c1j>GigzW1!G~StGAdPU_mG9obS{L2=4p8*wEWvL|Vb+Yx5>tC-%yxjU5n7}{<15{w3I2f=uMvVRFA5n;W2xp8^pJ26w(#?VmAvHl4BYHm^?(pi|&8X(ijW>|;?nn=vF2H*q-o}#* z7IF|_=oafD4Y7vL{WAn2lgVaBEEYu$Vwwa)=4t!6yu_@ovG>JgPB+t$VEw@&PLh5Q^4`cVo_4xot#GKR9I6e_=r(!<0&~4Vw>B>}TuzsII z+G&5}Esu{#V$Ld>W|m-63ulZFb!TIxeRq_Jo!-!|384FU?=&E0_L7{9trMxDD8%~R z$Veydv=0S*AI}}Gr-4>tR`GOfJ5_iabKfg=Ephe!Fs5AnbZGdl#){8e{`%IJO}auE z#B3XB8LmLaBM`e+&t_PN?o-0aMaaRLC3ADX?|viF;Kim)6tuQg-3|UB@r`lRgdD!^ zaAFJ@;x-EY>|SxpJGYCXecb?GEH^)kcj7!_*Z$hOOqG>eb>P9#bny!y+86Ep9}sPj0i>;Etr~Kzk_#UvLmjww>V`2vSk{Rbofm<3?QYoFPt^Eh^)Nz5tp_iH*nFcQDxtCg@S| zlZ%^SLneYqe-xYtDN~0qS%)^%J1&A@l+ukIZ z2dTm#IP$hnFN(GvSKY$_D!lP>TaYPB=47XjfH{u8y|9FjRg2aEB<5rv)4VqJ zx~k|(^R&qINYWZ(vLxIqtcJvhI#qbB zu#nN%Wb!T<|3doS#i=whyS>$Mt?Zpoe#DgmPNVd=c9QT01h5NVqP()?Vzbp?k|Rj3 z8;pU;F(N?l-284VlSEp}-iq!F+oo zTykg+C4YPuvG5bFt(ULgkZI1pA~jL}kxaO<4I)5nhxaf03q!{Sq%e)0tu)p&C% z^_Q!@YcrZVCT8rQmummAeKx42-XRmF?ed*KjMp7=P}{?2^oST)>13?3fvdZ5%V1R+Q00_lP~;rdpAXQrDoLM7OuRz@HF!AQsrJ z1l(ZUWRb(XnuFeo_ZmR>tTYswz1t70Y(2Fe2M`1eALi>@BlN>-PX`dXEVs(Z7UpVy z)_q}`F+q57+B(jJy??>uZhI`*dnvD)2W@XG{RpE}-N1 zP0k(`nX}rt@gi>Kwl>c`o5Cl|+6r~B8zz1}&_9Bi7CcGLL zgP~QF8Hfq{(4Q0U3T$>!GzWMn1Uf-rwsJxMDdD<;i<}A#5tV?7U&*@&NMVsi!L~3? zICB1hJq21YQMq49<8UiL7YPyu(#=V+fDzR3SgAJ$K`aK|ujHlPt)$Dl1V|aU1VjnE zXvnHqk_^fvkBe%d-V|4%3ao}F4B3oeh~89EiBVi207(f$AV2{WRa9OV47IPGoF^** zdV4K}T%S`C){kO9zdpWS$q07pAy2n|D)|&HCTTzsOQ*!TO0AR*Zw+eEUM@iSq|R7; zl1-kPhHrzPzq;05TA;f2st83q(bs_TpW@KR8$LFl;4Ab$MTre2%s(|tWt#leC?rw> z)i>XDAO}B3Q-cpq84=_E(g4&6>Og-UId9zj)^w65kka`Xm^xPi1i6W?!C~JOR`^Eu zXOI^5^{Sr`Q*hDqKrV2GS6EdSz7prMPUe^CZrSC!SO_Vq-^+oIu*PKoJxWc(Ec9lI z)#9}#vM&;~$bTB@S=p{SCCk8NG@*8>e?fgx8`eB0xEp3SHi(1e$C zcGe4MwF?QdaDdl$;dbC489N26uzz&a}#t07u;h~{j5wGJZTxSEg1C(DA zJDC3ykxomSwZ0g<$at&<{7jv(Hl4zJ+sn&k@2$i~Qak?M!)v+T+d%|6bYAD(=&z6R zydn5``1`4obZ9fpNd`^R(e55oNm&K$gFb1VG;!Bsd=wb5@G* zXb7y)x#-+WP>+N8?e;xC4zk^Tb{k`xZPg&pF-6^Tk&)o^|t#iLK zdcq7x8VR1&;OnlY>`ydA+)<4@Bv`gDK25H-`n`%vb^FDNzDTuqjb2acrMjBysFI9^T6zc@cMG+?dk}dKkh2 z_9gjy@r?S>eTUDu$1-(nJ-7(F`0)_QN9xpVv!mr$|G4aHjGzL4k1{I`|=B|0$$58PWc!`Jvw84Uci)?E}9c&8s zrfdNE^XRnW(C_y`IVveF!26!*K;l-)PJrQ7%IvbxGg`RIUtzUp0U8K)GxKYK?y$rU zn)h_UkhO9xmi5}71vCemavSLRG(!}bbF(={z~#|YhbR=9DYyz4`=SjnM_}>5O!vpr zAK5SKt2R*GP?uBP)Frm8iJY*(b@NigO{~9Wn0qq@zal;hsKNO1fq7XLPN|(a#134# z<{hbhNORm$!$WWL;n{hZAw2wMPEpPRxIQ2;xT@%pV5Mo_OKUCyuaPHP~W`2-MvJtN{yXfxA!Cp@hMUH zOd$N82>+%J{d%WSe{Xi+>@LXD-BWL^7O5W}_;#&BJtZCdX69OCho>`y4<8Ddu6+^@ z8QrGKN)7f=?%dT&n##rd>lmo7GGDAC_@PJWb6!;0ZP%~`=d*1|HliyjVc&$Krblo} zpmx`R`Uk>-8pLgN-W<+4s6^S|H1{Y$>DY*owB`q*LW#JIY6-9=nb=D?zs@U^2TI%v zN1yyjbR*VwnPRhnc8GwXJ0pdlL)X>NIE8NeN>bQiX4u2(VW2idMp)wu^H_27DjSgt zmRFi4)KrJ+=@IcT7W}O|cYTe>iqN+aaC-8{HVO5cJQ&UDM`VmTSaacK9n9R+AQo(7 ze|DmB5!{`Y%<*D#s9~Lv%ckv?vTn8AaCN>Pt7n`)zTUO{HPQW!=w=2D-XL#H*g09Uy2EC6FqH+6d|#J4Xf8)wcUBQ7T{+ zkeG&Op3{Du(rk?sq(++^zihZ|{VL0>2ZF((3zAFl@_COx5mIrvgU)Xz8~klu>zw@} zZN|3)!McgyLTE#~vgsi+m_5QG4ct@6^&Bmxy=WxiOSQWDvX%_=R3&Q$?6h}Q$k*b~ zO?MnvqsN8_KUVz(M-MC2VB~T19HJ~Sb+c9l=ETV|0p>9q+LYO0G%M@~!yWco6Yf^b zjQq)k$N7ZobFe7BsrRSKRugH}bw&b)4H}4`rLB zB>HjFw!)f@r@Sa^HI}9i60Lkh$;}MFT_GmR<&iC(jPqM&vphqJy!U3ZJ^3s|AVGv1 zg^1mGnSZn`1pwZFV8#F-n4#=-Q9=bj z{wS;IoL5nNdde)lbrSl*J-_X!a5Ad<8RuFu=O%M8i_FouwHBf9yu7w%{7WJFQiXB5 z`;^Mk>=>^pomu$z*B=SDhEA*W=QGb?HRJnB$L}*Kid-$C!g-)p13q9@Sr zK$dq$BW@M6uJ_0uhSScZNm=Ugy15uNYZ)ET^9g#;l?_+_uMS z2;xt=R*}2KaeB)1WzzEwrC(*nlRZ8oeD;8mEzxkzZlcG@n0PbB}m!RruYxSX4RQJ#+G0~=DNpopgw`Kho% zR0&zjlGzEEZbuv0z?B4}k~wgVC1yE|st!ICSOF=%s6t+WPF+*O?xOS8SOwil)cOYR z^JdYCoF~B#r}hDBntr?^$HBcCe>pPkzfuPOX$`x?k)6j}&)!G?e zW@YGfyfS&qKhEo8SZ32TyTe*(YvM}%9G`RwO1Cp-nMcaG^HdmVrF&{+S(a}#9Be;L z1X_>kO=>m?chKvaF=1grQS)2aN@m`YQu7;wu5unZt;CKe`9L( ziFv%wD$yAiO~j9zSy;_nyyrPd!t-vM@$>8wGWNbcErb^jO3^a1XWaQKFMT*?aa6Ct)y4p_Cu=H{zTCp`?y));<-*YVCyobv9}P-OPJR z!{#c&jQk4rH(%V|bl&A-$5$NS)I)c>$KPv41?^dDV5e)SA*eW_;IWrt#h|a zpVkLrK*BF7SQXymXYiT#p3JxZ%O`jvP}1W*8U* z?ds)|27yn`$TPkt9|eh!TRF*+Q~z4y{paO#I5NK5KUtSLbkV~?GJF{$T)lIgUXbI| z9XzmAbyLWZ>iEH27L{@c)JI6%E+m);iWg*dVWYWQZgq6g|4EfdbECJ)%|9Xiq# z?I=roOxfc<@3<@!tjv81byb%4-pzFW_>|(Ill{IddyP|MAvXV)#r|v8eMbuL42LR_ za;wc#pd_o0(%7`sfY|+Iwm*iy9c3%$3w!4ajMu{-Cv>fj9!zs1HNM}XuHqr_{}`tL zCIS)$3bg}4Ht7YUUTxscSR9F7y@3iqhwYu03boS$a9=$Y14h{_FRF4m&u>i^O`n2B zhJvmnUI<><>3AM;Oe$&%46$Nsnxhu2yPJ*@A0fZWjMNhCt)Ro?RsY|Z?!$tp<1GIU z%TRwI_IQ|5>=nOWrb8vkXg74>nF<0J>nceknpVe##(VM1b}l8ja-E+AtF)4&sNFFk zEY56@TR;?NYIRI~m}fo(xaP}ODEa-8wJ^k#6(g$7aW2;@!3G1?1~$!`QZo%q$O@Y4 zJ%VCineB}}vc#&4tXa;El>7B5p3+k0k(q@WRwvdm0s=SB@;(lncTW3PpU-w_@3E6f^h%Pq{%LfP;Xa|2kOIWk~%mJ;0g#{^uk}aIQZGYZnKC z{+vwJ0Q5)c04aen*(T@n5zlIM9Z66;SyD#T^23kNK%G1OC$G9hM7rOs<93Z|Lc%(e; z;m%T6I<%5z6~9iy19=i?R#@bX81z)g>Q)yq;bL|y1p0#qumW%nh%k8YP-I9bR|bjQ z&pxpsrEoy4L}Iu58TO3e$Zp~}iy;*gV1SZxaQ<LiMPHa@F$+7n!1v9%=5ccARB@M{UB{1m1B zsWa6Qx2ndyuT^B8+$ThaR%Gto+-I*izrepll!oD0f|if&KxX1&DQSK~t+DD*6_HFl zTFO)?NOV&osBPYKtl8r!y=%esW1-!?$!>(;PUs|P0igyL z7$I!z6>7h$S0{Zwp@T{TmfVa_-q@Typ1+)kU-1LJk_EYAum%R=#E2@N;!gKr%GoMz z0G#&doX{R^mX`s8%{X|d4DPVHt&3=jpe6v}2a8AYSth}JXT}I8N{X5SdPMGa{Yr4o zdG~CWETa!x)n2neXAuTy*5|H>nDhZ6bSZ3(VsB0OVxjd^3&ySL5er1YP1l(Yk-n2f z*jK&B4$dc_pTgdRGKRf%W^A0cqPFv)EeT3j4x&3jYg{q3gnT(&4TBMuHxu59pT=U$ zKmVA_-Vp(L6Jy1Z9zAe7c|;eZp#UwR#@xfqw#MEJ_#E9^4X6&t40r~lNW|Vu7sGWG zFTnci$VIY^%y<>|{Hm8(XHf)vn40@COI-(qJj{1Aewx2dnRK7;G7w!Y51?z5(_9us z>kr&K=c(%mw8DZEq3Nq|lBL-Y2K(;`CIU2jrP5`eVfvl9{r!vGP~2!;A!Y<4Ew3w! zddKW(HafuNVZ@ukGJ(0b8)IoLyUTMS>V>4E9wO;DK>8i#A!!Xxj7R!{P@kPMVRd!> z{+9$TcnMc!jVja9a9I0LCd4p}>eKJOr@1+vnK>s=aYqf+)z6 z`$rSWC%;`d7dwxf))w~XM%RS9&7`Py4O0vn&d^0233B~?Yko=cC+PO#wvrY&c#Y>X zKV)fXKbYZ5nq}K>O{q#o&9E!rCUW&ujFcQv#mIK@>HFgug-RH#Hh3G{9WLJ2K>NUB z_895?MvmBA>5TaLIm1Pr4rC**1>CG6L5_E~fYq*u6Z0TLpz)9t2=aK}xgiBzV5dul z^(Dr4Kl)Y@yPGWrpR(-7%#85n<~GV+tiDU2|XpV>~LS+l;8K~#a<`xrjx5WrhNSpy;j&r zXKh`EE@_-OoYY2(l>OzS3>;L%lL;qWyZ>Z^&8mqRV<%kyy(_JrXB0;Lnts8!oBzRz zQCG(yg*mQ_*fyO?BbJQJ>Mgau&G>Hl&j3>SD23G%m$p-#)qUREdxF%|@>8batr1(A zY+~oA9Mj)EtUMLKhh=Y;FrkFkp_B8;ngZ5Fx4`nyHM(AoPYn8%m#}}S=DcaS*}tf& zRxxbU11QMsxt5ux;?Z;^B-tN;{XS^uhX(TnOnZ7gRy|vSjcas-89(+T9{KJgo{_Ti zURN@**m@p=>r@ae<||aRS|1CM2Yvnz7Y$@PH39)l77HpwwjC1D0i(84LOn&l+DP*R zMXT4wJCAUD8g1!i$ws+ZCr>@>7N=TqQipk47OIBpsbQs%K0qSE>rhtfTnEuvC2w0Q zgGb*`Cbkn7u$@B4e(+aF;^}LPShifo0Jwj?k_F*S?Wb_;!06B58%?qMZ@qXzLg%alXtyWXQXjHww>J9F!T-qx=NQf6O!M*$Zog(hC&e z4EjE!ZgDTUPe*K3&YFm15^6AJC0Q=B!q;@GduP4fp4TwLzt6AsPhPBB^R?a6jW?hN zg{+Bj?zjuRA@A@ByeV?k_gKndkj)`E2OmCsxXLQI&RR?NcyqYj>i>nzmu?5;83RpK zW1EEiFaGR3kfOMBRg)BSX^ms7Lu%&6Z-zhAYjmX_SH;rfqkq25wSF zIJ%gqN16s5<-P?E)+H~emMD#l*A)-7lxluP^}E5$GXwp-ap#jN>vmO9Q_Wj6AAbwS z;8!jw9{Ppw%jIGzVnC_>_huqOI~`il_-7|4D%j**TVsGRw+7Az*sLEWr7X|Fz&|g} zll_hFNTUD^H|9}sN7L{MonyzJClnXmuh(7|6tqLfsP*Qm$s;(cZE_){oa_q0RriB> z7_&VdV(&I@Rui1=9*_QH8>$_i*44-tWMZMfAj5QT;^+%8^J;u0Xssnb^h}xDf6qJ~`Y656?Po~tA^U2=yTtXQ2~lGCtzS$skA9f?!}LXG5CY8Q%w_{Y6Rv02?l$$= zjL~}ZINJ4tmJ?OG`bW9mA=1sGZ<3but@ez9x|0EXuj~2e>k{_idzt@98Q>^hdgj%+ z{vo;SWE2%d#QJQ3un5DD3Y!;%DSpM7=-nq7K6S!NnuwXm4oD5~L$tKcdZB!(mU>-O zv{)4Xn*P}`yCiKSZC{i`$dlMlF(#_GL)c-{Qo|f(m(as)Pr)jc%qS&AI7EyoxwTw? zl}WUdk`n=dIJu%Mnx|YDt&&zRBvii&$%n03Vc-~zr(X=BqpGR^4(~dgT+Y;e@EjBzvwA*!c7L7F ziL^k_Vw4Qefx3X~5Bz*|d4Byn4qz`E@2X9`0hX)Kp>G}C=5~PiRtSKqZ|c8r=cFnW z8$(*;)7PkH(&pIV`O(;fT2b!va|Ul-ha8F&ak`Se zRvq)Gs;E99oTsUll1nC*GCEbAo?Yt($p;eib919sULsIfKYDSLCb#N&G@EII|*a4|N=;5uY~NsqeUb(BnQ_``{>J4errxa5~|2z|heagRrE&V4te` zGR<=%$I_1aP-WHN2SA-~QBN`W{zDfPmToZ5v&r?ij{=P{E3;tBsfi7DW`S6zKI^jX zt8tr|>wf)g+6fy`5v_O+y_$fYp4F!`hN~Zim-VyWzu_#bUrk^`8R}=z*Umqj&m4~1 zrPj1GPOfU2g`p^*I%pTV;eg%sf?M{Y_%mEcIQEI7g3tb}>vw~Bu}S8=wORNt?{t`3 z9YyrQG1mm(&O;aW_e{P8zW5y`HqGuty~m5|cMC$xY)grL6p`SAz+-w1U19|*KIL(+ps9117j!dvE87}UK01|f~} zI^bt)sEjaZJTfYkA65RHE>c3fldKZ;-_R2{C&!2E@GKd+{`iQ3DTqC`_(Q)@`NqtG zxy)32iRzRTK8mu-yVJf>0Pr6t2Uc#s$18D{P?oHcMoA^F1042X3ZCxc>s50Q#wH1^nmHs?YRaJTyxw@h5C-{%R+HsAhbJ zip|F!Hm5JaPyD#>T#7qvPJkQV0q}7${%?I8audQJ)riahT7Prwsa5&)NtqhKZ^wW6 zIJiBYn1vM8@SpD9tF9Lirqup&SpfF2bX67)(i3J~N?2orrcsLPU$8T!GrSx6wFM1G zOg!ihr||snDu(i8X*3hyxhlGX6et3_ya_=obj6Jkc5^G}#j-ERg22z2fAalX2cL6k z`RG4kXUFet*szhHV4GNep0-UZ=hvXt?XcrG63HF!(CPiG(Bn9KEn4@pA;OxgZ1<0R z;(TK)x!Tl4j&y@|g@lh!d31a-UU8souWDrb8D8?@uI)2g@iXFa+G)Wt7F(j8WS6bH zldfuyjv`{$1^tH^JJ-B7O04TYo%x(*l5&{BlIu<+awDl%4mx8qR!o8C9tjn`&ddIf zG`X9*rNu(3_-S}kK6B+(T3VW?*SD>c>!!OWJ~c;mIxeQdyqICd({KKJ#R9M@-ID<{ zI9ckv_Q9Wm3DQu`LCaiz^G%OxNR!cqDg={JzquDrsnl`loIPQP8fRj2&xNN&*qxe| zK$M-D(x_A4zi{MlCi%C(|8Ve!T>i$Fe+%fOs(-0hm%#rZQ3PnGKg`sM_3952Rc`|4 z|BIQr0fHjG7rIZCF!1xXNG%BPwjeVL0J=uM!uEYIDhlunwBm%n4LD>nQva`6qf4~% zpPRx$u{*28GVr6t#5m9^>@N}i0>64}ymJK2hqm>hJ0)HupRtQ!2tp?>jU@+IDbV~& zKh7{izr*^HFf%`kLX{y&^+NYH&Ig4@{eEHaLxLM{KrjUQ7xUyIqe>Z@ikU(IO;Lf9 zBkbAYwF}W_vii8myi19h_ZxH)Smyl(oj$b+%iGA~l1nD%BXJD4q=5n`%!O)ZvXo2^ zrs-|#RclIaLMxZ@Zvv*?#cjP?>Z>Oun;FqO_e!e0T5f?T9-x?&qq3@g@Ty@a))T;` zLwpeb2Au%z$pv7|{|21^?ui0m&Hq$4*TMXOnYbt?zd`4B&^Z8W{)>Mm16cDP5(;3= zzZX8_Rqq&103X9U0R))L1n{!F7U zn*?0*h)+=zH|l8RP_L}JU3Tt1aQ%C2rip|uc;O;XuG#IW_Sxx>^d-4|TfpsSN}9_A z9>OL}c!;8z5Bi@s^~2kgk1|@E4yFOA{vI%$+0J_txEb<#pVcFc))^|>#Nc@bf1b!> zu*pFhB5S|-OU*c{HK2#?bkMt_A2$azow^zFJh9<}7lS3-?a7dvwTY~4;>VS1@qS@t ze;;z8*5eC32b6XxgOaAzX>q4XrGy{1<*q||&xl7Ty!=2KTJ7a%AK$C`NK-!=B#$`c zC@~=B$IK5X<`MuDbGg)tc9L+wRP5w44pDNbNG)`FE5nwRo~W^yI=uCZuNh2_z6KA?RQvbucaUxBnh=_Tcx&-{(ev8*> z@;Rdc$U2W+TT9n&WYoD{cVgHfR@m>)dM%xw{lnj2 z?&k1CWkOb52^4f%J6sX6ZY2XnDLE*KWd}ckq}z)`*4oS&<>geCxESBl@&|*f>@h9F-dr`n%CO z@6u5FxP~7YjbB?r9`oK8w?l@JW_^rOOD5El&m)FeyW?#jvBsUHxuLHw&Ryo+)Oo~NB;*lsdQgl#=`I{y}>68S;vt{p-^p*ReI8Ip!vLES`_+pdzuSDvI(j z7-|x7hN2YN>RWDaV~%CuArAMk+-c3L?gCwKC)nkqID1%vgbQcGDp zU(G80zz2IH(Mbjvbp$|QVsllae@ys1p@#Sz-C0G;V%)}v;SSR~_<#C%qhi$r&PTal z8v#Eew}yArClh!2syC2ya)N!;G}EG$1(|C~-Er&W9N1zOh!cIhYOv1h7{Lbz(F^A# z8RW7`>$&QvtmU}cz1)*t8q4-xH}uPfig&QDYO*?*=Wd5Wm3}Hh!Pb1XaFUbh*m1*0HVsE>GDg?$B{(^?d?8+qvlg zlxxM|dkes*m-o~BP;S6Wn0B)7Y4XGeNG^xdi?IVI6neUUhA+Dit_iDe9H8Tsqk9wJ zeS3HVREeQ4$T}~cM9gk|spOQGlx%XiW>@0o+?>2Y+lp z8~D9IF~e5rCeApHWxvcp8{Fx!raU6D%P5G$b*F2kN zB<(;GS|s#_C}nQZl)o1TSO7YNki^@DrFDJ00=5)@)qCQ#S8EyEg`yt?Sx!?>thCT8W_hF7J_19BXbs~S}suSB4d(UZ2F3UXL*`V{=68r&MAB>tLb zx%lw?Wrr=x(DQ0K%~{dx-7|BA?*N(adfs>|WoEj6H$?7S{$OdtvH1rtz-0L_z1pFBY>bDumAaVqb;u23ZY&zq*i-oKu95LTYz zt3yhFW28NEvI=|#hM*LuQgTs?R`RB-x`!MV_`C_V0Z@~m^8Zs1^xs_msJx7}bth<2 z)OJqgGQ17(aZcjeiFwomOTmkfO|K2UDrCG*w zPQ8x>o}KQW-Qu1WppnCTEI!ig;_|e4Gdk<|EyF}@qjiQ%yMV5)HutKZ#IF743}CXA zdyF9xoT4+|;dP66^U?2!90``o{ANp7O;l>nVp{W{@b7BarIp*IMe@aq@!s`a`MJM~ zR`xf!JRUazT`Q);Zn|q_PEQYa(~d8?>F~XproxYVZz6-T>)8{S=-QYA(B$drJ+KTs zEu*Vdjto^8XGyvQ2 znFbV{R!`TY7osPh1u&$o5)5s#X{#HjQd|!J6)F+5y;>=$bse-cRn;d~-@0&lkw6!> zI%L`kq0lu!v=_Iy@2*N3YzZ(YtfjJBTfn{-xOHEDqu^J4Ymkb1+dmjoc)hztcnxQ0 z^~kk3&rmyI2bM)>_KF5mkZA0Qn4W`oS)jtI1S-SQDRvy`pejU|Sy<}O90GS$Ep!Sp zlZk`jsv&9$?b|OkuPC5gD5>#DjNaP*E)+eap4Km>rSQ`+Mm#hR=%`Hm8@(9<`V@nK zoWRqeR)HuT9=v}Qls@w3TwM!6Gv++eZi0Xr6Y+>ZO5ozjXe>Bl{Li_BELi^$Psxh8 z!_%5yriaxEMAdsb?)-$k;>_%&FjJd5dhDr(brx!pgOWm4EoU!b5y!M!JwSiqkrOE+5Zh$)X(=#L0@2OOR;{$B;}(2Vgi$((*ab{;RCv5wu5-mo1m z75DH=@jT~k6Jx&p>5TCnT>-C`hyAl_Sn;^g`pl_O@wo0z2p<`0NDZKWf(%C>^=>P= z4H?;$X1GRQQCOyWq8%qi+79J>VZl;j**t0ClAVG4@_wZGa(P7h)Q%F8s~WWiQaG~A z%B4=NtsND9)UN`YFxW0H2Q)W8=YuG2eWYgvcV`aA@`s(lywqxSUQFMSe4tv{ku`L0 zGD*aohp)u(ZV_ygtKUdIZW>nfCTtj3@W%Sm(|utO?>6K>jKA*n^B zp9#Gs2E~O@8H(hTpjk?yo-jMoVF&My-&{KWh`4wSN_spe93u^I_0I3@HhY$bzRtJ9MZHXkNGqnhz51#HUL%|i-6`%Ikq43^K zqfTf(YR@&u)L>rT=8&LBPZ9M)JR=vgA(Qm42sT(8({>uppj zR*2cvQz=zU*Z%4Hewjel6#c=fYZKj;@A2_u`u$58+@uz>PYTP=mG1*A?q-d_uJKG- zfpgOy>0Z|4T$m&|)6P!PoLJrbH0ceedg^ce7aR?gmzEh^1<}AAx0XA{ry0(>;@ayj z?+|0y>1^!h`zJqPXi|>jE}rtdXlz?~T^=vg3CCF8W3Wl?VcNxtYp@b4jy_WY~-&dAA0bNK(I6<{XaF<`(-rFZi0cj!ed< z7Km8%JILrE(_#ouw`xGok{-|>hS4WlK@n%@Pp|anBlb>BE*Qb=%kXeCSr|P<5|9xF zo??tN;B*V5KdWMt{rQMqp!;xu4|(578=%4Azvp$|^Q(+@Def^U3F=NbTvXs26Hfof z`~W`p6xx?m;j^Sigee8)5fi7rA#HaqDxYzSJ(aMDG+1y9t@0tJ;VXfIk_1kS(w;*v;J$L(fydR!G2rn z(ZHDF$^O><4eL1_U`nES#XHlxGoae>^ibqU*D33FwIe=WBAzCMoG=Z{{3&U3U^qka zanDwyP4ToVD&)2SLZ8I8QkdhqVkVkct#-uu6aMa&%M6{OWQNz5uT;9vJ;(h8dQ5=+ z3dOHn2t<6w**`1VXV#>}2AR?Lg7m16FabEeaE!v{o%F0ChmPna1t#pEIY`rhX}-Vl zusHjy((O3!pf%*|ET@p38a&3g$uPFV+CoL_F)m8g50w>YQJe8LkTi}i{nBWNi%m<>E{!Mo#* zBAO-ef?Z)x754nhS?)z?C;Wu27cb(<`xI?DpYEA-P$;L8#vI#>iRW6l9>68z&snJP zju_?PRU4$ylW$%O;kRa=+zX4%G``(6<7^%^OcJ{5S~EfmK3B)f(*T;ROE+Re`0elz zgIkvb|HGAti%T~j@dnusjSo3T$-uD>7)r;)RS5$Aa2!; zm=@&pi1#hW8mtw%zSuPS#307zex%MTh&S8R$%fW6!sZWI%&C$d+5U}@o$k&TkMFo8 zV>dHv_a4x8p`Ooq`R&N^xQy9~j(SCD$q*_15!}980Z&$pc$WBidPDgX6Vh}4oBKEN z*kzOL+xa`+x$dJY2FVN#FY$&42Dj*Rf%*QlQyM2NnZ7LHSdqCX?bSE4#_VSqq{OFp z?}z`j6$5RLFz?4?J?y`lF?d3?4`udwJ-fYi|IF9Q@7H_VgbVsGznHi6yCs8d%qPWL z#So~+`3FWXa;`(;gI)f%ObB9$>}kl-nhwLRZLlIW<2Yc^=S*x}snT}h2w=+QNBlK# z;>U!3_V0W=Op@)e^}eb$l~q8Z+&!Sdkn~&xc>LVI8aQlhYQf%$Y>u~chB(_7M z`BKEPNtJ)hmEv*TdwZJZ&D zuI>{*0D{IS!(yS40wj04;<6HZWL;yxeS>Pq3pvS1Gr5>HXE^X2P2_15d3QUm=P^Pj!J zh4)B|sUklwJ?vTz-1gGxPiv|#b|Z6&8+M%9u5@}b_#-2qH?;|YQO%BFWVd;y)wGF@A;paTg6ut11W5)wdA|ztW?N6G=BPmheewY_1^#%N$FCZA;!9GG2 z!vis!Bi5a>eu^p4%lyOJe6loYbhHbK+dnR~RK@RU%g9K7Pne>{yeN)#YQdb{_mS3~ zqbyq%vqUOcB|6@2yp};>(ojC%2|LGEX1$_bE zWN7y|0~r)HHPm&p0{}_s9nOvF7C$Vn-R6~AfELW`(;bUxtr$DOF_E)X`HZ2V% z2d4NvqfHpM9jU0PQ`W~}SSfC8^f`gx`Ubf-6pzLHw-d^Gi#+NNCH3;NGJB);#Ic0! zF)@dMbl}fp(!!1&$S}L^o57=h5rG>HOwlHVR1D!1h7W?rSo+I>joaBTep5h-9$_x} zC|{J(Mi*D8?v|MH4wjdUC>Naf!H$ca_Ah1Tb>-|9`UxYs#E{PO+@>ZPOwnub}^LNIsVyX&o8$;tN}= z_p8fOqohWZZf!u@!4*T}t3=b79ONY0xqa;_VW9()ZI`a(o(Ok3PfhCm*Iya^dS#S_ zNn8>7NX>Su98CyZ^`b2;Cw;6+Y)dq@`SVz`w4_U^X69!-A zxe?E>w4&a?#nlPDXZHg=i}IRS>yDf1UCP~0@XfxcZ1gv;!oTITJn|ihc_LDEx7P#8 z0>0=kIqg7hvf6$@wlG&)TPnpgtA+IBx^$Eabn`^OTX$FXaPQ0Qc|F}T-}E1;RH`Z+9evu`wb$CK&?&R1_S*iL6L1h656V(LM*m%H zEwKBlFtGbXr`*KlZANxna%T03Wx(C0$|1}sgcKd>@euwIzW7CAa+!`qrF&76FQW^5 zNRSCmTua|^**1$L?*AR76_DF1r=D%pNu7e=GL2d{;U7G7{YRRc!}CN=tt0J6OWl8v zAy%qegwFtHmH?nNl83GX4LS zzxs)C@xRJngVDu%oZBJq53NZA#xeorbJ~rQH#*U z{Pae6wadW)so>wMITH7Xx#5ESP;)Fo@D*wxr4Z(ZVM4e zBd9nc5y?A>qJvr`#{EpfiQu6??i+zHMD_;iI!a)qFYc3_?m`81s=TkmzON)cXD)f1 z(4Gk(i;!NLnJ{&yAlh%J_oW*E_W8;h_+4fi{f+hch1}GFL^Rf9S6Y^Q2S9x|?Ej2p zq~uSzyuDHpDeEAcd2q7*WfKrk~Y) zV@St<{vk%y7&_*#oNsEKencxk8e%h9($FK~eiy;d3t)sVz3q@)FVNcuI%j0;coix| zNW~Cyh*{fKtq~d@cbS8FljS1Dl+a94&^cfT`V|%~tP~i~OvmKj_Iq!vx?uX>I!)SN zAd*r{Az*wE5*^QZ2=K}a_*lhZ>X#L3Ks@K{ZL>#i9ycDsoi8Fil0dG*L{@ zTw%&fx7Inn<1;;1clSJF&^|lDh9nzSX4(Ft0Dbm#R8bUJS$j^?;&s$l?1~&;QZ(wq z8(p#38Q=Fq;Anj%Wgn7;;llOsm%_%)r#)@?Ye7h;^R?N*hYS5aL23I@@H22$tr_-x z4Agy=+L3cd@z)u9ejEpyptf~t3@9?UmSgWlYu^Poh-p#ox=REhKJnFmN0gB|*4mF; z?));dVvN@}Jn&5PX66!+d+9#kJRx(G2|OU01pUd9;L|3c$sqigNy*tkyWB zn9c7YDmqH*miwj>L3I9wz>%TZoGX=L61NY^ss31%OU<>9gVP4bU%XBudBreNRNZh@ zY+Z36_P) zdop$>D~q{8H|w>gxx#K@q)3y3)DgSb)l91C2a5yQ&os#}A@;Y0sRxYII@Q>$#s7^B z=Sqoi44#VgwHD`UNngb$_~e<2Pp#Rb2OG?}I3jexp@;o4o)elHrs`!OUHY^N&Iu1! zUvB5$twf&(MhPdDGZu3{f z8B{&K99rHsM1Ie&3E%dTYN<%)EPFJo1hyRL|JV-9li0LxNNw)z^zl~Y)}IhlV8p3V zi|nhb%Gfn-!~9NdPs68}F~6qK9df!fc+hk1aD}%gT*C!fA#q#2$L|siH6&UrOkkG|{eQ^3IK~59M%{!Slg3_iYgXLTCTp?a%s=VnW@V3Sik zzm2xqZ^AWnLq|ejivTD5)TVGX+q!C6sfWf~;pcBjtQc#VUEi?ERV0S948P6xyw;p_ zjDF}`snptN8NJzCmmzw=PvR@iObWjlv?4&!7?DK72=l@h$xE-(L4{e7=h>1`l&wC% zu`wU3RkT%G1%3#sg5U7~bO%&|sO@1ra_HB+3{>L~bc(b}*e2*6c!zL~d-M7=a75RR z&VwAg!F1i+KHr~f_I;QxOQQsoyc?&?G0j`G%zRhLnPr`KdeCYQI>hm0Iu~1tXr5r% z-F-4j?1ey2-d)fYM? zdgsc%aQel4Z#$+r?$e~Qa*n1|8k$sO8H%CY5;Oetx5i$FXqB*Cmw^g+$XYsCt=N%9 zN98N4+44`ySG~=1ch7;%7$(-X*%eDu+ky(vSV zcCFfi(#YFxrY2^8PGi+v$r?rMH$JtU+`P0jI}G){IRQ*#IkNH0Y32$|)~EmXX>3yp z6gQq5x4dU?R_Fz!r+NJodvB1;mTqo*z8MBU6>isT&46cZt4|}Lud*RAa)P~^%SZ=f z!0eQxJQcb~jn;|VRIFaNihIb6E=SgvqC~=i?rDMbo5l}d%*G??Kht*F?{B0Y3AC&MZv=DXPe~H2=E7Dk2 zW{eTH!8#=c{UUu23-Nx7Db!j#R(bGjYd*Up@fZj2fOFEh2M3!TiO1);{2gNSN0P=n z@TxF$nXyD6nM9o=Nir(mWHUF*d@%?hZ7YxVfcmhsMDF#q?MUA1233t!9z9P{tpLCl z-f2W0j949*x9^Tmureac`k_^I5!A+gNx>$CQavJ>)su}iqB%#9jFr8HnhF^T;8BaP zY8Xq!Y-v;mWT3aM(7zu^V_%P^qpBz|b;29opWiGr`v^fftEQWDt(sbG?GJ}`yHJbu zdW>`nm=&B&#{AT+Vv}@w3KS$&S0smrk8om8J4({w*otYP(^TdGIoj=S zA15D_Ed`hSd@}|jO^*%Ebpx?q9Eh;)1(>EDwF{lc%b|wGTBB6&7o=Y|q~F|C0OM2H zpC=sCtlb9#ktTd(ZM6oo!Y=w$6*U{Q`^*h75h#sHin1@%uZA44^6n_R5-PCms?79B zQtA*E9n1vA(NxrCrU>D(+L;30Jr7#chf^}J%v zDFtGROS{I+g3|kaL@O;~gDpXU)kezILRP03z0|WwwyurS@6j{e(zic4nuj_%ErePW zSk|chpS7!00g2LTKlt3iftUgRm^sStJJkvoHgr2u#QMy!i7eV|*A4tBUKKF7nE5)P z=j}m^UsGSP%UpSv@3xn2>iO> z*29<7t7q_#ZUZ7=C!And(yE_|OWlRH6VGe6nP_>A6nXq^98k8H_;^5nZ!S3P>Cz*E z-#w`q6T=yaqsMkZ^%r1!?=7G2LRq}Xruu$FolghT3DKSNRf*Gg74{et(9xxjf3=)us&3rgLb zgl;E=6<=F#;3yv;zUFR2;y{VUIfeoF+RAvbAiucTKXs`7+HeDyp1(AzehO9nwfUhc z^v`O5s?cw;Hy%J$=$H7_B7o`nOC75a!1Vl8+6OQ_e>VKd^o*cBMsNgd0JAdc6&1~H zGIS1V7kD!{O=6eplX#jTGZha*#=k_Z03OVX2|ebIZ2uw@UIum6a}JDeXFt>Z0gFc-QJ zzCl(w%GjKuX}W6^|8Y@!Pf|pSDyOL^&Cm{zYj5oX*UX+uPqP&Fp^Le~;INMW72oZ2 zHK!r;+M^w<=$(X{Z@oE zz^Bh~NgEhG-?VyK>a7@$$ke@R98Z77#2Q~fCWdidO$iM-jL5fH+l`%3{%x>R0!lt< z?-Xk?a$S@g@?*%QlIx84&L%D@)Q+aK^g1Awxv~oaTug&1f?MC6I~B#jH|%Rz!bJR( zGb3!&7Z>L$_2AfRHq*%};t?P=p7IjVY%iJdZ@~P2&<^9?5G(@(!>CCWXAyeT7Bp)L zaf1j(oXPe(J(03D)y0t%p&V5upwBzw->i*-4M3}i16cq|KpWM@cq=2k-)jAoF#wi{ zAAqdDv+k1j{-JTnlwMkCg|GBAHviJu4Vz9qVhp?G=cPZs(kcz@W(!cDX|Y0&^MwA zqc`%Yd=^^YRR1U&k~yvVF$j@{oaD$Ej2-w8CWD4gEoG(&f0d9O1Xn5e%JoOyd*n7%%T5S81zW!)f$7F1@+yT#znaDu-Bdmn$7 z^SPsa6-NbX{ymHU&}VNZLZpXd_YBoMu=m3Yv|!>uF&#`E-4P@%(n2E48=Vb+oH>ZIm_who_}2b<|~tqi?S-ueY0vXTx79?TijD z9>|wM$Y~$ecMJ|Mt`Czx*3*Q|l3(;{OOp-vX-RBL_q+wExhvXH&Zx-BGPjb*T68Z7 z(r;rV5xDOOwYScF-l!~{W8PPU#7Du`}D=U*T;~ zYEEEb3a(){u^qd!Wm(V&bHnMrPcpCoa>J&IFvKT3xbM|;jO=r%2ZMoR-Pa1+Wx3jq zjBs(Twi{r2GDUs9B`c{lD`N@_By)MLjrZzs214bxrjJOxES=vzBcS*}_Z(~+R*asG zq?3$wK<=}&<_tHANeXq`kn$_b~!$yLP#4L(WP^?TTn3&0ttd!((;Ij@im4V}xVIHVum`V*WTe59cO^;KFt( zDYkEhhiUw{)QZAgcreZqtehSR>iVqXbzt0NBy#Md&76`nu7I&aN9#Iz^KtN)Bhi(j z)a;>TaF_m=b9gswkU?Y#)O3h|mBZyVHZSso=44?ss*Q{GOCq<~;yT*M#ylM8<1+g_ zqxt;XYg6_RtM^5TF7Dfw9Kp@(*MW3SlbFOiof8Et%s8%oVy6j^f?<<=07hr&Y?1y9 zL$=Pi23&bFQvE?f$-UckaB|K$n(2IaPL{r#(-FCzdsBdR9||PSZ3dzmb_sg#qoSdO0}-kLbE zb=Ku;!noUe$G-;iGwaC#~iqadQjwdQLy!CgMo0piqnb?tNA z*4io89(iYSORpKxFS>~KsuJ|B&Z6#-D&PEul)vB!2{WS&piOE{?rp!R%`5qoxu<0JV&SRxYF(Ayc)(;{MibBb zYQ-Z%^on|aA`8t=O1zPi@kWbhJo8QatNpcnUH-@ErMcEt0aAi{Qa;i;e{r0*kDUs_ z3cN5&z{+yTa$gpQg6)$Ta&j4C=(7*1@gX)5bsGjf&t#EcLc};Hd`bl{mz8l`j_IR# z_#?xd?ZJ)$3E({R6Z%_Z-SG0sM?B}Z8$1FO#;Kmu$Ueb|kFCUO)RRzqr6oBRKys$F z-_oN~-7paDw)1>_bb8*hya+WgP-uU= z2AhqpPss$eA7DRcXA>i@O=ZH@TA-q@7gXmne@R(5VcwTMny4rI#7OZl|ee?y63I8Ns%gMMqR;kUGtR#kc$g2D-FmF}pCqx?M2madND zOGD*!Osy!60PQwdD~*TcvO-*8Qk;r^fgoJDKQ@=KDK=eP>2RRphGo?3V1*T;QSwER zrz0ZuR@ySNx&gd@xT;aPnwEaEho@{sL3y$${Goe23Bt1{ek=$UwUXUqF zDr3btPaN&h^^3-HjoMB;JDzdwIlZoSPe+gsGAJ>`6DSk*i18m4!f+v&m<+!v7EXii z?XA3U!yZtkJ@x|Y7G*drFW~uRE^b+rsqlRs7SG1!0=nP(41h#}6TyaHo*@E;%I^F% zGGL&D-TMBKdvqqE^ab>4nds&=vwqZXmGy%mQyM8zHQ!SeP7J%-O0D=u6YQgVsNp$s zOz+w4K?2p9Y_?lmgKvzC!^Fr=-U9%DP9WQZT@2dSGaLK!uX%Q*$XxG>I@)*_$7D>$7)Vip&M?>j`XozuL z%7b@GGm%!ZAhxa4EV#h^$xpn~!p%TFj!lW7Gzt45(6^fTAr0 zclbVygPegV)sUQnB33^X18Kt**MW;DY$zAm6FnS5?6>|}IRpQ-^inwkuNC|^O2Tr1 z&L!AI)M?x`uL-DGLoM!#pS(~qV_3nn5y){DI;r|$g(fm#aRY2FaGHG?tFo=$vvgb6 z>TJq!Ni7sXHTIj02H*!|%LsOuu>{P)fKq+%ZWR^XD2%{I)-+4H8EIy$i^C;<1UI7z z4*cJ`fqdl3HIJUVxM{Y5Ro)fhay_DgA&Fy-bZlnp7nl3d!C^4-(q5>QoF z%sO3^gqQxU`u$du1sBJ-CX-YHG#R@k!LO>-Z~C5`uLd8oEOsYEc)YrVuQ!qe91#p9 zt_BD5+z+jMZHZ7mhCM^$U(KfTRiiq@EZ>ituQ8+VlrT zbPXsYKE6%*eE0U|N$xI}ZT~e^y$f0{g1)wgf3`r3F=SARtTuw*Ri*FHlc~%Rd5|u=-|$l2(fY zjheo1v+e8&iYb~Cw*90(@A_pUe|S|hulnU`RCLK`;1;8_F_ubd5Ds@nw=h*k+9J#o zx6nS!^YP+3WO%jQkazjDW);WImoJQcfB}+yN17?_qJyMQHprM$IK&&r4h>HroU%V< zOR)%LltF}@0nd+)cv2u7LBi zafBX%?TAGhiw}<7&*FbP-*069^M0_8kAI(U?45xeW*~=BxbQBh5;z;5Enu8h6N&YB zVs2S|R|H24T)@Z|3tV)>EN8%D5Sf{9K_QRF0-P~4ySYA@JyakIl1@=12~|`Ht<>Re zS&$E`6jxjXtTbD&0IUS@t1FzWK?N{M9d&n{!F(0mUpM;u&avSC&3%U?=;1PWQ@yi> z${5m40o?om$ltd1Uj{N`NY$GPR57s|r4Z1THy!5p$G3WR;fuW@2Z3QVhLNAMbF=u3AD{%^fH0(0GtBt zRB^O+GrELdX8Gdc(!3u>1T*Q6(EZ+}Lh9(KzCU~LY7DT7g?4S$IYn9?W8|CLiqeI% zZtE+P1{(8V*il&uDK+R1OCb>z$B@95kXy{DHuDykr)b?)f9e~FhDPT>f;K@*HSgfTrER6LC4d;XV~v~EXXfg`2^8Z479%J zgBQn{uzTAE0{^bfl>POAv#TrU${EWl_@ND&YaCV|lQM<#w$yozh*y6{MkD!F_MN`1 z`02Usm^8H{C(&y_^8)bI32@HrFn#U#LF7@iyiY@xVUR-Pvr1&afo(Y z5$HC?M$7Z!nz`Dj{KZ)c1gT{SJTmgj^l1EJd`PmSx+5f3o5OH9ulKKNj?gEy!re2) zoR{(s>#No6z-Dn|nzdRT%j;}ABn~QHRbxgN_%J!*!)|V^8rA}?X+8rl5S-$1n zYgiRKn@aV{(;EV3&X@?E8uAzexva;P0|R3?-rthTs{ z?h;wU+Ceyux|1_xc6QSzJ~=^U1@1) zhCvK6$qZpRX*&*`u_r%Et&R#iZ%~3bI_S&|k;6$(l!2PfXq^OPJLBzX9;|&Iv^438 zd~fxRv+BTR1p3wsfx`sSbhhQ45Z*{%bK?6-Nl-)Sqh|M<+35Y{`T9YkBR&}so9OTv zb|L(cJNw~;+j-5=Qp=pf;ncx~)%)G{?>Tu**n53-V5M>QIg|ZlVZ!Hr)g3A>oOX?w z*cH!Hv22%5@1-1XV~G%FM;R2BXz*AXw3%<`rlxrBqV02!s5C^`bWRi&>sZHWp1iS< znCem?)Y%q4Id`sL7Dz_T2P0y$IIv99&H?0=?5x~StSlA=-`6RNFQulu?0t4E;`9n} zAZOj2%&}tWiyzr(4|6ar{J6iETs!o7-=tjmR6?0JJ`fiXEd+7KWiBj5&yu)%keVYhQ0B8^L9*ppK{KC@h$n|D#zULxR#pT zqL<~4*B$S>=xK_VQOQ%0b-FKbVta_$4UKcl_cI?ct=i#u!+0>+GSq8|1z|_vd1!ch zPe-x^@R~)gjhF8qmTJGqo7_!OFJIZjAa7$|%FDsal#h};Qc3OYc%0MP?I*z}a5gbOgT{= zrAHTChy}4T6;Pq?9G=ICth1a>k*pJy_ z7i7ks*hjBh&mLS7!oGsIuOG4zIF6Du+kJJMX}jqu9h6|(9?Us??oH_+K?`%f3Kj_f zTtPngG>tnd)%MoJ-r1e*2~WN4{atb<7N22k1c4WjmcMmi0ufZbV*>%J^G9 zeBsTjGc&!@TQ+f?HE+TMoNvgT1<|Ptr+epuDGn~PPJpY-E}>-K6IZuA`pL!hp`z) z0v#?+*pdBszQ=_&MHj5GPK&f0#babdTL)R@@DRYQqAVhW*n|}j$~pF>-t$1F&lP() z`F*fbs6~Q{x-~dU<6T&EY-cL#$MS@us}<{LhMts?@eAUcuEXAZc+Pd3#u;=!GL*m} z4QPn40!BEud+`NYgX~E^0i#OLIdnbwyE(#r5>X#s4UBwOatq#yWyww4Y_5gND8hf zsyz8cUBpYH>Ejc5c@i9rdFldpE^D|iAg4vzNtZiV1*uVyVHUl3mdmxtKW0WEax?%O zJ_#)&H#KsNL5uuY6~=|pHd`~gMEk&o)Mc51&5F^B;(?)o_Vx1ZomHbc`}s7x0464k z*~?1&yy~7_jf%KsB37qhKjwE~E@ON#074X)lMxZHqN%q z7ujco&pK*45Yc6++D&4#{x2DmABr6g2hSzxj84q9&DY%ts$r*PcY z<^_dfxrk1#u2Ms#oEB$%Si&Y~@rrucjXSu5Xl1s&~#^C+rba7@B0T4*F77X2eeWw z2(0U;QBr!0f`VFj*;S276+GCDX3ZFFd24#jr*kBoEXcVLu$Sxe$Y>K|m*l5)#;sOx}1WF$PIhIY$S%pxmP09vObo#Eb74Nn<%agE6!* z5Ag9gNpZ(wJqmTL#pz?inRE?rc;__zX?e7e*S#^g4^wGO1W2&EkuBjW%!Pgn(*h?s zV8*mmTp5=M`)0ZKtO?epIBYPf{bT!`tL`#KZbrbfD3y4flgO0yZd*b*VZwQi3waD$ zE5@OM%uMx5)&F2Xu>S9WV0t&HOp&EJJ$ZEjI07y z{8bcS#3{rqKurAN8Nj|mJ|Ft3r}6tnj=z}oCy^93cO{3 zGeHElD+CN8ZML{#ziyO#D3D#JJaWsFYr_{qQ%0kLO+L{mbQXx1mZy5@jQt9h3nC64 z14Dr(OBJX@MTvAFiJ@q&^~M0RPZq`?#IOstOWPuj4vnf%47dvlN!Xjd4(Qi@mV58M zgdjv@H%)Q>y$#$BUw?^Mzx@uJ@_mL*xBkdOnDd0-BV;~sUc=YxXQO?kR!Ao?;(9#7 zPfI{5NnUL}z?C&N$sm=xqQ^%y8B-+aetL4|2X+=U61;Y zLqOZn2k_q=#1emZFsV&L{596MMo8~plGY#mt*a>ibJi!S)Y0sfv5;9DrF0)elvf-^=F+XKEpr zlU!}`olh{4Wqos;r-;{enZZxqx)w098~3-v%{Y^9ObJ4GPpzTm5aYe=H37^w2SF$+ z17+RAMYj=o(?y^y2WEeKbjWUhob1%@arvUlk+g__Mt;l7bV}FeQF-H{-3(BMy^+rH zyf{z6dLG3teMFAqgdRMlI;>skyQKmA3sox7w58^*&`l7cA8m}q{40KqIkGAdCaS%PWTl&J}ihO_j(tQ6+4G_ zkSdoQNxYUh_g$ox()tuGm?ifnm(^%%)yb@sYt_Nw#~?g!&lbGLA>3Kls)5tt@60=l z(t{>{mq7nGiObXX&$cTiT0p-$#4P;o@bU2e_gJZJK)=Sl0Veb4FanIUlOtsW#M3NR z4a(DuYzD&P#^xCy?+dF0nvN^PwYF?Dbn7lCh=#QPxcJgU4vV6Q3zUyC}Z# zEcj!sspijX>*pKiN{i<&d!-%5ta>%MQZ7vwzqVkvESF0YLfOOYp-xa{DDdUuDCdJ! z4}QCuyW{eQ=?jUaL?hzjt;r^QLyZio6g$*a@EAwc(?@J0FQ5Cm*_jIiQ3xUro&zI_ z7C{vlOGSx%!Q}uW=Nn@nmg%D%gT)CG+aFs-ttcN2@)?;R1W3mm_}9L~ZQ}A1KW6wC zcj1)H2Ih!Q*r({Q{SmB^3;yna!Gvqv^Nhe7L}^e-8??j6@u^~0#J)N%`*pO&YpB6R zh>oeJOL(}T+|VV!>+VmU`}>Xl+fo4DYMGwBA2#DpO95z$fUoyYt70)r_q&2y zmH?&}Ve_t+oM-LiTF)`=Y%^y?iVU-oCd@tT@u0Fw&_yBuP_G!g44VXMbspRMO)Aa* z3s@IFsxdE#kBBVK_(q*~`E|p-RF9|hyzT1Zm!6kLzkW}Me<@LoQ{14`*?u!+x(QS# z5b{4G_A9t@Nu%`oZgpg&1&u)d<`GdEXcy!!;VQzLbh)Ga53$_0Zd7O72Z3n}37A9| zl0OXwxS)~UoWC6*K@b5sDcIevR=Ki&M__!q=W;w!$Ex0}oUbnu5FwEJF(c_3Wp*LH z|1nT;!Dzt;i*2E%QOqfMEb#=n>(~zMCw@4#SnohzS#8Nh9|Uu>uC=<20kgo!E9kE^ zsa|1x(3ozJU=nDydL(^#XSLPkyJxjl-=A+rAA|ReO*s`)mS0C&+V5_97k7P*8Q{T%bsGCTG>YBER;))bfDW9@mAk> zcukttUz87HbI`e_eA7R5T98+Bzn=A&lU1wgD_JTrl%QhKFU`s&e_LoWT2ic$MPI3L zI9fbcUpnkmUtXrxuK99N7pvxRcwrG48x2wW@}0`m!O>*)B)yz&RioDPNv61=1S7O@ zdT5|u@Yr1TQXW||0Fd01^Bg2Me(C-eeS~)55r`GB!o_e78$%bhZ zgVx55L~yX%dQ|3ZMyYrDN{yILx`w+Y#@#~4ID{wbS+!3({FC{b5h(BDhY*BcrMG{a zJU(MU|Kkw;>B#UI4GfRmUNJjdi>X`g>eN`h8Gdz)1Au795~=3sOnAcMG8^ zD0d6ZYfK5+;CtCajUMq}(})u^m+c@^Behr8Bo7iU1$Exxlbz zn7_Vp0N#Y%*XPf1y`D?J{scpF15kR__8;IzKR{7j#co<-3-IB^WSR_jLSZHmfbl_j zBNdQ>A+Z3z>A4l4sUakU@-ZR%Xnx0Be$nM==pDRzp}QG zg2q@y-3yN(*Mr0gl^9`%3iRVI`{$GSXb1K8Q^LT_0`he9BNzSqsr}j9gA4)ak4MVs z5d!|lAt-P2r}p3D^H5g*d^jEBWwV#R$Kt#N`gNTnP|1g%KVd{Hc?@v5XhTR(N8(v9 z&l}4<>fFy!38|>Oo0reTo_+A4H$&qDQJ_CQ3To#}Kz24)39#YXKHv-iUhXReDzjb2LxpyXYv0*V_G?SD&e35gWx9pYGn(MQ%=7N7>~M zP8KZm@FaXD`_C}pWOnb@MLu}808b2ea| zGo1xDOquVmbsM5my#@q-)uY!(X(qmEs8^e}*}dkFzcy!L^^;9law+6~^=R!c^IW63 z98TG+m~#FL`28EJ`J>`5*y9H@eB{*Q-c;X?AoBcWpXW+Y?U)>w?H(e-^!^e1U91eh zhlTU5S+~wF+#?cP814@8PuK@Sc;s?PZ^u0tD{|aCcp-mKW3^Tf=3stFUm0sP=`bee z`Xt4c?d^?)2ds5p4(B~19Jama%!M5gI6}Ss=1}1U`tkT4PPFvYi=BO7a%5)*ywXaB zABlaF*cOmx!GS+2F7sD6Vzvw@8Si(d4PBuDS>rvB@WG2k+vU85SNYP=Yj75aaP_*5 zCe*l(H;9!#pE8utAG4f`p_*(%!dafbubI+z%Iuq}~wP)&q+ zieN}5DgqCsXY@pUz|^4(%8!9In;wE$;8mL*GQ@Wgf9Lia*yC|m{P>t1i@aQESStK3 z*a-2Mm(0J0kuF_%b~T40SE{q1TTH~UVklD^%_fl69wb0U7X1M#y=g@;*mM_s0b&5A=8>&Gn zLGWabU+IIa4<4B(($E9w%RY&k_1AVG*L$cR;&PM?ZvK+X#}PWBOfD>p*tV66Sj}IGtjB-PdHrY$P5!~=#@XMx!6j2seyG1b z(cXWcC)f;|7`j}oJ{c+ak)JI=vT3kLQ{+wu1U4>pO-}eKYH!>x$i)-M6nPP;z(wLI8KRr_4Nk)R@^pp_Q* zn0bg$1=yZ+p7LE<*M@V?RkIT!&TGLFq5+K>rIRcwU&_B`cHtX|Di?cE9iA<^U;c^G z0eHE8p>!A$liCN6$+}|nocuPvOTKqGqg=g9Np_2M9-J3B2#I7O1aT3mV$Y&t<0>{H zU>xfyqQlnK=ey?ID{IoGR6kgnl()X4VBTslBtk7!_0@d`wj-ch5~x`NbVx`T_vf!R z!*4~^jJr|K2Y}f?&>Zhd1z!&juP1nqiVwMY{HDWtU<7zSdm3f(x)orBfN+ZnY}^j< z5FfAOy687AP_tGrPpL!nOw+@5Qc>lr%A|B0R<8q!7Cs|BSw zH9#hE&$Xd^4Ifkq@Sss$a7;odU?(OeU+1s#Mi?I3l0VsUv+}gc(x1 z4oSKcxTZ2;-B>DRZWdmm z-2nB%JJxE$shhDd!FSR0D}`z9#*7@?N+;NmC&To67DtxmVFd!ks%&QV@GoWDPzzG22NG+Oh!O46L#PRYUP05jKG zekJBiy;*kc=)T+ITDyhxYYXePtm2xfYtw-AR))eYX(y5(A^v@UeKyF;$W~7KMmLDxKvX zC-3>*N0j^vO&I$ko~!~y<>WN@hwmn=uE#&_>nK0`b&*tMvUUfsVg4dlbMks?W z9$cuZV0Y$!9X@1!>Z@{ve~eU&F+WA9rz2#N7@b2Jah_^H8Tv^l%s=?#wV+G?C~Y?} zndCu>Qtg$*_N>r*+WQ1H=(;nWlxz@W_x zv*m$_JEsmeI%?XWWIHfo2mh&BU@||FaB82@tTWzsjamBB>(geY%qIny{F3z;mXxXh zh1p9>;2#GLvx`*X za|t)7-$YfkSVlF{vYaHDz-~#ukj#1S=)}<7I;98f-0ybQE7Bt}BO2pPaAmmgU3%}Z z!;fYwM;IhW1-h~t>W+5v5p#aMw~@dL&z@d9I3M@3y4F5xgCs!|#f#t~aN)a13ED!I zj}yhymDNA$2z4g}-+lqKe&;HExHiIz*w*V${HvY!7Vscw)GjkgIQ2>!aY2yep3Vk1 z#~U6V)4^^FV?AsS`YTYmG)%zx zPu0Zo)r>+xFL@%(mr-$X8U$eLjUGs(8Pi|;NevPwpa-BVqxX`;E6O_{DcUXCPp z7+_`x85DF+>VZZ3LJ`EAN#K$qk=BbpRh+e;Jt1*og7N8Uc`WpyAe(@U-P+SEY(e{ zS&pmx#R%PHt$%D^_ut&m|BWpAH|z8Vbr`B79O)w(Z59mSE^tv6q0N!Z`#J}b!X{&flyJ{mr?uKe3JW?kQWw;8m z{ol!$#GP!!r(B(+8)Lc~0VIP6OtT9EOy<1^!2Ezi&-2hR13)v1E=(>>P(s|M zSzH}lToqgN3Oli8V#I97EP87n@mZRDml)MKvj}5jp#mdxLsJ0X#^$}!znyKghRm+_ zVEr-S7)+GL@T8!1odJ)od|^HsJzX3GsCK(?>BIA~9dcp;TN`K@*9X+q=~kPpHY?;Em88sCjUGSIgl3R2@B3>=;<(Rs|8OxIb{!+k4vi;QnsY zNb39Oi>FsZjh#XO%{#l9B(LPvdES%=;G(3OIk$=D&kqr>;*YD`M7r#xAPQw4;6Idz zP$;!!#h{EeX8F=@6X)av<-lbv2F(l5Zp;R$+~3c6mCB!=u6n%8;UQNRWs_|2fPJ7Q z(DnJMg^2tPK9V0ZKy_#W6AK8iT#hRO(ap|^)oM$7LRem%VDI4b_{d|hl~#!d-aKvf zd1h;LLApEFuAgUg?Cr(H%FcAeQTUW5KDpb<=csj+Gs(4b<^Q zW_3;;t@?((aJD#JT=Js*gmckyEk^T=*f2b+(#+?)6LcK(TdtXCL|XGtiYG-hMw_za z3e8N>ZxpBVOo~^e(0wX1HzZswioD*|xcO(zv9YS@@UZYljrFde8~GGjZl$pCdiXQ` zfyHj|L6B)bZoJ^{57z9?f@&IEyuAGFM_rs`@?Y`-JhmfOR4>dBVLkH2p5nzr44M-X z8XgP3X0Bd=pI9u}Pb~I(zwp*jAVIq-*U}faUyhW$u94io9I1RHo`ystadEB74!)(; zlhi#iC9kqiH4h;;6B6~S&51vOSWNi*oy%|j_rbxM)z3<{&C+>kL;XVWdE-g$2-7e6 zMS5%^0>3jeTo~uggIlMoc^WR1N4UjCjy_Ezlxw5+8)DAyjt$1^bbl}SIIQE|{mzJK z_`m5(&0b8xyPfDdulP48_3MwW7HeVijLWzF24Vx3rfCv$cg&y+xlF!88wj2DKGfLG z4v#zxqx&s5CHaNT9@!-(JWsdmr&D>-?U2W!C>Z^4r&80M{^d^fW4ioT?$p@n)F1AY z;|k;7?v&qtT2<1i8cN7zgr%IAiiopS0~BPnbq)8(xEI1s}?a2(b>E z2O8p12Z1LTxFw`MRfk10%#J+ca#R)AewYyO*F&QE3w*Uz$^7Z*Xl-69 zQiZ_CD9O*?Cx0-om2P}(Mq{g%V00|rAZi>dZ|f0%aVu8i83Z6{M?pYk5Uu0wCOM~}k} zqS$?^LWkMVLu5o@iyfZ6SIKy9H2_cftHaRI?-Bq{`8^f@Px&?O4?KlH0?_p*p2GJ7 zPXTOnrTBi}DM-dHzLy`)u+tGk=OSRvu)XK31LlIH=F@BN&8ug}8;$JY!)cv#fi*w@ zfJ*3}fC@IKs`dwc=y4DREn*p@aBDH*&D~3COV~Tr@Z|3wj^h6pXKxu6SJQ2a;t-q! zcXxMpcMlfa3GNQTo#5J7a1Bnd;OYbRoA@a9d%#Dw)X)mUkJIj{8s`-_;AU0Nt8h#8(BxYf)TneD4yIfmAZ)>Bye46YM z-T`p(#3|QJL=|(bZ?3I66Lk9&T$_#hjRD8di&)K%DuP%#cAEzGCa1TtzLpaA-8Y$t zv5+Kmh!y&m4E-hXhLnuJp8ViulFDAIkZ6E%%GX)jxem(6uL&&O0)tI*ho3R?P$ zO0^qsAJ-{aePv;{7#C68YkU*u1C&C}5kEh>TMd~$+ArwUT<@V0Ib9sjH2wQ9tbstr zyT18}#8O>A_Gh7VFjYq_W5!xNA-@HS!fE|hMt%8SIB&5?!2n7iRUl{L2Yb;jLSZdD zrIfS+@2d)0aWat{-9Tvwbrsubme2Lv%xwz2LYj^4XB$5b9^EZBa_|rCWMyt)g^ez) ziplW3$z+;X6qM>JQV-=KCAy@dx#E^6YNQx|QZYqK#fja%2ut(;_x_&hAJgarCp0a_#DwPA5miojM0b7qwUv0#%WbsCmWm}}>yzf)72p|Zu z0`G9TYvN?6%beZb@ynY$iQzzNg-&vkW)1-a?%lMpO;X8xvybIM2VZv(FOtQ}8?3$4 zd0{c2KccP1sHx=CNR*<_Gyn_>p2uZif*;4^5oe9;+v>}i@ZO6d#T|HAr|*(`lFWX1 z!@+sU0zi+Ok)-few@X379f8Jo(tyUB71_2@b&Z3IV2OTrE|UrJ34)j4>p3Vdfgir# zHntCKIm+c4SQ}Y?`O*5{*8@9?+r?C0Cqa{A4*Ty%u!^yg0 z$zs>48Tea~y92Xe?ZD-Wa)X^O3W?KI$!($#+}1-;!5l9AZ4M>^;wKj0#?&~G6S6$| zWDJAeOnqFQ(VPChM8L;(+}_s2?%OsU;9nVllsUnO$rlOTE9Zi7Fpyb3MKF3Dnx85X zu<~erkt5})M(Z>4LCCa4+bZ?6Ukx2rRywysCGw_^2PEF}8>{#_e~X89K9!oPK5?mS zqA8IP=%(@x2n)7YAf&LUbg)iDteDSX`D73eZ^J6}<8HQgzB@FW^L+Va&g!TFTkK)* z*85a~>2;f(Ulsf?%{e&V5a?h|6Z-h*62A($oi*psWXwrT`)jgpY|W&<1uAP97*<ZcKhI+;P1c4xyQq2QptPFn}NYh#)M z>W%5VAn#Knu`CB zvK=Narl>GBiUKorOW|xudXK?ZLpECVuD=^<;(uNKb;FikT}GDIUMphenfu0&EuhCz zqb#^*51dZj?3=H(fX7EV9pA^Fl4?5ZtjOT0+dHc?@a*JapvTeJT=H>+mcWx4P^rEY zRZdDLv(^nJ)zk?K`GJxSptY|1nX$~i3!CGAZW>D2Y=V=vhZKyX?vK{2mR`>`8bsmD zHpUo=T=9N9)I93FQdeBy!t%%3pi~Ydzb*3)qb^tLVrHXN`Cl|V+675<$a7=*sUBYQ z<@35BCEyGyM$_vpA_uT?JQH%asNSrb5*KSgZM{as$WrU{YvFL`?Id z>&2A@0;7;sLxT>=v)9W!wR}O2|@ZpVrH^@-Hz=^S{oB@@rN&b60Rb6 zYM#2|m%8U+BXJ!`t)6Pa)CdjEBt9rAjkl-t1dLS1Y&^XaXqtE(v1qpI2MSSNW0cs)kzo7 zGv)E*$unT|z(g9J9=V59=&aunc^~1^^6fYbVIt;wX=VxiP>BphX{JGphKNs!*Rq`< z_SoniK3{mCwlf%p%Hq&^BB+_GVFmqAjCvXU@#@DuR&u-EvR(wiRRdkxcr+>6tC>xP zsr!j4{W03(qL$^}4t-WQ0&BF#qI>YeYv{+_Ey?S(2nfvu^3b~0L(K+td0~{I z;^2mSSiEm<@`LjG_V=NuVXB}7wBeLOfJ(bH3g~xxG7-5Gb*;5GZgv(#FN}yCIo)4Q z9v~@rspmzC628WWPEb3MUYVZ*R3)LsQ$_n*vzaW`K38WDC8&rRqcR@SSjN(GvZ@n; z;y1K>9B1JDk*U6OjK_N+^9Q*N8TS>>AuytnG4u^}Begcm>z>k478px-G0j-favC;! zGd!z{$%O&tLd;7?L|B1H2SEu*1VnICkvS2scwSK3d-sJ{Xg}ZfqT1w&TwvKvOM|+X z?0e4@D3;8zT ztQEJtrp-tB{t^TTto}x13yIy$Q@?+v7QB~)L7o4Kg6y*tC&B11FLQ?L6#=LA0@(fn zVxdXLEF|%XhDc)&?L!$m+7PfYgCywPQ7?f*MH`+Uecue6uOhW0csxJtHatIVi`eSL zNh~}&C;Wah(vA`ecPHc6SDg8S+ug7NvAjKT+y66o6VtkC{G+wS>-y>{U4oioK`(tT z=b}NC!Ta0YdO_U{A?8T%l&DC#7gLSuU0oQ~Jn_+i*=(CSbDj3>oC!iE2A{lT^>y?6 zV!Aeu{Why2I!&WlYxNqkMC@wyiOKk==~~m-8TwO=N&5Exv8MmOt(eq$shG@)G7r^P zc7e~DARH&{21VpUs~*&zV3y&C%N)6Sh@txEz#lOgeIS3pJC6VDtSmUg=@0&E^MU8D z3V*YQe5wcKC~9>S+13Mi;p4x|I}FBOt?i>=A5L6vQ&w00UF)y&9!|xx_h^BaXfj2B z_ZaJ@tG*MS{2fo1)0>twHuHmSs+ql?)&6Hz5L&_R-p|9wxkl;JnoB)^%!FR5IecoM zuLPf~DKPD4=Um>Em~3Feun%-O9q0XYJocyHpEGr$DDE4#F^8FPTJCA~scKVck{qCx zTt1GqC|rC*tJ%m-W9eK~fxofJM5(E?J|jvbQ}%FFR$5Umy`bEMLldGmIGh2<(mh#^ z9|2jqsk|`8tTaORppR=po_rKqsGq|TQ#jg<(pOUjurmCSCapZAk{!X4dw)@Ne5wCQ z)%}5(N)830Hjn})%nwA<-Tvn4P5@n0fTBFMn+G|+H|ZGYtx1)R>`v$XgO=J}D=UtS z9%BSi1#fsFzNG4gavFY%={22?I5^ld{j1);*)^9!?Xk&pVvof^uu|Ya0Z;DwpokAS zGFau@eXsMON33$;iMr_>hkK9tyD2j{{tyda=9$xJIrRvm=z8esgmZ-0R?*?~#)d{S z4w;LyMpDzOGK-M6j1fjG@NJ(4G_bG4TeT23aiYyzC6*GKcWIBdrU}}X#Ec?=jvslm z<90g;f*w&prfgr9zbMvcuGO}Z!-B{rzLVMPY2kEl6Zb*g$MkY(Xg=Y+Qu=NRx3xw zD0x}i_yjg%M9x?m=_G`iaer6#ejQ7h8|M`;l7D+cA3$<}P8lK0-05xzuBaKjA~`6C zvk8aINFr7R$NIHSQK=tFP4>p(Rbo3Ly((b<0u0(Ogk} zPfN%jAIkVXkyg^t!Ai_sO>SJRO$vYb3!nhP4vG1Y1~h#<9Qk59Qbu;)Rb)}F>o|QZ zi1?fhCpTh5WZkiwhd%E*_0KD?8pcya6KR4K>IV{{nN^m_TV%E!marvtL>zC5| z(r;j|P8xs61^P%g#ucL7J#)M5gz#nmRe>*`Ly(7-&~19aF+C-9VVoe9rI=@;>cE0;xV_Rxxh1@MtHMnHTXp%o97onoWArBDh zgPQtd9GuWwmINTdb({#u6}*Lc9`9;a;<#vTd+dkrl5%A~L`svT)5r_2OVEqRAj!I$ zx?d@rUx~)Mp;u-MEh*OfmmbW=9!MOfBn+Md`~}|A4C_zUP07p!?|=TYK@82rvz)Uf zn6>@Q92$N?*VvN4tIHQQjae3^jA|NIE97;SkM~SPmwrVimYqs~lRBeiR z&7(je?_h|cK2f3R=&Gt5kq+1!fX3*h1(so?)Yuoj!TUa1@KZI$GnSaFlg>}eo<&<( zwsYw7pa{p3`ImXAL*DRuEHC*FH zuAEEc?RJmm+7w_AN6%m7ea5;X=4t-&f8Z$gk?vI_rucX)ks$Kcr@a7Q7=7(0tm@mP zZRQ51MJ)c_JwC^aNy`4J_87gExO&ZGyRotXSZ*1M>my^TF_YtI`JjoLZlIsVL!lRp z;F+gO7jlXqQM*ENG`Q@9?&`RQq<56dBt9IFqhw{yc>xu_!h{rzn-^s?Ri#x9L_3Vc zy8z9Yx~@bvGfbN2*LxUx3X$4{sMA#hQep#FN0Qh_OBm;D5G(-JJ}IH4 z;VnzXEXRY-#{NgAYj-^Ew)>s#r$Bt?zA;PZ4gb#S>sql)wUz!R!~5HqZG(GHK6vO} z%~dm4g1Sc}?p+2%kWY0Gc_AU)7-3@X`n|hjIAL&yP-`*XGUn^cQ?Irx{bnh=DwCI- zE9d?}RERmc*4)gs%_gwXptf3$wvX5z5XfJ#y!8$qsrzxZ{k%-03r@5vRZz0YX4lPn zo@iju9~1{_Le0#4;hn=|*rtb5spMARlNCFZW8LB(an-qU%8Av(4F*$m~l?TOox7b7jpC|Zhmg&dhUeXL*1}FAw zoyIxPy=kYf9aFuAued>+{8;ep1Tv%Bk6obi1d-xyZd!>c8KODx?nu6kn11#jN1_tN zJ+H-B>F@oWhXuCkdWHE=wpKCW32{*msfde&c~|g_1-`b=`hNRkMs9!aY^#0-&)1?5 z^FXShVPa2BO3BGgj`T<}E+Ru+{7wK707yjsyZ#JxGPk;x5I{Y2Cm$f`u?QDh<)4i5 zyps<}lo1;rhhAB^S}?hBomHVbcy+PY4phhPTO=E>M6{?yUa^$4jbcU$gsvBi{9r!TA^Dn`^%2 z#Vll?=QZhpJ_Hendxy}gX%#T>d8R^Vzr$7%R1~*`SZ_WGhMPZEYAu-Py9*e&2I#_>jj$ z3Qu{Y7w@z>`4`ey)~73a4oU0K^Nmt$l^s|WC6`Yrlx4-yybRxYvrz^Glru)(Sd6(F z@37VJ&vb+Yc|2vE_jj&ngB1KFQ^tYJ{N7ufmF)a1wGcDHhxjTGa1H;UMCb0E$JHjY zHvnGqW7r#k46XP$D^YeeqM37>_TX-`w}9tS@|Jyz_(g@xJ*0C0m)s~MMg3EL+-pJc zQ~?_l*s_`^2kYJrcS-sEF}P(l_8RBRM`Xpe{~p1;o#^pq2v%kTNFK$+vqI>4X19D)8>6sSD=*)@<~bb|W+Xft^bdkvJH39lSyo?r=6 z0lDUxQ>-{q6u49dDiu*T9V`pgz*K!{H)_SYQ>-Af-iBVY69S~LG5vbnHFHpY@Dr>T z9f-KP$oWkqm(F@~WYoBJEG=vYjF}XIzKI3{?EwTqu&5&L4&_=iBe>2!YS?>OvIIbq zd=r18ywZ!v%ugOP6O8*u6*pOmTtR(%?>3bxDRlr2mFa!kmJSYDnq-h#&|qhQ=UZy& zjW;UP*CFcEuLFQ5)L*L9#4hT@1ZZ~vGbD>`kV_qvD*P!Y9BVvE5@72~iK3JoEWEfr zBUr#^$ltF=Tw`WE`n=rNpQQW3j2NLgP31TXSj?&hx8ZT1jAmWC1Mn9GIA562GFt(e z$~`{JZ)f8{Z@gRR&1{t3vh52chLd z$pin@gZ#%$Zm-CHUV>HC0!1IcCjdnszk21f=fBtDz6SZV?j%t30YVF$IxOX$o(!t7 zn6UtCLfJqyzR>837&=(GMU92@T2UhX{~|^q0;^wV1Q|!(_nS>qWTX)e_GvDmuhjuz zq_FWy-hz3lAfMy4G6yok3y~e5Mh3`rK4S&>6tu*R6Ck4~zjlXk)Uyivtw}}R=oWtN zI9-LEOc4Atm@CM~e+WqXVNphUiy>UW%rsdDRoofHx4heVZ_{K~0Zw{8ZL#au)mf+6 zCrvXBnhg$8fgqfngbbq*82V9_CHONuub-8f-k87DYRmm$`ZdPX#I#G%|G_(tXTNlMbkcj9vvdHX_ix))u(`UUDfn*aAOBx<1C{8w#^-n#~$)`uU~ zG!1vanmJ+`3Ixl?R<-H9gUPaG0X@C8X3NK$EOmQL25iT|#E&r{i?`noyGk)X;fC43 zpK73bMBe#tStbvA3#LI&^2Tn(3=jyWRc;axj(}S{HTrJ>V+2=B&Ub_CtwOmmb&xTe z#ZMq(^!&AOC-42tzRXn$P7_TU{Nqmkt zMRdZfS7e_FEZ+pumP7%QR+ct4ei7WH>;WE0!mmI%>z|k~guriv2uxXxfGI0!gfL^L zrZPAtg8>xfs2cM*Qy7?daXTE#*CzRO_JYM{0lG{FZ@Wz4Kk)$4Y0$t~`o#*@H)>3! z2w5SF`KpnC+7w!$=wMt4_zW^?xV)oxCCEpa^KpZZK<(*w67YW(O2D`SxFH?M2Lq)s zgNFMRA;f|Fg}PeNCvr#_5LZ|Z$RcFC zaK^|i%%POIqMo&WX7<`&=RB4!$PL?x69(hMAJ5im9mI&P{um!WWA*q5wZ@IxhQimf zcIHh}W<~JIJhiNj+e+YZm5=+{fixQa$&Zn8o->5oC1ix#*-1}GEE>^)jM%p3S&0Dq zz<$u^765LW`)jbhvoiPE*~HoNF^9nNp%QdHO>Omb{ZZe0SSV~VqSTe&n7J?kc zaEL)~!n+3ii#HHz`#*-n&D$2*x&+AOTD|CL?Jg6~=es8;eHv458_*=#wOie;@DGib zuJ9h2F#8cKBje4ib8emN^V>gd&cBMVzNVihSlo`w!FP%W!BW6xotz@8)Uq1Sl4S^K zxKhUXk%3!kvS%Eb=v@BoLW|?uo^-J8Q$aFAm;O0_@@FqVu&GRIL>W6tqxeQMYu~MvZ zgtgJu1iDg7s@{L$lgSSy86>E3)5uPMf3q%}>+mPJWzBZvxo#6}!x` zgUcPda)Yr8h)^bzQKB^@sU`vNa(n!SBIMT-t(~KX1&vOCW_KzgSazJ7tIQ`+KE%0m-Y(SG5#y?NqFdQIX9qRu8c?&1g zQH2V>fzf?ju`vhB_IX&%9(#kMk-zAsF5eKjeVf+DTVeiV4q3Qtkt}Lv&W+ljigH4z z9=UKaaSj-LT@1J?rH>KNqSK9gu8q)J=nnAMwwjz5a{5(P&MmbC!QPMpR;E4MM?vpV zx^%jqSyoN4otl)HH0PK|?*<;OBXOImBlRo4aLbc;sBm#r>mA?0WM%apMs#y#&E2x1 z%XXm;RibKQ@hTKDrSr`N!_sj|PTG6L-7j<89gA1`8NT-aM%zyfQs-Mn zI(Ujkx=@A1VU?D0u0m^t;{JGU<1}2L2@5IMrU6Z7>X@Y9=*M$E&R&xX9Qx2qw@`)@ z4Dm>)DsaqNMstICP64u4swk-|iXO`%15|hFNC=>p0tl(1B%fTj?R-K9=+6jhUK*l*qymgPV~lUl~maJ{UkV_UpyA|Ngq# zx+~EvJL4(HfOxHP@s0Oyt)54X@1vRT#$1v}N$zt4O1s+p39#B?3^}!9ohuJQ_3~V0 zMwIY1u}M+iqhjfseAxv1^+yEU2UUfUTojH}REa{(A0wD;*#%d(p`f$DX+j|fmj3{uVp7}MmQ*1N-B>MzoC`6M%sN5g+4mT8^-Fz005 zwaqlsA7}O8xRq4ZSSyJV@A~?HudT=LJ*Z#0O(+Z~HW(IJ9e@`Pv*WyKyK?K>tSrk_ zV_Av(fMmMo@vv^j^OWJt(sDnkZp$1M<+HQ!3|A+>h_F~7JW;A%tCI4-=v)x zmye$OxHf5s5L&hQdH!;v`t-fSakowiYlB_da(X320Y)S~zPJcQY0*rHCdO-yUDwx+ z+^HM+a~WvP)r*VG1X28)pLN|&OVzb`omRAlA|;AZbmpV8zm!hsv5fzyWa9s<(`xO) zjfB#3;5(CC;*5+L5eRrL?+h^)yrrhnUU8parFs$^mKi&lvmKY!${a zg}SvRurv#a<;Lk0>XYm2bFy6Zg-G6H_omEPnX0voxQUn5Q=0f#40-mk4bu;6J?A#r zzQYgGBy*Web*ZwgbV=QdbPXO3ERpv;b-J0SqDV~4pyJ`2rqI%9Fx@de-SwG2E))t3 ze9x~8=9`bikkUw$Sdx#Nb3J;IB8+A$sZQTff6V*v^^#5Dhg~~QYi%5$R#yhCbgxE8 z$6zN;b1kVfPCIks!vQzC>t&46_uvf^I1=QkOCE3Mx5XFr<+hrQ9F}X>R$))nDXZvl zmgS|}WP934d!z@;E+d&j#}a&{v>R?F+Sh4cL}K37OBoyEcS}|!#Ye$#8P+f|5-IZ0 z7{MP1$zA!0gp}uWIo!JiY3cO`b)(!@Eaca<$e}X|_}zjIBN5{Ne2I4Vu}gvTi$-|D zd*HcoJvm-m?Pv!UketPSwzUznMe@{b-Jn&SlD@OVMC|fVPC_=mPzOw;&o)5$EPGQI z24`N7(H?Xq=_Gg-lNUM<#27lwpOp^b!E_?FZi=<#qED>%N%#sS)(g1xAGJSvLVR7VakPr5mIv@%! zl1m9RHkS-uv1evYM09B)_DA=pf$=xq0hbAO$$*FLiP6nDE?PuL z81yE$R4htRnY9JgKbiPM8A3Pws|<=86`0gSEGhyXdR#6M6?R;%fe*+zcnZPS2aqjj z;P2*>xnwxhGveRBj-P}6yXKmk3LAx-%d96p_uXm=?k=%BRb9~W>u&HY8nG5XySGjG z@wqIHTn+N!PnXHh5A90I7rrY#2d>YzLw#=pR>^tDL`mes$;3ibuIX9G7Ntg5gIS=j z`M5M?4(zvXmANVo7oPCRDAL0pcMqO29=3e)J`j1!pyFC_z2w@a=3vSs>G@X4r;lrYYeQ38CN_|(wa_@4h#^Ao>rY5)^#RPWk z7~JLwU|&iU$w5H+I<-7et}R`nZd0F(+?cJ!Og>J`3>ZGIRMTkPoni7t2)c)SR?$|n zbex+X@+01R?~3Vps0)b&Cy8Zg7d4{fzj-t4sAD-Cu8!uG=*xDb#^{!qcS)U!cW2ic zzDUV3=fF&E7rnb=H$-La&9>L-b!%$FvI-9!Z#RFuf5HIFJ8eW-drWp)jcZ#`dX{>j zO+;6pCvKEcph;k5#Hv&wWW;!2cbej_XN5fhLy)I1odD9|mE(NkXmkn}{9fgWd*GYK zklv7-NUX(tB{xhDxjZ=OTyB6w^)6{UxI+6kqK*Tlm{ zPu-gBD?l8I*q-C_n5CX_kMpUm?PtY`c4_H0PG6^oeKxthSXZy9)yLLh?s3kJQ6>%$-1X7Mn?sHb-MR-~ z>>C^uPR?LP&#t64a>yGTB@!5mixzCs5ggw~wFa-pay096bA;t5=SK&U&fYV^$+x(!^WC9&MKo^M@Hao-{^W({twtnlj-F(a#6XYxLpues_maj?ZTKOUGF%cq@rn$UaYJrwcO!#+*!e)R6$+l1h0% zyTpb{10d@DwJqyX_nian4nhew`g|EoxLKY{=+$4?m&kbGnJe6O?OoGrz7#-)Z#jpvz z1tZ|Vd)9{6Nx@QL2|9|5!ZMGNbtezRb$t++Uh|kgU6!v+S3r8OH{;&D>^q!zr`8N7 zqx!j}tE$x3+?IP{`M7mJ?%LBF-;8a&=*wfN6_4-SQPyE?t8ZNWas9T!WOUYd<8Q5< z3L1Q2E|xicXB62;Q?Sbfu95z`qRk;uf?Zk(%4Go55hs=RdSspsC^VH>3o5m8@r&n$ z^Pl4kIn)}0tEn~B$Lau1Gj+fRqFd6PmCK3^*AwLBq)M!2dRV@dL#Z29Q;rZLnOsmO zict}Nt)hCwicjsTSv?_Yr2`kBh>mJGxhTOMa?7GHePe}JJq)~;H1)BPcuF^2^7A|8 z0{hZ^7IXl6#Rh#Fd$cc2f~SA(+l>iI#w>H&+(#SH_8k|iFfnT_MbMh92D$TZHK`pa zJA`coIL=L4^HMMY2Q~M;*}d^Lt=MZYhnY}Iy6vkfIjdp1e5#aBK-1Qw$7_R|IsqN` zn78lVcSc;@xkr3cia^p{TgH~-P4c8US%~n{G6rZ~4BDek3Gu0@YiVuNT;T_dHy_z? zV&Twe#khAE#+V4;?h0`*&eq}c#H-weL){H}eJLgbB>b=*X_=Au$5RBPw4%bl*Gf^)(-j~x-m5)RPJV#rkGR=H_JD3e7i?A+^TMm<>sml*CS<++hQLQBRkzR8y0e*0Ol(`dOB%2)y)U z8~LYLsh+(JeP$1(N?uS_-#+{W`U4Fq%REl7SQp-#F)z z8WU8&8C$yN2eI*!#RY)D{sOUc^;A_FFh=N=sm<{F+3qg%s#EMfi9Mi--DG5nL z!JsUJ%7U75x+R%|LWNyC9Q5T}Q4EF{kw&%YJ+JCV`S4xLbUK?UC>HjnV+gHYg=m_&E=q(0crnQgwXt599&958Jc9E z^ogZG8uTAZsNaGo{Lt~=y?@H2tTKB4c?qhiRj&J6O@*H@|9b*D&>rxYs>*5(@=a`hOs|zB^?<=T+mktVC6PY_lv~u@33kqv=jLp= z#q1vcbznuu0P!2R7t+_w(kV(Jn{LDZqePu#Yc_W_q_(u+@^?+Uau^c+kFTxL?LLmy zG!Cy>m2W3{68o&TN_XAuX#e$Ix25Lp92r6;8eh02^H{TaF;$z} zzE4RJos^NfiF!3z5O%flgm8S~bS?4h5BiVpjjfmK7l--IS3k}!I`8fm?iJK6FJ~7D zX{jU-s(tFKwK8?mYJYCbj{BF#>Mp-_W|EhkIfI>oY7}9D4;^Ngx+3%h592hqaD?nb z@cGtS3m2#D=!f5(ii~i;yt|{Pec6Hz*`*@Zr>Wry(-80Aq(G9|5_BruoJ6dcP82P> zKy=(3ND1?fzq@$h|KDTwv%3+0ucQ7Mfb^$( zi0$`#Kq+Y6ub=A2vnPT|n5$8_a0-{cwg9df(`nWZlht9Z36`@9r@(>+VI!(h#doAK z))!rv@wFys2`neI&dkfotM@Rb_XKO$$0FSU0`eb@yc(BlET(orS+CiJUFEC$AxLmZ z*uG-c;hOrnymIDJsW>C{^7DXa$zI`v6vNk49PAP5p$eFb>Z8KlKn+zPl=tU^+(;`^#9mZx-MT4j-hM?g_KrXKMsGx=_Gg{#tI$EdC;z7AC-RQ8vI zBu)$_Nlbxu&oF>}%|4dLcsH!(-$fY*VDew2!7l11hJ+$v#Pshl2Ms{MjQpxk+dOtI z#e{h+&u9NhCBhIHoYPc_)6{w}JLnoq9ln>gGE|$5QDAyczq(XIP9UOkZ^d%Tp&hZD zQ#&U1ll4~`xz!axPz|jnSx}9%CMDPx%JbjM=7nG&;y?J%-#4{3S<(MBcGB_^?ANdh z;1~C+SF14w{fji!YK8*&MXR#wU;HFRtE4OjhCpb`Qbhb*X`!dFtV`WE73bf_DV;yG$Aimo~F^_Q5|E@%*%uobxPSlhc zP!k&+@NPIZA|*m+{nI8bJC3Ibp-c`|Z%%$VYx zi@{BQvt`wTjKC`(7xxkfxlBfdnw|_cZ){&F%Ka4wspk|-qW4`%#e{j_Ey5o4drIi> z*IGCxC%y$;nGT8_+WQe+R7HbgvBS+3SiiEf4t=3O{RIaEzg{2+^fLSI>1GIB%rnw9wv3M%*v7It@k8!_SVo2wBos6+Ny2tEih2L?~j#dQ9bYKHIvCUdrPOBZDw}7 z2%iM=z-pfzt)!&|J8$r?=@CWyb>c)yNS?X8;)@4yO>*##cqntYTJ=M;bM=cI_p z^3^rAfLE|rn<`836w_4j&>ohh92JZ}J>x9zlru;$1I!+_n+my5Fk=!}oF&)yW=gMX z6J9kkVB6h^gn$MO8J%*~5h78HB(X`+6~6@e!-P-}bzVfT2pa6KqtVM5NxCLSS~ie( zl2hy~zbq#~P^?M*tMwr3EVCUfLoqNY{31Wie;e@9Hcy;O3H>7|aGOeT{|pKo*y^(X z4hkdxB`AQ<%B`*n`o9DPe_&8hf&H((+%G}lmwE1Q`|h9o=u1%e*Vvb!@N3vhQ25n* z2@1cQdx1gWH$@5z3O^~*pFu(JB`5$JQ6LEl36P%w_feh$>7Za-cyTQId z0Yd`zzd{0{c}E8CNm5K5xu_KS+E-_x==dU2 zMp_@=JKD-3Z>3oLc%^U zB#gdMf4 zZlop*b#w`RqaX*cS5%BY*w2dsSe4T9cYj>eIQv}PPVPA^TRdBdV}873je)0lPldaA z*9|75L74G%5e@WAM=HoRxKO4^pIy0ANfa`AGXar;Sz`KXy}O~e>lNZUMBp1_c|lIl zmrhUDtG3!9;vb2DG?3T4#W3|@h#ww-{FLZTRcDyZ=6YbD9a!fp7z)A+KVT>9^*Y2T z&oiz?7L4{hzmfdforgfzD=JLBBD;;OZMl#)Fe1N}{k6X6sojSKcLpBHSB$;>QQj4e zAxo|B6v(C#T@Q$)8RopMU>!qNdvVeyg!u|Ka82Ar^?Cd6Z0BG_Ng9Te_ zO-us=L5N&LhkUZE&Mik527yV2N$g*U@oGMjg}@>j?FxL1=;Q-YlXot;$4cB-A%Xm= zj#gH?mzRq(GnTw;2yEVV)?R7+HiLTGwQTaj%_OhXctl(Mif)E?Er9GtE7$$m?xaov zue2*>nmumQ_tNrDL-XaJHOyDY?2DG92V_;kN(Jkv*lD{|EVg*X}o& z{ez(&yFr)NHP=~X(|hGL3YyB%*v60VP3pLtSS_xbBWf77f#7KQLA9=Gf&3fs3ZyzR z5e%-l!PWVE?&7F5-use0VyD3KYtA>=l6{-ZcF31fYoFpr3`I~}Gufmn1NYzj@Xibw zdsZWxoO>2Qs0hJZJ#5^f;XCQe-2F6HdB&OkTCEJ1g=t&I_gK#6%c{sZXD`C6gQ%_2 z(#?U?V%s->fE15U++FC@$SXmu+n^hDJ zOQ>>_nxyx*CWN`aQGd4|lr#(<%wxh#5uafeOD*^dw!UfSr+;qE3jTyr}D`DFZ7$4oG-JUsPWs+TDkv{xEeT_5qCz>VJRe`evzuQboD94<`P+K|#*nH|>l z7KPopf@+nL+X5WbLA9*w=laU-A^W;a&{PY=;5VR8iAZWrP{{E^)#!Z#nyVkzG*~kh zTnOXQtqeyG9gSu+0mwYe+J%RWD=dPOIS@qnPKH|?y*P^g05A0Jop+N{wc84gJMoow zElkx^AvsEx=F>$8dnexb@KnM$L0>jraF?NQEW|IDw*9-PF4VJ{NdT zas9GE>wCEwJhYyZW#HVP`TMTPJpq~Aj6~74N00#^WMwL*}Uod}NuqQp5qM$vv54(8Y-Hl{- zoN!zgO3Sf>llnIZ6C~3K1YvGx-HO0um0{EfRs9tqg%g8C5;0%7f3k-q;Z5!;8csQ9 z>Zlj>KM|V{BtxfC#PsikK^2FijC}E=F)5y6%OMWNM)XV6HLAY%p1=K+&~K zRT;9Hx{EE9_}}KJL&v}Cu>{ldQoB}9Pr7$D?^*B&B((-Nw77$UhV7pmGyyil<;uSy zlYfFP(8NyvcBy%}If-5P`QKyJOEG>AgC+y|%=`psdOUvNE&Y>=Y`;xuYJu6}i#^Q; zIcXVPC}Rs}Lug|QvPlTz-Mmxm*D4MgZc#Q}ZU}*xYiuBuN;tYC(>}IKU)V;pmbU@p zY@C|Lzbt7KqAE^dYQ=aN&x+8CF;rnzUb`TUeNg`XrG9r8aHZ4NwaXhZ1m8C6F-3Fo z*sGvKjx>1vyn5d2-43#f^yjD{@%_H(6IaD*a_@|xy!Bk8`qbPM>8(veh2EN&@REPy zQ?~uwvEM%QpHzj!;W0Yu3=v8Q9!22|M!GJ>Jg;2b3kstPL}481En~nl?!PyKhk>W% zTSe4ovv-3cLxa4-0rOY(2f5C7Dpq(mg?$8r=ydq~3iXT2q9(y14M~4#JcgzK)Ra#< zP94{F8cbyglq=G^0^6v8ky}2ja;~?cB=hi4wmaMGee-Ecv+~gKjBSR&IIC;n6wFeT z-{TEb%^s#WkEc=pbGu=8|1rBjv9B5Zx-6@_wtl#Be-!)jcPeqs>#Svl(Vk+;Yd29k zW?NR%U@MTNt2N9ooxrCDU)9lpbA(S^Zlt1WOu<)xPSF5{&CYOYD(iDm%y>5GjP8r1ia?? z-81AP__dbPAvVab1(*FMpkI0&&m|KeQyp_1C-)%ZAc;AkxZe%F#q%d+5RJ~qi-32xR-S_7*^fd-$IL6iZE|D#{ zU@>hiI2LWLgH z1AI00$&O{tn=ULEhxHm0+ia8ga16Q%-d31>yz9f(#XJH!;;V5j9D(x{ZRCKkXtaUy&6JqnIdk1U{Kh2Zqb?HI)Ta=SZBE#%XiQMU}__ldHQ}xQxSCI`FJpO--y>oOW%fl`lO){}3 zwkEc1+qP|cVoz+_wr!geXJR|Kd(Juchj)GNy5B#wx~r>d_u8wvckQPh%q1_q%4R2- zg*guFt`;|XCSQk+3ZH5XB;>WtMg$1EOR`pdW9hEo{>1*|%C@S|Wq^-BQ;g2vCx!a8 zKiggyp;d(~9NXmmu~VjsxoHA152Jt9I^bfDcR~@F0J8z&GSgE+QU#=sX1|&Lm_&4%qxfV|wVSabO=)dj7CRI?pETV`=mGW6}JNv{_ZV zKj>$F@!jKLg%Od@>+*?O>vSKe$l3(k`?f5VzlP*J!~_T0ha=>%Z#iKLKJMWNxTqYi zjxwFuZt=i)E_WXD&mXMF=j)ImjXmj$6NhZGX|S7k5$(UQ^nKq`3k$ZlGT);b+F!4FZo+9(K3F@KrTjK@R5 zK7@7FW=RS^&|1l6_~L6lr!}m7E|->hT~a)pIa0MqwDJa(WXv_EPX}XrO2D!}vUA+3 z(ICD4J;~~>cJJPkl%Yf}*r~lhB0R+9_`@wBVMG1w}tfUNv5v~cxKURlIHRaE$!c;NV>Hu+asRVpYcAO0lz7) z_uaZyD7e3GjCIpiTT>&O$m)Hw2_80XLdX{nY#7~$v3NvN#yk6&JDWPN{ocb@uO!h&B5q&+oT#<;SorE&xi2&RriRGUCIqL8ae6E2fMLx(_=l&s_LtnTV?K!-yBevwi+F; zlI$e7cq;4Rv0-4{krFSgi`ffbl^?iWj(h?-cp(sLm6@ZJNh~_AX?)mNFlnNBJ~pHWg;e_^3@KVT$oguxwpEt48;sV;@$DsIGq zzP>yxMbw3}kBl`}#fPyZ}1aABzB%3N$$VeS*@f#C)$AKTctStGXrm8&26vW6bc+4Yd2#RLI? zj6K?(r~f6yis2YqmeUt!`r)j=np5+2x70Zr5rv{yYs+MZ?MCg_YnsCg<#`%#Xghk* zQv(K0rn9eN6){4Rm%EAx0;fD2mV!OT2|}w^CO{V8uiV|Yd@#qpOcs3V>$zYs$FrDn zAslP0^UA?EW1#2Q6~L3sKb7`V#6-Bp;!L6$kbPoG7D5(zNs}PYM7@4w z)B4bwtxZuvlU!Zi%zOoUB>iOkVYioA*@1ajf9vVAy6xc9w$lH^yE1n@yTUshTqj~}0nPus z@uQ>Dem)+-Hqo`7-R>LUPwpN(jxjUagp&pY`@#uv^FTTxC+I?W*05^scHW6Hv2g+K zm3QmOG<$aJL|qXQz3I|z<s5O@t{?*+97~}!ZbkK87Uv|$kPb} z$FfcrwBR)0Cuy)IHi_38FG(wTrd|rhh^!mpdZ1Xu>-+q4_S=XdBLxmsWSVzTm26tK z!s{{>U}{_F{xb*7n_KeH`(G@SSub-^o}Y{k$CjopJk2`ZIvFb`u*IN?3(%G)LqZDI z)`pv`!dmHobTb!rODc`jtactC-*9F8#Fbu z#@61OMR48=$;@AEJU@ufpTuRFyjgF4EXJD^!+G0%fZge9MAyQCZDS%rXNnBL2Va}y=p%MOJq;=4K_{vlsARw*rDt1KYdl-i4TPc{N zen2zsz;UB&v}TD+-XuB3WaI2T)Hgq*yfL^ubZr~tKr44A!G-zd5cyoXVLM7E$fdn; zAdiK*#83Tpz3BOTbz+7n9%cV=3h zNH^hIVRw+p2L;_`^r7$aEM~TYJkZGTzGZ0df`gYrZ!0ciVZ7!SXW1{FKDKh{Z;sb-RLJ`G!hm*b}A^W+=`Pod7|Fj0Z8dEAE*Vq zQi^?9JN>mz@0{(BsSB=!ZFrTxzzPTR|KYqKiyHpSHgj<4kC!_EaLxKgh?R zIHQ#;hf=E#aS#CZK>dS%n6oK`#l?zZ7PDDF>epbDtnj#|#7Z#ALiqRrc57?J z{=zQt1)K3T{^9{`F`M~YETXE6Jf8H}1wKTf%;0y_cU$dPhJ zp@KZKTi({Z*3gk87?e>dDmKT0pHyUPm*YoOsa51hHMv3Y<$oIT0;_xA3qbs_=KW7Z z1kk}A6Z*f}nm2j?|J}?(4uEL<)j^};2=s4COQkmGKVS(K-OFD`D+LYv#(YUCWB{l{ zg%DuL%k!<8-|9D8NYHYNIc9Y)P&M%Xe+r6#(DzBfAA}^0Og74d=M>g=>0|#UpiEn7 zVt=c86WnWY2=09hyoC4*|M*0F_Q^VZiORe#kZzDIWbrMU>)k$Ix;N}_gLFi%`ZU}F zvJ>e6Fi-vlKRyv#eL`wG0{KJvklMr3>;vua=ZM|6uuhKe1w0v#@*ddy@HKH&ux9{S zs7)ll5Fq%lft;+rf=PS<(O7MwB`Iz~*=YVU(-^<5c)a%igzK~D^Rp{w+LmiJ{+p=5 zcDafMIrkcLPjwK<LxQesoZ@p8|AvpD=d22t$Z!bYa)(P zPgEaGLa`W;5QdgkQJ4=`OKulBY<2nH_>Wd84xlNPdAN z@0dXb#pd`At*P`~r@)04u~AGvFyCg*y+uw)@2%f5Vh)-rwnu#h`P-fw_zx_qc7Mfa z;shXLunD+E*NqSZ$QUeqG{Q^i6F|RLn$YY>N`_HUrwmhoorlR6-U1QgAW)0FJT~1j zKuT=?MaBsJ7a7AeCm>RJJWQ!3&>D}CpUt%qD>g4~Osj+wUYX7n&QknfUU)AT>R&Gg zf4Ra{ITBI$## zz|SV&8YXXF&@Tq&2MmDXP=@?3Y3P4%sRBT&|4u~a14v5E0ie}?w*`P!e>a;0fL8w; z0YIz2$1(?iR)6oot^q)+KS#Z!g(S3~wGAA#fC9-Jr1oys4c6kr699`2g%x6l7Wyrh zz*i$$bhFxQrkPY;ILaPlW_*Qoib~{xb&4t$Ty_InBg92_SBhAGE(5g{7jkg>HdKx< zio;LBn7Ka1_e00zs&Oe@C+PBMgz2cp>oaD^n>VMi=bsnDXNp&M{SW>%r*{zcDw8H+ z9^nZ`;WXkuZ-(?woNqvH74|@ErhjwN{=6AJQ;ObG4l`kPpOm1^%n`p&U=*3>aa~3^ z-TCBpraA!<(R*h6Gt~~Oel>RMYov0%5Lx# zt^2slJX4}sdr!EFo<@^owPBr8j0Z)6Nep{KBhkTu*Wnwt)+FkEx;ASPLtyb=5oNfR zQ_vEZmLd{3lCAb9jTj_O!AbcR0RT!fW5NncASO|9OKt-W#53+M3cjoeE1AM`Ljf<^ z9Kbp*nI+-$i;CWN+ccI0mhxe_Z;-|DJlRO%$e#Q_o7-ZTR<_rO4t!0I^!5%$n7S^9 zcD>2+tkV%`w^ieHW$VE+338nGO)DAIn{`(lShASCP{n&ytar{Gl><`}svN1o@005x z`j>5J+|q3|92N_w6EVFQyl*2Ii2N^W*@*-f=g0TU{Zq%M&O&6&zD@Cskxi^jF?O$? zJ`t5BWWTk}QO93Olqw>3ljf_l-tShm?mE0Vu1-gbsK-86V@Flot=$DKCMY64B0c7$ z4oi%iiFnNw7*p#?tHB^Sbh=H?go8LnsqB;~Z-MVUj<>mOPyIjL7vWTr zUB0h2VQL_M|9+;UZ~M}3Pt86n##B~y!gh8SlJ#3O94kbJECVhtrOwc!xU__$)HJbK zfCX)<(s#YXKhF4vWV^F@&(FCu~}~0LIpywM>g%pzn(4aW?g01Xpi`x`@?mQ2n(>vnZ^6w;CE^Fh zfGTmd56mS6%kCUw@`P7AfDWkuQB5(v7VaL>=B`lPT>)_2rh^<12z?&n=^q1+&YyNY zwlGneb{C;sy0$8Ynzfxz9oKMG!D&Wl9Gn-`KaUp&o>BG@%ctP4p)4f(YcWVe5`*`c z(}DxlG@&4$!$s2=^9xL~_@A`whjY{LT)OhQ(=HR!;{%e(Y}3tgP`*Se5Ek&or71Q$ zz2BVFC;l{1X-^fJfH4KRmn=_f))6(Z>JKS(` zQ|H%ce#|##Jkg_z*CUPTkrKJ~YOt>=DMk5CTdHZs`IT*!M)9j**qp|TiAsLZ8H=H{ z)yMF)3F!vhSrH^XTDv=3zs*Z^uT8)vSbJ;yIo;`L348%JQENg#LY*^$co5DZ0rrZ< zS5|M%36acLdM_i4{(8p7@+pBy3g?4{5hgu#Gp0EW^spT~Tb-F5aHgKi+eT4CmsgHrDk!Uvrk*_aMUz zZ~N0?wV1dG;!sG5=?K`vA;nkUpBZdP$mpUW6$!b^w1=HDI#;u7&k70za8ok5RvrUt zxIfXQZ4bZtpFh8Lac3h^We+{PfvK}x#OA%;vJ!%M16%>5_XUU&NDa6L3P=U02E-2)fA-F2 zm`=AtmLnFd3@-`~%$PNq@1VVM){d){CHwQNxIms>g3hRhr;~|d->qpJQh7op#l2VG zw8jP(<=7_U$lbT*#DSUeSxEjcE{pZn;_CUX|0I39+~1fw`qu364NZma{IOj=URSLM zG~HyAB>S%N_r0zVD>2bo5GpLqyllP^siU*41KOq`jE9>mvzw>=!*$nj`Jz^oaJM>6 zGQjo<3!aitYRL|2-+`MDl6uj|YCp?ZS9!HGTwsM=TvO`>({a~K*E7RBW9h&|qDjR$ zE-opY1?>BcTrs5%9dgKe?8i(e(`@G@;|i+Kwi5Rna<>}jqE7hb+W~!NI?)ciJCG8(zup=xZ!3@Y^S*6nN9nVriGPzzt1wur+4k$_|vJ=2eQU1xy9ofYsW)6 zhM&#~mN0CFuD}w_wUlbcr^vG9qBmny`$e<>(cH7J)qCFP%qz!d9POtW2d;+C_uA(@ zhrP_FBhxUYq4{;w{+VTcrnrI4rnaapSf1uQ_bSxSnJ6C&O-VHMZCj_3tKRo~b#ELgDnk+{vv>M4*u!q8d_-m)cLYl|H6-!7SA{5O_KCFS zjp*!8crd}jKmsX80?F?=kpv_uNlkZ&k2B?yt-G$csO&6cA*iU#zI{NOpCx9ly^^}E zZQUyBbL-pF8BAbYiC?%<`%h*-vfe6?`)*0gu;le6Jf}oF5IQ>;;)XX^G*9!$Uqlue zqwPD~X0F<}S!ySCICPpncwoAlx-FZ%%gI;;yScNXcbDM+f2M-799}s_CqK|XwHDhv zJxtSxTfzORPiw7zSa)H(0AJzBPtc}-1s40{OIKLTB4)7Mg&q)&=t9D^Z zv*hxvmoZjH2dqt;n<$$tAc8QpVMR^3fOX*!U)os871@m_svJ_fVh0JvC(7v7g5UoB zUefCktbY(*F09#oCxya!ZR3>kR91FZCvWF(=HMesU8;|yoFCV(+J9v9pc3+pZrzZ& zBhy#27HMhRTMlBhpkru6`&%#{P9x#lFHY@veblw)6Sy#5PhPc_zE}7aiCIQY^B}f z4lv<6t4-WU=wi2rPGmbPuZ|9wDQtqrB{>E8^!zE-UOL}Ue|#)+8#Jf^EO zBokCz^idaDEhz9_5A8@hIPUCOuI^g1x__3d;F%kj51NpdzjfN7j)3a|cY%0)d4jq^74{OIe!R!8JFb5`L-h<_n0xG#W&64T z)&gmVyhGX}&1Lm7QY$Zk3MUJ$BiFX7Y>C1cr5i2U;Qq<*3T219N71j?kF@{`>WNDp zR5$3uHWxF>=}C5Rn+sO|)EbT47;R#@y7-dQll*0WQkptXm!_S6cD(cC&Vr+LHc;FM zHCX?3@uqm$LM!!+70O2L=}vx57g3EHbZ7ZjOV(ER_ZIPT!E^7E*KI=i$n|1<^mCC& zmKSA;`+Em0l(yRxuA0=8-zUH81sg0*&Lo9d$=z#td0gmbbc_zRVJ?G_wXcJV69v*I zI7v`=CHBJ-aH${FaP3(r1+LeneoUds1w!c>(4elHnKX7zN?E9jp^AHT-P#Z&!grpg zi!Z*us7TVbITj^(gL!GTs?uJK&R{)!zL>BCPvn!e<5?p3Xeq`Upv~DxT!@eT2B5ml z5FT?M3s_ljZ?iS5DR1|V83P)vx$0$kJr2EtPI9uxBbk-RUPp6f8c&uW)edtB3U`5h z@TZ8}iJl}+qtZWW@S15CpH7Y69(DJGQHfONAHfml^C(C*RA&>;*gZ1NkoCExeq`6@ zFkq+)>su!%I?2^E(SF(^_pfdEYPEf4?949Pc5j_Op_hT?c98*9qPS7lqFt6)>~}{M z>tG`SjaO16VL^lK(p-Omt0_k1&`Me-a?6>8IWjJeS9)gned?|^({Wk{ccj*M8U&mR zr+sri?mGBNw@m(Ui|oOI%M@@gGkgu4h*h2b>6$o&`M_$67u|h8U_8;`7JqprRyHVP?sBNaRTWiQ&Ckt1) zOfyTJyrHKog(lcWs{BE}Tyf!;i>g9{j%+k-f8qi&Oesx2UgIecNukXU#x9|qdHTE_yhY8YWjt1YI=8mh zK!mZF5c8g;x&r&MVN?K_s|bQE$site38QLR2ygV*x{HBROJKK?xaVjjtc}I3!Jq)7 zY^Z-r*(m-?%0}4Z^e-tJg!~s{nVg36uh|B&tG`EuQN_C}II50eCu%SztnSV|x(+NB z?0v3(Zw{-f(7`xgdd$3+T@LYPd%yVBaVxtccO@h>oA)rIR-IZ(V7PcC7f&hU+3eK; zvqqgsJ0%WbK^mG7BMwG2(sSj z+tO|6bu_bXi5tBFTp&zU$?VNudxe@*$ow20nt7Iy&sctoI_^xS9vdnk4PcObR z8PK6MR4i_D&)-+cWbtNynGkQSk6qPz|6Sjxka+(wU;K|eeKWbf#ZJD;`C(MUcGnBZ z#OK|;5_UFOxeZ?kvB|LmK{$b<%F?QnEbcrm!+f9@y8UVtU-KxARP0VQfBiv}arUyA zw;FCg3T?I+^t0eh^Du9fO0v>j|J~7K+9$eGV%J|kd6@&RI9@+ahW_YO;R-wR0QmTO_`K=0gR z;-O3Z%M%wyu*vWEqGX{ZKtS*54?HYtCG1+w`sIl+Gk)NT5Vvl8^ylD=yQ3Df^ zYv-q*@b8*81P6Y(#)BPM;Qny0CUDR8Ptwc3Gx<3S8$mfrRmiSCr(e`@$&JT76(d|Uctzm0(7$G{Q_lt^0lkfa_nbXM37~8(H4?~Ic z!zPIzNXx4_W%ZpZN1(uy;?H|N;Wj9mh~qaBB{%?G{ukJycb`q}SH&acEWelEOZUo; zEYaI|>-nyx{AlCBkED(+H`i8#44Rmu@To4%;rA9?F9l?^sh>}imbPg^P22Jp8n0+b zzNq64%DbNr&o(=gN^w%$e5jmqgPqJ7T zZ(nx}I6@U-*KSv+*{xkSq6=A(_fO5MZB6`V0}q1Hkx`d$xw1n#ZD&tz%ey1n8PYel^S z1^?WE;kmoTS;_Sr?}zS)gTV2tWEax}<$kpXVZ}QXEq%))wP=#}VN}G;ugc6O!?T!2 zI}$#pko@p#aG=kSnK(ah{mT2`)m`0PE;mi>V{`^xL2;&XCSI>v7~MM-m`Jog?Iy(4Jh=%TjMk0%`fPj8NF0s3?m+8ZL&8cwlZA4isG0PF{kd~$}`_)S06bpYxH z6dsx?_FOW()O%pbz<>%CiKL==Jf+_*2iso^|9d=fY^eNjkyLBwdSRujiR$*6NBy#1 zXRk-#z0cSZCqb!BCd{|DS+odQM#A6krn)hmHE2X^N!`&|7SFesX3i%e)$@rl@wt!A z&k-ePlPx9m0r%<~TLnS0zE!04pHt@L=UJb93_)Erd88dRNo$XN;h45Q+BOl-=*rK1 z5)^eh17BB3W-L8}W4v+Y0SxA@ZUyU&68BBUo6{S_@21%mg~9J$zAK^sBJmz_+S6^oKdjHJ9S>O+#H{d(BD+s@Y33PP6RZv!6)hc>fgG}>j*Cw1!Bk0{{ zzZ?E+3c~M6;W8L1IF+Y@?4P&?O=bj-92Met75>_!4!1)$lLkF>-UII?gSsv$K*yXE ztf#Qyfz0S-CDS^Ds{lM$RUJy^O;XxFDL44{)YVHoD&~jpFVc%m7=-( zTXWMQhp%83 zHnb!FyC%q@Zh=lyLb_NjJF*p~jr6P%O>>65o;hc&M+FP87ke_MMyhz(4E2nd?MYDP z)#&mK zo|&r$y;uV&yw7tjPF9(VU$R^cSndLWR?L?-WeHvPRT2Rnr?NYM?ZSkCaBc2Cd9qE9 zXs{{i<5aw?=xKPt)fy3ISqpb)B*-#5b1{YP-i!XA58sd*W~wy=GidWEuD+m1+-ka~ zhJF-*ePhzuDbphR)zF|uvL21smK;Mx2?tKEo?Tzp)+=mX2LG_X%WB%WC*h>tH zqEFYCAbVT^_Ca-HRCdC|&7I=hT}4@4%vYxuitNm11+@D5cuo7kfzu`ecVRx2pw@$8|!t#MUqU=^w7>G6Xtz7{ocsz#;_PG zfX(2ZMDTJw7+*|s>v&GevT6bWI)IOn`b58oW}Eg+ zcG>prqL8NTmeS98%uIOglQJt4e@bX-4w&Fy=SQWUr9--w>Wha3Y4~<{U`$oQ0x-Ph zkdqUGt!)v*_BbGY1#Nb;4zc>waXKcWl*9OsL-F;!g{=#2tsJ|YO*^_=-ufikrwm<9 zNu`|w#(}@yLS36Y?bauKNm&?wSzNm%e^~)*8zJ$xd++(iA_}JnHz+|zjzEEPX#x(h zKHScW8Re>;P5^v;K|kDnTDx&Q*p98376Djlxvu&KE(5C80to_ z%e@uK8n(5zsXxnS!%09N>Ot_E`>7;3^=st<#U*m6hp*?R*#Z^;EgL>9kbCW(TDsvp z8n;wozqPp~+(?8cw8z&G=n0Iz5dRJ}y{vEp+6k~x<$+n6yfsxH`?EoBX}_)!FLKyp zXff}Q1=oKUH4xu&Xo0-tv*m!j=AVJoJn*xa)8WqM4GbqmOMJ>b4 zP701Ew5BTK^WK35#b>j(Ix-oKnr}~+t{!o+KttD4)(3y)^_O}kry`yAi1d)9W?<7% zB~)Y6)+AEbe(uZkMR^*RzU?0uEN>{<%}=#9Rvn&W=w>$fre#NXd}cbkT#o|;nlF!w zl%`~D8r3}AwLBf4PaktHloXyHXGC+w`Sn`Wf}Jk|SdjCps@7Q>ZN|||4i2+~8@29w z>jCCg$h!MD30TlRG&_+*W{P;nv%@ol05AS}cl*aZJ(?dbDJ~$oFaCn^_=F?jPTa}# z8XxEyj-25Sw@++#VS>hAE{-(kFGS_+cz1ky-cg)*H>*w5ik@?x;g@W?vve|wHey@y zvZJ8WUJ1P-yF%0BlJ_D|nz(}#TpAZRdieQunUHU*aDL_>&GtKpZ5HAD4D2QF7X%3b zgELo+Co+le$RE@u1uG6UG!db^eq1A9SEK1T)n_C2-f9puz{Z}t<|wFu^KO9?w@ygy z{@nVtFjb#@O2b`PTP@O=OgkN~T*%tr`v(c)cpEoj8>`9L+ReM;VOU%H!9Y{$tw!3g z>WW=3DQA7j7OtoJGZ#oIIk0xDiB5&AXJS@jWraQ1ysv$JJiL@>%$?i^zdacMBMUv%Z<@$vi8B^)|)SH58 zQ`aePF{w-m*}G>kLx=p(Nt?HJE4m}pRvdBpO8)f^;#S-;Wn*T_vCd96A!+!;MwG7e;Ee$W-R zDMP9(u;YF^bhxyWrv0$E2Ukh((mW{I@{FP;#+^h22)A@;X{XnVQ~}O5&*PtW#aqkm z7mr(dIsKpSd%gfGy5i90xj?-naJvrYi3vDPHVunoVu^CQ29xBJvQTkvFRQw$3a_B6BZ{_z+;z5Hs$VL; zF`3&lqnf^ioLh-{RZy5{AQou}#3HkSxxg1(;<`CL9LyioXJ<{j!cfV8wsEiz!2&U` zer`AA2YM6=X}o4h-w8f{o`_N|X1&Vhb3@65Iktg{vS%1pP4pb~&2r^@?_rCrGX2QY z>|y7Uz&2PPX!w!(sk9@Lwi)>?Q%wxt9u-No{8lcU^RPD&(t-Y3dyv5Xo(@U1m8kZ8 zA6Ye@0_v#JIg`D|-_i%gp&}%Az6Pb96frE{Kdm^XNVmd$zh?FxxhH;G$b7*zKO;&c z@rs^IspP_78$hEWsVWd-TWG<{!#Pw`SUWN^rqoRrm)}{h5~NI7e4Bl;;S$k*1+&U7 znTpcSMKLz9qhlP?I_Z4~>tEsVM|T~tx6Za}u}6iwwX$y4utaN;?RkJ);Q?MJ1GpGi zW&52Y*LZ{c&q`QeeCpV5|J&7nx^PvVBP#(?CZVhX=F9tV!?D(2t0Mo8 zf*179lxRXU!unqe?n)~n(ja`TZ__M&;VWuoKoCC-MT~a{r@WBdgoK|F4(g*A7|ENa zSbjr9nPB~5IYg235KYHK0sOYwiU{gaY8v3ld8B^t%xhTsqGtOJzH>Tx*4ocDIeHOR zQY`WPU~BXmICrl#^quBBcH&$NlGGc! zWgxc>BxHfjGzOIWE!0t&sEAR2j0B9`U$BRukh6f*RF_Aa=k??{4VgnhgAEDhs0GD9 z@<31a2`(?qqbx^qwU#w^=!RaCsU@b*8#{9Hg{_thM?7%zTl=3I7(M_Am1+CtF~$-4Uf=sYUDE6w$fA1iS!z>hWOQ&4mR zE+kb33(sjy+$M}Db_%F5@90|jxY^7DRUG34-b>f!#c?YB(iE2j(b0r^+r#I~Nv5jP zSYSxJq#C)ChSG%7>E~tBoa!BtA5uOTDBsCRt4=l~!Njd%ftRfQ%f6Pa!L$Us?%pc+ z>B?|17f&8AF{4cvqr1cvBv{u;-=}>kG@c zU^J?Ez|&L<>uhBl`E*O|zttrFcx1eird$rSakrII7`m5_Ero(_`hRRm4>Yg2mrLro z2weoXXfisyNWw2XY(BjCuRX#qMB^SCt!sx1GqYw2y~Zp&+3eg0FP{F+-A!&pwzaM> z7KEcMj%k@aFPLq#)NADwrP%H*87((44p|5$uaY5a>U_r!ONZ+R4Hm8M7la?0ms>uQ zru#`Jrl{{)86$WvniVea z_p9ryg$mGFt~bFW$H}6qVbNpF#_kM9!!b_ z;mX4}aeKeR%}-d6?+b_eL;Vp!iNHl*BGG5y)tG9`=nV7*dj4IBPXBks>Urq1k0B3S zaA&O!4@)6OBMP;zs$rqs*0Oj1`Xg+JJxJCUE@-!J==3>wHD-FV{~lywew@CXdk}_G zmTK_q^{Gv@*?{5qN-90kKD|VkhHkb(RdHZesqM@&fGZ->7yiJeToRjiaQT2OO&o3$ zpV8c%+0c#C_=&z)8($C054&n1r?bytxr#@?4=vn?AOo?fhwefYt_54R1EM4^fOAV?oZf1uYmTyf?$Ql9;Ap1UL>+ZQK4#>0 z=3Esg?TlYB#lDR@%Ju;R|=T!#7tTC05rco;r&*f&yCxsrdl% z--fb7fEEX#Nr0p`R6G72OEJ?Z{~6?UIw}9D>k{=s=Jx`zz?<^{d=Fppxr!qp_sO^- zms!!Py0y6eSl!{9?d^8(&bwzQgYYX( zA$MhNYp2dXO)02MjI5;dqO-KJ-KuG)wyJdxI^VB;Ee1WluCBwkHeXNixJ~0$2*o~rbj!!bJGoPVw z>N-UfPKG!ZJuF}BH!%tdwYjGr@Dg(Jy%1|o!qkvmjCSnpA5^)4e6X2(>je77U32U& z3{T~uH;bpd{MRX#`D#yI^~T&^)ol9ErgOifIPTDo>1PachWTQEKYK#Ki7@|N;g1W- z4ekN+cLnA(e9bX5HVBo+F&Tn7e%-&?N1FZJ9nhM}177W}C(m|^yeE&=6_PIduTQ!H z`Ew`TwmkoNPoNRFf0{!4xy{WLoIl6ahV#Xvd1N=D8|*MbXWQF4#i1*_ANC&#O{7Pg z)$`4oLIY(@c~A(oexYB4tS|_d;IPxc?H8bG!!;u%78D4VsE1;c#^m}U%VI*$VR@h5 zorNm+^!E*=G;-n2sl5Uzbk=JuXMsH;&??+{)le^%p5;NA%5&*0ZGF9H z`RFLwW19m>c&mW1O#UjWW;LE$>i=uGdMH zUfTy6fJDZ7A4dQsa>MgFSygN4c4))Aao<9f6SIh}>1XgfQW+g=$)%{sx|&cBLJNg5 zTRoFqkUu4imOgw-Uk|EHpZL^lhB2%9W^0M9m0jB`=X5Ze#jz1;kQqABfNBcXhW zi=^~5rx~}BjY70`m!bpk^fC(pMLaa@!)dPBJy{wnb)}0u>f(MeGQoDncqFCyBJ;{k z*l)SDxx1bo)@8m}4W2=H$*e4z`aJadKc@yaznS7GZ;r5+`@BFIvoNxO;1w)8{Uklw z=L07Ngz-M$on9C0ErI4SxchqIer@a2QH{x)-`^ArJoGKuAX&NByDMcyhsiWUmTz2~ zw%m}h@LB12L7`zOmiDrzJVp8uo9tqJ+@YvdLrc;M(tbe>Hx+U{lTIfP(* zmcY}#Nd`H&_b4d0HSZ?JY<$^=8e{c6B707}O}8uKMt$c4AKS6)L~|JQEgD*<(d+HL zeI^WdVobzVI#2lxJq*Av8@H7mN#cQh?Ltm*>SwQs=2>ReeQ#p3fsMFs1Jog9%DAP1q<5Jkw3ID?xS0? zF~F8DYOt!0i7sEZMEr6_+x>T~^XlcS@|<~N(|zw+FN z=tXpz4_sf@8`{(LG!<@^bSCXIwy)O1sy*j6Odn_R(`jv{F6TOJo>sO0%5$gwC(r#X zdszP!rs$~boH6Ke?Sm8N?g)_P-u@%7y?p>pn{}Tq{0SGr-y0*KX&0&pB~tugA*(7~ z)%3?%<*%cXz{5!$g&UU0XiJ*lLk2t+0aK$a%aJtHaBv?HNM1qmvXq~I+;$`kJVuOQ z3Cb}@0z?s%pohQ({s}c}ACX_V*HOj)-#CN-Z5 zYV_-HD6AY(A_M4dPjh}ftvkYxP_AH%9gSjySG<6WX-b?>nbwt7ncRN|V;VPekYq#y z)??ApiY0m-cGxVUrJ*Tc2^L70gzUS@iDMfjn#mMOJD{2ht(&b%zwnj$%KVgo0arDR zSxP5t_ArNh!xiGgPKPim&pG=4hr73ms$*NXaIxU-?!gHVG`I)15P}5v;1Jy1-Q7uW zcXxO9;O;PSxRWGn?UjA@zUSfGr`sBBwwj}=#(bbvuOZ*xd#B#eU08yCpAD{7kVSb~ zfyGokbIo=nTxnmZvzQV)NZfY1g%&V}ZYhtSj-H$P)&I15bRri0?cxagkCV1Qzs_HE zMZa5LVljWk;_*;bg8w=yo;m+%_DCEDjK%z2nM448_fp109r6;3>G=|i3H%6P^;Ety zYJ#M^rkp^8C_OWqbwD5i1r{hG7&?ST1~zQWqyqbTcO6nfvim4Qmtg{;zL7u9O6XZ5 z#wCg~O?vIM-KO?E#t@~9zblh`idd6I6d02H>6J_IbOAfcy)XK;nlK_6;Mz`x_8O(j zE#UE2S~6eO+)3rzZ3E=n5K;0?g~jawxwO}-rmUCu&{o#UneICvmPCK$X!7|yk-ZRvSZx^>RBO=LwB=iF@dE4D%dMp*x8)WSJ-4b zG~Tob^TlY)C4>YN$Ky7{-5E**kTn?bZsHPBjXgHTnQ28-%VtFw>Nu3-*WU>wQU3}0+X1Y zU)7@u#8_TP^}8>4*uey8SQ$Br&YV~~BicO!J-N_LMo#x~u(~81m<7YHOF<{Vazqe} z1?1-skaQWpB}G$FPyl?FoQ(w-`B;pt%59866UPO9_WJYEP>9U0B&p*KRbwnMq$=|P zMy7J#uQgTWUe9TZ2dAD?6Q2q~7Fj_SXt%tD;M?G}Eg}i!n-N z({`SIKDF~&MnfxPlfrQa03H5kf`~E6QH4!P*;m$G7=Ih-P7s*$?%y}7({1+bEpu^xvJNzu+ zC-DRdBvxIPNX2S^WQYtzhhHai++&rB76dUQ{7q?yaxG&wV+l`k9p@ zx!v6#&v!6iBbm?+y!?cxdUJ-uJ{2K`kFunYG(MFlw4Zvjtm&sxWc_3(A#~k*TPm<) zGVRS0q)TARbxzTl*L%i(2dw~vSx9D7xjeG`N4eVoUxlofl~eDE^a!j$&q+eWmOfE+ z4~Mh$=$i#yzOo`Oh7~oFStyboGg#AKN!8^7k&@yYfMG)4s*3Fq8mfBE=et?(N1jv; zV2T_=QHtFB>@&mdjIKjrJlI4X%uti82=gX9kQm3)tQzhiish!FO<@npCViDcp}Ms7 ztHotjGg~Mp-<^)eTp%MU@B5ZfSH4s62*V$6x}BC^+(u!IE%XE@AER87mT*TAD<-GJ zgUgMw-bZ^06~C%hf!1s{I-PdP(uW$u2=V2^+Rpy*jY#TKi1~%vcTP>M`yJsR4BOn$=p!3Nm@^2Mw2DsGXAdD8hgVG{vv}C`?gGn z4nCJ(QBpYed2{7V@2FxAp&0HYNA~z@Z7V)@Tuoz|<^y2+(L#e8JMmb$^`hT}=-COd z=03aZshXx=Vw!~sAzZ*u{iTB{;#O|PpSGUEYf;sXGOr(tGh{JRbjmSv@@7|kZi=0- zc?%A^S^Ls&{GK{|4J+sn0$-WiVZRPCKWff=ZeAUy?L{hHZ>!bdc{?j z{<4#~;n4y&#%IAf7`afy+r4<(=SyxEi(7{k6dSPJ`p)3si=$=j!f?f|S>91-;Ib1g zY5@*G{oX+i&z}Pw);QgT=5yk0tEf)q7PIkyU(H>dLId(SZ=B}Yg?5Xga=8KK%k9>7#Wa1W>U z&{OW7^L#}S_-Od4^;!4S`C#;#h-F^maHmPS(17a*iS)zGN<_^g0Bx?a-E~-wTw3xr zpaz>no)%h&mfd9yiem!XM9CdF+&Nl5$81J90f0bRw-xPCl_1xY`|cY(t(?vxBw1cR zA^f^xk5{*+UHyKrG*mJ)-(43bvgLmmujvlXai`LoK3W@E` zFT7O6>d`640bhB(e^$faYQ65f+Gz^EWab_;_%cTWQz$5pkOqZH1+7f%ScDPed-kqV zK?{?LM2z^La7}QptRDBN=>sd>LISZ|=ldeR*_f5HeC>Q}G<`i2DR_~jY!5s%-PA_k z+lfmu2An|N*LZQmsmB2RC$9${o!jKVIy*zTkE3P=z`T#F^xv}A!eKejtQHVFqR~kJ05X=t{ ztEfXQjvl;VT`PxYN@w5uyi~pP5q9$!WpJ65-rmRh6Ql2d9j_cd1lU0U+J=clwo8fJ zKJ#eUC<@)V*SfEWhVtgCX}E$~(CI>S)SC>&6aU~@3(V2Gl-9ac%QA%NWUay1DOaAA zyb(DFi1$-mhiF}y#Yo-wkzzVTQB@e}&Mgl&PxDv(dW_`=Ut+kQr#`1YT)OPt&oiyW zG8{#BEpHyot1KF-I5Ld#y45+=M8(s?Z0~_CUw&{By#6-txipWprnMl81k3QiSgE+; zsa3kQr5XPbXy3qCAMLtwpR}-EID5R~w;%P<;q0fC`QE}$SSu%n7JLr%wbvuO=qm4cx*iKZDINf$!&fZcjPRy8Gd!IK4LYqP zaP>}VRTmOSdkG9NeylQWO^vPUy9uGecuVO2(FWci&RkEVr{;m-o1LE(C!UD0T3Xl< z$JoF~V~A{atL?LaCGM+lo{s~U*=KuSCyqiFJ5QvCW4|ovSWQgzSI~WJv7@X_EhW3> z2s4m<8mMyFy0)JoX!fNvelPH1L3AlD!=`@Z&~dCX>N%dk=L1};DXV5|KFcT2mML~1 zQ1uQ=;mBQZwdS7e$9YIPMeJ#6aW{}1ule|8G+k#of)2SJ0T-y9 zJ=mB3n$+ZMH1^^@WOTpz+RlOzn{%8Z>q}w!Y+dTqO&P+96-O6ZbuDCiGmNFqMMoCa zFmDoISxQC4EO>O^8D8`R!n z-r(wXL3|BWRqxDXPe8w4!m$ov!%y^^{!*Mw$7wM3=Ug7m78+0)g;h?S!qZ%qR8;6sG;(? z&f<2th50@{uG#nMOUFUYgSmUMojsbVq{PZXA&$%eo*UPht!&c$A)(XPi|)WjnB@b% z^yTS5DA>W3i4rwGN7u#CCrA96*6GLZhAGvqd8ZnS?%%whTx4yW;w>%h<8MgIzr)ps z|2di0A5k9MS(sCEuBi1p`5N`@_-hiovv~g^BWDRP|ElzOgYGH2m{ormR)itxg3ka6 zkS+sY{*>Cez3?_Y<&5m3#*^o5@Ae>?l>FWxZoTzK4>H{lXji|F=u9%kA?5Ora2Pf+ z`#XcQoGdNx_%`gmJ;1MsM*Xkze7MR%TLb>@rgYcTh`B__n1j8H;3)^_=DIXd4`p8m zYEuu;VL4xYh22FTqt5tXSNOpIS&ErcDbq{BM?&f~LKam;q}uz;(?ZzTdgnhP5skyo`Id4t8H)V*9txnj6>7OrV8A4~Jme649AEh}F*w=}a>(m*bfM?Dg0ESr zU(#Qo;YE>N(qAATb(d{`KFsZP_Q&F}VQ9Tth?YZ1mQsczTCt-zZ16orCjnf`weFTb zC;Cl~bj<}ehNi=0SQ?Rd*AYeLZM4IDD{Uak3w6@K5Euu!|Cs+0@*nbF_APPYeuccC z|B8Vzu5<(amG$BzXYg0*OYs(X+0XN~$Dkl_U@ym9*uU~$u%pk}7{JS_-cDbAv^$d_)Em}9ISC1+E+xZ(V2 zIRx1uUm~3abot?=eCgIyPL=27f)hd_1F6|=xq}PAT4ugX;{`mj$*h5U$EGhIa|0y* zn&$h@xeJ%CUJw5G;U$h16+r6?9T~Evaz1P))cT0TRW#OW^2FW)Ey(xxJY}*fokRik zURtgPRouA?teZMg?oOdEi6=BhqL|v%c+hJQz%0t$7VG z#t>4C;d|wd4CXNl`C9G+OkV<&vN0Ydbmjtx2G_kKqQ?FC#=YSzWpsNN+jsf%hYvQc z=aUz?Cqj#QGc8rJsP@sNhGV;il6A)zZ|qT{N@W)Si<{AAb^W6XY1fCrA$yNY&T-MC z!~cgxVD!A|ihb#JKov(#On(@H^Wojhw~a!&v7J^T zb?yE>`sYc+Z{>fsvL9gmz7I;@?)TBOD(`9K&%1UAL0QN0(&&7(#*xL^)K47C^;4X_^= z{bAPi?v&Xh{iiz-2w$g7=V-z>hTF&w=+t)uSrH+YF>@g9YYrEjEFk&Bm$6l@jDozq z`%GgXJA%H884~Y!=`zptcLZN)tr9EpfA^3B&8*PPM3w19Thw^po3BWv!O;-yP0Z>; zor^6Rl*9;KNE2HxU;E}GdDMPcj)dW?f(UX1&0p(+6>9lWq$J^AMMT~b#Y1D@Nb2D6 z8Cr=khHezRsKsyBcBJ2~?aR@>T-*Or3x}a3ho5R8i^~@BZ)yQb|8Hu+PdCi>qYXsm zMJ-fR9TZ_Ba(|kN{llf~l0O9T4}-Fwj$|)t@ki^6TKr{OX7HD78Bi^L*_Hv-;$y!}!`CGelW zlQzx@afLC)8n^JT#HcFW7=F_`im*3!YUn z6LCcbBZdGeMUcpdLxtA;Vn&jCDxOo`<}o|smgYVCUk1KoY>Cys2fjEgck`$v&c1`G zKAQ*8HIHn!dU)pNl`%WO%qU$azU#Cta`8$&yyP_c^&U6FBWKt3>ZXT-iXdQS6oq}o zs58())8%U6aY;@c2x>1D8A#K7)Y}uiPBYz@MfD9lYO*iY&~!8;D%DVTXiaZ^ z{IRvN!gVjFx0NHfQmP?eTq#-U)LPGR?{M6FGf4a9z)|a8_!S>v|5=wta8|^&%Fl7J0Wzug$~ssOs@bZneRyFitCz z*{Dw|gGZ0R{viv$#egVa{GYP$TN4OmbpLEMpJDh*P6mKa{7+#itakaW6C*qzzf{K= z%KMjM=uR{MAMfRydC&A^;3{-FFgD6hVXC(Xl8;P~T$F}IUdj=;C5UFQ&M(;>Fy==7 z<$@U&Db!+UboV4CeK^{h>i<<8LgqkTTf#6Cvnk@PB}Xty`SyfsL)OhuFF}&xMT}|h z#V~NqQn%efrh@$(OvDfz#8`5s%>g($Wiq`YHARW5*L_IQlCe<+s+-kBa^JG=&*Z{h zoM@Ke2Pp0xelCFiQyfr%V~KCbI$R$E<<4G5MhZw7ZQpxte)N_2qVVEa2HZ3t`YSa`b@2Co!~PQZ&#eMvNqffKpIZuy6kBE*kUGXT22eW2WHS&tFOd#jL7k*= zh<4I+-O8XE;HS7Fr?_Njw!Ot%YQxsY7P-YHSoHk2Hca>urEg?gibgL1AXP*2uKB?-K(T(j&w_#uD^Orq?q>`f#h@2o_LB^^Dpr=s51a-7Yi@ZGK z`C!R1Obq!(Gfj53?u<0mgf!B*8SZqskFGeyQzc8pPYW8JA2SDsQVFajpVF>oqG+QC zO}T_P0wfA`dy^&>WbUKoox0)KTY4}?O{3)dD7`n+_R@RwRX+UtGhQ}A3!L3Lj7p^Z zc--Hb)^}4kRLW<^G9(&p#&VCXpX6%1@h|QH$9lB8o#1kQygQ$c?H!k=aMkvKQ5F5b zj{m{eQOi=VPCH!U9*p1iCD6e&{Q;E!it}lnUe1-FZ7emcc(ZSKK5yWCvR#|Sv8eo(U0jsj9o0TX_y4tIXqbH32O2GBI@S6C3XeMf>I&&_D zAxJF9cOT~OT}OIvAGR*5*r9D1wCNwRpa*mXSwbTN%$SqI;I+s>$kwpQn65=zL4T_Z+Z|y=S~cwF zng@wzo0W0kI^ueFBviK4CqLg=Rq6lETr-rCEc@ipRjD@)ai;B?-Rc}geLvjfinuk4`r4R@xOk}Vy8DN7}0>$@~x_sD9*d0 z=<%}>S6WI3S?AyAQ`Vl&*>%>?h( z$og-!`vV!c;?eLoA^Kn<(18(@~lVQ@pnJ@=d_oyqECnvlP1iAY=I&(bP7p z(&Qb9wk_DdE}x1(bMTz6cthz04HuTx<|8`)QwZ#LsXy?q z?Mmx0JVeocW>_cp^QFuhY}w9ko9qmFel?bCdO{MUi78SQPN+LN?2&7Aml)%Zu}OHjCgy!08;1eQ1hkE>??DZZ1)(H`Nk3 z@p6-wh7-m5Ey2}{J1@4aMMMAOCfRTta>z40Zt`=n>@7N!>@zET}Jr zKFvHPw;OX{Cr-}S-;dYrq3zlpmqQSj4>#Bl1*@lk7sH#S@d$D``T!nK@QFl5tCMU! zaVP**M`;y!^mpGEPZ-2cw`Fqf!>xv0uTt+RrH}1!6W98D7D5dRmUPs9r0x4W4>43O zxx&Tz{|jLHL4-Z7CG7pLhQFaDAmTJ+=R7p4c3;l78#cVB&JL`SEqE{80{UI`spd{X z|L{IMsMcK({|-hNGk^|RC8O8F9oQ8L!e3}qMlW|WkHJW70?KVyO@b@I>Q{BHydQ*W zctbQhg`>6-3eNU2^@)H+fZK(X_QvGdwcA{VP(fUJbY%ZpocZCW;a4oB?r~wJOEUZJ zA;*@J%-D6A1$bW*d}Jv1ZqXew3$P|W2YSmJ{-9uvJ8j2c{k$eBG)}qh?I&V3eIEY} zXIY$*D|EjL2i|NSzE%gYqU?k|#~1SXCbMogS8817v3j+?BDcZ8`L)Tlf6;oc!DD&y zq(9h@rqL5{IfB*N*nNa!&V7+7fw-bqwDwaYZ1Zbj$x zms9xnt+j;mg`5h(iolS_mtL{;(o^iwbE)41svnbf_d3H@4g3~HyO0! zHR-*%1szo(UNe@AX-jjX>CW%uBuA*MM*ETgd{PpQPBl2=xgw;YKzGL{1 znESSzg5w*9uojN?1vy6(e>T*+mAdysTRIo#SCyh#nMj$8lcT|e(Nd0f^-zUUesPmZ6ht-tKbA*%5HoIbBJ#`mp(E zx3|{_B)-lxG*gJXFhhT^}Fa*M1^Y&zl=wPXAikV`IH( zw|p5SQt|2RfA^pn2%)E?7B_x1aovNNFar)Ea=MO1IwePq%AGnXgh6Xj* z_YU7skn{3F3O)HBBi*eYfp9#@QYw9RZJdw5m^4;P;9O0`7__J`>W=qzTg^#dkZsE_ zz9C{as_g*7GGp2G-wsCyY#GR6lE_XmZkHVBL1cH?&t1D!IrKi39*PDVG~xTC4|Ul- zcgog0zcVpN;9DR~J=4>>RPTL~&GAk%9%I7@(pb<&6=ASAQk)(pj25bxdZ+-VG!}uP z)bL?8CTOyygju8}!13`y+TB-TbWI-4M_~YDIO-ZD16qd@OSaA8e7p4TlDkr5{2Zv0 zDzjt&onOtNyk%vIK50B;O>ak!(3&K!5wm(lhYEe4vqPf)vcsT|hZi&>b-r7KAHo=j zd|g;->rWcs;-fnZv4t`b89;^to3AhBg}rg7@-ArRgiZ6HW%*3C_J>2Q$uf5JI}5aX zcQ3l)1H{3nBzhmp3_!CiCMevR34wT_GK@^l3=Ip1uzw43%N?N96CO2~XQQ136-i_1 z>l>IiSX3)WTTyk)(Tf5xP{ylYk^))Da_cFg?iFQN1cU@b!#jyuxdSl)PfWWvGIiu&Pv1FgbmJ zd#zTruQ%0vFsIqGY+O6;@1&>w3pn`!@ zQjA9CP}taJodG7EjIyD$Y*Qrrs$rvF<#|Bki*6d8SOF)tu0H)CP4i5@ux4b#MBV3S zzsWN_%i8?AYKhP#2B(kmt(i*b_o9*f3hQu!#XaIr-B$Qo+FuG+1@p_w@0wl8b*~O+ z!S=5MrcaV8xJ0jlA=X~+$0tUN2Xs*glPG}p7moL8=TP<>0MIJo<3JrUTm|k4;{n4E zpBtIK7i_UHqe890bzGnNmSPxxUhhP0Y24zeWQ&CNIYEKb?AAlaU3~9F6_!gxn0~?$T?8$EA6& zh^@29Z{@X5ZzK^-x)_F*4-AQ)Z)60#RS?@)qwl(wO|x^OZu0>gywi08meZ%|rL#SC z8S-tn#1#xr1|K3T{H%Z^j#5!9imOD!-W?m$QE^V)&pf3Qpn?(HF|*USNX!SikcwzA%Qf6wYUcm2=o5XGzgaUbL6^uq z>}IXcfRhfevQ{c1+LNEsxvlLR=yU%;w6)FmZO^z6y>rGCH6pS8lvlGseqmVFyd#(A zj?9LcPrK$v!Z7~~j!4bR93xQ}ILBD%d7!EpHsySqJQD8n_P>D3e0=*a;PTaN`P<{C>iP&cBaq=AAaMlYlwD~=qKM}RzEDqkIqG_iyI{EQv9?n3p+G5o? z%7QoaF6310ku!61Z!%G8T|e9SCI&(W>Oa~D`8J#A8n=(yzo91=gZqP0qthC;X2T1n z%EP_DHqI8rIc%+ppra%jjgG@SE6IH&@E6eb3q6DXEEXpQCsSP1CI*e_(`T329FGZM zC5$Ag>M~znMf}Ibw#EV<=TVFWqQ(ki*k}N*n8&SE#0i9R1>Gaps>p~y>dlwg`0pi0 zL=P2JO99vFYvXnSLywWZS)A|)SmR!*Xy|$@7D@zU`K?3#MOfW}hk*Cxu&@)lSVkT| z6cP3Qox+nqw_EweFfs%{Mez5!!ZTC1TL&_A;A7?}&_r@$2(g%g50Gx}Pw}o`oNZN# zLw$XN3k%Gvpi>nBnQOIyf9(+r8q{8p7`Di&HyZE$)`sCdjHM_H6{sAT|9K5b|2N%j z*7{#VixVfeNtuQaH`j@l8l@&)$F%$S`AlKv{g}^h-vZvqzn3kMZJNb0JOSqTt~9$o z0|v+(95WKw<8qkUo?yvqvrA!8)(ex=*0kK_TY`vZ1kmvoqrpPR2eN+d%Y^%lVD zqxt$+GaRXIBcBfWSw=^$73CbxK$Dz3+$}|3$2gYKswS#vSPfg2`C@kj%kA082lv-8@6-gnI4xkZNI-*>(@| z8-pW^;PxkVlt3f8i$sKhRc;Hgh*_}dC)@HQzV#6%!Qw_ z062ek6X*J2e7<{>E5liN;AgA@8>BXbaB;XJ={zob^y#rr!~i?!VQYwy_LZ`Ul=J*p zl}>cDv^7U8&h1yb%FT3f%j9|dS~)Hpg~*C$Z|a>a3^`1^E>b+=^~ti?>f(1-w%%dX z47THZnvKzm@q5#s_NMz+bKqpD8}hT24jUp@^ESreZDSoQxnX7R4Xl%5?2^I+`v+XT zw;5<{>TTeoBOSTLyC!9iBFD#l%lQt&L*cNHo60^GEy37a;MbI|B0vgZ`DsWYLqQBv5N$E6-Rb@NBRi5D*&QKz^ zbugX?+2RY>A_Nn&-kO=2o41SJ8j086u)KHgWz8nT-^Ba3L(UT1yuq4BoYKY;<=T@~ zu6X>6D*a^0xd)JWPZ0^%gV?{?!oKSZ6{HU6?mk?<*j!IP+(2q=P3Sp``e8go1|OU> zXm?%1`39@*bFM*vCmNx3hd$}u^TGc9Qol3Umc=x9;JEwu%So;BjM zSerR+eZ`!5c*#pvDO^V#urJiDaJ{YhX0;?PjV>0^#RFv1PFI?U= z9)ANs-M7kQz0Sv{hXYbsixefRY_5=I7Y+*s7M3=;q6iDMWo;rC3&En3XZPmlS3{q8 z-d3wo`+{CZ;2C#|Yj1n&t!*B+(6hdqh{I?&3?zzwnrfMLy|-X5trQ2ZY{lC}m2H%y zi%(WIm_m>dB3Mc40_CvcKhG4uz>29gdWhd+eN~YS(>XW{->OG!bn8EPJ{#gb`F*Tq zkGIL;slcMNf#@Q-|LSgLX&ZAA3z_1FhdvaC`cek|Nylk-p;YB{t#k`D4UOgaLS^t1 zt=T?V@1S^8(6Tw#a%f=sBYqy2^kndI(=iErO=1VzB-)= zBeV3Z@5K=XHLf(cQl?O}OM=~t*fmMK?T<1+%=C3JxOhP>-f8&AR3`D#;GUS!29+Z9 zJHB-p7s0D5P0z!@P-K(Md-lAECmWihybmW05a|=m(%7-4NKxbzU?ikEbV8}JJ&tuz z!DMyC`t~|Wdh2p}?{T+hIjV-pgkG^h^adEc&Lz$i?Ll0t*&#Ln2C}bt4vSkM9FkoJYMdC{FzhH-<9U&eP1RfNqbSv$R%mv{Cvtm~a%*oyfD6wv zZV8P2rpdB^^ryD2;XUgbniY%qN|R)GMqZli;XBXMK%y~ZaUx%@*o@h<8iHD6aFJA; zA+!Kb_mbYW6--@XV_nEgcm6dnSgfiKJV!pHBIw~bx!P?xFd)8ad12cu(?wqb2dzEp z3fbN{TOoM_vqHCv2oL0v9C_lcGGS-VKy^nK3U zEWQ;jUu@Yk@@L_4A}FeoVpG`0i=F|4il~-5lZWjMKny~pnG$PhWN>!zJqm!ZUJnG~ z<_ZS{LF)S}U5Oj7BMe|*pjyVZYI}znp(<0|vGd9UzF{LC&-0n~gK@(twWF7Bc+G)t z_Az7r>P0T;VH3+km8G^(^14nY5G1WBCu^!+KWB&r*6w{5puE+w+cwc_=ZVH*3cSfdK?V-V|AcQ@< zru41F84j$9^pC_Hcd?ag@2_|jMZ(I2$`ZC;`T;#uA^H6U16SyF0X;S^Vg?e#GBDyq zG7EA*fQAJF2?QmEZ_D*+?`9HYc%2Z^yq9_e)4 z{VHQhMW$z>#kYL%$tgH#p#q^eP3+h%Nr-qnV4viE?5`c3Wf*$@kUg45T1k7x6d_~Z zKq)Za*@j;v2s=VA66nOlRMwj_=bI-srU=wtwOuwHptPp!32kVY%`k=wqJ4X41OS3> zuQ!zs?~t73b*494=c&_Dh2A2epbh>KL@sF$lv*aO@u{ zg(71&#D(zpCbg6k7SDp{yi8O1pnW?bmsuaqSj+c~6k5j=`V%@#v6vXRqVuhFbsJjpAh<6@>^Pa8Jx=augRjBAZARfwwY}q6y=}|a z`r+ew0S!6Q5V(ac02bd&SDVe>7ZqLe*+24(q!PdB#&gKp`Dz{N?I6Lh0-|1=cWeql z(I!>;8Ze%rt1&HtYAyg0EovhnVrq!aKT;ENLCX$WUW_X7(4;zhawR9O5~57nzMRI3w@qKm9=~+3E!j3x@-zEaLcZ|2l%<~ z2!}c-pz}_Q?)p1VWrQ-~uW!Dffm`QN!1KiA_~dckqOd=Yz6LfQqDCl}#I2G1Z0@rD z`vy9wz%8x#z3__;zL8Ucp6z@r+T?F7u8s#5?^sbhtKcKzw6m+=%M#5_*elDS$+FR> zYj~4hje{D>at!g930HV^#yi)3JK{C|Fl}ZQ86$kBEd>z{hMrw)YBJfmmT$JGDN`K5 znOgm3A@1A8aaWaJ4L2TG@3(oB`SOp`8#yO0NaJubihJFm2o8reyTDErjh?y29-wIg zFYwT*rq*o0cm5)HIjZ|riHW7!vQW)csFjYPrs?F!Jc#XGu1O2qJ4GOGIDxYhSsWP1 z*pCH9&~1r}%|&ot^A_D5mSw(KW$Q*(K3N()~WywQNQFup47% zBuq8lsA7G$LhGJS!|cJ=l&?5L`?s%)U7Rz||FPKn08WPckCN4Y6}Y~Xz|Nb8-#VG_ z0ic%4Rk%M)rl=LfwHCK@6qejSe|NZl-<_GxujknZ7Wv8v{su~v1$+GEre9^ULz9cT z+b+Q>TNelS72SsiH+csOOs}rz7PLh7bW@_HR#HEh=RKA*Yd&8dXkAh>%>eh%Ovgw* z4r+ewIUMIgto^Fn`Zj{4(47nTm;cPv&?!Bt^~0~gd`ugabJ-H39qwZ@V-kStOlwM9 zroDl~WZj$gOI=5(UzTha6hiPq!4`uob3?R@9sYD6Gxow1j(PWCbNMAznLBpkaiy}rxtZj1Ii7qSh*k8UZC-saCMBholE zMMEMcPrZljPm}%i7X=hYUr`P!tva__bYuqd0Z(DJ%~xoq8SpE zjvww%dKeRZU%l~5%f#vS9{&xl%Ya2Ft5nXhNS%0l_Lz?`Zi=fJv3+U6UqWy;(8;PK zXa9!AHQrmBWA08NB@=D=4wv1i&|gwRB5;C0cI568KmqS!sVMflHrQ{4J)-aZ=Ya&cOnvjT!|+Zq*^t>IN&}pb z7H`0-Bj=_Cb~MYQk&J@4#UU|#9|q{vPOKKCoP5r~7Fqrqx0{{T74nYj!~JV_csGm3 z+wIO)zeTi`lxmFFh)l4zil#A{SyYs5fnizl6~lDKPoAvD4%WJS?i#8v1c;*1U%B)2 zPCjT_YBHmXPb%r!FG(Xebk)070h9pDSGmuK9=^fbnVz=KEji+9Hay_X3BJs zw2@J(vFa84!sQXklfamnuy~syO7Vjuri<^#6xQ|GkIjoII$7f^Eqa`ut`YZtO^5$i z_OAJ5Hr)IdSzdvqA3lLYE?FSX*vf0XXb~-2vqr&pe>9Qoj)Iuysy1a~vF4wcJCPnL zJ&I|i+gb@|<~>u@c(PRyF%&_H=9=GWF3qQJaXNA{|NcfrKh8|4k|LI-;%m0EESvSW z*OhPB0uv8x-2N`ezS{4&e>^;bVz>sZ%=?qlQevFDT?KtfRZp6}AMT#-wK?h5)UZ++ z#k1LQz%8Gm6LI5gyfz00MF3ck zewQw(__1W)JbxrxDu$#5Ww)eV0|TrK_I7vKn= ztFj5v+(0%~wnX0_COd=2J!+oXcn6C6dWymXwW z)Al5KBT;7L$1J><$L#e>%x#SXFy_{DUfejv`Y1Cixrk7C7RZ+`?_%sNE-l~)hM$em z*v7MBKP0>ZRRQk%o+pbjZ^6h8`>_s39C55$E&8htK z#eL=eH?AE+W^b}n0Viogg*Da_Q44uS&_%4;XXS88f?7gk?2}X|FZ0sb>Fiw=$Lq0- zTOt~J>cX}ESSb#}K>Ec3f!7)BN7uHmh=n(we4^`h=Q@tZ+J7n(?=a-8|1W5H&J+fF zC(oh@k`FM3&Lz2y(H*F&HGHy!v;AWq5>Xv2?urI_84trLoi_a-#D3L@`;kS{tqj@a zaEfrR4N#uek~3A-=N)ORePwz3I5xu7yLyk{oV}uMw}BUC)J%QcFxBqmB! zcZ_BIw@}-&ve+{lhL(BXg|FXp(3~;@m$ns=X>eW%ipJ!Rv8z($x?+;x>@7TmbO>!E zUoc;Mjlv*vf<&r9cvu#kcv zJ|IoSAg@6zXzlK6NQYsqa*}B{4D=ajBf=iWv~W=t-x(c#a#dkc?)O9p#3n`oC)b%{ zaOWrW<9zZIhK~qX+pDAe$SH&G{Z6m%dm>3^BD1pooLuKT(>~X_%=Hmb3S`2%8eO`8 zWa<7Aj@m_^@2AZk9`Zswa{7Kle8xW2i8^T#6Y=p)go-%+8Pq;iFcnE+6Bs>u&!X26 z)tho5i2wW!@%y56AZPS%?JNgazi;jrNF?}uokH=J(C(pf zBGO*=0vR>_X`i3$DzL6y7xqyi&i6?S(ydKU1{xL|^|U$5M2(=W&vVbi{qbV8l_78b zX14YdQB5xR9D`3aMrQ^%KNN^Mo)13{3BOQ!ZxX4mAYTvk?!x@2&F(@x(JEgfZz4QJ zjX-GBPI}Tobb11MO)If z2P@J`67Q_YS7QF8S>dEn_4RFGzo^FcBqBCGHBjD0<7hCTwb9(0AC;i#|4P~Q7=?5J z0HLX$iMcLp|2Vk_gd+cFJp@9LH>PdCxZV4VA;e!tjX)^!*Ih?T;4ggvdw78&UlMs4 zDT=wkPv@nRfSrdbqn*wJ6$)L@i`ws%2+;Y0BZMi;7CnihLzxDJNa8 zJo9Y$7RTvlJxmM4KQeg#r;?%I@iWH09`oSXmhdfS3VFpLdj1#T9t873xI4}Yih%9H z`M~}XGdnuPjy(sR#RH&}!5S36TaaUHD@I4`1?Zwi7D(uuPnk(#6e>b+QRScS;6`5# zAJ9u;h)IGeyvl(U!-$~aild=MJr}bLl7r(CvGEC-QSQym;BMpnp#3p3Dhd4;-kuGG zE}Fpz=39O&K1wM9OyRxGk?0N7WrX53kmk-~HY^*UM8Ff(ow4sqJznJFKw#{yRbKIk z)0qCl{(?Aeo5)hjVK_ z5+XH4PNJpQO+{|xtB;U) zwRXVGtAMe8l*GW0Bhmn#bL|Q5L5pAga zIKt3_>a#AH`tN@$!$~xs2dic;Ut1E?%!3=*@Xi}68&aYEWvyYP;H8`d`mGkZb+*yaONW-%mMc`U}_kN2?u>YyBk#FI?-dqZh9AMGQPffn4j0b^woG zN-AC?=qJ~Da|q;GZw`T6>&;>B8FP%zZZCQn7@yD$K9oGR5hgPY0tS_Ef*dNbG3m(0 z-yJVerye}34*P#dRz?K(94#IGUXKAaJJ3DfZ z(0dYq!FU`^g~QNt^#&HefC0-X2Eu$LI0$4-oe2o?71pXkcnL+QW&$jArLf-;D1D@{ z$u?InkQ2NS5Ra8R`CMT6C*=+-f%))_kwlN$Kayk-Ae})y)ALE-|L@X3`A{aNwYHAb|bAw+-3s^%>R~fayCEc8!T&_Qw;@jUCHOSf7HuqzM&&3@pr?Nz?Ucp-JT0~P5o8>GDPXmdK7Ml2onG2 z2x5Ri5n0AEbj?Wcl9P2+cu(S4tHv`=!@2; zgU8m|Z{W}-i{C&AKsZ5m7xV@Bsj`ic-xnhn*6H`6{$abu0O8ar>*lTwJtt3d&O}ix z=MTVaX{YawG!iL?hYqqG+TcM3Q&k``DS(LLMO6e-e<`+8cc!OSS+6*V22@vXUG-l? zwNl2ukuqaz+^356V-yFz4}U22CQ#`KNYz;g4__J>v(_dB$Iep?eI(Eq5*(-|x6?os zlfb}=RHVzH>f+d>Dfqpku&pC9|8PG#s1-aQTE!GQ9V7i~J;|HG?A~#0d(WrE`1ynT zX*E)2Y55oy&VDvF86O)oRLGJ1ZgS4>c^=*I>ta`0c?Q#GZaj^h`h*^h-Jhmxzh?i^ zE{p)km3b&e0H^+G@6CM;XTak`?mP%Dz^~u7*$yzTad|NI z)OWwps-fO=9_9XY*IM=q5L|gC?Zp3gB+d&)sTMjvptK=vUwQlw z7;v`E(;bb7$eZL@=o;$r#NK=FhA&k)@-3y3lzokV{>8FN`2$6;lFPf@Yw5fEM+o>N znjkB0J6bwRoHCRoJ_B*56nt}%%|P6qC0j~0ZD1nCe+K~zDb?A_#0&j-^qYIbI67r=@+{fkU)tP+8o0>sgvNvGbL>7P>*~hz&lZpv?)Ue@iW@W zxCYT0gp%r>4;^-rc2|2>D|ie!u;iopEfBGA;}kwR3Wm?EK{M|9dGq_6~) zQWz4&DD}vRhro=?uZF#&UyD4~NI8=4E{#bd3$Wr!KSQagZyJo%DZjWewzX$MsG%#Z zS~(HxOquMrKIsv1a1C*~&tRm(zdLw*(g_Y;A5UnU-rvwQ$Y|5qN$^s!$ASfmlK8npb*;X?eA*lbRIu2f zKZ7s|CC-|6f#vaqwp?Q@1!Q8OH5N4TzGhe!}^ZHNU}w%=$Z&Nj-kGOl9zI|P9#i80{4lE zgYMHdSqYZ(-e0ok!R~{Fb|bRyU?8pkdIJ#ZaL)2(A+dL(0%jmXcr6ODMaL#P%+;0B zKD&jhuyQ;*zbyh2Yeuj(c$1GKJL05$vb-G#SRRCI?wg%mrZrmZXC-7}3Ssd&w57G7 zNYqz$D=Dn}C@25UbAUmTpVAZY$L7~76TPl+kSUUnFi7;~eBjhg{Uh>cW4kVK&5<|_ zxYvoHmn1zjH z@b_rHIgU0e8>8(nfiq z(_ud?^e84usXDi@f86njRLzQNbIl^PcDc*Q0F{5eSf0PRQ2muT%J(~S^iuo?84(t` zb#k1>2w}&+;6gwk(0NJ^{Jm~LTcY+N|MntV`?ukMBE&ysKCXer5cPcQ#;yYUw1JYK z{+%}}>;))4b3!z`n7R9s<|N#*U+GjrmauBZiusvKEC9IrfDL|O)KcqZ$T@@hbD!!m z%Eh$47X6ppqhT7gTSG8{<`?Z?(40$QTQ|u{JA?QCHFH#O<8PUxn|$_-0c2mzdU|2`@{UmF!=0C|8XMI@+hzfP~YW0|Ew zsA*B1`krpG(kufRE>w1__9&%92L%UjvykHfS0A@mfA)J~Zi(F@nsQ;xb**`>N^Tk& zxdC>t5@65%ZTc5|iPAiz7-BJC#A%LPlQ=p9e zeh*)!ClEJlss7651>BW;gr7&5$B=E+mO=gsz-15aE4Ev_u7e2p`ROzoD(h__zD^)i z+M9AnsltO+r$j6Q0c!vf#rh%YJ{~Pkq^U*Z-P!J{oAmY4yKI~A*B_TRNu&G|8$RFP zJUzAY>nv!>%dNxleR5V29>JfC-L>{kSrI$~%^T}wuOrWHou*EmDK@y@SPmz#2b@?j z)92N+KCHr|-ae2ETliXs9(ujis5EOx2qK%zBS}#J#-lb@Pp9<7euo=eN$9Qyw<1PDZ}uRd&sAvc!@l`RW9?vl8!28H&evd{Md- z-^j|SXUJDYn^(v5Z2XmBDa&RxZWhNa?=GhTCpgZ}(5Y<~L#tz=hXID{D;Io!y|}z? zm33?7$g}OM9y0ljDJJL#v9Xp=gq-+_k)+G5D=LVP#_Wz z(WVU438efzV=toJPgbW3CG6+B6KWuQvt3(YEnX;b z7^o2~Cxl|ZSe@@-=Jk+Lgyc-IDnU$%19#(f)c#Tmb^o`5?sP-;9|heJ-6UQqQ^xui zPUztU3hO89%VGA_UDLm$bZsL&&ggzh13fm>9W4>toVd<+El}u=j&{>m99ACcJ5W4z z+_5!%RjXN>gr6g;7^@$*m@iZkO|fx09~L`nG@AcP&gAGl5&O@#DF46Tl!muQdrM1 zzM?QMk$0#+A`hoH$-a>^b{sVMiuxn8D)=Z`{uIhF-72FN0*}jHs_ALhtvHe8o~<4W z`0DZX6R+rsY8kI@1RXb3v~o4Cic_NK-D;Yo_{QRB{SSJPJ*;x(I}{58c)k z8`O%NTw%8)ViPof;YJ8`%fFr9Y~TQvv(i<+MhP`tc4aX(ZldF>IA_A_ zM1_M$tiuysgJbC5FkC?lDc%S_J^cP3vcEQ<#UG6;KP^0l;Z7ahwxf#w_jC?CgWq35 zL4&Bg>8)H<&Hq*kB1gV5`SyvwA%o20^G6hx49n#+bUAU7S;X#=P};v_e{rWhlvjgG z%qMg9rzk$2a7Wj@ z;%f3XQ{PgnE9`V~y?85`S#pEz4?CL-Qosy5-Zk(^Ss6x!gGl!r2+hN6!2z#r``^sFP8o zMszjCB0U*u$APS~Hg{*Sp>^!8S;_3SS@ZQ1GBVq~!`6L+!;ZGthWps&`6M=gq7>L( z4sTk)GcLMpy5(r-R62m%AsC&k4aDyg`37VT-QP+Og!05EErA^%iKko^%ux5OjZe7Y z$JG7)GhCgt4}_R?lz$%dGu)=>FO8rEZq~_vD1HFm>E{mGK{4}-1Ctj16q`K5$sFqs z(TYJ0t*aIP8)SS}S5(O)M}SNqI0y{@EbIB0;n+j!bJ_0*7uDCQrJyh z0LDO8AcYUR=F2mva0&uHK=9*>7k~-T?ZeVFG|E3~bv6a`G{IY73FXm^`imZMvv7(Q z&!q#rQY+Rp)R`;zBZX2p2&Eus(ry!$O2LW1ASHYAa_;w={j&W&x4uiB3;XO2q&oLc zPc)e6T*zk#iL|T!>!;qaE7t96E7s;l?vG=Y@{9_UNdQT*rH*@MoTm-M2wJ5MH0cj2 z{)Iz4IHt?Qf)+qR8nCAt29Kn#d+> zv7oX=h5q4&)QreHg}|`E`$Z2d?Bvn5lR0%CQDo<#I3Zr)HYb68o2Ybx*C?v?-a9HT zAxkmix_GQDQgcu@KSv2rp(yi8uz8S`u)%3V3D6EubU-b`y+Lpl2*B?uR|vQiNC7w( zL;&1x#K%7Z3sKyr6G0BOOk&Kz55^dV3WXZAK%rmSgzsJHm{FT!p-^!DV6e*ddOQqd zA&3Nc91J140QHk7HLBPUYNtXx?GR0(f%AzTPzlBnV-y+#j0!n1IEomdJ{ZaXb{r!J zG)Www`1`e&5@{4qJYUF-!5Kge&7A>9&qx(QM-{~u zFKn8{48#QK?o6_Iz;|hRzz_TBf*!JUOk2WPeZ!wWUu{geT2*#|m)nn5@2Lhp0T41e zJILQK5~Je>E#jAQ-wVMeOqvoAk7OPj;f995W{jKKH~D|GbpHO~-e)+oil2UC^6u;j z{P$4t1uzWolWi~*j$OP=^il%u^jHvzRy^4VNBhl7!0Zk&5W(xgx_39ouc6}C_)@a_ z1RC#prltyp91+wT(7!mKk>6oz`#l+RDGmPd z`y&685fqs!YTIe<7p-ZXmO~!Kcmb$|Xm%SYeMOx*zl8$z5Y8~?v2D=W!^M7NCVkqq zf)zp~`HB3J<9dtiU2w3rR};@qq7U1bUo$p7e%oH}X|8Fn(t5JK-+5^Fr5R1kv}`ul z{S-8WLSv8lm9_b-Cxp4`HZW0}b=@ZAG`{Ma2dt_2Ax~VL-;LN=cv2qI0Sb2oO#l*i zT#&&Yz6vp!wAOjFw72E)xGxBxA~H_popSR!72VTd!`WcNfH=iMtm))|FIGzs#+%E~ z2Hf(C5qTs5g?!Wf-INQiP?yaOq@0xW$JLnBSKOPi({0FMYK!rbDG3|I6jSH7X{RwP zabN1wyeA`}?en&ZPHzBlWPG}C)pCA@)0lvKrd6~yH?dJApLe_Sh-=~deEI!yE}>St z;cd-<-weEIWBv8@wmhWV$%}O1LfwQjo`SoCBd%aq=9O=)s;ABSQ#)&hUa>YXZN)c+7%bL8H!z6c3*>TtXNmq>-{gF|Mv8n@kFnK-ely+irR3qv9 zSF*agB=^%6wVE1>1A^)^{f`4bpchvN_qa|*vv1&pCZPmqp`B z6Tm ze-6Trt^0>xsma6tPcUBc;$NM8RptBB>2N#5U%{S?kH3QbWi{0xl4Q!2P868SP|Ssf z3&jDWc{-yFI2mUPCs73XTWArw5)Q3lpoku3lP00C^p&ZV4E9Dg|IV@Q154U5B(N{U z4^yDuMr<6>cOXe;>nRC0kFB77aVW|zq7j%Ai6@lR5BaN*epwGw6L}bcF!m;1DdT|( z6S_FK%KCHT|2&!_gONoi`GMaw%e~5|>MgSSrFE5j+Zjg{z$Ko32cYG`562U2pTzkZ ziCfl*j#mBZSh>IWgBY9dF@ulHM3*TEXuu>D{lfqz;9Oep5v6|^zy$nv&kSG!{u2zC zfdA~H15Cj6Xq3|a_1^#!@b8urU;_T>L9AW;r}luy zZh-C_Xiu#flzFvReEXqatLyNUAtkid)a*aauawA zx!@}`=rf@abG|?=0-;P~jfsUmN~@^b_{8qsJ*AG=_5%S--7oeS!B6J|9qLC&uH74= z0MKC*Fm#eIh!jdSNg#BJ=EW39r_19NoX2UU0YP-ETpYn9Ks1uVyyuL{fWO}iU z(PSt+oz5LsEI))+sHHZ2oZRTrqM)tG>aO4&RTMfM)STBgIn|t%?EK90W~cacMBx6t zGV9~(N%4h1!MpR1^AjJtecry84+JP1DT_x%2GgcE<688kK}X?2GzAT*^Om2%GM0lD zyk{&YNZ|8R?2Pic9WC`i8k?$0$=L0YcTnD1E$(y_CJ3Q6;AZBaTf1lwlmPn9nUv*U zv=~c|;IHIyUuC)PHiKHm3aNA?TY)W6uHm8wBpPf=!mT(y&75S-Q@8?hzt}^}Z|}@e0@wjZbpVzS zN!WcX={*v)$}*jI<2Y!7XUSk~AHv93-6%K>EqaRS?cY=ZTK_u2&@ z1@6OzxE*`vO{Cbt-diX$q- zXi|u?NIE&@S`jL zf)VQn33$YWgawR65RjRc{aki_Uo#0uz#B9%aZ70xyWE|dfI%zeI#D)i>Sewr-oE7A zojxf70T!5ltxAXQl<6J4y2*pEt&>&BHC~vdlireY)JJjte4l*5P!|kf11mK!CtHK>R5yP1QoA;(-brw?PCzvCAgy=tB#p5q6$*gxjp3aR{EDtW_R;~A(w#J$Q#-a$oSY+zMVrXl-$NEV@QIwAN z(M{FU+x_*)qhgt$yQ9sk$^LLTw&{(n^5ypSu0@S4DkXZ@N{|ev`BIJK(|{g4n6=G^ zEjo#wDMI(W8?Ck!6{&1EsgjxOUpR zHm(xC?Cm~now{A64lCQf&RgrTnB64~uB@7|j~ZoF$vT@87i524dv3DNAU+suo|UB5 z1Uyc5;!LfpkT$iPuXnapzIeRe>ZpEfx^itY6(v2()xT9qVCWtlNWO|8_ifsTx+3)_ z`|3W;F62O0s6sTr4kN4#qh4K0c>5i)a{ebX@VCpwKE7 z-FcRit0En3Un#v^*l`k#>Oxd}n{W?P>ic|b0w9SV<`}mgM!DNyVKzuG6fsm(udGm{ z1W^qzf?ZP?C0DUwI&x`HgQ`9c#VA9gZ5eL!c13HwXy>jrlk-*R@`QkTs@bIy{SQv> zaJaQeKOe3LuHvkA5`?OOTbNplI)71XoozM-=K=$Mpt5PzWVj2LG_zpSy*+!x+%r=C}df99@emUV0AwBG3;n>BgWdmukI4Mn4)uXakj zC)%=eHL~QtWCc(~FnQrR$oBTg>LPpmicm%*8d31kKMgJ_%Faq=jF=R)0~Mu@D^dvO zV&>45L}d~GrTI3(M=}rz;qWeK`W(BSoA-JYIfeE7Mj3ZN{V**wY5?+>3$X7TQa3swe0X zv`hY=h=uTbIdW5qJ<1MlVjNTj+z$AC%wRDjpTt>q z5zJVdnWB@3!oU$jddBxOhXqMB(5tAPE^C*%vxA7)C`{Uf;1n$4L^LeII~wf(dwbT|0H|Ub`9Sd;38wD%2@q zFZA7(eB_Se>$4z6(S7~G>GCi@2#|0p9JS`ssIjhZZ#jS9mC3Hn>mGhqb&x13r&RAm zXGK0*l9uPJ^9lXj{cR7vk#gXU*U?hE>yE&q{%LZBSvagOyj;J=2nyYU*pO#Xvl~Q8G z!i~cxO{+9x!V90v43SJ-nP&^|hd~LZGD=%bj?VR}cSn1!-IPsBc~>Kn#T!>2bl}Hl zM_@im@uS5*_f*|9`;XAtDWrpu39)g0p@uWQbor3MX@rcL^obBDA&)Z3_z34Xy2Wl~ zLw(S*vrY_N3TsupFS;od>Tqh4aR38{-Y&?XwQi!lE_>G}^VzwHG+?)G`wEi=3mY2> zXOq!`vCf28rL`iY-J-Q(J(lpvaN%lWz~uzG9i{ccw*yThn2D!M-Ztj?NArzoz8gbH zsX?ES*j?JnR-}!SIlt^VWv9p^)Q!r7%Fvc?z7(nNhk2Q2`y9tE59!kK?N&6hy)$CY*PYUoSIYVOFT@B%5Xdk_x+@C zI0?GgH-r6oxGfmS_i*?C1Kk9dyJD>!hASnfKz8q2nO_SFsN5=C_Rh9UyW2a?z%=gY(7R?75F7E|% z0TN`$;@5*U*)(q|x03Pk$C&ivHvU60H2%I~Bb#X{(lV=J{?87wA>;Jr6qBe&f+{6T z!iC;O{6D=qdN9x+5`TWE~i~ zPTQfXE6Me7=irs>vrw?Up~pIBk*5~_0)^h_^Jlx!*KS;q|3_5F?VWzSa|o+YlpU&_ z4C0}V2zK83ne&ydc;T(pI|kBq-}{%P!3IU!U5syp?yq$(ZntY!MU&B5%$9$kjM?Km zQ)vcHz6tyyws2y3o|nOfkS8Y;<@K0^oKClo8Qyvct*-!##}bxbhK%iDY05?W-NG3Q z#YU`YlLuY9&iiTeg%=~zyN;_*ZD)~_XHOCP334VHCS;~cX2jB<<7^tk64C}b+9=9% zrq8AS7iN9qoiEN@P8cgRtcem4XEy>e9K?pWpGGU) zmZ0Wpv*(+weJfiG z7|O@#3-V~!P@APctC3a=TH{SI<^Qe-4TnOQr3!9GZCEsjTRC-p@|p_UMk;zq`9xh3 zm48o5I0HgMWwHsc>AJ~LZovcmQMH&D11xrW>RZvd9Pj!EWf3}-WVbpqBOe@9O+enQ zSOgWdD>mXyJLS@D;Z5$w1ojWXy7B-aS<@$p14hsNAhqRCS`NVOQG5QGaPvEICETQ> zBcu7(sNlMZ4_+CKS(_U$d%C&DWIX9WSMh8lI86yOZ>poP81QC-;4&o}cC)rJ@(>ic zfsz@j^}8KlZIxZSpi2zZZ|aERblupSPTfx^a&9>{_tNY7ufVss#3{GCDH4+4#V&(vAZ@yacEq9zI=%njEOJjOkjMDM3eAsvuA&jiC*Gp2H4n&pylnD zPxaxRzTnt(;z@t=h5SoZ!R;>XtxCK$@lDn$!R zw{H;1&v6{WAybc_T1=XBY(ox>KBGB^44%j>rD;x&+;h?idz)%hIAV+Ng~V>2&ZMY! z)saVd0jG!+YC^gT-0^%{<(bz9ED&}4BM^9%izSRqFY-6}zNJrDVFZx%nfJ3ta&J4n zdoAtjyE!X&2xk>cH0_rwYdRxqu?^!#?xr;+m{bh+YxfJF8fUXi*PD+G?;Z>treOK; z<{}~3Z#xT0wIbBrm*n5vvFp31*GdgLtGvsn1V?>q#C$Pkd9cVNP2`=nsAki_PW-ZZ z^3rm%N&~3D*{S5QT-#0$=CB4JY3@~N+`p?b-4|Wq&@zVpmRCnYQ3b;TKjAh0fTBdbc?_#W}BZ>1Tj!hK5ub7)Cj~%5R5+ zqm|BYXgG6!`;3)yHAi3Dld?P)5C#52sK5XvzknobU`3;fQfKZjkWRmkD$^&9u)`h7 zmoO&(mL-fH+{!~;8o+Q1|A7?Z7y1SxfbK{A6ikgOHKg3BXm7&>St?Q|5ORnan&)`P zL;H(P`3b;*VGLmZ1mFNDT*^3rPNDq|It9Ohl=l~%@+kye`R{ZJWbSV|<#Vc(>~A^+ zQ@Q~amlA-2(JSWy=oD)3{{p}XX#Av8{tEz?OZ$^f`MVoHr~E& zKk1Y|t)FztPc-f~onrixP8s=0rz91{7A?dfKoMYdiglQJz*Au4E&zGJ+g@XX;xvWc zaC21c@!Tcp1SYzZV$@m!wGSv8F1Ud;eKj)Nt=`sBX0y zF}B~(y4+LK^!^6MtNTj%jsqA#zw)22-GS4|tc-bSy}hpu{D(82Wp0%`pbtRhK)>MJB8X&x+dyR~M28v$iQUX@ zruZbv7%F20XfSGj0WzdgFpy+{Tofo35PvDcKhC&hE7HID+5WZ_N@@3NyPTcjuYkZg zpkE!Jduo+}C3H^Z{k=oLS(K`D|2hi*oBh+DL|roCpR-?71OIUj;YacP>P#=OJ|Hy@ zMZ(zta7~gWP^tZS(scushGQaicN{jZvEkBs04y7&puZ02BAZ2t2y{f!&{hM|yhPq7 zF(#5Q0Ou@4IC00)e;EJpn$h{>Qwjp{7q9`K!ybfgg&_{eiJ3(}M&ry388;ls;`(pe zb;M#uZ_cxTGJz|||8=()>j?JHfsFlCnIZtG%c$Tdan$~#0)E8wu`p0hcTzR7D#D6C zu?|07oH!stf4VpUB9GHM0w3So3#)H9pTXHAvVE=iv%T-UjvRMV#+F0RB)45IFOq&% z=Fqu=VQ}3};Lm1TEgAl31CR^I_~9jGN9zCVfe z*OPJg_8ve1pQV2o0It6|3Gr(64+FsU|L!>f;QD`p0l%F;`+gGZfU+MA{`^0Q_1~?Z z#QIOqZ(^PQC$aAPlURQ}0Z=heMJSI}&f3pdo(Gc%X#XNw0F=wO=O3mrOXywl!^oN} z)REC+P!y6lJ)EN?w=jk+=B?~e(x+bc0N&h1;gCdOcgRo57rgX2`q`<0J2${c7)lqe z6mDRv1s-E6D~s7%eD2KTH#z!cP36GGfZiInj*->Im+EPEb=>GfiUT{1YFS!^{aJrh zC`k(fWFG+LIydDr+3NcPXU*766kn;SJe{7N+tyh4el0l+F^W3~PKZF!$Fz(z4$3O? z9fBPv>rj5{D{M%{OxDY6CW;LbsS6hlAi))tdN14)AVDcjVj%rQKwe4)6?`V}6)Ca+ z=6P~l_a)YXlFa)dhxnlMTZ~a=t^{LA(~rX$16L~oMB3KI5$*IMFs!{s@nF{U3sgIE zn#QNt3rvmz#kbJ?D6j2MBh=l`F&!=}H!C$H+=t&M4CR^qg_y5QhcnfD9Zc7lSf!xt zQh2K~e7hI$OrVG^o_F%N#l?nGox*YSkLd5Lcn&MyIylTewj@H1rx+^Vt&C6acERw| zMmjMW;%b-(RZ5r{x0W3W(e*`Hi*B>yBcx|#PiL8M%IWfR)SRx>a<#uov0wJj%dKY= z<}|OCL<_3VS^N0ZNT0y@FiTumKpe5xaAzmrQV@App%*}Iuc~IEz6#jRXv@~F<*{b; z`K&Be_t!rlTfG8BGN1i|n;wRdFUU4`KYwo#gY+MO&uYQ$qNRmgnkq!(RS;vYny zbaT&&b)oLVIqk4n1gJhTmF(b2IwaFv50QP2n4^xQ1FYi{DFa0m8gPDWjdRAZ5SXQW z%VH|nH822=F52+Yc7B&AZ~As$6T8-sZ2NY8)ieRw?6skG=5-cR5Iud}J&E*Gjd8;q zG74|yM*2=ChVh-6_@U~Bb=6uG8S>JH5ZhHtEBcGwIEAOW+tIl>(Y~q?K#`5t%Z;qM z&oA?jGiNTRo4$a};hFm!K-!LRn5+I#JT-@1Jy7C~J}QMP{J4ra`q}(AuL(7=^_k&h zc>zY|GzmW#?Jnk5h#3&`hlCVy)DRH&AFT!0z8v6KDe4P%NC|c_=jC;Bvsw2}iLPXWh+HNViADAqwP- zkrZfx7pAF`)5T4V=3d5Bu5(^hJpbsM(~tLZb#^Cre9r&oQ`GIXX1$6`C83OcBeqtQ zak!U8FfR~F&^i2f%ot)WdXrcLP(EY!QeVj46fOORkw~zq7OtSJhp1Y)T3v@l?7MbZ znlzqbG$Nr4RB#??9khW3vOV|Ca4>WcAmu~%1f2NoMu=!srTASc!}{}UKE@qHv-g_y z+OlmQ!Q{q^md5)T?U-ip=VW9gLpUNL_6SHJ61n>Rn;)d_PFpgJJ&h_zADreh>?G&# ztL_Ghx_E~VCOuo$K`J@aZEM$8w9b>>0J*^)6Z9`$H+`(S?{{!!@x4bMTU`&bceDV@ ziLsi&wQ0iR(0SRm#0z(xGbi?&lvUIA&IA!_`fnDPA}&)>JwCmKyk!TB4~HCg;ZK{V z?XG`v)LME!^P0PFc%MG6T{4_Qx3Yk#6&>_N9k}sHQs#vWsykT0iE)7~sKtjH9)brQJ$`A|2juzv_Ce5$))zlDY8gH`8&q zK&`RS25$v%>T~IqfirIMsj{J|j9%908%s+@H@l7U?(?F{D(c7f$xIK9+)lZHmkG^} z!&MUv#3(u1S4OgA50~v$+Fa*m9^h=^X(dp!;h@Uy42P^OFx;`_r4ixzMSgpvN``}* zDBx*zJ0PjPD>SW1@Z><+Ag!wi+8_`-Zg8b!f|(*jF`Nf=s^U?=v5j!V28C`|{egs& zR8nbuU?j8(LNh?KoNlFyTjh-{hU1bBjjJ=SJkdE>wDdD^8-p$rN+V)HBWP8FVOKWEm+qlW- ztr=%bqsyp~L7VMKjuyG;IV-o)$;I1wKB=Wq5H{rO7G%~HV@@3$7^0%-6KzbNn!1~C zeqlPZ*AUHI(W793uC$c-=wizMCabpHjqsXDa_BztQe9P(a$kTL0qDwj65`0aw>(t0_5eT(M_7 zN~kHvkT}eNL5|1`;R1JpxyV#&D8R2b-IM<%#vc##-%h>3o?i}=7ViDg=%)sN!VrKs z(Q~$-T7Ij(g`x2{_vODBcfjfkx#a3ti+2ilvt80U?j?lEKdQ1YZ zu%*;3=am)%_NY1*!)DEeqD-ZPr6=W)o7NSV9p{XX9)T+&>V394%6UQ&x7}I@9*vrJ zwgplqSGI*$wxn15qRuBl?{L4>YQQg(R?kX1!-8v4mIr@nU5W4vRINES7PkW~r_6)l z$Bf`X##4c_h`jCg8Z(R4G-oe=XFR2+Wqc3b;HZBjc-Vz`Kh?KiojNiqAK@yKvpfpW zo%7%?MCE5YLVPhIa6oz!yVy9Y&WM+PU>Om3ZNL4(*#k-Iw6L6dJbvT}Y4C2ZX#MnIQdW_G)D(@6mkHH$#L*v+9CMd|s>@TXWK~`g zThFQbG-7ir9Tbk*K$DRSH*Z6$t+9g!-+Z;u?xDZVe{v4D6akHlgX}7g! zuOwNz#g*UpzHN3{8O0tb6^Opme>6$DV-_I#r&mpYh7f?Kf*rQTjDtwqGd!|sBvb2R zL)@>3q#+C>SKXzQe%6^c2kNNITdID>2dTEpURiyKgh~pj38qiGL%1!0(@WO-AIS(O zz7_I>Uu%~%Gj52h7q5-bRq!2b6d=f`5yKhT6^%r3S11*T$Y=>eF!SIdM1n-k&Fbu3 ztr6*7n{Cbf^DdDDVEr(F=zuhV8Yz{(DeSFjipWr+$;sW!fNA6MH1+@+Ubp6cy;;u# z4}t-11Tq7j0?7pzh(wtZV$1}k6CtGCM$izkS-~toB+x`6i#eI!9t9jLvI6uU#|n06 z?+L?h) zJy`N+raU0jGVEgbB12XRSgdh844vXimUYuoBJ3ss#>9afHP!3_esiDHwjRSBb)NyX z9o7wrpgL-S77(im0FcD1vcn7IP$znv&1X?eEGY>jCKS`~%lx$#$$HT~pC%KY`gSl7 zumTcL5YJd`!XF;Men6yGASghjb}FP4B{F&exSB(PT%5$nB}~mxqTeJOdcepLuAo{T zVqvdNcnbq4dwBfZfv$k|fyY484mcTO6Wrs(k0o&EKt@T${TV~y-IL-5lXGX5JWC-( zf!u*Efp&q1K;s|@C+!9Bzc?nE3Rx=l8hEejH4GG6P+75!d-{Nlz5%q%;A`0O9 z@%#+Jh2AA%O^qaVd16D7fC+Bg%zJM&CY<)3ehf8Y0d>sr;gRBbzoi}V+{e0XO&@=k zF_so{eD+lIcGfPCiwr(~FDyGo8Q0aey^}%5E+Uyr6h$;`ku!<2H-XAYK+c|3BW1xI zpGo7C`y#aX;^kZIg!WpkiA6V{sx8|deh#_fya)7Ft9fGqfoC*$PU~`QvWNzPWmcgx zgZY~I7-#>x^x`x<^<#?D_tBnRmjq8|;#5@bmy-l<5lR~mYF-gti7=l=`S7_8utR2) zCgPAUi8i>@E)q6y%^kTN_1`|^7aP=zXw7a1^qIVQIM`Uqd5P`J)|Nj;6hUavwz~bH zXMeyKaA!^N7R7p`1XZipuQiM8=|?scjpyv#_H>;zqCRaE&{hag5DmR9-aNO|;b{>l ziKJx)puOq1dal{Jc3%A8?~sTu6PK=A%bFLrE@mv?n(14a&k5fSMUSZ6WsDS(@wK00 zZ|Qrtb~r=ss&mH85WFTDBSJtem=Qf03LwRG1Y-I2nYLp{wIRO7x)X&v(_$sk)+%BW z9leGkg$Vac3VfpT9$SIZY2n)!-O`P9?+^rO-Y~?6!H#09eR}f>m+D-bd}8MXMY+4T zV|u)v@FPm5brLe$obr!CATS!H+S2qE*lEO zbP~nTmgVt>B>-5y-e(|*7u;lDm_$AX4HA3-u^qTnbW}WD&IvEa;T+s!Vi>Bm-BWpi z4-w!WD;)l^EWfHWD_eI2w%sh$P|*E>y3=}43+*iWObm~q1nsK}$%mSQWRx8`DQ8x* zjiyzGom(}AJ7n14IC;6|?ATy8{2kALdfE5{Pb3OK25}KrllM9oFR6E?b$QUV~*0^uWcjQ>V&hoYune7`V&kSgM^fd6p8 z<}C+&k)u#=L*;7SO^eH)y555th(7c1^-pWMvv zGj!JN<7@ur^@*IH)k9~t{n+(nXz~f1z5@2syrh-waq&X?4GMME#!Eh!=_e93Ip&vj z5h&d_(OPf2Ym2cBQ2ptOcvrH(0xoEEMtLb}BwReyuSU2EWn~Dhd+F5Z%j%ka$l=gb zc(|QR#g50DX6+le>eG5Ef_AK6;^&;4n(A`qXm%K)#4wEkn}<6vF=DK7;wZShqnI}N z`SH^>zEZ|zLX`FW5*nP$9{Q9}ks-BaZge0uqMJ=n9T@%##6L8_PJn|%h1FUAn7*Hv z)emyh>(^x!P-p$?Vg~v`z9HyOBVoY*H^%!~e>y<%DL{(q@PG^Xy;Wq)HN7%>^7(PgXTq}uwG%_(|>_NjQZAZojQcXu`5S3lJFO$@ zQ^0+s*E{Lq9bJ2}cPk2Q(Y0xJ7iD8Z5EKw*Kry(dk~Uk7y&mf7Hor^M-H>Mwd&i`x zgoi1!de8%lu)27aKlc7~>#)OfFa15iA?OR2h%;+%x|*g2Ro92LFCVw+6}Six<)OD* zXp_Qm9fa#e^2WlzMwtC&$INiS(hcrPj55WEC=^xrB<)C?7O~+!BHl)YBqRBS$Ya9S z5OvN9_XUy2h#+7i04C;Q5c8m>yzNim$krU?WGRR9vY$=Po!UWvyxTm7?%P1?|C#CH z_AAq+8^|Y?;Q4*7*rC1uhJ5#F77-}0Fa)E~38urb!~lrKK(La!Gz1*h9mX}~2qX&8 z*D_`!s0tA?#s$?)&Rhsg=5nz1o;YCSOC%!1f16vq8!>bYs~cDhOlChKP)z1Ocl)ou zR7g~(4iJbi#J_KS=o7!*kXs?CKT!eTY=9pBm{@cqMk65M0enp6IKnUZSj_BVjy8B0 zcwL7wz4?8A7H3z!!5$@C{%M;A`qK-Y@E7%^L_`EXBq1n5-zTY4l-cmaG#1Iza4yje zDdi1=J{>IHc&M^ArV@)>F@yK@h_S{53Tr7QK zuNvC5!ZG_qvAge7yPFd}n=yhr7bs?+47&FUi9F!OOUf#z8i+w^lP-o&IJkr2o zp^Jl?&mCNk;pX@;y0>jMu>jzO-jwN;PwpmcHb5#Z{Gc`XMXP4v4kYcv)|_rtF653) z!2T-qc6HG?u^divmYhSIcG9Kuq|c3GMrar%^*0qb(^#$&6-PqJQZU90!yphy6zod{ z%JJ6l=r}>#LDJmikUVEjIB4ZZ0hCtMa7SJ=M?>(2(g4umjazR*WH1C$J3_8-&|z#` zw_IF~c-qwVAR^OGc7W$ubywL!?A6ow z{={`^H4R{E+3~OPorfzT8t19-R>8IDe!bLci$&Z}?$arSq3+xAuciQIJsmUy2>JL& z?}9D5#g@NKsjbaQ+lu@S=WP;PfZMS0k+y0{5lBudBWrGMP-xN*J}$Xu z2WRK4J#3lqEDJ*9N8VT4^&^*LKUZPb$e9;j^8_!y$&vQed~%Xcg9U3Ao=z+XYZx7l zZzu2doma>o)VAfyxM|XKU5&a`zcX>%ws!D*lw0v$a66#-0lw9{?hqK4eZMSX8Y_nt z+~huH*)ZGQ)f@=3*Iw60hA^;xqsQ~yi6@HpB#LNt^g*h}5C4jo&W%#WIZoScZG1r~ zIfcDu)>w9xP{J(`_^T@gqME$&&d=$_-ch4MKy zksU`*96ca)1=>eap!PD>bgu^btxYM{d(G#*Xt1K%lC9-oc*}$Lva&6eP{|*JowDb6 z4?^FJAYj95G^u!4?LNd-IW%%6oBh$a{u^X=O(N;mQ*`-qY*>!BExEr+;((9togR#$ z3X&*Wcs`1Vox8T8%EDm!ykgK1U*{q)_EQ1$*mA3I3?*X)Ncp2^{uNKkV}}bm>bLf$ z#vaT!B*7PYjYE!x-iG}~FDa#yB0}^R&0RfUY7Z!X?k%L&0)!$1Bq{Jbm4BEYmykkb zde%ae=s`+fh=UcVp^5_NfPWoELm*T}m<02mCMF;*qI?IY=<)ROhBWDWYz~9&$p545 zE2H9Ewrz1paDux80t9z=cX!ti+?|G?!QI{6-GjTkySqEDv-du-&%Jj%8RPv~UA;=a z8cNxhJsoUqC1mKH(8PYcgyLu7js4E-B_>%Gm)Sh_0mTu!xR8dV^jM&njRCk@ zF^cy0n##EC)1!)Q{o?t4*4z86J62H-I~?5Q*1?La-O}-XVgzAI&%qlCW51~R_xes-+J;*f8-{xzw8$EzY?5S$jcM3>vrgIO)l-DGpvpuzix2h7 z@Um1k-p(JlR1f3D+hyN>&f_H2GhUVpU+G3)I-ZY7zXRiNGvYNj*2%LoX-!bmWBKn! z$6+UFR?g96F@TF(sLRIbqzIO0!O{jvD(__}@dNuQySswa+EP-{W!K})uJiA@Rwtb_ zuowOB1RKI;E<{E&t$JhfdgcydU4+0(u9jHNb%7^gyUM4xyN~Dh%}Zo&%WQ*)=jWH_ z*zZ%i9ZUS%`JN@vmJLd7X??UY09k=r8YmWefyw8`vEqXtpRGgtf>pIzSgLf(up&;@ zRj34v6TaMLJC`hiQMqx}<%X-3R6GK>&wFn=ghfxaxfF! z=D$DH?of>5U}&bv^fzjAZED-%=ZEB?s{0r_d3ZQr*0?^oDpGxO#(YJLD`Rw#Vs5+H z{w9uSd9$4Bs+>HCwZ#vw{pCpt?fA=tnq^)=7#O#)F*SBw*j|0|vlE0yiJH0iaoWr% zq&8k@`Db1wWp=@>aH?q{2FQo+Q+m+J8n_4io{k=tlr;D`MUZAHnc1~xq;FufD}wi>6PM*V!qYE-GMgt=f%Dyp8})0c8T^!YOHe2G)k6RT``P`RXyJ0 zC>hyme5P)&CcKZj(OVyiNRJ-vsFl1aCC-s}m5)%#vscpD&fUQKgM1l=$aD6k(XROF zd$pj?Pw8Bn6n60z1riV?IIIx4(mxzJ%^Ql6@87Mag)J>@gL28)t#_rHsEm&*KIyKn zIW6bZpVhwaZZ_7hymn(JHr(1PfdlJZ1biNkYm)pp|7wb_aoV*Rx&@%e^(wZlC3{1V4XYuT(-N>{x8 z?P-3lV7wc7vsk!TLBwQVn5DmDr|nU&c>ud@2*WQWuRag^47*CEoV$IE^lWkk!F^RE zSCqrTIp?!j$7Kx8mchjF@~?ws0$(S8XVGJB-a;tWtiv@|dXLq5JX)S)Np&DtvHiw_ z!k8_XEZCJdrk}70u}pz}m>WZNM2K3DmaODLzbO&K(<;&Z@NrVy*3-pDJ{0c-L0q=( zp4dKq&z`gRWucX))3@2oRT&`;l-$&Pcf|4fUYxutLTmWrX(A$IT3|*gmNed#E-e&G zJ&CZ?4J(N{3iPcx&^*lx>_mgr#6KZr^D*Q#p5TghG^4^%ZtKM38}jbtUHiKCz1e0 z+jjA@s$~<5)ZsoY5T3C{*S%ti_o!>r+AUY=agwebe}}+& z_}2*A@J`+kuq@ z{-YAgmMX2&Mn0;Q6IPw_ZxVU8J3%K8vll$lcz0QlBM54+6{Z;~rGB$s1T*|YG8<7z z3LicOlUHM{Jq*IfrJl>b4H^Q{B;D<367(rjo`xZB_jSd?umyD)t{ zRbGKhNVtOn^?@u7s{7#$$srFL>z}?=6eT7bX_oi%JGH#Zy1(+q^_&v-U0R=#3(t-1 z8uMKjg2JS7NknP;eG4gAl`fDdadAM5ztwp!auD(}ad~N*@W!)B;J|!ZJVg}0_NCf91$?biyxw6& zUD?eBpcSH3aJERtiM`N#2O&j4NFTvJ*%L>J@EvG^BfO;9ZPfTH9Xm#A-~>|IN{J8# zZ(|amK=Y`MwZi%Yw@B@qQ1ElHAd`;S2PFDK7@{fU$Wd)I)()>UdNw#G>E53)WLd!d zv6PJ%o7isLLrsE#wjVkwgg-3qo9L}ZWXI!=wu?&QUVZa7=P~n9)m(9w*{i*Z0S&0J z{f>vzG8npgS#ei1e`ZoSmZMTO4@7cMU3cKUHgZkHCcnKkc_(;%O`yHj;t9(k*Hb7F zvlR*T2ukoOK1p-;8uI6$9DkpdeZF~tVEzHZ#q070e)nQaxN734@>BBAPvF;ex4vsZ zx+0`2q;~GqO7()6l^_CFtfCEZ8D zTAbY@T$`LD20IOZ^g~2E-i!~)b1ss?`fp#@Z8q+Q=o%%2X@0NPV6u7~PK~zx3SaZF zkD6JX7NgqeCE67KccN80ydxnLb0VQ0tQx<;#tFP%4v#0ecXYv* z^1sqM-e2xNoILKYo~O;N1Kzlw6tD2Q@Rv4}_PWy-QG(oZ&J@(17=-k~LWeaA1>7%` zzmdYaB5}HsAIYS#xY!jEYbPjg2RqGMrku@)te5raQ0Ih)3}aY(0pvs6!I#_5>a9*2 zHY4`W-z;kimb(06TDvLpsit}`%WNZYHERAiOr&m1*=5ik*e+vrj1QPVnQx`)!t{@| zMTQosl7lgkLSpbM`jtgR@TtzW$lAKCqSMXy7V7vlw#@mXC2zVT5W>U5(d5PD&hvi! zR(3R1aBrG$v(4`QWJfSeP|!a-avq&ye1`$sKMW5~W;!@>PS!s#V!bCiIAV6vI%&`O`YiNijv4nZIlVSt13NS1ZP~RJp{WgPZ01&^T?YLD_C0HkAhaLmOj3 ze^Fik_-1YMok=}u-c@brG=`Y(h~7C_oC8Qc+&e;lAX2|@ZAkU^qMLpU!xy?Oe_LtS z`2zCw{MEm8JyiWo*UTccW|G6e&nEV9h(=n~{;J~8N(qMzcI7Sgg}J$k+0>-}tK-@y zKXy!GXbYk$GagtTDk(6~l|DNW2jN3Rn4(z2oLF`esv$O((MB{44ZOZ7wv3)KCqyFw z@v3-^$X&eUeCmce!)IRJ)5R+JF~qSdpKH*4d!(^1@9~U;k9|wjuxRr524#g|4vDVQ zMQI2s7T4Fwuir;q41NJ4pZW4Q$^0$6*yv145_r**PEdOXp?AA$VfB8~Fl-PuFgDog zbB`~95u5=?p{z}jANm)+6WVA{>%VT2q-Zq>msMhTn#0F%NQ;XR=;j3+ls6FLR`3{B zBN%Wd)@?|Zetri+0T>TTW%GaIUp@uILf1}8mF6EhZr?d}V~s-#Cz(`WS_+gI^yR=9 z4p+x({*;Gpazn`kEB6Y|llYx5su%L#bo>faKCV?7%_s|qm zhy>!Ww5ngOYq<)TL;c7BXx*Rg;9$9bAAfBR--RFQeB~W_MeHZD z72bIJ^-2);+@P!Ib}rid{_`j0$=fuCtJTYK93?IL0O6(i_U7jW7FRqxh;*&SvxXG2 zjkiknquUS;D}13~^3bSd3pJ=DE=6k{?b$hK@|}2O72%gFp%ttYcjZaaHU?+>orBh^ z-S)O>xX!P>s!$bhI*TEyePZ}=sxp0)9^re*)f3qhP(o%sLgk$4cUmKepM>f!y2X1| zHMoP0T5I6K$2iwd7CB)-*RaY*esTIb-=V?>#`d%BS!F>$T8-2!mFXlhB2RRldp-iU zsLhKkXP`I|a>B$YtnD|^VDONuZIM$b_*nd?`tqd>Z7kzS;`A<^zQh-LyUHHI&igBm zr8(W8&z_DnT3;X(k~&p=D`?V&Vl(=M@{E`^syOrX@u#KSHs?=$$~?J_ZydUO=;Ea4 z8B0-lGaX1bLkFs`_5dDF`@O`M)8q3U4o=?_u>vAZ=$@dBZ<>CRA{5qJt+!C)bb_89 z#(dH1!WSDr18qPp834-jF|40_z$J(_v=_nLL}7Y~W-t^agLFI_wZXnj3|!az+Kmw6ztwVY~4VJ?pu+>aqo8pLlcIeFUE^#49iep&NHOaG) zIXb|7pVh(Zut1XNyc9(G!scc3qVt0-iDPUgI9o=uKN$z>K&+pukBll-MScWJlISi$ zo+xdbjl~qVq7}vCb?Y{8mEABKTY{fDQSr_rbh1-!7s3!M2OOeKPvH<(g_L&WDmY3G zn{upFBvw)I6jbFZTZmoK*Z9M+v<*;l!Ir$TF4n-ZGPgeOqCD&Fvlb zPoRkGqMKk`eon;>+QrLPnSA5UCK$}FAwE*t!ksvOZSox8w0dF6@{8tNryZa1vA_2? zYjy4)ViGsU)^|6xzlj9VfP2j}?IknJANKcoLYY-&IP z46L&0^ycvVh|v}cpaaNY+fY&6u8+QdfKhhp*1R!r#<*{i(0dfJwm+w}-7l}8ke>|E zaxQF$9~>AUM_>wL)!s2lWVjdFbJ|OPGuLm8D>}AWI69t`o>I2w!e!#*&fy%jSqbB) zceOkZkY1j&Qcn8Wo4BxSQh+zcW7#B&<7?vxxlobM7;f~$E5^wA8p6zpwo$=?- zLur$%QML5RZ}(UR>$BN9eKx}=rQdA1s788ck(-r0G|ipOt*D*xHNL0|T5FKsW2Z=R zu~W==mA(Q4f0H&PS3qh~$BVP6g;hsgdu@w0=R*eYYcCM23i)~v!IZGtE*l_ZF1 zzyf}j)VpDe{AN2MNVtnA5l)pl!b<0J3x1=yX!$J$cV&7xv>h~gNm3ac;XUc9kCn5C zC1+_3RC>l>G-BFD%e<8iTJR0fO(YgjL@R#R@4S>|F77LBl=!lk8gD19OQ%FWD3Eq8 zkd8U5J!JnRQ1PAL>cmn02P;RC#_)a|EHMy_cccC7t90U(Z4%|h&jCBHYMjtEt(Tb9 zvx~{m&ZENF^IHz(5XO#UsU(EwC&>op*DQ=o8M~Fq_XHnPRYh$LNyO@hJNIE55{l?l zGzG2|@(;t63wmYXl1hbALBg2d@%uo-3TehY8|Y&Vo^5jGc)G*L&Be$({BiI!GMRdy z%Ba6#`vocXHY!N;2c+>?$e~cB;CxQQgG!Sra6ER}z1UXYepa{GAHt~P^>TH5q}+y{ z-WUPyrs_-q!sF(E-m~|Z^C74k9^z<Vx!b#TT!*P0F|t1OIt-P^s$a)@P)9v&{Qq6SddaapEZIt5aYI4M?)OfRBUP z8?9Cq2bhycq!pR=8w=ed9)G};_r3)=4*B&&CB#dWVdV^WfU8et*BUYt50Mp4EkZOK zMG-XSj5zXBVW-ezXr1Tv)q}o7r>`u-IWb8DCwR+%C-2?Tp{BJX0cJ>vgx1K27G-|j-(KJV=9=I$45##15***VuseV6)bik;wm zZ*eu>P>;Vjep~*^QGDMu_HDOfC%j$;{HRq(?+CEA>bKapA(N7F%Q@FnzS{m^6w^E! z-6Z@qDz`f6ZD)uXi>0M7ol7>B?sn>gXo{zr;Guo}WIwg7C7okYX#}VLaV4D0>)~XH z$`%v;#Ibl@xYr`V4b%VD!akCWkU@g3a)A2i!K{)#D5ysXGmj*sR9^O6EMcjpcoDN2 zY4EqA(X$K75h?qQ@6KcY9q

45ped7LKYU4ZCT1d>PEa1G;I!`5z{ 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%0A||0?bSY5aKaKKaUnN({>I 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